4

虽然 Ctrl+Left/Right 通常映射到将光标向左/右移动一个单词,但 Ctrl+Up/Down 通常不会映射到 Linux 应用程序中的任何内容。本着同样的精神,我想将 Ctrl+Up/Down 重新映射为 5 次重复的 Up/Down 键。有什么方法可以使用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 中也能工作对我来说是一个足够好的解决方法。有任何想法吗?

4

2 回答 2

6

你可以用xbindkeys这个。您需要使用X会话编写一个并启动XbIndkeys(如果它有一个) ,.xbindkeysrc您可以使用或使用DM / WM中的相应选项)。您将需要一些东西来将密钥发送到 X 程序。我从包中使用,但您也可以使用类似的东西(例如这里)。.xinitrc.xsessionxtexautomationxmacro

在你的.xbindkeysrc你写这样的东西:

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

同样的事情Control + Down(需要示例中的换行符)。这将释放控制键(如果您不想以无限向上结束,这很重要),然后按 5 次。

于 2013-02-07T14:02:31.720 回答
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

这解决了两件事。首先,如果按住控制,每次按下 Up/Down 都会让它移动五行(而不是四行),并且在第一次按下后它也可以工作(Trudbert 的回答没有)。

有两个问题。Control_R 不能很好地工作,按住 Ctrl+Up 不会自动重复该键,类似于按住 Up 的工作原理。我将奖励 Trudbert 赏金,但在此期间结束时。

与此同时,希望有人会提出如何解决这个问题的想法。我正在考虑一个自定义脚本,它会不断重复 5 Up 直到有发布事件。

于 2013-02-09T22:38:03.840 回答