Aufgrund eines Kaffeeunfalls funktionierten einige Nummern der Tastatur meines Laptops nicht mehr. Früher habe ich xmodmap
zu verwenden F1, F2usw., als Ersatz und rettete die configs ~/.Xmodmap
.
Dies verursachte jedoch einige Probleme.
Ich verwende X nicht immer auf diesem Computer und ohne X
xmodmap
wird X nicht angewendet.Das Starten von X dauert länger.
Aus irgendeinem Grund verursachte es XFCE-Tastaturkürzel, die nichts mit einer der Tasten zu tun hatten, die über geändert wurden
xmodmap
, um nicht mehr zu funktionieren (tatsächlich funktionierten alle Tastaturkürzel außer den Fenstermanager-Tastenkombinationen nicht mehr). Nachdem einige Minuten vergangen sind, seit ich X gestartet habe, funktionieren die XFCE-Verknüpfungen wieder normal! Diese Verzögerung ist nicht sehr ärgerlich, aber auch ein Problem.
Ich stelle mir vor, dass es eine Art Mapping gibt, das vom Betriebssystem gelesen wird, bevor X startet. Gibt es keine Möglichkeit, diese Zuordnung zu ändern? Ist es eine Möglichkeit, die Tastaturzuordnung ohne X-Tools zu ändern? Ich benutze Debian Stable.
PS: Offenbar ist die Datei , dass Anrufe xmodmap .Xmodmap
auf startx
ist /etc/xdg/xfce4/xinitrc
. Den Inhalt finden Sie hier .
xev
ein Terminal aus, drücken Sie jede Taste Ihrer Tastatur und prüfen Sie, ob das KeyUp-Ereignis erkannt wird.Antworten:
Erstens die guten Nachrichten
Die Linux - System - Konsole absolut hat seine eigene Reihe von Tastaturbelegungen, die mit den Werkzeugen aus dem verwaltet werden können
kbd
Paket, spezielldumpkeys
undshowkey
für die Entdeckung undloadkeys
zur Last in einer angepassten Mapping. Die SuperUser-Frage Wie ändere ich die Konsolen-Keymap unter Linux? hat eine Antwort mit guten Informationen zur Verwendung dieser Tools.Nun die schlechten Nachrichten
Mit diesen Tools können Sie zwar die Schlüssel auf der Linux-Konsole neu zuordnen, ohne
xmodmap
dass X ausgeführt werden muss, aber sie wirken sich nur auf die Keymappings auf der virtuellen Textkonsole aus. Die Änderungen haben in der grafischen Umgebung keinerlei Auswirkungen, da das XInput / evdev-System von X direkt von den Eingabegeräten liest und selbst verarbeitet.Wenn Sie also gehofft haben, die Verwendung zu vermeiden,
xmodmap
indem Sie einfach die Konsole neu zuordnen und sie überall anwenden lassen, funktioniert das leider nicht. Tatsächlich müssten Sie sowohl die Konsole (mitloadkeys
) als auch X11 (mit einer Methode wiexmodmap
) neu zuordnen , um überall dasselbe Tastaturlayout zu verwenden.Die Lösung für die
xmodmap
Langsamkeit (und den Fehler, da die Neuzuordnungen in Desktop-Umgebungen, in denen das Layout umgeschaltet wird, fehlerhaft und nicht dauerhaft sind) besteht darin, ein völlig neues Tastaturlayout zu definieren, das auf dem zuvor verwendeten Layout basiert, anstatt Laufzeitänderungen vorzunehmen . Beim Start von X würden Sie dieses neue, neu zugeordnete Layout laden, anstatt das, was Sie gerade verwenden. (Es scheint, dass dies jetzt die einzige Möglichkeit ist, das Tastaturlayout in Ubuntus - und möglicherweise anderen Distributionen - zuverlässig zu ändern, da diesexmodmap
nicht mehr nützlich sind.)Informationen zum Definieren und Verwenden eines benutzerdefinierten
xkb
Tastaturlayouts finden Sie unter:Beide wurden in diesem Jahr (2014) geschrieben, daher sollten die Informationen aktuell sein. Die Ubuntu-Wiki-Informationen sollten größtenteils auf jede Distribution anwendbar sein, da alle das
xkb
System in X verwenden.quelle
Es gibt tatsächlich Möglichkeiten, eine Neuzuordnung auf einer Ebene vorzunehmen, die niedrig genug ist, um auf das gesamte System angewendet zu werden, ob X11 oder nicht, und sie sind jetzt wichtiger denn je, da Wayland-Compositors eingesetzt werden, die es versäumen, eine Benutzeroberfläche für die Neuzuordnung von libinput bereitzustellen Unterstützung.
Grundsätzlich müssen Sie neu konfigurieren, wie die Eingabeebene des Kernels rohe Scancodes in Schlüsselcodes übersetzt, bevor sie die Konsole oder die evdev-API erreichen, auf der sich X11 und Wayland befinden.
Mir sind zwei Möglichkeiten bekannt, dies zu tun:
Ändern Sie den
hwdb
Eintrag in der Hardwaredatenbank ( ) für Ihre Tastatur. Mit udev können Sie dies tun, indem Sie Regeldateien hinzufügen/etc/udev/hwdb.d/
und eine Datenbankwiederherstellung mit auslösensystemd-hwdb update
und diese dann ohne Neustart über erzwingenudevadm trigger
.Diese ArchiWiki-Seite enthält vollständige Anweisungen und besagt ausdrücklich, dass sie sowohl für X11- als auch für Konsoleneingaben funktioniert.
Es gibt einen Daemon namens evdevremapkeys, der speziell für die Neuzuordnung von Schlüsselereignissen auf evdev-Geräten zur Unterstützung der Neuzuordnung von Affen-Patches zu evdev-Clients geschrieben wurde, die diese nicht unterstützen, wie Wayland-Compositors.
Es verwendet grundsätzlich den gleichen Ansatz wie Userspace-Treiber wie G15Daemon, die nicht standardmäßige Eingabegeräte kompensieren müssen. (Öffnen Sie das evdev-Gerät, verschlucken Sie alle Ereignisse, die neu zugeordnet werden sollen, damit nichts anderes auf dem Gerät zuhört, und geben Sie die korrigierten Ereignisse über die
uinput
API aus, um Eingabegeräte auf Kernelebene aus dem Benutzerbereich zu erstellen.)quelle
ioctl
, mit der die Zuordnungen festgelegt werden können, ohne dass ein Dämon oder eine HWDB erforderlich ist, aber aus irgendeinem Grund scheinen dafür keine Standardwerkzeuge verfügbar zu sein (ich musste mein eigenes Werkzeug schreiben, um zu experimentieren)./usr/lib/udev/hwdb.d/60-keyboard.hwdb
genau herauszufinden, welche Scancode-IDs Sie verwenden müssen, um die gewünschten Tasten anzugeben für dieses Gerät neu zuzuordnen .