Ich möchte mein AltGR + Right_Windows neu zuordnen, kann aber nicht herausfinden, wie. Egal was ich versuche, das Drücken der rechten Windows-Taste gibt den Namen Keysym aus, wenn die rechte Alt-Taste gedrückt wird oder nicht.
Dies ist der Inhalt der xmodmap-Datei, die ich gerade teste. In meiner Tastatur ist 38 der Schlüsselcode für "a", 48 der Schlüsselcode für aportrophe / doublequote und 134 der Schlüsselcode für die rechte Windows-Taste.
keycode 38 = 1 2 3 4 5 6 7 8
keycode 48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8
Wenn ich Right_Alt + Apostroph drücke, werden 5 ausgegeben, aber Right_Alt + a und Right_Alt + Right_Windows geben 1 (sowohl wenn die rechte Alt-Taste gedrückt wird als auch wenn nicht), was nicht das ist, was ich wollte.
Mein aktuelles Tastaturlayout ist us(alt-intl)
und das richtige Alt ist anscheinend so eingerichtet, dass es als AltGr / Iso_Level3_Shift fungiert. Die Ausgabe von xmodmap -pm
ist die folgende:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
xev
die verschiedenen Tastenkombinationen ausführen und drücken, um zu sehen, ob die Hardware und bis zur Xwindows-Ebene zunächst unterscheidbare Tastendrücke erhalten.us(cz_sk_de)
Tastaturlayout und xmodmap.Antworten:
Verwenden von xmodmap zum Konfigurieren einzelner Schlüsselzuordnungen
Es ist Zeit, Ergebnisse meiner eigenen Forschung aufzuschreiben.
Ich dachte, dass ich etwas in xmodmap verpasst haben muss und dass es einfach nicht sehr gut dokumentiert ist und die Leute verwirrt sind. Es stellte sich jedoch heraus, dass das X.Org-Design in Bezug auf XKB und xmodmap einfach nur dumm ist.
Epischer Fehler: xmodmap
Mit xmodmap können Sie vorhandene Zuordnungen neu definieren, solange diese Zuordnungen tatsächlich in Ihrem ursprünglichen Tastaturlayout vorhanden sind. In dem in der Frage beschriebenen Fall können Sie das Verhalten von Schlüsseln nicht erweitern, um AltGr zu verwenden. Sie können die AltGr-Schlüsselsymbole nur für Schlüsselcodes ändern, die bereits AltGr verwenden.
Siehe auch: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html
Problemumgehung: Mode_switch
Diese Problemumgehung wird in der Antwort von @ Ned64 beschrieben. Sie können
AltGr
vonISO_Level3_Shift
zu neu zuordnenMode_switch
.Ich habe die folgende Befehlszeile erfolgreich zum Neuzuordnen verwendet
AltGr
.Der Nachteil ist, dass dadurch Ihr aktuelles Tastaturlayout
xmodmap
beschädigt wird. Sie können jedoch alle Zuordnungen nacheinander neu erstellen, indem Sie wie bereits erwähnt @ Ned64 verwenden.Problemumgehung: Geändertes Tastaturlayout
Ich verwende es
us(cz_sk_de)
als Tastaturlayout und habe versucht, es zu ändern, indem ich die Konfiguration für die Tasten hinzufügte, die ich erweitern wollte.(Im Abschnitt
xkb_symbols "cz_sk_de"
von/usr/share/X11/xkb/symbols/us
)Setzen Sie einfach das Tastaturlayout zurück, um die geänderte Version zu verwenden.
Jetzt können Sie (1) Typ tschechischen und englischen Anführungszeichen und Ellipsen Kombinationen mit
,
,.
,Shift
undAltGr
Tasten und / oder (2) neu zuordnen diese Schlüssel verwendenxmodmap
jetzt , dass sie definiert sind.Der Hauptnachteil besteht darin, dass
setxkbmap
scheinbar keine beliebigen Speicherorte für Tastaturlayouts unterstützt werden. Daher müssen Sie anstelle Ihres Home-Verzeichnisses in die Systemkonfiguration schreiben.Fazit
Dies scheint ein Beispiel für ein überentwickeltes und schlechtes Design von X.Org zu sein, bei dem sich selbst eine triviale Sache wie das Zuordnen eines Schlüsselcodes und einer Kombination von Modifikatoren zu einem Symbol als Problem herausstellt. Die Tools scheinen keine vernünftige Möglichkeit zu bieten, einzelne Tastenzuordnungen in der Benutzerkonfiguration ohne Nebenwirkungen zu ändern.
quelle
Schritt eins: Machen Sie AltGr nutzbar
Ich habe herausgefunden, dass AltGr-modifizierte Schlüssel auf meinem System nur funktionieren, wenn ich auch den AltGr-Schlüssel
Mode_switch
wie folgt neu zuordne :Wenn Sie eine andere Tastatur haben, müssen Sie diese möglicherweise durch
108
Ihren Code ersetzen. Überprüfen Sie dies durch Eingabedann benutze diese Nummer. (Der Schlüssel wird normalerweise
Alt_R
auf Systemen aufgerufen , die ich kenne.)Alternativ kann dies auch funktionieren, wenn Alt_R noch keinem anderen Element zugewiesen ist:
Ihr AltGr-Modifikator belegt jetzt Position 3 (mit Umschalttaste: 4) in Ihrer Modifikatorliste.
Schritt zwei: Weisen Sie die Schlüssel nach Bedarf zu
Sie können jeder gewünschten Taste Ihrer Tastatur AltGr-Varianten zuweisen. Wenn Sie andere Schlüssel haben, die jetzt nicht dem gewünschten Code entsprechen, müssen Sie diese genau wie Ihre anderen Schlüssel (die von Ihnen getesteten) neu zuweisen.
Schritt drei: Konvertieren Sie dies in ein Skript
Nehmen Sie jetzt einfach Ihre
xmodmap
Befehle und schreiben Sie alle (aber nur) Änderungen an Ihrer Standardtastatur in eine Datei - das ist schneller als das Laden einer vollständigen Keymap. Starten Sie dieses Skript einmal nach jeder Anmeldung und immer dann, wenn die Keymap durch einen Prozess zurückgesetzt wird.Ich habe im Laufe der Jahre unter Solaris, IRIX und Linux viel damit experimentiert, und meines Wissens ist dies die einzige Lösung, um AltGr zum Laufen zu bringen - und es funktioniert seit mehr als 20 Jahren gut für mich.
quelle
xmodmap -pm
undxmodmap -pke | grep -w SOMECHANGEDKEY
in dieser Situation für einen Schlüssel, der nicht mehr funktioniert.xmodmap
entsprechend Ihrer Ausgabe hinzufügen )xmodmap -pke | grep Alt_R
gibt auf meinem System keine Ergebnisse zurück. Mein System ist Lenovo ThinkPad X230 mit Gentoo stabil. Ich habe es auchgrep -i
ohne Erfolg versucht .us(cz_sk_de)
für mich nicht mehr funktionieren. Daher funktioniert diese Antwort bei mir nicht und wird bei vielen anderen nicht funktionieren.Anscheinend liest xmodmap das Standard-AltGR nicht so, wie es sollte. Möglicherweise ist es auf bestimmte Tastaturlayouts beschränkt. Möglicherweise handelt es sich nur um Layouts außerhalb der USA. In beiden Fällen besteht das eigentliche Problem darin, dass Sie Ihr Tastaturlayout ersetzen können Ich möchte das nicht wirklich tun, da sie spezielle Zeichen für das Layout verwenden müssen, an das sie gewöhnt sind (wie skandinavische Tastaturlayouts mit Zeichen wie ðþæöáúíóåů usw.), deren Konfiguration für andere Tastaturlayouts schwierig wäre.
Du kannst rennen
Um AltGR wieder an etwas zu binden, mit dem xmodmap arbeiten kann, wird die dritte Zuweisung eines Tastenfelds ausgegeben, wenn Sie jetzt AltGR drücken. Das ursprüngliche Tastaturlayout wird jedoch vollständig beschädigt, da mit der AltGR-Taste keine AltGR-Tastenkombinationen mehr funktionieren.
Ich habe zwei Problemumgehungen gefunden, die mein vorhandenes Tastaturlayout nicht beschädigen und das Wechseln von Layouts nicht beinhalten . Eine besteht darin, Mode_switch an eine andere Taste zu binden.
Der ideale Schlüssel dafür ist Super_R, direkt neben AltGR, der Schlüsselcode dafür ist 134. Allerdings haben nicht alle Tastaturen diese und in meinem Fall auf einem Laptop habe ich sie auch nicht, also habe ich beschlossen, sie an die letzte zu binden verbleibender Schlüssel, den ich praktisch nie benutze, Right Control.
Ich habe ein amerikanisches physisches Tastaturlayout, aber die europäische Layoutkonfiguration und die Taste weniger / größer / Balken (auch als ISO_Backslash bekannt, obwohl dies von xmodmap selbst nicht erkannt wird) fehlen normalerweise neben Z auf solchen Tastaturen. Ich habe das an Menu (135) gebunden, aber es könnte als Alternative zu R_Ctrl und Super_R dienen
Dies ist eine schmutzige Lösung, nehme ich an.
Die zweite Problemumgehung dauerte etwas länger. Verwenden von sxhkd (Alternative zu xbindkeys)
Wenn Sie dies zu ~ / .config / sxhkd / sxhkdrc hinzufügen :
Ihr AltGR funktioniert wie gewohnt, aber wenn es gedrückt wird, wird Mode_switch umgeschaltet (ähnlich wie Feststelltaste, aber für Mode_switch) und alle xmodmap-Tasten, die es verwenden, werden im AltGR-Modus gesperrt, bis Sie AltGR erneut drücken, um es zu deaktivieren. Es sollte eine einfache Sache sein, ein Skript zu erstellen, um es automatisch zu deaktivieren, wenn der Schlüssel losgelassen wird, aber meine Versuche, dies zu tun, waren, gelinde gesagt, ziemlich fehlerhaft.
quelle