简而言之,我想将 Ctrl+H/L 映射到 Ctrl+Left/Right autokey
,而xbindkeys
+ xdotool
/xvkbd
不起作用。详情如下:
我现在autokey
用来实现映射,效果很好,但在某些应用程序中它无法工作,因为它autokey
是一个高级应用程序。所以我想实现一个低级的键映射。
应用程序不能这样做xmodmap
,xkb
因为 Ctrl+Left/Right 不是键符。我试过xbindkeys
+ xdotool
。以下配置脚本xbindkeys
不起作用:(为了简化问题,我将键映射到“a”而不是 Ctrl+Left/Right)
#.xbindkeys
"xdotool key a"
Control+h
我认为这是因为按下的键会影响 的执行xdotool
,因为以下工作:
#.xbindkeys
"xdotool key --clearmodifier a"
Control+h+Release
但是我就是不想在松开按键的时候触发命令,我想让它在按键的时候立即生效,所以我把配置改成:
#.xbindkeys
"xdotool keyup h; xdotool key --clearmodifier a"
Control+h
这个配置还是可以的,但是不能实现自动重复,就是长按键盘不松开,命令只执行一次。我也尝试过xvkbd
,但现在确实有效:
#.xbindkeys
"xvkbd -text 'a'"
Control+h
谁能给我一些帮助来实现我的关键地图?
对不起,我低估了xkb的力量,它可以做的比我想象的要多得多。它是 X-server 最基本、最全面的键盘管理器。我已经使用 xkb 满足了我的要求。如果您也对如何操作感兴趣,可以在 Arch Linux Wiki 上找到一个非常有用的教程。也欢迎就这个话题发帖。
以下是我案例的详细信息(尽管我强烈建议阅读链接页面,因为它非常有用且不会太长):
首先,获取您当前的键盘布局:
然后
.config.xkb
用一些编辑器打开文件,比如 vscode。您可以看到该文件由 5 个块组成(键码、类型、兼容性、符号、几何):在
xkb_types
块中,添加:在
xkb_symbols
块中,找到以下两个子块:并将这两个子块更改为:
最后,将键盘布局重置为修改后的布局:
附录
如果有人想知道如何映射到左/右而不是 Control+左/右,我添加了附录。
唯一的变化是将块中的子块替换
xkb_symbols
为