Keyboard-Shortcuts

如何找出系統範圍的鍵綁定來自何處並刪除它們?

  • October 4, 2021

我將鍵盤佈局切換為波蘭語,其中 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 8Mod1MaskakaAlt等。

所以它openbox正在竊取Alt-Space密鑰組合。


請注意,客戶端的 pid 和命令行並不總是準確的;他們是那些連接到 Xorg unix 域套接字的程序,如果他們同時分叉並且他們的孩子繼承了套接字文件描述符,則可能不再存在(這是天真的濫用SO_PEERCRED“身份驗證”的一般問題,其中這是一個很長的故事;-))

引用自:https://unix.stackexchange.com/questions/671697