Xorg-Compose-Key, ohne den wertvollen Key / Bypass-Modus zu verlieren?

1930
blueyed

Ich möchte einen Compose-Schlüssel einrichten, aber die einzigen verfügbaren Optionen in den KDE-Systemeinstellungen (und über / usr / share / X11 / xkb / rules) sind:

compose:ralt Right Alt compose:lwin Left Win compose:rwin Right Win compose:menu Menu compose:lctrl Left Ctrl compose:rctrl Right Ctrl compose:caps Caps Lock compose:102 Less-than/Greater-than 

Keiner von denen erfreut mich jedoch; "compose: caps" ist vielleicht in Ordnung, aber es ist bereits auf Ctrl abgebildet.

Gibt es eine Möglichkeit, eine Taste einzurichten (z. B. einige dieser zusätzlichen Funktionstasten) oder die Taste selbst irgendwie zu bekommen? ( raltwäre zB in Ordnung, wenn ich das ursprüngliche Verhalten der Taste (AltGr) leicht ermitteln könnte)

Ich hätte gerne etwas wie Shift-AltGr, um den Compose-Modus auszulösen.

Ich vermute, ich könnte eine zusätzliche Regel hinzufügen, wie es für / mit gemacht wird compose:102.. auf was bezieht sich 102? (es ist nicht etwas, das über überlassen wird xev).

Es gibt auch eine Option lv3:ralt_switch_multikey(Rechte Alt-Taste, Umschalttaste + Rechte Alt-Taste ist Multi_Key), die jedoch nicht wie erwartet funktioniert hat (siehe http://bugs.kde.org/246472 ).

5

2 Antworten auf die Frage

2
blueyed

lv3:ralt_switch_multikey ist was ich gesucht habe:

# But here it is: /usr/share/X11/xkb/rules/xorg.lst # Anyway... what this is doing: # lvl3:ralt_switch_multikey # right alt = AltGr = choose third shift level # shift + right alt = compose key aka Multi_Key 

(über http://ndim.fedorapeople.org/stuff/radeonhd/xorg.conf )

Ich habe dies über die KDE-Systemeinstellungen (Keyboard => Advanced) eingestellt, so dass ich Folgendes in meinem habe ~/.kde/share/config/kxkbrc:

Options=ctrl:nocaps,lv3:ralt_switch_multikey 
+42 - wȯŕkß łīkə ả čhą®µ ™ ;-) Das Beste daran ist, dass Zeichenkürzel in meiner benutzerdefinierten Karte immer noch funktionieren, wenn ich `AltGr` +` Shift` (vierte Schichtebene) anstelle der weniger häufig verwendeten verwende `Shift` +` AltGr` (jetzt Compose), und `systemsettings` behält es bei. PointedEars vor 11 Jahren 0
Sie müssen die Konfigurationsdatei nicht bearbeiten. Diese Einstellung befindet sich in KDE 4.8.4 unter „Tastatur“ → „Erweitert“ → „Taste zum Wechseln in die dritte Tastaturebene“ → „Rechte Alt-Taste, Umschalttaste + rechte Alt-Taste ist Multi-Taste“. Deshalb überlebt es ein Update über die GUI. (Ich habe die deutschen Labels übersetzt, daher können die englischen Etiketten variieren.) PointedEars vor 11 Jahren 0
Die Frage behauptet, dass dies nicht funktioniert. Warum wird die Antwort dann akzeptiert? Siehe auch: http://unix.stackexchange.com/questions/265834/setxkbmap-option-lv3ralt-switch-multikey-doesnt-work-with-many-layouts Pavel Šimerda vor 8 Jahren 0
@ Pavelšimerda Antwort und Frage sind beide von mir, und obwohl ich mittlerweile ein anderes Setup verwende, fand ich es damals so. Ich denke, es hängt damit zusammen, wie `lv3: ralt_switch_multikey` tatsächlich verwendet wird. blueyed vor 8 Jahren 0
1
Jonas Kölker

Ein anderer Ansatz ist zu verwenden xmodmap. Fügen Sie Folgendes zu Ihrem hinzu ~/.Xmodmap:

keycode 134 = ISO_Level3_Shift Multi_key 

Dies ist case sensitive. Die rechte Alt-Taste ( AltGr) auf meiner Tastatur hat zufällig den Schlüsselcode 134. Wenn dies nicht funktioniert, ist die wahrscheinliche Erklärung, dass Ihre Tastatur eine andere Nummer für diese Taste verwendet. Um dies herauszufinden, xevdrücken Sie auf die gewünschte Taste und suchen Sie nach dem Teil mit der Bezeichnung "Schlüsselcode XXX".

Sie können natürlich einen beliebigen Schlüssel für diesen Zweck verwenden. zum Beispiel,

keycode 38 = a Multi_key 

würde dazu führen, dass der aSchlüssel (nur) als Komponententaste dient, wenn er verschoben wird. Die Unfähigkeit, Kapital einzugeben Da dies ein eindeutiger Nachteil wäre, möchten Sie vielleicht etwas anderes tun

Ich benutze Shift + Shift mit einem Trick:

keysym Shift_L = Shift_L Multi_key keysym Shift_R = Shift_R Multi_key 

Dies bewirkt, dass die linke Umschalttaste als linke Umschalttaste und die rechte Umschalttaste als rechte Umschalttaste fungiert Compose. Wenn Sie jedoch eine Umschalttaste gedrückt halten, fungiert jede Umschalttaste wie . Einige Szenarien zur Veranschaulichung:

Wenn Sie die linke Umschalttaste drücken, die rechte Umschalttaste drücken, die rechte Umschalttaste loslassen und die linke Umschalttaste loslassen, erhalten Sie den gleichen Effekt, als hätten Sie eine physische ComposeTaste gedrückt (alte Sun-Tastaturen hatten diese, IIRC). Also insbesondere:

  • ShiftShift+ :+ )erzeugt einen Smiley, ☺ (zumindest bei mir ~/.XCompose)
  • ShiftShift+ a+ aerzeugt das & aring; Zeichen "å".

Wenn Sie die linke Umschalttaste drücken, drücken Sie die rechte Umschalttaste und lassen Sie die beiden Umschalttasten in umgekehrter Reihenfolge los. Sie erhalten den gleichen Effekt wie oben.

Wenn Sie die linke Umschalttaste drücken und wieder loslassen (ohne dazwischen liegende Rechtsverschiebung), erhalten Sie zwei Tastaturereignisse:

  • eine KeyPressVeranstaltung fürShift_L
  • eine KeyReleaseVeranstaltung fürMulti_key

Dies liegt daran, dass beim Loslassen der linken Umschalttaste eine Umschalttaste gedrückt wird (die linke -_-), so dass die Taste so behandelt wird, als wäre sie Multi_keyalles, was sie jemals getan hat. Das hat mir keine nennenswerten Probleme bereitet, aber vielleicht kann eine alte und fehlerhafte Anwendung die KeyPressvs.- KeyReleaseNichtübereinstimmung unterdrücken.

Beachten Sie auch, dass die Interaktion zwischen one-shot - Tasten, Modifikator - Tasten und state-Umschalttasten (zB a, Shiftund Caps Lock) interagieren funnily. Wenn Sie dieselbe Taste sowohl als Feststelltaste als auch (wenn die Umschalttaste gedrückt gehalten wird) als Compose-Taste verwenden möchten, können Sie funky Effekte erzielen. Ich scheine mich zu erinnern, dass Sie alle anwendbaren Effekte erhalten, was wahrscheinlich nicht das ist, was Sie wollen, aber Sie können es gerne ausprobieren.