将按键组合重新映射到另一个组合,例如Super + Ctrl + Shift + J-> Ctrl + Shift + Left


11

我想实现一个附加密钥层,以便无需移动手腕就可以访问非字母数字键。

我一直在使用Autokey来实现此目的,但是体验并不令人满意:它有时会出现滞后现象,并且会导致原始的击键进入某些应用程序。

所以我需要一个底层解决方案。


您可能必须创建自定义虚拟输入驱动程序才能做到这一点,我想这将是用C编写的
Amias 16/10/14

@Amias,能否请您详细说明?
lolmaus-安德烈·米哈伊洛夫(Andrey Mikhaylov)

您可能有一个xinput驱动程序,该驱动程序运行常规的键盘驱动程序,但在将击键传递给xorg之前会对其进行解释,这将为您提供完全的控制权,但对于C程序员而言,这将需要花费几天的时间。
Amias '16

Answers:


10

尝试结合使用xbindkeysxvkbd。xbindkeys侦听密钥并将翻译发送到xvkbd。

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

在您喜欢的编辑器中打开.xbindkeysrc。我将其他所有内容都注释掉了,但是如果需要可以参考。

为了检查出来,我尝试映射Ctrl +; Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

我希望你正在追求这样的事情

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

保存文件,然后运行xbindkeys

为了重新加载任何配置更改,我杀死了xbindkeys进程,然后重新启动。

xbindkeys语法

我通过使用GUI的xbindkeys算出了组合键

sudo apt-get install xbindkeys-config
xbindkeys-config

运行该文件后,按Get Key将该组合放入.xbindkeysrc文件的第二行。

xvkbd语法

从手册中:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

很想听听它的效果以及该组合是否适合您的目的。它看起来像一个关键映射器,但不一定是宏运行程序。


嘿@MarkHewitt!非常感谢您的详细回复!不幸的是,这对我来说效果不佳:原始按键不断出现,这毁了整个事情。
lolmaus-安德烈·米哈伊洛夫(Andrey Mikhaylov)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.