Ich hätte gerne ein Bash-Skript, das zwischen: setxkbmap se
und umschaltet
setxkbmap us
.
Dann möchte ich dieses Skript CtrlEscüber die Tastatur> benutzerdefinierte Verknüpfungen zuordnen.
Der Punkt ist, dass ich das Tastaturlayout mit wechseln möchte CtrlEscape. Wie kann ich das umsetzen?
shell-script
x11
keyboard-layout
xkb
Fredrik
quelle
quelle
Antworten:
Ich weiß nicht, welche Desktop-Umgebung Sie ausführen und wie Sie eine Tastenkombination zuweisen können, aber dieses Skript funktioniert global, zumindest auf meiner
Ubuntu 12.04 box
undArch Linux
:quelle
xmodmap
wie in meiner Antwort unten.setxkbmap
. Gleiches gilt, wenn ich das Layout mithilfe einer Verknüpfung wechsle, die über diekeyboard shortcuts
GUI auf meinem LMDE eingerichtet wurde.setxkbmap
ändert sich nur, wenn ich damit wechsle.Es gibt verschiedene Antworten auf ähnliche Fragen . Keiner von ihnen funktioniert jedoch robust für mich.
Das folgende Skript sollte in allen Fällen funktionieren. Es funktioniert auf meinem Debian-System auf jeden Fall, wenn Sie Layouts wechseln mit
setxkbmap
:Das Skript analysiert die Ausgabe von xmodmap, um festzustellen, ob das aktuelle Layout "us" oder "se" ist. Im "us" -Layout ist SHIFT+ 7"kaufmännisches Und" zugeordnet. Wenn Sie nur zwischen den Layouts "us" und "se" 7wechseln, bedeutet "kaufmännisches Und", dass Sie das Layout "us" verwenden und das Skript in "se" geändert wird. Wenn Sie kein "kaufmännisches Und" aktiviert haben 7, wechselt das Skript zu "uns".
quelle
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 sendenIn 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: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 erstellensetxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) ändern Sie die Zeile xkb_symbols, um "mysymbols (ctr_esc_toggle)" hinzuzufügen, sodass Sie Folgendes haben:(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)
quelle
leftwin+leftalt+space
aussehen?{ include "pc+us+ru:2+inet(evdev)+group(win_space_toggle)" };