Zurücksetzen des Tastaturlayouts verhindern, wenn eine USB-Tastatur angeschlossen ist

Zurücksetzen des Tastaturlayouts verhindern, wenn eine USB-Tastatur angeschlossen ist

Immer wenn ich eine USB-Tastatur anschließe, wird das Layout aller Tastaturen auf einen Systemstandard zurückgesetzt (ein US-Layout, das Modifikatoren und andere Tasten nicht so hat, wie ich sie haben möchte). Ich habe dies auf vielen Debian- und Ubuntu-Systemen beobachtet, einschließlich Ubuntu 16.04 und 18.04. Dieses Verhaltengibt es schon sehr lange.

Ich verwende X11 ohne Desktopumgebung (obwohl einige Gnome-Dämonen gestartet werden). Ich stelle mein Tastaturlayout mit XKB (speziell … | xkbcomp - "$DISPLAY") ein, wenn ich mich anmelde.

Wenn ich eine USB-Tastatur einstecke, möchte ich, dass sie mein Layout hat, nicht das Systemlayout. Tatsächlich wünsche ich mir, dass das System einfach mein aktuelles Layout sowohl für die bereits vorhandenen Tastaturen (sofern vorhanden) als auch für die neu eingefügte Tastatur verwendet. Wenn das nicht möglich ist, würde ich mich damit zufrieden geben, ein Layout erneut anzuwenden, dasICHgewählt.

Ebenso ist die Wiederholrate auf beiden Tastaturen auf die Standardeinstellung zur Anmeldezeit eingestellt, statt auf die Rate, die ich mit festgelegt habe xset r.

Wie kann ich verhindern, dass durch einen Hotplug der Tastatur das Tastaturlayout und die Wiederholrate zurückgesetzt werden?Oder wie kann ich es, wenn das nicht klappt, zumindest auf das von mir gewählte Layout zurücksetzen?

Es gibt einen ziemlich unbeholfenen Weg, dermit einer udev-Regel. Dies ist umständlich, da davon ausgegangen wird, dass nur ein einziger X-Server vorhanden ist. Am problematischsten ist jedoch, dass davon ausgegangen wird, dass der Benutzer über Root-Berechtigungen verfügt.Ich habe keine Root-Berechtigungen, daher sind Methoden, die das Festlegen oder Bearbeiten von Udev-Regeln erfordern, Xorg.confhier nicht anwendbar.

Antwort1

Ich stelle mein Tastaturlayout mit XKB (speziell … | xkbcomp - "$DISPLAY") ein, wenn ich mich anmelde.

Wie kann ich verhindern, dass durch einen Hotplug der Tastatur das Tastaturlayout und die Wiederholrate zurückgesetzt werden?

Es ist nicht so, dass es zurückgesetzt wird. Wenn Sie bereits eine Tastatur angeschlossen haben und eine zweite hinzufügen, verwendet die alte Tastatur weiterhin dieselben Einstellungen.

Das Problem besteht darin, dass entweder die clientseitige Methode zum Laden einer xkb-Konfiguration (mit xkbcomp) oder die serverseitige Methode (mit setxkbmap) das Layout nur auf die vorhandenen, tatsächlichen Geräte anwendet, nicht auf die Abstraktion „Core Keyboard“. Wenn ein Gerät getrennt wird, gehen seine Einstellungen verloren.

Die Lösung besteht darin, sich selbst zu überwachen, wenn eine Tastatur hinzugefügt wird, und xkbcomp/ setxkbmapund xset r ratemit Ihren bevorzugten Einstellungen aufzurufen.

Dafür müssen Sienichtbenötigt keine Udev-Regel oder Root-Berechtigungen;beliebigX11-Clientprogramme können Änderungen an den Eingabegeräten über die X11-Eingabeerweiterung überwachen und entsprechend reagieren.

Ein Programm, das hierfür von der Shell aus verwendet werden kann und sich problemlos apt-getauf Debian und ähnlichen Distributionen installieren lässt, ist inputplug.

Beispiel:

$ cat ./on-new-kbd
#! /bin/sh
keymap=/path/to/your/keymap

echo >&2 "$@"
event=$1 id=$2 type=$3

case "$event $type" in
'XIDeviceEnabled XISlaveKeyboard')
        xset r rate 200 50
        xkbcomp -i "$id" "$keymap" "$DISPLAY"
esac

$ chmod 755 ./on-new-kbd

$ inputplug -d -c ./on-new-kbd

<plug keyboard>

XIDeviceEnabled 13 XISlavePointer GASIA USB KB V11
XISlaveAdded 13 XIFloatingSlave GASIA USB KB V11
XISlaveAdded 14 XIFloatingSlave GASIA USB KB V11
XIDeviceEnabled 14 XISlaveKeyboard GASIA USB KB V11

Beachten Sie die -iOption xkbcomp– Sie können für jede Tastatur unterschiedliche Einstellungen verwenden. Das Protokoll ermöglicht es auch, die Wiederholungsrate für jedes Gerät einzeln festzulegen, aber ich weiß nicht, wie das geht xset.

Natürlich kann Ihr Fenstermanager/Ihre Desktopumgebung selbst auf diese Ereignisse warten und Ihre Einstellungen überschreiben.

Antwort2

Ich hatte gerade dasselbe Problem, als ich einen USB-Switch verwendete, um eine Tastatur zwischen zwei Systemen zu teilen. Wenn ich zurück zu meinem Pop!_OS 20.04 LTS-System wechsle, einem von Debian/Ubuntu abgeleiteten System, verschwinden die Einstellungen. Ich habe die Einstellungen gnome-tweakso eingestellt, Caps Lockdass sie sich wie ein verhalten Ctrl.

Dies ist die Einstellung, die bei mir immer wieder Probleme verursacht hat. Ich habe diese Befehlszeilenmethode gefunden, um sie auf den gewünschten Wert einzustellen, sodass ich nicht immer wieder laufen muss, gnome-tweakum das Problem zu beheben.

dconf write  /org/gnome/desktop/input-sources/xkb-options "['caps:ctrl_modifier']"

Die Manpage fürxkeyboard-configenthält eine Liste zulässiger Werte xkb-optionssowie eine kurze Beschreibung.

Ich weiß nicht, wie ich das Problem verhindern kann, aber es ist jetzt weniger ärgerlich, da ich es über die Befehlszeile beheben kann.

verwandte Informationen