Ordne Super + [Links | Rechts] Home / End zu

8

Wie ordne ich den Schlüssel "Super" zu, sodass er in Kombination mit Links / Rechts den Schlüsselcode Home / End erzeugt?

Meine aktuelle setxkbmap:

setxkbmap \
  -model pc105 \
  -layout 'us(dvorak-intl),us(alt-intl)' \
  -option \
  -option grp:lctrl_lshift_toggle \
  -option compose:rwin
Iokevins
quelle
1
Nur zu Ihrer Information , Gedit berücksichtigt die gtktextviewVerknüpfungen: Strg + Umschalt + PageUp und Strg + Umschalt + PageDown , um bis zum Anfang bzw. Ende der Zeile auszuwählen (oder weiter auszuwählen). Ich glaube nicht, dass du danach suchst ... :)
don_crissti
Ich habe diese Frage so spezifisch aktualisiert, dass ich nicht nur für gedit, sondern so weit wie möglich innerhalb von X
bin.

Antworten:

11

Sie können dies nicht nur mit einer setkxbmap-Option tun, da keine Standardoption das tut, was Sie wollen.

Sie können dies jedoch tun, indem Sie das Schlüsselverhalten auf einer niedrigeren Ebene definieren.

Die Seite http://madduck.net/docs/extending-xkb/ hat mir geholfen, dies zu verstehen und einen Weg zu finden.

Erstellen Sie eine Datei ~ / .xkb / keymap / mykbd, in die Sie die Ausgabe von setxkbmap einfügen. Dies ist Ihre grundlegende Tastaturdefinition. z.B:

setxkbmap -print > ~/.xkb/keymap/mykbd

Dann erstellen wir eine ~/.xkb/types/mytypesDatei und fügen Folgendes ein:

partial
xkb_types "super_level2" {
    Virtual_modifiers Super;
    type "SUPER_LEVEL2" {
        modifiers= Super;
        map[Super]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Super";
    };
};

Es definiert einen Typ SUPER_LEVEL2, mit dem Symbole, die beim Drücken einer Taste gesendet werden, einfach definiert werden können Super.

dann in den ~/.xkb/symbols/mysymbolsPut die folgenden Zeilen:

partial modifier_keys
xkb_symbols "super_arrows_home_end" {
    key <LEFT>  {
        type[Group1] = "SUPER_LEVEL2",
        symbols[Group1] = [    Left,   Home      ]
    };
    key <RGHT>  {
        type[Group1] = "SUPER_LEVEL2",
        symbols[Group1] = [    Right,  End       ]
    };
};

(Beachten Sie die Verwendung des von uns definierten Typs "SUPER_LEVEL2". Dies bedeutet, dass das zweite Symbol (Ebene 2) in der Symbolzeile beim Drücken der Supertaste (anstelle der Umschalttaste) ausgelöst wird.

Bearbeiten Sie abschließend die ~/.xkb/keymap/mykbdDatei, um die von uns geschriebenen Snippets zu laden:

  • xkb_typesFügen Sie in der Zeile +mytypes(super_level2)die Anführungszeichen hinzu
  • in der xkb_symbolsZeile hinzufügen +mysymbols(super_arrows_home_end)in Anführungszeichen.

Jetzt können Sie es mit laden

xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY

Testen Sie Ihre linken / rechten Tasten, sie sollten wie gewünscht funktionieren.

Pablo Saratxaga
quelle
1
Funktioniert nicht unter Ubuntu 16.04. Der Super-Schlüssel öffnet weiterhin das Dash Home.
Peter Dotchev
@PeterDotchev Ihr DE steht immer an erster Stelle, daher müssen Sie zuerst die Tastaturkürzel deaktivieren oder neu zuordnen.
Owzim
Das funktioniert gut. Wie würden Sie vorgehen und super+ shift+ leftauf shift+ homeund super+ shift+ rightauf shift+ endzur Auswahl abbilden ?
Owzim
1
Sie können keinen Schlüssel oder Tastenkombination auf eine Karte Kombination von Schlüsseln. Sie können nur einem anderen Schlüssel (Symbol des Schlüssels) zuordnen. oder zu einer Zeichenfolge. Wenn Sie zufällig eine Zeichenfolge (mit Escape-Codes und dergleichen) kennen, die Sie tatsächlich erstellen möchten, können Sie sie zuordnen. Also, sollten Sie schauen , was wird produziert von shift + Hause auf Ihrem aktuellen Tastatur und die Karte. Beachten Sie jedoch, dass moderne Programme, mit denen Tastenkombinationen definiert werden können, dies wahrscheinlich umgehen. Auf der anderen Seite können Sie Verknüpfungen normalerweise neu definieren, indem Sie einfach eine beliebige Kombination eingeben.
Pablo Saratxaga
Beim Befolgen dieser Anweisungen wird eine Fehlermeldung angezeigt: syntax error: line 12 of mysymbols last scanned symbol is: End Error: Error interpreting include file "mysymbols" Exiting Abandoning symbols file "(null)" Error: success in unknown Couldn't write keyboard description to :0 Ich verwende Linux Mint 19 (basierend auf Ubuntu 18). Ich verstehe, dass die ursprüngliche Antwort ziemlich alt ist, also hat sich wahrscheinlich etwas im Format geändert. Alle Hinweise sind willkommen.
Alex Fedulov vor