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


9

Je veux utiliser mon long clavier Apple en aluminium avec Cmddes Ctrltouches de commande et de contrôle échangées . Comment cela se fait-il étape par étape sur Trusty Tahr (14.04) en utilisant xkb?

Remarque: Cette solution ne fonctionne pas pour moi car elle a été xkbremplacée xmodmapen 13.04 ou même plus tôt .


1
Cette solution n'a pas fonctionné pour moi. Il est très probablement obsolète (en fait, je suis presque sûr, je ne peux tout simplement pas trouver la référence maintenant). Je l'ai essayé avant de poster. C'est pourquoi j'ai spécifié la version Ubuntu.
Aleksandar Savkov

1
@WaldirLeoncio J'espère que cela montre clairement pourquoi la question n'est PAS un doublon: askubuntu.com/questions/325272/…
Aleksandar Savkov

Réponses:


7

Cette réponse est principalement basée sur la réponse donnée ici . La raison pour laquelle je pose et réponds à nouveau à cette question est la dernière étape, qui n'a pas été entièrement décrite. Pour en savoir plus sur la xkbrecherche ici , ici et ici .

  1. Créez un fichier dans /usr/share/X11/xkb/symbols(pourrait également être dans /etc/X11/xkb/symbols) appelé altwin2et 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 option = symbolssection dans /usr/share/X11/xkb/rules/evdev(ignorez 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.lstdans la section option:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. Si vous ne savez pas où votre fichier de configuration du clavier est, vous pouvez le modifier à l' aide dconf-éditeur , ajoutant "altwin2:cmd_n_ctrl"dans xkb-optionssous org :: :: gnome bureau :: entrée-sources comme indiqué ici . Si vous savez où se trouve votre fichier de configuration, vous devez inclure la nouvelle option dans le XkbOptionschamp 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 sans utiliser d'options, les fichiers mis en cache /var/lib/xkb/doivent être supprimés comme indiqué ici .


2
Doit être une !option = symbolssection, pas options = symbols(temps passé à rechercher "options =" ​​pour trouver la section).
Ben Davis


Comme la plupart des choses avec xkb et xmodmap, ne fonctionne pas, a probablement cassé mon système d'une autre manière, j'en ai marre de cette merde et je souhaite vraiment que Linux obtienne sa merde avec la chose la plus basique sur le mappage et la liaison des clés.
Seph

Gardez à l'esprit que cela a été écrit en 2014 et ne s'applique pas aux distributions modernes.
Aleksandar Savkov

3

En 16.04, voici comment j'ai finalement réussi à faire fonctionner cela. Xmodmap ne fonctionne pas universellement dans toutes les applications, l'outil de modification de gnome manquait de fonction, la modification de dconf d'un échange de clé altwin2 personnalisé (comme la réponse principale ici) a échoué, donc je me suis arraché les cheveux jusqu'à ce que j'aie combiné plusieurs réponses dans cet ensemble complet et simple , 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        ]   };
};

Sauver.

rm -rf /var/lib/xkb/*

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

Redémarrez.


Merci pour ça. Je le testerai lors de ma migration vers 16.04 dans un avenir proche.
Aleksandar Savkov

Je viens de l'utiliser sur ma mise à niveau 16.10. Fonctionne très bien.
Tom Mercer

1
De loin la réponse la plus simple, fonctionnait comme un charme sur ma Fedora. Merci!
hakunin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.