¿Cómo intercambiar las teclas de comando y control con xkb paso a paso?

9

Quiero usar mi teclado largo de aluminio de Apple con teclas de comando Cmdy control intercambiadas Ctrl. ¿Cómo se hace esto paso a paso en Trusty Tahr (14.04) xkb?

Nota: Esta solución no funciona para mí, ya que se xkbreemplazó xmodmapen 13.04 o incluso antes .

Aleksandar Savkov
fuente
1
Esta solución no me funcionó. Es muy probable que esté desactualizado (de hecho, estoy bastante seguro, simplemente no puedo encontrar la referencia ahora). Lo intenté antes de publicar. Es por eso que especifiqué la versión de Ubuntu.
Aleksandar Savkov
1
@WaldirLeoncio Espero que esto aclare por qué la pregunta NO es un duplicado: askubuntu.com/questions/325272/…
Aleksandar Savkov

Respuestas:

7

Esta respuesta se basa principalmente en la respuesta dada aquí . La razón por la que pregunto y respondo esta pregunta nuevamente es el paso final, que no se describió completamente. Para leer más acerca de xkbmira aquí , aquí y aquí .

  1. Cree un archivo en /usr/share/X11/xkb/symbols(también podría estar /etc/X11/xkb/symbols) llamado altwin2y que contenga la siguiente asignación:

    // 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. Inserte la siguiente línea debajo de la option = symbolssección en /usr/share/X11/xkb/rules/evdev(ignore la advertencia en la primera línea):

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. Agregue la nueva opción a /usr/share/X11/xkb/rules/evdev.lstdebajo de la sección option:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. Si no sabe dónde está su archivo de configuración del teclado es, puede editarlo usando dconf-editor , añadiendo "altwin2:cmd_n_ctrl"en xkb-optionsvirtud de org :: gnomo :: :: escritorio de entrada: fuentes , como se muestra aquí . Si sabe dónde está su archivo de configuración, debe incluir la nueva opción en el XkbOptionscampo como se muestra a continuación:

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. Reinicie o reinicie lightdmpara actualizar los cambios:

    sudo restart lightdm
    

NOTA: si se realizan cambios directamente en los archivos de diseño, es decir, sin usar opciones, los archivos en caché /var/lib/xkb/deben eliminarse como se indica aquí .

Aleksandar Savkov
fuente
2
Debe ser una !option = symbolssección, no options = symbols(pasó tiempo buscando "opciones =" para encontrar la sección).
Ben Davis
Ver también aquí: reddit.com/r/Ubuntu/comments/8lnr8q/remapping_keys
Aleksandar Savkov
Como la mayoría de las cosas con xkb y xmodmap, no funciona, probablemente rompió mi sistema de otra manera, estoy harto de esta basura y realmente deseo que Linux se junte con la cosa más básica sobre el mapeo y la vinculación de teclas.
Seph
Tenga en cuenta que esto fue escrito en 2014 y no se aplica a las distribuciones modernas.
Aleksandar Savkov
3

En 16.04, aquí está la forma en que finalmente conseguí que esto funcionara. Xmodmap no funciona universalmente en todas las aplicaciones, la herramienta de ajuste gnome carecía de la función, dconf editó un intercambio de teclas personalizado altwin2 (como la respuesta principal aquí) falló, por lo que me arranqué el pelo hasta que combiné varias respuestas en este completo y simple y elegante solución:

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

cámbielo a:

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

Salvar.

rm -rf /var/lib/xkb/*

(No sé si esto es obligatorio, pero lo hice).

Reiniciar.

Tom Mercer
fuente
Gracias por eso. Lo probaré cuando migre a 16.04 en un futuro próximo.
Aleksandar Savkov
Acabo de usar esto en mi actualización 16.10. Funcionó muy bien.
Tom Mercer
1
Con mucho, la respuesta más simple, funcionó de maravilla en mi Fedora. ¡Gracias!
Hakunin