XKB - Pfeiltasten neu zuordnen und Verschiebungsverhalten beibehalten, um Text auszuwählen

1690
dgirardi

Ich erkenne, dass das Umlegen von Pfeiltasten ein altes Problem ist, jedoch scheint es nicht so, dass ich eine gute Lösung finde, die es mir ermöglicht, Text mit UMSCHALT + neu zugeordnete Tasten auszuwählen, wie ich es mit den Vanilla-Pfeiltasten tun würde.

Zum Beispiel, wenn ich Caps Lock wieder auf ISO_Level3_Shift abbilden und xkb_symbols auf "Lesen" setzen

key <AC08> { [ k, K, Down, Down] }; 

oder

key <AC08> { type="THREE_LEVEL", [ k, K, Down ] }; 

Das Drücken von Umschalt + CapsLock + K verhält sich genau wie CapsLock + K (Shift + Down verhält sich anders als nur Down).

Ich hatte etwas mehr Erfolg mit der Verwendung höherer Makrodienstprogramme und der Erzeugung von Tastaturereignissen (dh sowohl die Umschalt- als auch die Pfeiltaste erzeugen). Allerdings hat dieser Ansatz eine ganze Reihe unterschiedlicher Probleme - oftmals unterscheidet sich die Reaktion der Benutzeroberfläche auf einen simulierten Tastendruck von dem "echten" Tastendruck, und es gibt auch Leistungsprobleme - ich kann schneller schreiben, als das Ding verarbeiten kann.

Tl; dr; Wie kann man mit X-Pfeiltasten die Umschalttaste auswählen?

5

1 Antwort auf die Frage

5
stev47

You can use preserve for that: add to you type-definition (e.g. THREE_LEVEL) the line

preserve[LevelThree+Shift] = Shift; 

This tells xkb to preserve the shift modifier when figuring out the appropriate level from your modifier combination in the case of LevelThree + Shift. The shift modifier is passed on for use by the toolkit or the application (see also here: using preserve with types).

Note that this has impact for example on how the application interprets keystroke combinations: if you had defined the above preserve and

key <AC08> { type="THREE_LEVEL", [ k, K, kappa ] }; 

and you'd press Ctrl + Shift + LevelThree + <AC08> the application would read it as a key combo Ctrl + Shift + kappa (instead of usually Ctrl + kappa) because the shift modifier gets preserved and is passed on to the application.

Das war es, wonach ich gesucht habe, aber mir fehlt ein letzter Teil: Ist es möglich, xkb so zu konfigurieren, dass ein Tastendruck die Umschalttaste (oder andere Tasten) umschaltet? Ich möchte beispielsweise, dass CapsLock + s die Umschalttaste umschaltet, sodass ich mit Capkslock + jkl Text auswählen kann. dgirardi vor 10 Jahren 0