Xorg
如何強制釋放鍵盤修飾符
有時,當我在使用全屏 VirtualBox 來賓時在我的機器之間使用協同作用時,我會卡住一些奇怪的鍵修飾符。如果它們存在於我的鍵盤上(如 Shift_L),我只需點擊它,它們的狀態就會重置,我可以繼續輸入小寫字母。但是其中一些根本沒有映射到我的鍵盤(如 ISO_Level3_Shift),所以我根本無法關閉它們!
如何重置它們?現在,我所能做的就是重新啟動電腦,但這是一個相當尷尬的解決方案。
我想要的只是一些可以人為地“點擊”所有可能的鍵盤修飾符的程序,因此它們的狀態將被重置。可以做到嗎?
我使用 Mint 14(Ubuntu 12.10 Quantal 的複製)。
如果你已經
xdotool
安裝了,你可以簡單地使用xdotool keyup ISO_Level3_Shift
它將一個鍵釋放(當然是針對 ISO_Level3_Shift)事件發送到 X 伺服器。
但是你想要一個程序來釋放所有的修飾鍵。可以使用 xdotool 輕鬆實現這一目標,如果不是這樣,我不知道定義了什麼修飾符鍵符。找到它們的一種可能方法是解析
keysymdef.h
:grep '^#define' /usr/include/X11/keysymdef.h | sed -r 's/^#define XK_(\S*?).*$/\1/;' | grep -E '_(L|R|Level.*)$'
它返回一些肯定是修飾符的鍵符。不幸的是,我現在找不到修飾鍵的任何精確定義,所以我不知道這是否是一個完整的列表。
附加
| xargs xdotool keyup
到上述管道將釋放所有這些密鑰。在我的系統上,它執行以下命令:xdotool keyup Shift_L Shift_R Control_L Control_R Meta_L Meta_R Alt_L Alt_R Super_L Super_R Hyper_L Hyper_R ISO_Level2_Latch ISO_Level3_Shift ISO_Level3_Latch ISO_Level3_Lock ISO_Level5_Shift ISO_Level5_Latch ISO_Level5_Lock