如何让键盘和弦暂时更改键盘映射?


9

我真的习惯了的“同时vi模式”功能KeyRemap4MacBook它可以让你按住s,并d同时键,然后使用hjk,和l键作为箭头键。当sd一起按下时,不会触发no sdevent,但是当我正常键入时,我不会注意到任何点击sd单独延迟的问题。

如何在Linux(特别是RHEL 6.4)中重新创建此功能?

我有几个想法:

  1. 如果s+ d可以被重新映射到的改性剂,则这些键hjkl+改性剂可以相应映射。(我现在使用的键盘没有可用的备用修改键,而不是s+ d,同时“ Vivi同步模式”的要点是将所有手指保持在主行上。 CapsLock已重新映射到ControlEscape)。

  2. 理想情况下,我会找到一种使用系统设置或已经使用的XKB键盘之类的方法。如果这不可能,则可以编写类似于xcape程序(我正在使用该程序,并将键映射到不同的keypress和修饰键符号)上的东西。 xcape尽管会触发释放键,所以必须对其进行调整以防止sd键太慢。


在RHEL 6.4上?您是通过X还是通过终端使用vim?
Otheus

哦,您如何将CapsLock映射到Control AND Escape?
奥西斯

将CapsLock映射到Control,然后使用xcape(上面链接)将短按控件映射到Escape。在问题中,我指的是KeyRemap4MacBook的类似Vi的模式,而不是vim本身。到目前为止,我找到的最有希望的选择是使用Python Xlib模块,其方式与Plover使用的方式类似。到目前为止,我还没有太多时间来解决这个问题。
ws_e_c421 2015年

Answers:


2

您无法使用标准工具来做到这一点,您必须编写一些东西(可能很多xserver都会受到影响,并且如果您希望它在X之外运行,则会发生内核更改)。

这样做的原因是,设计所基于的思想(并针对该思想进行了优化)不包括常规键的和弦或从修饰符发出字符。


我仍在调查(需要更多时间)。我找到了Plover项目,该项目似乎提供了基于X的解决方案的模板,但是我想切换到Wayland,所以我停止了研究。最近,我发现了caps2esc,它使用libevdev和libudev动态捕获和重新映射设备。我认为像这样的方法除了重新映射外,还可以用于和弦,但是需要进一步研究(我也希望使用libinput解决方案)。
ws_e_c421

我的libinput评论被误导了。我以为caps2esc可以与xf86-input-evdev驱动程序一起使用,它可以替代libinput,但实际上可以在libevdev级别上使用,这是两个项目都使用的较低级库。caps2esc的工具已重构到拦截工具项目中。我相信写得好的拦截工具插件可以提供我所描述的功能。这是我要调查的清单。
ws_e_c421

2

因此,四年之后,我终于有了这个问题答案的草稿。答案是使用拦截工具,该工具使用libevdev捕获键盘输入并在重新发送之前对其进行处理。对于同时键映射,我已经为拦截工具粗略插件叫做单弦键盘映射,让hjkl像箭头键时s,并d同时按下。


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.