我将键盘布局切换为波兰语,其中 Alt_R 用于生成各种非拉丁字母。其中一些正在工作,有些则没有:
Alt_R-l
生成“ł”,因为它应该Alt_R-c
应该生成“ć”,但启动 Chromium- 其他几个 Alt_R 组合键也可以启动各种程序,或者将当前窗口向下移动一小段距离,或者不执行任何操作
这些函数从哪里来?我的“设置”->“键盘”对话框或 ~/.Xmodmap 中没有任何内容 - 还有哪些地方可以定义系统范围的键盘快捷键或其他键盘修改?有详尽的清单吗?
更好的是,有没有办法找出什么应用程序/系统对按键组合做出反应,Alt_R-c
以便我可以找出它保存其按键绑定的位置?
这是 Xubuntu 20.04.3 上的。
答案1
有一个键符号XF86LogGrabInfo
当按下该按钮时,X 服务器会打印有关所有抢夺在其日志文件中(通常/var/log/Xorg.$DISPLAY.log
)。如果您已xdotool
安装,则可以使用类似命令触发该键
xdotool key XF86LogGrabInfo
从那里您可以识别罪魁祸首 X11 客户端。例如,为了确定哪个 X11 客户端弄乱了“Space”键,我首先获取绑定到space
键符的键码:
$ xkbcomp $DISPLAY - | grep SPCE
<SPCE> = 65;
key <SPCE> { [ space ] };
(您也可以使用xev
+按Space
),然后我通过以下方式搜索它Xorg.$DISPLAY.log
:
$ awk '/registered grabs of client/{c=$0}/detail 65/{if(c)print c; c=""; print}' /var/log/Xorg.0.log
[452727.209] Printing all registered grabs of client pid 32055 openbox --config-file /home/pi/.config/openbox/lxde-pi-rc.xml
[452727.220] detail 65 (mask 0), modifiersDetail 8 (mask 0)
[452727.220] detail 65 (mask 0), modifiersDetail 24 (mask 0)
[452727.220] detail 65 (mask 0), modifiersDetail 10 (mask 0)
[452727.220] detail 65 (mask 0), modifiersDetail 26 (mask 0)
[452727.241] detail 65 (mask 0), modifiersDetail 12 (mask 0)
[452727.241] detail 65 (mask 0), modifiersDetail 28 (mask 0)
[452727.241] detail 65 (mask 0), modifiersDetail 14 (mask 0)
[452727.241] detail 65 (mask 0), modifiersDetail 30 (mask 0)
modifiersDetail 8
又名等Mod1Mask
Alt
所以它openbox
正在窃取Alt-Space
组合键。
请注意,客户端的 pid 和命令行并不总是准确的;它们是进程的 pid 和命令行连接的到 Xorg unix 域套接字,如果它们同时分叉并且它们的子进程继承了套接字文件描述符,则该套接字可能不再存在(这是天真的滥用SO_PEERCRED
“身份验证”的普遍问题,这是一个很长的故事;-))