2013-02-03 43 views
3

Ctrl +左/右通常被映射爲將光標向左/向右移動一個單詞,Ctrl + Up/Down通常不會映射到Linux應用程序中的任何內容。本着同樣的精神,我想將Ctrl +向上/向下重新映射到5次重複的向上/向下鍵。有沒有辦法通過xmodmap或通過XKB配置來實現?我已經用XKB做了一些非常自定義的事情(我的右側Alt是Overlay2),但我不知道從哪裏開始能夠發送多個事件/多個鍵用於一個事件/鍵。將Ctrl +向上重新映射爲5向上並將Ctrl +向下重新映射至5向下s

作爲一種變通方法,我可以在vim做到這一點:

(n/i/v)map <C-Up> <Up><Up><Up><Up><Up> 
(n/i/v)map <C-Down> <Down><Down><Down><Down><Down> 

然而,得到這個也是在gedit中工作,日食將是一個很好的解決方法不夠我。有任何想法嗎?

+0

它必須由應用程序處理。 FWIW,emacs具有很好的'C-u'前綴.... –

回答

5

您可以使用xbindkeys。您需要編寫一個.xbindkeysrc並使用X會話啓動xbindkeys(您可以使用.xinitrc,.xsession或在您的DM/WM中使用適當的選項(如果有)。您需要將密鑰發送給X程序。我使用xautomation包中的xte,但您也可以使用類似xmacro(示例here)的東西。

在你.xbindkeysrc你寫的是這樣的:

"xte 'keyup Control_L' 'keyup Control_R' 'key Up' 'key Up' 'key Up' 'key Up' 'key Up'" 
    Control + Up 

同樣的事情Control + Down(斷行的例子需要)。這將釋放控制鍵(重要的是,如果你不想結束無限),然後按5次。基於Trudberts的回答

+0

太棒了!但是,還是有一些問題,比如第二次按向上鍵只會增加一行 - 我會提出一個答案。 – Mihai

1

,我結束了有.xbindkeysrc如下:

"xte 'keyup Control_L' 'keyup Control_R' 'key Up' 'key Up' 'key Up' 'key Up' 'key Up' 'key Up' 'keydown Control_L'" 
    Control + Up 
"xte 'keyup Control_L' 'keyup Control_R' 'key Down' 'key Down' 'key Down' 'key Down' 'key Down' 'key Down' 'keydown Control_L'" 
    Control + Down 

此修復兩件事情。首先,如果按住控制鍵,每按一次向上/向下鍵,它就會移動五(而不是四)行,並且在第一次按下後(Trudbert的回答沒有),它也會起作用。

有兩個問題。 Control_R不能正常工作,按住Ctrl + Up鍵不會自動重複該鍵,類似於按住Up按鈕的效果。我會獎Trudbert賞金,但在期末。

與此同時,希望有人會想出如何解決這個問題。我正在考慮一個自定義腳本,它會一直重複5次,直到發佈事件。