Use setxkbmap para trocar o Left Shift e o Left Control

14

É possível trocar as teclas Left Shift e Left CTRL usando setxkbmap em vez de xmodmap ?

EDITAR

Eu mudei para Fcitx , que funciona muito melhor com meu layout de teclado e mapa de teclado personalizado do que o IBus em todos os aspectos . Eu recomendo strongmente.

    
por day 20.02.2013 / 18:36

2 respostas

23

xmodmap está obsoleto; então, de fato, isso deve ser feito com as ferramentas xkb .

A troca que você deseja parece não ser incluída por padrão com arquivos X11; então você tem que escrever você mesmo.

A página link me ajudou a entender e encontrar uma maneira de fazer isso.

Crie um arquivo ~/.xkb/keymap/mykbd onde você coloca a saída de setxkbmap , esta será sua definição de teclado base; por exemplo:

setxkbmap -print > ~/.xkb/keymap/mykbd

em seguida, crie um arquivo de símbolos para definir a troca de chaves, coloque-o por exemplo em ~/.xkb/symbols/myswap

lá, coloque as seguintes linhas:

partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
    replace key <LCTL>  { [ Shift_L ] };
    replace key <LFSH> { [ Control_L ] };
};

edite o arquivo ~/.xkb/keymap/mykbd e altere a linha xkb_symbols para adicionar

+myswap(swap_l_shift_ctrl)

finalmente, você pode carregá-lo com xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY (você não pode usar "~" para o parâmetro -I ). Provavelmente, ele emitirá muitos avisos sobre símbolos indefinidos para algumas chaves raras, mas você pode ignorá-los (por exemplo, redirecionar erro para dave: 2> /dev/null ).

Se você quiser ser capaz de alternar facilmente entre um normal e seu invertido ctrl / shift; basta criar em ~/.xkb/keymap/ outro arquivo, sem a opção extra "myswap", e carregá-lo com xkbcomp . Você pode fazer dois pequenos scripts para carregá-los.

    
por 21.02.2013 / 10:45
3

Eu encontrei alguns problemas mapeando LALT para Control_L usando a solução de Pablo , parece que você precisa para definir as opções modifier_map também.

Copiei um modelo de /usr/share/X11/xkb/symbols/altwin - procure por xkb_symbols "ctrl_alt_win" - e modifiquei para definir as seguintes alterações:

  • Chave LALT para Control **
  • Tecla LWIN para Alt
  • tecla MENU para a tecla do Windows

O arquivo ~/.xkb/symbols/myswap final foi:

partial modifier_keys
xkb_symbols "swap" {
   key <MENU> {     [   Super_L     ]   };
   key <LALT> { [ Control_L, Control_L  ] };
   key <RALT> { type[Group1] = "TWO_LEVEL",
                symbols[Group1] = [ Alt_R, Meta_R ] };
   key <LWIN> { [ Alt_L, Meta_L ] };
   key <LCTL> { [ Control_L ] };
   key <RCTL> { [ Control_R ] };
   modifier_map Control { <LALT>, <LCTL>, <RCTL> };
   modifier_map Mod1 { <LWIN>, <RALT> };
   modifier_map Mod4 { <MENU> };
};

Também adicionei -w0 ao comando xkbcomp para evitar qualquer saída de aviso ao abrir um novo shell.

xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY

** Alternando muito entre Mac e Linux, gosto de ter duas teclas de controle no Linux para aproximar o teclado do Mac da minha memória muscular.

    
por 04.01.2018 / 01:16