
Mir ist klar, dass die Neubelegung der Pfeiltasten ein altes Problem ist, ich finde jedoch keine gute Lösung, mit der ich Text mit UMSCHALT + neu zugeordneten Tasten auswählen kann, wie ich es mit den normalen Pfeiltasten tun würde.
Wenn ich beispielsweise die Feststelltaste auf ISO_Level3_Shift umstelle und xkb_symbols so einstelle, dass entweder
key <AC08> { [ k, K , Down, Down] };
oder
key <AC08> { type="THREE_LEVEL",
[ k, K , Down ] };
Das Drücken von Umschalt+Feststelltaste+K verhält sich genau wie Feststelltaste+K (während Umschalt+Abwärts sich anders verhält als Abwärts allein).
Mit Makro-Hilfsprogrammen auf höherer Ebene und der Generierung von Tastaturereignissen (d. h. der Generierung sowohl der Umschalt- als auch der Pfeiltasten) hatte ich etwas mehr Erfolg. Allerdings bringt dieser Ansatz eine ganze Reihe unterschiedlicher Probleme mit sich – häufig ist die Reaktion der Benutzeroberfläche auf einen simulierten Tastendruck anders als bei einem „echten“ Tastendruck, und außerdem gibt es Leistungsprobleme – ich kann schneller tippen, als das Ding verarbeiten kann.
Tl;dr; wie können Sie unter X mit neu zugeordneten Pfeiltasten die Umschalttaste drücken und auswählen?
Antwort1
Sie können preserve
dafür Folgendes verwenden: Fügen Sie Ihrer Typdefinition (z. B. THREE_LEVEL
) die Zeile
preserve[LevelThree+Shift] = Shift;
Dies weist xkb an, den Shift-Modifikator beizubehalten, wenn im Fall von die entsprechende Ebene aus Ihrer Modifikatorkombination ermittelt wird LevelThree + Shift
. Der Shift-Modifikator wird zur Verwendung durch das Toolkit oder die Anwendung weitergegeben (siehe auch hier:Verwenden von „preserve“ mit Typen).
Beachten Sie, dass dies Auswirkungen auf die Art und Weise hat, wie die Anwendung Tastenkombinationen interpretiert: Wenn Sie die oben definierten Optionen beibehalten und
key <AC08> { type="THREE_LEVEL", [ k, K, kappa ] };
und Sie drücken, Ctrl + Shift + LevelThree + <AC08>
würde die Anwendung es als Tastenkombination lesen Ctrl + Shift + kappa
(statt normalerweise Ctrl + kappa
), weil die Umschalttaste beibehalten und an die Anwendung weitergegeben wird.