i3: Wie verwende ich Medientasten, die auf separaten Eingabegeräten angezeigt werden?

580
dpkoch

Ich habe den i3-Fenstermanager zusammen mit dem GNOME-Desktop auf Ubuntu-GNOME 16.04 installiert. Ich habe Probleme, meine Medientasten mit einer Logitech G610-Tastatur zum Laufen zu bringen.

Ich habe folgendes in meiner ~/.config/i3/configAkte:

bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle 

und haben bestätigt, dass diese Befehle im Terminal funktionieren. Das Problem, das ich sehe, ist, dass sich die XF86AudioRaiseVolumeetc-Tastendruckereignisse nicht registrieren.

Wenn ich xev -event keyboardversuche, die Tastencodes zu sehen, bekomme ich beim Drücken der Multimedia-Tasten nur Folgendes:

MappingNotify event, serial 30, synthetic NO, window 0x0, request MappingKeyboard, first_keycode 8, count 248  KeymapNotify event, serial 31, synthetic NO, window 0x0, keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

und kein Schlüsselcode wird wie für andere Schlüssel gemeldet. Bei der Verwendung sudo showkey -kbekomme ich jedoch die folgenden Werte:

keycode 113 press keycode 113 release keycode 115 press keycode 115 release keycode 114 press keycode 114 release 

Laufen xinputsehe ich folgendes

⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech MX Master id=12 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=15 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=16 [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)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ Logitech Gaming Keyboard G610 id=10 [slave keyboard (3)] ↳ Logitech Gaming Keyboard G610 id=11 [slave keyboard (3)] ↳ Dell WMI hotkeys id=13 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)] ↳ DELL Wireless hotkeys id=17 [slave keyboard (3)] 

wo die Logitech-Tastatur als zwei Geräte angezeigt wird. Laufen xinput list-props 10und xinput list-props 11ich sehe, dass die erste Auflistung zuzuordnen ist /dev/input/event8, während die zweite Auflistung zu /dev/input/event9.

Wenn ich laufe, xinput test 10sehe ich, dass die erste Auflistung für meine Tastatur auf alle normalen Tastaturtasten, nicht jedoch auf die Medientasten, und xinput test 11nur auf die Medientasten reagiert:

key press 121  key release 121  key press 123  key release 123  key press 122  key release 122 

(Diese sind um 8 von der showkeyAusgabe entfernt, was aber anscheinend erwartet wird. Diese Werte stimmen auch mit der Mapping-Ausgabe überein xmodmap -pke, dh keycode 121 = XF86AudioMute NoSymbol XF86AudioMute). Laufen sudo evtest /dev/input/event8und sudo evtest /dev/input/event9ähnliche Ergebnisse erzielen.

Mein Verständnis des Prozesses zwischen Tastendruck und Handhabung ist also ziemlich unscharf, aber es scheint, dass die Tatsache, dass sich die normalen Tasten und Medientasten auf verschiedenen Eingabegeräten befinden, die Medientastendruckereignisse daran hindert, zur X-Sitzung zu gelangen (wie gezeigt wird) durch nicht auftauchen xev?) und daher nicht zu i3 durchkommen? Dies funktioniert gut für den GNOME-Desktop. Muss ich etwas konfigurieren, damit sie für i3 funktionieren? Ich weiß nicht, wie ich weiter vorgehen soll, jede Hilfe wäre sehr dankbar.

BEARBEITEN

Ich hatte ursprünglich Anführungszeichen um die Befehle in meiner ~/.config/i3/configDatei, aber das funktioniert nicht. Ich habe es oben bearbeitet, um es richtig zu stellen, aber das war nicht die Ursache des Problems.

1

2 Antworten auf die Frage

1
dpkoch

Basierend auf den Informationen in der vorherigen Antwort wurde mir psklar, dass das ausgeführt gnome-sessionwurde, obwohl ich mich seit dem Booten nicht beim GNOME-Desktop angemeldet hatte und nur bei i3 angemeldet war. Mein Verdacht war, dass die Gnome-Sitzung die Ereignisse stahl, aber das Aufnehmen der Tastenkombinationen in den Gnome-Einstellungen schien nichts zu ändern.

Meine Lösung bestand darin, direkt in eine tty-Sitzung zu starten, indem Sie den Anweisungen hier folgen, damit das gnome-sessionnicht startet. Ich habe die Datei ~/.xinitrcmit der einzelnen Zeile erstellt exec i3. Nach dem Booten melde ich mich am tty-Terminal an und starte startx, um i3 zu starten. Mit dieser Methode läuft gnome nicht und meine Medientasten funktionieren jetzt.

Update: Das Starten von i3 mit nur `exec i3` in meiner` ~ / .xinitrc`-Datei verursachte einige Probleme mit dbus, die dazu führten, dass beispielsweise mein Terminal 6 Sekunden zum Öffnen benötigte. Für jeden, der dieser Methode folgt, scheint das Problem behoben zu sein, wenn Sie den Inhalt von "~ / .xinitrc" in "exec dbus-launch --exit-with-session i3" ändern dpkoch vor 5 Jahren 0
0
dirkt

Teilantwort:

Dass die Tastatur als zwei Geräte angezeigt wird, ist kein Problem. Beide Geräte sind der virtuellen Kerntastatur zugewiesen, daher sollten beide Geräte die richtigen Schlüsselkernereignisse erzeugen.

Das MappingNotifyEreignis kann ein Hinweis darauf sein, dass eine Anwendung auf die Medientasten reagiert. Insbesondere wenn Sie erhalten FocusOutund FocusInEreignisse, die Sie uns nicht gezeigt haben, dann ist eine andere Anwendung für diese sicher.

Jetzt kann dies der i3-Fenstermanager mit Ihren konfigurierten Schlüsseln sein oder es kann sich um etwas anderes handeln. Als erstes sollten Sie Ihre i3-Bindungen entfernen oder auskommentieren, erneut testen und sehen, ob Sie immer noch die Mapping / Focus-Ereignisse erhalten.

Wenn ja, ist der nächste Schritt herauszufinden, welche Anwendung sie stiehlt. Verwenden Sie ps, xlsclientsusw. es zu verengen. Eine Möglichkeit ist, Anwendungen zu töten / deaktivieren, bis sie nicht mehr gestohlen wurden.

Gute Information, danke. Mit 'xlsclients' konnte ich nicht viel herausfinden, da in meiner aktuellen i3-Sitzung nur die aktiven Anwendungen aufgeführt waren. Bei Verwendung von "ps" habe ich jedoch festgestellt, dass "gnome-shell" noch läuft. Ich habe eine [Antwort] (https://superuser.com/a/1361387/945020) zur Verfügung gestellt, in der erklärt wird, wie ich damit umgegangen bin dpkoch vor 5 Jahren 0