XKB-Layouts werden in einem Modell definiert, das als RMLVO
Regeln, Modell, Layout, Variante, Optionen bezeichnet wird. Die System-XKB-Datenbank befindet sich normalerweise in /usr/share/X11/xkb
:
/usr/share/X11/xkb/
├── compat # ??? dark magic here, avoid
├── geometry # as in physical, eg for generating layout maps
├── keycodes # helpful for translating keycodes (from xev) to <FOO>
├── rules # "evdev" is the important one; *.lst & *.xml are descriptions
├── symbols # main layouts, variants, optional overrides
└── types # ??? dark magic here, avoid
Das keycodes
Verzeichnis definiert Schlüsselnamen wie <CAPS>
oder <AC01>
von Scancodes, die die Schlüssel tatsächlich generieren. setxkbmap -query -verbose 10
zeigt Ihnen genau, auf welche Dateien zugegriffen wird, um Ihre aktuelle Keymap zu erstellen; Wenn es heißt keycodes: evdev+aliases(qwerty)
, werden die ../keycodes/evdev
Datei und die qwerty
Zeilengruppe aus der ../keycodes/aliases
Datei geladen. Wenn Sie Tools verwenden xev
, um zu bestimmen, welchen Schlüsselcode ein Schlüssel generiert, wird in diesen Dateien angezeigt, welcher Schlüsselname diesem Code zugeordnet ist.
Ihre Modifikatorfrage ist schwieriger. Ich habe nur Hinweise auf 8 ISO-Stufen gesehen und bin mir nicht sicher, ob dies eine XKB-Einschränkung ist oder ob keine gängigen Layouts mehr als das verwenden. (Nachdem ich dies weiter untersucht habe, bin ich mir ziemlich sicher, dass Sie den XKB-Code ändern müssen, um zusätzlichen hinzuzufügen
symbol press this
level 1 a key
level 2 A shift+key
level 3 á <level3>+key
level 4 Á <level3>+shift+key
level 5 ?? <level5>+key
level 6 ?? <level5>+shift+key
level 7 ?? <level5>+<level3>+key
level 8 ?? <level5>+<level3>+shift+key
Wie Sie sehen können, gibt es in einem 8-Ebenen-Layout nur 2 Tasten, die als "neue Modifikator" -Tasten fungieren. Siehe /usr/share/X11/xkb/compat/level5
und /usr/share/X11/xkb/types/level5
, wo Level5-Shift-, Latch- und Lock-Verhalten definiert sind; Diese werden dann über die in definierten Symboloptionen an die Schlüssel angehängt /usr/share/X11/xkb/symbols/level5
.
Wenn Sie Ihren eigenen level9
Modifikator definiert haben, erhalten Sie durch die Kombination mit vorhandenen Ebenen 8 weitere Ebenen, bevor Sie einen weiteren Ebenenmodifikator benötigen:
symbol press this
level 9 ?? <level9>+key
level 10 ?? <level9>+shift+key
level 11 ?? <level9>+<level3>+key
level 12 ?? <level9>+<level3>+shift+key
level 13 ?? <level9>+<level5>+key
level 14 ?? <level9>+<level5>+shift+key
level 15 ?? <level9>+<level5>+<level3>+key
level 16 ?? <level9>+<level5>+<level3>+shift+key
Wie Sie sehen können, werden viele Tasten gleichzeitig gedrückt. Die Verwendung von Schlössern und Verriegelungen anstelle von Verschiebungen würde dies verringern, aber dies wäre ein sehr kompliziertes Layout, und wir haben uns nur vorgestellt, eine Ebenenauswahl hinzuzufügen. Jede zusätzliche Auswahl würde die vorhandenen Ebenen verdoppeln.
Die "Modifikatoren", die Sie sich vorstellen, wählen wahrscheinlich eine bestimmte Ebene aus, weshalb Sie denken, dass Sie so viele benötigen. Möglicherweise können Sie solche Auswahlaktionen definieren und sie beispielsweise auf Ebene 3 dieser Tasten platzieren, sodass level3+key9
Sie eine level14_latch
Aktion erhalten. Wenn Sie dann die nächste Taste drücken, erhalten Sie die 14. Ebene dieser Taste.
Bearbeiten : Eine weitere Frage , die speziell zum Erstellen einer gestellt wurde ISO_Level4_{Shift,Latch,Lock}
, und ich habe eine Fälschung unterISO_Level4_Latch
Verwendung vorhandener XKB-Keysyms und -Aktionen demonstriert . Diese Methode sollte für die Stufen 4, 6, 7 und 8 wirksam sein.