将“Ctrl + Up”重新映射到5“Up”s并将“Ctrl + Down”重新映射到5“Down”s

时间:2013-02-03 14:26:55

标签: linux xmodmap

虽然Ctrl + Left / Right通常映射为将光标向左/右移动一个单词,但Ctrl + Up / Down通常不会映射到Linux应用程序中的任何内容。本着同样的精神,我想将Ctrl + Up / Down重新映射到5次重复上/下键。有没有办法用xmodmap或通过XKB配置来做到这一点?我已经用XKB完成了一些非常自定义的东西(我的右侧Alt是Overlay2)但是我不知道从哪里开始能够为一个事件/键发送多个事件/多个键。

作为一种解决方法,我可以在vim中执行此操作:

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

然而,让它在gedit和eclipse中工作对我来说是一个很好的解决方法。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您可以使用xbindkeys。您需要编写.xbindkeysrc并使用X会话启动xbindkeys(您可以使用.xinitrc.xsession或DM / WM中的相应选项(如果有)。您将需要一些东西来发送密钥到X程序。我使用了xte包中的xautomation,但您也可以使用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次。

答案 1 :(得分:1)

根据Trudberts的回答,我最终得到.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次Up。