linux – 如何实施系统范围的自定义键盘快捷键/宏?
作者:互联网
我希望能够将我在文本编辑器上使用的相同自定义键绑定和快捷方式应用到整个桌面环境中.
我想基本上在系统范围内重新映射我的键盘,而不仅仅是在特定的应用程序窗口中.也就是说,当我重新映射alt j = Down时,我想按下alt j与按下“down”键相同,就我的桌面环境而言.
我使用的快捷方式经过优化,可以随时将手保持在靠近主行的自然位置:
# Note how
# system-wide remapping of *single* keys is possible with xmodmap.
Caps Lock --> Escape
Escape --> Caps Lock # Switch caps lock with
# the more useful escape key.
# As far as *all* applications
# are concerned, pressing caps lock
# is actually pressing Escape.
# However, I've not found a good way do the same for multiple keys:
alt + space --> Right Arrow
alt + Escape --> Enter
shift + alt + h --> Backspace
alt + x --> Delete
shift + alt + l --> Delete
ctrl + alt --> Alt # Default alt functionalities
# remapped to ctrl + alt
在我的文本编辑器中,这为我的准确性,速度创造了奇迹,并且帮助了我极大的肌腱疼痛,因为我的双手现在几乎不需要离开他们的自然休息位置.
首次几乎成功尝试解决方案:
使用xbindkeys调用xvkbd(x虚拟键盘).这是我的.xbindkeysrc中的一个示例:
# h-j-k-l Movement
###################
"xvkbd -xsendevent -text "\[Down]""
alt + j
"xvkbd -xsendevent -text "\[Up]""
alt + k
"xvkbd -xsendevent -text "\[Left]""
alt + h
"xvkbd -xsendevent -text "\[Right]""
alt + l
问题:
alt键通常是调用应用程序菜单的默认键(例如,alt F会在大多数应用程序中显示* F * ile下拉菜单).
此外,这似乎适用于某些应用程序,而其他人似乎忽略它.
xbindkeys并没有真正重新映射键盘,它只是告诉xvkbd发送信号,这有时会与活动应用程序产生冲突(不像xmodmap,它真正重新映射键盘).
目标
系统范围的键盘重映射,以易于移植的方式实现(rc文件或类似的东西).
alt是最佳选择键,因为ctrl在应用程序中大量使用,而mod键由我的Windows管理器(Xmonad)占用.
我的设置
我正在使用Xmonad桌面环境运行Ubuntu 12.10.
这可行吗?我还不太了解操作系统级别的东西以及它如何处理输入.
解决方法:
我看到的唯一机会是配置xkb以相应地映射您的密钥.
像游戏这样的一些应用程序可能会直接听到按下的实际按键,但通常其他一切只使用xkb映射.
有两种不同的配置工具:setxkbmap和xmodmap.
理论上,xmodmap已被弃用,应该被setxkbmap取代,但有时好的旧xmodmap也很方便.
您仅限于xkb提供的功能,但即使xmodmap也提供一组有限的修饰符.您可以为每个键指定四个键符.引用它的手册页:
The first keysym is used when
no modifier key is pressed in conjunction with this key, the
second with Shift, the third when the Mode_switch key is used
with this key and the fourth when both the Mode_switch and
Shift keys are used.
也许最好详细了解系统的细节.我建议阅读here或here,看看有什么可能.
标签:linux,input,keyboard-layout,desktop-environment 来源: https://codeday.me/bug/20190812/1642677.html