So passen Sie Tastaturbelegungen mit Wayland an


20

Ich verwende Linux auf einem Macbook mit einer UK / GB-Tastatur und passe die Tastaturbelegung an, um einige Probleme zu lösen, die durch das seltsame Tastaturlayout von Apple verursacht werden. Ich xmodmapmache das immer. Ich würde es gerne mit Wayland versuchen, aber das xmodmapfunktioniert nicht. Wie kann ich in Wayland ein ähnliches Ergebnis erzielen? Die von .Xmodmapmir verwendete Datei enthält Folgendes:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Zeile 1: Auf britischen Tastaturen Shift- 3ist £, daher hat # normalerweise einen eigenen Schlüssel in der Nähe Return. Aber auf dem Mac wird # mit Altgr- erhalten 3. Als Programmierer verwende ich # weit mehr als £, so dass diese Zeile sie vertauscht. Durch die Auswahl des US-Layouts wird dies ebenfalls erreicht. Unter Linux werden jedoch auch einige andere häufig verwendete Schlüssel ausgetauscht, während unter OS X diese anderen Schlüssel von US / UK nicht betroffen sind.

Zeile 2-5: Lässt die rechte CmdTaste als rechte Taste fungieren Ctrl, da diese Tastatur keine physische rechte CtrlTaste hat.

Zeile 6: Funktioniert CapsLocknur, wenn Sie mit drücken Shift. Nicht Mac-spezifisch, sollte dies eine Standardoption für alle Betriebssysteme und Tastaturen sein.


Ich bin auf halbem Weg da: anscheinend verwendet Wayland xkb und xmodmap ist in X sowieso veraltet. Leider ist xkb erheblich komplizierter, und GNOME hat nie in Betracht gezogen, dass Benutzer es möglicherweise anpassen müssen. Deshalb habe ich eine zweite Frage aufgeworfen .
Realh

Antworten:


11

Leider ist das Ändern der XKB-Systemdatenbank /usr/share/X11/xkbdie einzige Möglichkeit. Aus Ihrer anderen Frage geht hervor, dass Sie diesen Teil zum Laufen gebracht haben.

Die Einschränkung ist hauptsächlich auf die Unreife von Wayland und eine Designüberprüfung in XKB zurückzuführen.

  • Tools mögen setxkbmapund xkbcompbieten eine -IOption zum Hinzufügen einer benutzerdefinierten Datenbank zur Suche (z. B. ~/.xkboder ~/.config/xkbmit Dateien und Unterverzeichnissen, die wie die Systemdatenbank angeordnet sind). Diese Tools interagieren mit dem X-Server. Daher können sie hilfreich sein, um die XwaylandKompatibilitätsebene für die Ausführung von X-Anwendungen unter Wayland zu konfigurieren . Gegenwärtig sprechen sie jedoch nicht die Wayland-Protokolle.

  • Wayland-Protokolle reifen noch. Derzeit scheinen die Protokolle input-methodund text-inputam relevantesten zu sein, und beide sind instabil. Erwähnen Sie auch nichts über das Ändern einer definierten Tastaturbelegung. Diese Details bleiben dem Komponisten überlassen.

  • Sowohl GNOME als auch KDE bieten Daemons für die Tastaturverwaltung, die die System-XKB-Optionen verwalten sollen, einschließlich Änderungen im laufenden Betrieb. Nach meinem besten Wissen gibt es auch keine Möglichkeit, Angaben zu Benutzeranpassungen zu machen. Nach meinem Kenntnisstand verlassen sich Weston und andere Compositors auf Konfigurationsdateien oder Umgebungsvariablen, um die XKB-Optionen beim Start festzulegen, und bieten keine andere Möglichkeit, sie zu ändern, als sie zu beenden und neu zu starten.

  • Selbst in XKB selbst wird dies nicht vollständig unterstützt. Ihre benutzerdefinierte Symboldatei kann includeandere Systemsymboldateien enthalten. Derzeit gibt es jedoch keine includeFunktionen für XKB-Regeldateien. Selbst wenn Sie ein Tool hätten, das mit dem Wayland-Compositor kommuniziert und Ihre persönlichen Anpassungen nachschlägt, müssten Sie alle Regeln, die Sie verwenden möchten, manuell einfügen (dh kopieren) rules/evdev*aus dem System XKB und ändern Sie es). libxkbcommonhat ein offenes Problem zu diesem Thema und einen verwandten Fehler .


