
Ich habe ein ThinkPad X41t mit ArchLinux32. Auf dem Deckel befinden sich mehrere Tasten. Ich habe ihnen mit Tastencodes zugewiesen setkeycodes
. Das Gerät kann „transformiert“ werden – d. h. um 180 Grad um das Scharnier gedreht und so geschlossen werden. Das Problem ist, dass diese Tasten auf dem Deckel nicht funktionieren, wenn das Gerät transformiert wird – sie erzeugen zwar immer noch Tastencodes (wie von gemeldet showkey
), aber sie bewirken nichts. Mithilfe von evtest
habe ich zwei Dinge festgestellt:
- Deckeltasten gehören zum selben Ereignisgerät wie normale Tastaturtasten, nämlich zur „AT Translated Set 2-Tastatur“.
Das „Transformieren“ ist ein erkennbares Ereignis. Hier ist der Bericht von 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 ------------
Ich habe auch versucht, mit einem kleinen Stick Tasten auf der Tastatur zu drücken, als die Transformation bereits stattgefunden hatte, aber auch das hat nichts bewirkt.
Ich vermute also, dass das Betriebssystem alle Tastendrücke von diesem bestimmten Gerät ignoriert, wenn das Transformationsereignis etwas auslöst. Gibt es eine Möglichkeit, herauszufinden, was und wie das geschieht, und wie füge ich Lid-Tasten als Ausnahme von dieser Sache hinzu, damit ich sie verwenden kann, wenn das Gerät transformiert wird?
Dank im Voraus.
Antwort1
In libinput behoben. Durch die Transformation wird die normale Tastatur nicht deaktiviert, aber der Deckel drückt nicht auf die Tasten, sodass dies kein Problem darstellt.
Antwort2
Für alle, die mit demselben Problem hierüber stolpern: Es gibt eine einfache Lösung, die mir gerade eingefallen ist.
Suchen Sie zunächst die Xinput-Geräte-ID der Tasten Ihres Tablets, indem Sie ausführen xinput
. Sie sollte ungefähr so aussehen:
⎡ 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)]
Ich bin nicht sicher, ob diese IDs in allen Fällen gleich sind, aber in meinem Fall hat der gesuchte Eintrag die ID 11. Sobald Sie diese haben, deaktivieren Sie sie durch Eingabe von xinput disable 11
, und schon sollte es losgehen!