Keyboard-Shortcuts
如何找出系統範圍的鍵綁定來自何處並刪除它們?
我將鍵盤佈局切換為波蘭語,其中 Alt_R 用於生成各種非拉丁字母。其中一些正在工作,而另一些則沒有:
Alt_R-l
生成“ł”,因為它應該Alt_R-c
應該生成“ć”,而是啟動 Chromium- 其他幾個 Alt_R 組合鍵也可以啟動各種程序,或者將目前視窗向下移動一小段距離,或者什麼也不做
這些功能從何而來?在我的 Settings->Keyboard 對話框或 ~/.Xmodmap 中沒有任何關於它的內容 - 還有哪些其他地方可以定義系統範圍的鍵盤快捷鍵或其他鍵盤修改?有詳盡的清單嗎?
更好的是,有沒有辦法找出什麼應用程序/系統對組合鍵做出反應,
Alt_R-c
這樣我就可以弄清楚它的鍵綁定在哪裡?這是在 Xubuntu 20.04.3 上。
有一個鍵符**
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
akaAlt
等。所以它
openbox
正在竊取Alt-Space
密鑰組合。請注意,客戶端的 pid 和命令行並不總是準確的;他們是那些連接到 Xorg unix 域套接字的程序,如果他們同時分叉並且他們的孩子繼承了套接字文件描述符,則可能不再存在(這是天真的濫用
SO_PEERCRED
“身份驗證”的一般問題,其中這是一個很長的故事;-))