
我有一台運行 ArchLinux32 的 ThinkPad X41t。蓋子上有幾個按鈕。我給了他們一個帶有 的密鑰代碼setkeycodes
。設備可以「變形」——即圍繞鉸鏈旋轉 180 度並像這樣關閉。問題是,當設備轉換時,這些蓋子按鈕不起作用 - 它們仍然產生鍵碼(如 所報告的showkey
),但它們不執行任何操作。使用evtest
,我確定了兩件事:
- 蓋子按鈕與常規鍵盤按鈕屬於同一事件設備,屬於「AT 翻譯集 2 鍵盤」。
被「轉變」是一件可辨識的事件。這是 evtest 的報告:
Event: time ..., type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 1 Event: time ..., -------------- SYN_REPORT ------------ Event: time ..., type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 0 Event: time ..., -------------- SYN_REPORT ------------
當變形事件已經發生時,我也嘗試使用小棒按鍵盤按鍵,但他們也沒有做任何事情。
因此,我懷疑當轉換事件觸發某些事件時,會導致作業系統忽略來自該特定裝置的任何按鍵。有沒有辦法確定這是什麼以及如何做,以及如何將蓋子按鈕添加到此事物的例外中,以便我可以在設備轉換時使用它們?
提前致謝。
答案1
已在 libinput 修復。現在,轉換不會停用常規鍵盤,但蓋子不會按下按鍵,因此這不是問題。
答案2
對於任何遇到相同問題的人來說,我剛剛偶然發現了一個簡單的解決方案。
首先,透過執行尋找平板電腦按鈕的 xinput 裝置 ID xinput
。它應該看起來像這樣:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=10 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled Pen stylus id=12 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled Pen eraser id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=11 [slave keyboard (3)]
我不確定這些 ID 是否在所有情況下都相同,但就我而言,我正在查找的條目的 ID 為 11 xinput disable 11
。