Wie tausche ich Befehls- und Steuertasten Schritt für Schritt mit xkb aus?

9

Ich möchte meine lange Aluminiumtastatur von Apple mit vertauschten Befehls- Cmdund CtrlSteuertasten verwenden. Wie wird dies Schritt für Schritt mit Trusty Tahr (14.04) durchgeführt xkb?

Hinweis: Diese Lösung funktioniert bei mir nicht, da xkbsie xmodmapin 13.04 oder noch früher ersetzt wurde .

Aleksandar Savkov
quelle
1
Diese Lösung hat bei mir nicht funktioniert. Es ist höchstwahrscheinlich veraltet (eigentlich bin ich mir ziemlich sicher, kann die Referenz jetzt einfach nicht finden). Ich habe es vor dem Posten versucht. Deshalb habe ich die Ubuntu-Version angegeben.
Aleksandar Savkov
1
@ WaldirLeoncio Ich hoffe, dies macht deutlich, warum die Frage kein Duplikat ist: askubuntu.com/questions/325272/…
Aleksandar Savkov

Antworten:

7

Diese Antwort basiert hauptsächlich auf der hier gegebenen Antwort . Der Grund, warum ich diese Frage erneut stelle und beantworte, ist der letzte Schritt, der nicht vollständig beschrieben wurde. Weitere xkbInformationen finden Sie hier , hier und hier .

  1. Erstellen Sie eine Datei in /usr/share/X11/xkb/symbols(könnte auch in sein /etc/X11/xkb/symbols), die aufgerufen wird altwin2und die folgende Zuordnung enthält:

    // Control is SWAPPED with Win-keys 
    partial modifier_keys
    xkb_symbols "cmd_n_ctrl" {
        key <LWIN> {        [       Control_L               ]       };
        key <RWIN> {        [       Control_R               ]       };
        key <LCTL> {       [       Super_L         ]       };
        modifier_map Control { <LWIN>, <RWIN> };
        modifier_map Mod4 { <LCTL> };
    };
    
  2. Fügen Sie die folgende Zeile unter dem option = symbolsAbschnitt in ein /usr/share/X11/xkb/rules/evdev(ignorieren Sie die Warnung in der ersten Zeile):

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. Fügen Sie die neue Option /usr/share/X11/xkb/rules/evdev.lstunter dem Abschnitt hinzu option:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. Wenn Sie nicht wissen , wo Ihre Tastatur - Konfigurationsdatei ist, können Sie bearbeiten es mit dconf-Editor , das Hinzufügen "altwin2:cmd_n_ctrl"in xkb-optionsunter org :: gnome :: Desktop :: Input-Quellen wie gezeigt hier . Wenn Sie wissen, wo sich Ihre Konfigurationsdatei befindet, sollten Sie die neue Option XkbOptionswie unten gezeigt in das Feld einfügen:

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. Starten Sie entweder neu oder starten Sie neu lightdm, um die Änderungen zu aktualisieren:

    sudo restart lightdm
    

HINWEIS: Wenn Änderungen direkt in den Layoutdateien vorgenommen werden, dh keine Optionen verwendet werden, müssen die zwischengespeicherten Dateien /var/lib/xkb/wie hier angegeben gelöscht werden .

Aleksandar Savkov
quelle
2
Sollte !option = symbolsAbschnitt sein, nicht options = symbols(verbrachte Zeit damit, nach "options =" ​​zu suchen, um den Abschnitt zu finden).
Ben Davis
Siehe auch hier: reddit.com/r/Ubuntu/comments/8lnr8q/remapping_keys
Aleksandar Savkov
Wie die meisten Dinge mit xkb und xmodmap, funktioniert nicht, hat wahrscheinlich mein System auf andere Weise kaputt gemacht, ich habe diesen Mist satt und ich wünschte wirklich, Linux würde seinen Mist zusammen mit der grundlegendsten verdammten Sache über Schlüsselzuordnung und -bindung bekommen.
Seph
Beachten Sie, dass dies im Jahr 2014 geschrieben wurde und nicht für moderne Distributionen gilt.
Aleksandar Savkov
3

In 16.04 habe ich das endlich so zum Laufen gebracht. Xmodmap funktioniert nicht universell in allen Apps. Dem Gnome-Tweak-Tool fehlte die Funktion. Die Dconf-Bearbeitung eines benutzerdefinierten Altwin2-Schlüsseltauschs (wie die Hauptantwort hier) schlug fehl. Ich riss mir die Haare aus, bis ich mehrere Antworten zu diesem vollständigen, einfachen kombinierte und elegante Lösung:

gksudo gedit /usr/share/X11/xkb/symbols/pc

ändere es in:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC>  {    [ Escape        ]   };

// The extra key on many European keyboards:
key <LSGT> {    [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> {    [ backslash,    bar ]   };
key <SPCE> {    [    space      ]   };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {    [ BackSpace, BackSpace  ]   };

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return        ]   };

key <CAPS> {    [ Caps_Lock     ]   };
key <NMLK> {    [ Num_Lock      ]   };

key <LFSH> {    [ Shift_L       ]   };
key <LCTL> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_R     ]   };
key <RWIN> {    [ Super_R       ]   };
key <MENU> {    [ Menu          ]   };

// Beginning of modifier mappings.
modifier_map Shift  { Shift_L, Shift_R };
modifier_map Lock   { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2   { Num_Lock };
modifier_map Mod4   { Super_L, Super_R };

// Fake keys for virtual<->real modifiers mapping:
key <LVL3> {    [ ISO_Level3_Shift  ]   };
key <MDSW> {    [ Mode_switch       ]   };
modifier_map Mod5   { <LVL3>, <MDSW> };

key <ALT>  {    [ NoSymbol, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
modifier_map Mod1   { <META> };

key <SUPR> {    [ NoSymbol, Super_L ]   };
modifier_map Mod4   { <SUPR> };

key <HYPR> {    [ NoSymbol, Hyper_L ]   };
modifier_map Mod4   { <HYPR> };
// End of modifier mappings.

key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> {    [  Scroll_Lock      ]   };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key  <INS> {    [  Insert       ]   };
key <HOME> {    [  Home         ]   };
key <PGUP> {    [  Prior        ]   };
key <DELE> {    [  Delete       ]   };
key  <END> {    [  End          ]   };
key <PGDN> {    [  Next         ]   };

key   <UP> {    [  Up           ]   };
key <LEFT> {    [  Left         ]   };
key <DOWN> {    [  Down         ]   };
key <RGHT> {    [  Right        ]   };
};

Sparen.

rm -rf /var/lib/xkb/*

(Ich weiß nicht, ob dies erforderlich ist, aber ich habe es getan.)

Starten Sie neu.

Tom Mercer
quelle
Dank dafür. Ich werde es testen, wenn ich in naher Zukunft auf 16.04 migriere.
Aleksandar Savkov
Ich habe dies gerade bei meinem 16.10-Upgrade verwendet. Hat sehr gut funktioniert.
Tom Mercer
1
Bei weitem die einfachste Antwort, wirkte wie ein Zauber auf meinem Fedora. Vielen Dank!
Hakunin