Der beste Weg wäre, kein Skript zu verwenden, sondern eine zweischichtige Tastatur (z. B. :) zu laden setxmodmap "us,se"
und die Ctrl- neu Esczu definieren , um ISO_Next_Group zu senden
In dieser Antwort auf xkb erfahren Sie, wie Sie einige Schlüssel neu definieren können, ohne die Hauptstandarddateien bearbeiten zu müssen (daher muss kein Root vorhanden sein). Fügen Sie in die lokale Symboldatei (z. B. ~/.xkb/symbols/mysymbols
:) einen kleinen Abschnitt ein als:
partial modifier_keys
xkb_symbols "ctrl_esc_toggle" {
key <ESC> {
type[Group1]="PC_CONTROL_LEVEL2",
symbols[Group1]= [ Escape, ISO_Next_Group ]
};
};
PC_CONTROL_LEVEL2 teilt mit, dass das Sencond-Symbol für diesen Schlüssel mit Control (anstelle von Shift) erhalten wird.
und in der lokalen Keymap-Datei (zB : ~/.xkb/keymap/mykbd
; Sie können sie mit erstellen setxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) ändern Sie die Zeile xkb_symbols, um "mysymbols (ctr_esc_toggle)" hinzuzufügen, sodass Sie Folgendes haben:
xkb_symbols { include "pc+us+se:2+inet(evdev)+terminate(ctrl_alt_bksp)+compose(rwin)+mysymbols(ctr_esc_toggle)" };
(Beachten Sie, dass "se: 2" und ": 2" die Definitionen der "se" -Symbole als Gruppe2 laden. Sie können verschiedene Gruppen stapeln.)
Sie können es jetzt laden mit: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
Dann wechselt Strg-Esc zwischen den Layouts "us" und "se".
Beachten Sie jedoch, dass Sie vor Esc die Strg-Taste drücken (und gedrückt halten) müssen. Auf die andere Weise funktioniert es nicht (es würde die Definition eines virtuellen Modifikators für Escape erfordern, und ich weiß nicht, wie es geht)