Come scambiare i tasti di comando e controllo con xkb passo dopo passo?


9

Voglio usare la mia lunga tastiera in alluminio Apple con i tasti di comando Cmde controllo scambiati Ctrl. Come si fa passo dopo passo su Trusty Tahr (14.04) usando xkb?

Nota: questa soluzione non funziona per me come è stata xkbsostituita xmodmapin 13.04 o anche prima .


1
Questa soluzione non ha funzionato per me. Molto probabilmente è obsoleto (in realtà sono abbastanza sicuro, non riesco a trovare il riferimento ora). L'ho provato prima di pubblicare. Ecco perché ho specificato la versione di Ubuntu.
Aleksandar Savkov,

1
@WaldirLeoncio Spero che questo chiarisca perché la domanda NON è un duplicato: askubuntu.com/questions/325272/…
Aleksandar Savkov

Risposte:


7

Questa risposta si basa principalmente sulla risposta fornita qui . Il motivo per cui faccio e rispondo nuovamente a questa domanda è il passaggio finale, che non è stato completamente descritto. Per ulteriori informazioni su xkbguarda qui , qui e qui .

  1. Crea un file in /usr/share/X11/xkb/symbols(potrebbe anche essere in /etc/X11/xkb/symbols) chiamato altwin2e contenente il seguente mapping:

    // 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. Inserire la seguente riga sotto la option = symbolssezione in /usr/share/X11/xkb/rules/evdev(ignorare l'avvertenza sulla prima riga):

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. Aggiungi la nuova opzione a /usr/share/X11/xkb/rules/evdev.lstsotto la sezione option:

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. Se non sai dove il file di configurazione della tastiera è, è possibile modificarlo usando dconf-editore , aggiungendo "altwin2:cmd_n_ctrl"in xkb-optionssotto org :: :: gnome del desktop :: ingresso-fonti come mostrato qui . Se sai dove si trova il tuo file di configurazione, dovresti includere la nuova opzione nel XkbOptionscampo come mostrato sotto:

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. Riavvia o riavvia lightdmper aggiornare le modifiche:

    sudo restart lightdm
    

NOTA: se vengono apportate modifiche direttamente nei file di layout, ovvero non utilizzando le opzioni, i file memorizzati nella cache /var/lib/xkb/devono essere eliminati come indicato qui .


2
Dovrebbe essere la !option = symbolssezione, non options = symbols(tempo trascorso alla ricerca di "opzioni =" per trovare la sezione).
Ben Davis,


Come la maggior parte delle cose con xkb e xmodmap, non funziona, probabilmente ha rotto il mio sistema in un altro modo, sono stufo di questa schifezza e vorrei davvero che Linux si prendesse una cazzata insieme alla cosa più eccitante di base sulla mappatura e l'associazione dei tasti.
Seph

Ricorda che questo è stato scritto nel 2014 e non si applica alle distribuzioni moderne.
Aleksandar Savkov,

3

Nel 16.04, ecco come ho finalmente fatto funzionare tutto questo. Xmodmap non funziona universalmente in tutte le app, lo strumento gnome tweak non aveva la funzione, dconf modifica di uno scambio di chiavi altwin2 personalizzato (come la risposta principale qui) fallito, quindi mi sono strappato i capelli fino a quando ho combinato diverse risposte in questa completa, semplice ed elegante soluzione:

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

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

Salva.

rm -rf /var/lib/xkb/*

(Non so se questo è necessario, ma l'ho fatto.)

Reboot.


Grazie per quello Lo proverò quando migrerò alla 16.04 nel prossimo futuro.
Aleksandar Savkov,

L'ho appena usato sul mio aggiornamento 16.10. Ha funzionato molto bene.
Tom Mercer,

1
Di gran lunga la risposta più semplice, ha funzionato come un incantesimo sulla mia Fedora. Grazie!
Hakunin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.