
私は ArchLinux32 を実行している ThinkPad X41t を持っています。蓋にはいくつかのボタンがあります。 を使用してキーコードを割り当てましたsetkeycodes
。デバイスは「変形」できます。つまり、ヒンジを中心に 180 度回転して閉じることができます。問題は、デバイスが変形されると、それらの蓋のボタンが機能しなくなることです。それらはキーコードを生成しますが ( によって報告されているようにshowkey
)、何もしません。 を使用してevtest
、次の 2 つのことを確認しました。
- 蓋ボタンは、通常のキーボード ボタンと同じイベント デバイス、「AT Translated Set 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 ------------
また、小さなスティックを使用して変身イベントがすでに発生しているときにキーボードのキーを押してみましたが、何も起こりませんでした。
したがって、変形イベントが何かをトリガーすると、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 です。それがわかったら、 と入力して無効にすれば、準備xinput disable 11
完了です。