web-dev-qa-db-fra.com

Comment échanger étape par étape les clés de commande et de contrôle avec xkb?

Je souhaite utiliser mes longs clavier Apple en aluminium avec les touches de commande Cmd et Control Ctrl permutées. Comment cela se fait-il étape par étape sur Trusty Tahr (14.04) en utilisant xkb?

Remarque: This la solution ne fonctionne pas pour moi car xkb a remplacé xmodmap dans 13.04 ou même plus tôt .

9
Aleksandar Savkov

Cette réponse est principalement basée sur la réponse donnée ici . La raison pour laquelle je pose encore une fois cette question est la dernière étape, qui n’a pas été décrite en détail. Pour en savoir plus sur xkblook here , here , et here .

  1. Créez un fichier dans /usr/share/X11/xkb/symbols (qui pourrait aussi l'être dans /etc/X11/xkb/symbols) appelé altwin2 et contenant le mappage suivant:

    // 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. Insérez la ligne suivante sous la section options = symbols dans /usr/share/X11/xkb/rules/evdev (ne tenez pas compte de l'avertissement de la première ligne):

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. Ajoutez la nouvelle option à /usr/share/X11/xkb/rules/evdev.lst dans la section des options:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. Si vous ne savez pas où se trouve votre fichier de configuration du clavier, vous pouvez le modifier en utilisant dconf-editor , en ajoutant "altwin2:cmd_n_ctrl" à xkb-options sous org :: gnome :: desktop :: input-sources comme indiqué ici . Si vous savez où se trouve votre fichier de configuration, vous devez inclure la nouvelle option dans le champ XkbOptionsname__, comme indiqué ci-dessous:

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. Redémarrez ou redémarrez lightdmpour mettre à jour les modifications:

    Sudo restart lightdm
    

REMARQUE: si des modifications sont apportées directement dans les fichiers de mise en page, c'est-à-dire si vous n'utilisez pas d'options, les fichiers mis en cache dans /var/lib/xkb/ doivent être supprimés comme indiqué ici .

7
Aleksandar Savkov

En 16.04, voici comment j'ai finalement réussi à faire fonctionner cela. Xmodmap ne fonctionne pas universellement dans toutes les applications, l'outil gnome Tweak manquait de la fonction, la modification par dconf d'un échange de clé altwin2 personnalisé (comme la réponse principale ici) a échoué; et solution élégante:

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

changez le en:

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        ]   };
};

Sauvegarder.

rm -rf /var/lib/xkb/*

(Je ne sais pas si cela est nécessaire, mais je l'ai fait.)

Redémarrez.

2
Tom Mercer