2015-09-28 65 views
2

在许多较旧的笔记本电脑和一些紧凑的键盘有主键盘区的integrated numeric keypad。此备用键盘通过左Ctrl键旁边的特殊“Fn”键激活。如何模拟集成数字小键盘的光标键在linux

作为一个程序员,我学会了使用光标移动键(箭头,PgUp键,PgDn键等),并发现它大大提高了我的编程速度。与特殊的快捷键一样,好处不仅限于一个应用程序。

在传统PC键盘的“Windows键”可以用来模拟“FN”键和相应的集成数字小键盘。当我使用MS Windows时,我发现Autohotkey能够使用a simple script映射密钥。

近日笔者了解到有关XKB以及如何可以用来map keystrokes at a very low level

什么是XKB键盘映射配置文件,将使用Windows键与Fn键模拟一个集成数字小键盘?

提示(?):我怀疑的文件看起来像 '在/ usr /共享/ X11/XKB /符号/键盘' 的Debian衍生的Linux发行版的文件很多。此'小键盘'文件包含在'/usr/share/X11/xkb/symbols/pc'文件的顶部。

corresponding autohotkey script供参考(#==维琪):

#8::Up 
#k::Down 
#u::Left 
#o::Right 

#7::Home 
#j::End 
#9::PgUp 
#l::PgDn 

#m::Insert 
#.::Delete 

;(Scroll with the left-over keys) 
#i::WheelUp 
#,::WheelDown 

注意,所有这些按键需要CTRL,ALT的任意组合工作,移以及Windows键。

+0

我做了这方面的一些进展,但我缺乏与XKB的专业知识。更具体的[相关问题](http:// unix。stackexchange.com/questions/236089)已在UNIX站点上提出。 –

回答

1

步骤在主键盘在linux/XKB上安装数字键盘般的光标键...

  1. xkbcomp $ DISPLAY original.xkb(以防万一;)
  2. xkbcomp $ DISPLAY custom.xkb
  3. 编辑custom.xkb
  4. 添加以下的部分的结尾:xkb_types “......”{

    type "WinKeyAsFnKey" { 
        modifiers = Shift+Super; 
        map[Shift] = level2; 
        map[Super] = level3; 
        map[Super+Shift] = level3; 
        level_name[Level1] = "Base"; 
        level_name[Level2] = "Caps"; 
        level_name[Level3] = "Fn"; 
    }; 
    
  5. 添加以下的部分xkb_symbols结束 “......”{

    key <AE07> {type="WinKeyAsFnKey",symbols[Group1]=[7,ampersand,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<HOME>,clearmods=Super)]}; 
    key <AE08> {type="WinKeyAsFnKey",symbols[Group1]=[8,asterisk,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<UP>,clearmods=Super)]}; 
    key <AE09> {type="WinKeyAsFnKey",symbols[Group1]=[9,parenleft,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<PGUP>,clearmods=Super)]}; 
    key <AD07> {type="WinKeyAsFnKey",symbols[Group1]=[u,U,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<LEFT>,clearmods=Super)]}; 
    key <AD09> {type="WinKeyAsFnKey",symbols[Group1]=[o,O,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<RGHT>,clearmods=Super)]}; 
    key <AC07> {type="WinKeyAsFnKey",symbols[Group1]=[j,J,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<END>,clearmods=Super)]}; 
    key <AC08> {type="WinKeyAsFnKey",symbols[Group1]=[k,K,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<DOWN>,clearmods=Super)]}; 
    key <AC09> {type="WinKeyAsFnKey",symbols[Group1]=[l,L,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<PGDN>,clearmods=Super)]}; 
    key <AB07> {type="WinKeyAsFnKey",symbols[Group1]=[m,M,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<INS>,clearmods=Super)]}; 
    key <AB09> {type="WinKeyAsFnKey",symbols[Group1]=[period,greater,NoSymbol],actions=[NoAction(),NoAction(),RedirectKey(key=<DELE>,clearmods=Super)]}; 
    
  6. 保存custom.xkb

  7. xkbcomp定制。 xkb $ DISPLAY

我仍在使用“我”和“,”的鼠标滚动。