2015-09-28 68 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

我仍在使用「我」和「,」的鼠標滾動。