Sie müssen einen neuen xkb-Typ definieren. Sie können Beispiele in Ihrem xkb / types-Verzeichnis sehen (normalerweise /usr/share/X11/xkb/types
). Dort können Sie beliebige Kombinationen von Modifikatoren definieren, um unterschiedliche Verschiebungsstufen zu erhalten. Für Ihr Problem können Sie Folgendes verwenden:
type "C_A_to_L3" {
modifiers = Control+Alt+Shift;
map[None] = Level1;
map[Shift] = Level2;
map[Control+Alt] = Level3;
map[Control+Alt+Shift] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
};
Dann können Sie in Ihrer Symboldatei diesen Typ als Standard festlegen oder pro Schlüssel festlegen, um welchen Typ es sich handelt. Beachten Sie, dass sich der Typ in einer Datei im Typverzeichnis und die Schlüsseldefinition in einer Datei im Symbolverzeichnis befinden muss. Xkb verwendet eine strenge Dateisystemhierarchie, um jede Komponente zu finden.
Ich habe selbst ein bisschen an Tastaturlayouts gehackt, um mein benutzerdefiniertes Layout ( https://github.com/willghatch/hatchak ) zu erstellen , das verschiedene Iterationen durchlaufen hat, in denen ich mit seltsamen Dingen experimentiert habe. XKB kann manchmal ziemlich finnicky und seltsam sein, aber es ist immer noch das konfigurierbarste Tastatursystem, das ich bei weitem gesehen habe. Die besten Referenzen, wenn Sie mehr Probleme haben, sind:
[Bearbeiten: Die ursprünglichen Links sind derzeit nicht verfügbar, aber zum Glück existiert archive.org]
https://web.archive.org/web/20150722164820/http://www.charvolant.org/~doug/xkb/html/index.html
und
https://web.archive.org/web/20190419170426/http://pascal.tsu.ru/en/xkb/
Achtung - das ist zwar die beste Dokumentation, die ich gefunden habe, aber es bleiben viele trübe Fälle übrig. Viel Glück.