首页 文章

将“Ctrl Up”重新映射到5“Up”,将“Ctrl Down”重新映射到5“Down”

提问于
浏览
3

虽然Ctrl左/右通常映射为将光标向左/右移动一个单词,但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 回答

  • 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次 .

  • 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 .

相关问题