xkb Setzt die Tastaturebene 3 auf Strg + Alt

1827
Vlad

Der Titel sagt alles: Ich bin daran interessiert, das Windows-Verhalten zu simulieren, wobei Left Ctrl+ Left Altals Wahlmöglichkeit für die 3. Ebene fungiert. Dies ist relativ wichtig für mich, weil, als Programmierer, auf meinem Tastaturlayout wichtige Symbole wie {, [, ]oder }sind zugänglich nur durch Drücken Right Alt+ Key, die mit nur einer Hand äußerst unangenehm ist. Im Moment verwende ich beide AltTasten als Level 3-Auswähler. Dies hat jedoch einige unerwünschte Konsequenzen, da ich keine Tastenkombination mehr eingeben kann (z. B. Home in Firefox).

Ich bin auf openSuse 13.1 und verwende XFCE als Desktop-Umgebung. Diese Frage wurde schon ein paar Mal gestellt, aber leider wurde keine Antwort darauf gegeben, und die Dokumentation zu xkb ist ziemlich rar.

7
Haben Sie schon eine Lösung dafür gefunden? Das würde mich sehr interessieren. Dave vor 9 Jahren 0
Leider nicht. Vlad vor 9 Jahren 0
Mögliches Duplikat von [Verwenden von Strg + Alt, um die AltGr 3rd-Level-Funktion auf xorg zu ersetzen] (http://superuser.com/questions/384334/using-both-ctrlalt-to-replace-altgr-3rd-level-function-on -xorg) Burgi vor 8 Jahren 1
Da sehe ich noch Fragen dazu in mehreren Foren. Für mich hat diese (http://unix.stackexchange.com/questions/157834/how-to-bind-altgr-to-ctrl-alt) Lösung funktioniert. Dave vor 7 Jahren 0

1 Antwort auf die Frage

0
aplaice

Die folgende Lösung ist barbarisch, aber sie funktioniert (vorausgesetzt, Sie sind mit einer Level3-Latch statt einer Level3-Shift zufrieden) - der Unterschied besteht darin, dass bei letzterer alle Tasten gleichzeitig gedrückt werden müssen, bei der ersteren zuerst LeftCtrl+ drücken LeftAlt, loslassen und erst dann die zu schaltende Taste drücken) und root nicht erforderlich.

setxkbmap -option grp:lctrl_lalt_toggle  xmodmap -e 'keycode 37 = Control_L ISO_Level3_Latch' xmodmap -e 'keycode 64 = Alt_L ISO_Level3_Latch' 

Erklärung, wie das funktioniert:

Die xkb grp: lctrl_lalt_toggle Option macht LeftCtrlVerschiebung LeftAltzu Level2 und umgekehrt (siehe: /usr/share/X11/xkb/symbols/group). Dadurch wird auch die Ebene2 von LeftCtrlund LeftAltzu ISO_Next_Group verschoben, was unerwünscht ist, da dies ISO_Level3_Latch sein soll. Daher verwenden wir xmodmap, um die Ebene2 in ISO_Level3_Latch für beide LeftCtrlund LeftAlt(während Level1 als Control_L und Alt_L beibehalten wird) zu ändern. Die Schlüsselcodes (37 und 64) können entweder durch Überprüfen der Ausgabe von xmodmap -pkeoder durch Verwendung von gefunden werden xev.

Wenn wir nur die xmodmap-Neudefinitionen (ohne setxkbmapvorherige Verwendung ) anwenden, wäre der Schlüssel, der für die Verschiebung der Ebene 2 verantwortlich ist Shift, wie für fast alle Schlüssel, sodass sowohl Shift+ LeftCtrlals auch Shift+ LeftAlt(aber nicht LeftCtrl+ LeftAlt) zu Level3-Latches werden.

Warum müssen wir eine Level3-Latch statt einer Level3-Schicht verwenden?

Wenn Sie ISO_Level3_Shift anstelle von ISO_Level3_Latch verwenden würden, müssten Sie gleichzeitig LeftCtrl+ LeftAlt+ drücken YourDesiredKey, damit die Level3-Schicht auftritt. Unglücklicherweise sind LeftCtrlund LeftAltbleiben immer noch Modifizierer. Abgesehen davon, dass YourDesiredKey korrekt verschoben wurde, würde es auch von Alt oder Ctrl (abhängig davon, was Sie zuerst gedrückt haben) "geändert". Mit der Verriegelung haben Sie dieses Problem nicht.

Ich habe es versucht, aber für mich ist nichts passiert. Lctrl + lalt kann ich immer noch nicht als dritte Ebene auswählen. Haben Sie Hinweise, wie Sie dieses Problem beheben können? Zumindest ist es großartig, dass die Leute immer noch antworten und so lange danach arbeiten, nachdem die Frage gestellt wurde. Dave vor 7 Jahren 0
Um zu überprüfen, ob setxkbmap die entsprechende Option richtig einstellt, verwenden Sie: `setxkmap -print` und prüfen, ob die Zeile` xkb_symbols` etwas von der Art `+ group (lctrl_lalt_toggle)` enthält. aplaice vor 7 Jahren 0
Sie können `xmodmap -pke` verwenden, um Ihr aktuelles Tastaturlayout zu drucken. Sie können dies sowohl vor als auch nach den Änderungen tun, um sicherzustellen, dass sie tatsächlich korrekt angewendet werden. Schließlich sagt 'xev', welche Tastencodes gesendet werden, wenn Sie eine bestimmte Taste (oder eine Tastenkombination) drücken. Die dritte Zeile für einen bestimmten Tastendruck ist am relevantesten. Wenn Sie die Änderungen übernommen haben (die `setxkbmap -Option ...` und die beiden xmodmap-Hacks) und Sie die Tastenkombination Strg + Alt bis xev drücken, sollte die Ausgabe ISO_Level3_Latch enthalten. aplaice vor 7 Jahren 0
Sie müssen außerdem sicherstellen, dass die Schlüsselcodes für Strg und Alt tatsächlich 37 bzw. 64 sind (verwenden Sie "xev" oder "xmodmap -pke" wie oben beschrieben) und dass Sie sich auf X11 und nicht auf Wayland befinden (da Wayland dies nicht verwendet xmodmap). aplaice vor 7 Jahren 0