
ArchLinux32を実行しているThinkPad X41tがあります。蓋には複数のボタンがあります。私は彼らにそれに付属のキーコードを与えましたsetkeycodes
。装置は「変形」することができる。つまり、ヒンジを中心に180度回転して閉じることができます。問題は、デバイスの切り替え時にこれらのカバーボタンが機能しないことです。報告されているように、まだキーコードを生成しますshowkey
が、何もしません。を使用して、evtest
次の2つを確認しました。
- ふたボタンは、通常のキーボードボタンと同じイベントデバイス「AT Translation Set 2 Keyboard」に属します。
「回心」されるのは識別可能なイベントです。これは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 ------------
また、変形イベントがすでに発生している場合は、スティックを使用してキーボードキーを押してみましたが、何もしませんでした。
したがって、遷移イベントが何かを実行すると、OSはその特定のデバイスのキー押下を無視することが疑われます。これが何であるか、どのように行うか、およびデバイスが切り替えられたときに使用できるように、カバーボタンを例外に追加する方法はありますか?
よろしくお願いします。
答え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です。そのIDを見つけたら、入力して無効にxinput disable 11
するだけです!