1
Ich hätte klarstellen sollen, dass ich das jetzt so ziemlich gelöst habe. Ich sagte es in der anderen Frage, aber die Informationen sind etwas unzusammenhängend. Ich beabsichtige, dies klarer zu dokumentieren, wenn ich dazu komme, einen Blog zu meiner Website hinzuzufügen, dann muss ich daran denken, hier darauf zu verlinken.
Realh

sicher, aber es war immer noch eine unbeantwortete frage, also habe ich versucht, das wayland-äquivalent des aspekts anzusprechen .Xmodmap.
Quixotic

3
Ich habe dies jetzt in einem Blogeintrag ausführlich dokumentiert .
Realh

5

Ich habe dafür mit Erfolg Interception Tools für Linux verwendet und kenne Leute, die andere Plugins für ihre benutzerdefinierten Zuordnungen produzieren . caps2esc ist ein erstes Proof-of-Concept-Plugin, das ich jeden Tag verwende und das sowohl auf X als auch auf Wayland funktioniert. Das Tool ist etwas niedriger als die übliche Mapping-Software, aber ziemlich flexibel, und mein Plan für ein nächstes Plugin ist ein verallgemeinertes Chording-Mapping-Tool.

Haftungsausschluss: Ich bin der Autor.


Die Interception Tools sehen wirklich interessant aus! Vielen Dank für Ihre Arbeit!
balu

1
Ich bin mir nicht sicher, wie ich meine Eingaben über ein Python-Skript
ausführen soll

4

Für diejenigen, die 2018 hierher kommen (Ubuntu 17.10), kann der kritischste Teil davon mit dem GNOME Tweak Tool erreicht werden.

Gnome Tweak Tool> Tastatur & Maus> Zusätzliche Layoutoptionen> Strg ist Win-Tasten (und den üblichen Strg-Tasten) zugeordnet.


2
Legt die Verwendung von "Gnome Tweak Tool" (was auch immer das ist) die neuen Zuordnungen auch für andere Windows-Manager / Umgebungen / grafische Shells fest?
Mali Remorker

Gnome Tweak Tool kann die Feststelltaste nicht neu zuordnen.
andyn

@andyn Ich gnome-tweaks-3.34.0-1.fc31.noarchkann die Feststelltaste neu zuordnen - z. B. "Feststelltaste ist auch eine Strg-Taste", "Feststelltaste als zusätzliche Esc-Taste", "Feststelltaste als Strg-Taste" und viele mehr.
maxschlepzig

2

Diese Antwort hat die gleiche Idee wie die Antwort von quickotic, nur mit einem genaueren Beispiel:

Gnome Tweaks haben eine Liste von 20 oder 30 Tastatur-Tweaks, die Sie über xkb ausführen können. Manchmal finden Sie die gewünschte Optimierung standardmäßig. In meinem Fall wollte ich die Drucktaste mit dem Menü tauschen.

Die einzige Möglichkeit, den über xkb verfügbaren printscr-Schlüssel zu ändern, bestand darin, ihn durch Win_R zu ersetzen. Gunnar Hjalmarsson zu diesem Thread schlug mir vor, die Änderungen von xkb so zu ändern, dass printscr / win_r stattdessen printscr / menu ausführt. Wir haben gemeinsam eine Lösung erarbeitet, die ich hier erneut übermitteln werde:

Geben Sie im Terminal Folgendes ein:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Am Ende der Datei finden Sie:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Löschen Sie diesen Abschnitt und ersetzen Sie ihn durch diesen:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Verwenden Sie zum Löschen in Nano die Rücktaste (Hervorheben und Löschen funktioniert nicht). Verwenden Sie zum Einfügen die Tastenkombination Umschalt-Strg-V. Zum Verlassen und Speichern drücken Sie Strg-x, wählen Sie Ja zum Überschreiben und drücken Sie die Eingabetaste.

Starten Sie neu. In Gnome / Ubuntu Gehen Sie zu den Gnome-Tweak-Tools. Gehen Sie in den Tweak-Tools zum Abschnitt Tastatur & Maus, klicken Sie auf die Schaltfläche Zusätzliche Layout-Optionen und erweitern Sie das Verhalten der Alt / Win-Taste. Auswählen der Option ganz unten: Win wird printscr zugeordnet (denken Sie daran, dass wir nur dieses Verhalten geändert haben, um print und Menu anstelle von print und Win auszutauschen). (Ich bin mir sicher, dass es eine Möglichkeit gibt, die modifizierte xkb-Option in KDE zu aktivieren, aber ich verwende sie nicht, daher kann ich Ihnen die genaue Vorgehensweise nicht nennen.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.