XKB – Pfeiltasten neu zuordnen und Umschaltverhalten zum Auswählen von Text beibehalten

XKB – Pfeiltasten neu zuordnen und Umschaltverhalten zum Auswählen von Text beibehalten

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 preservedafü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.

verwandte Informationen