Configurar Caps Lock como AltGr e Arrows como no vim

9

1. Como faço Caps Lockpara mapear globalmente AltGr?

Eu não preciso do CapsLock e gostaria de ter um acesso fácil AltGr Key lá

2. Quero mapear todas as teclas de movimento para vimposições semelhantes

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

Para que eu possa percorrer facilmente meu código sem afastar a mão da posição de 10 dedos (como no vimeditor)

Encontrei esta resposta: Como remapear a tecla caps lock para a tecla backspace?
sugerindo o uso

xmodmap -e "keycode [code] = [new key]"

consulte: http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

Mas não consigo descobrir, como adicionar isso a uma combinação de, por exemplo, AltGr + J

Outro começo seria definir a "Chave de caracteres alternativos" em unity-control-center-> Teclado-> Atalhos-> Digitando comoCaps Lock

Atualização: Encontrei algumas soluções (veja abaixo), mas todas elas não funcionam em todos os aplicativos, acho que é uma configuração global chamada "XFree 4" usada por alguns aplicativos.

Como também configuro as associações de teclas do XFree 4?

rubo77
fonte
Eu não tenho uma chave AltGr, mas você pode achar que essa pergunta semelhante fornece algumas dicas.
Elder Geek

Respostas:

4

1. adicione um novo arquivo parcial XKB

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

com este conteúdo:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. inclua o parcial no seu arquivo de idioma

por exemplo, para alemão, é /usr/share/X11/xkb/symbols/de(onde /deé o seu idioma) adicione isso dentro do primeiro bloco ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

Nota: Esta parte deve ser repetida após cada atualização de distribuição

3. recarregue a sessão da janela

Pressione ALT + F2, digite "r" para recarregar a sessão do gnome ou faça o logout e logon novamente. Agora as novas composições principais estarão disponíveis

alguns problemas

Alguns aplicativos não aceitam as configurações, por exemplo: as sublimequais podem ser substituídas por atom.

Alguns aplicativos precisam de configurações extras, por exemplo, nas yakuakecombinações de teclas definidas como "XFree 4", se você as definir como "Linux" ou "Solaris", as configurações do XKB também funcionarão lá:

rubo77
fonte
1
eu recomendo fortemente o uso da opção XKB em lv3:caps_switchvez de alterar a <CAPS>definição como você mostra. veja /usr/share/X11/xkb/symbols/level3(onde essa opção está definida).
quixotic
@ Quixotic: você pode adicionar uma nova resposta com as configurações que seriam necessárias? Eu poderia precisar de uma boa resposta completa aqui pela graça;)
rubo77
Isso funcionou perfeitamente para mim. Apenas um heads-up, porém, pode querer "seção" para "numbersign" para mudar para o deslocamento + 3
mowwwalker
0

a fim de obter AltGr+ h, j, k, lou qualquer outra tecla sem qualquer aplicação como Autokey que efetuar você pode personalizar o layout do teclado encontrado em / usr / share / X11 / xkb / símbolos / . No momento eu uso o layout alemão "de". Então, primeiro de tudo, eu faria:

1- copie o layout padrão

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- abra seu layout com seu editor de texto preferido (aqui: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

lá você verá algo como:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

Como você pode ver, AB, AC, AD, AE representa a linha e o número representa sua posição no teclado (existem algumas teclas especiais, como a tecla menor / maior, que também podem ser remapeadas para outras teclas.

Lá você não encontrará todo o teclado, apenas os diferentes em que o layout é baseado no teclado. O alemão é baseado em "latin (type4)", como você pode ver no início do arquivo:

include "latin(type4)"

Então você só precisa mudar de acordo com suas necessidades. Funciona como:

tecla {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(também é possível adicionar modificadores do 5º nível ou mais)

se você deseja verificar as alterações sem reiniciar; (alterando "de" para seu layout ... aqui está uma lista com possíveis layouts )

 setxkbmap -layout de

As setas são rotuladas como "Esquerda, Direita, Baixo, Cima", conforme o esperado. Aqui está uma boa lista de valores possíveis.

Aqui está um exemplo do meu layout personalizado. (mas não em uso no momento)

Então, você precisaria remapear o Capslock e o AltGr, ou já funcionou após a pergunta que você postou?

Se você também deseja manter um layout em alemão "normal", pode fazer alterações em outro layout que normalmente não usa (ou alterar as "chaves sem chave em alemão"), que podem ser encontradas no mesmo arquivo "de". ..)

Fonte: link para uma explicação muito abrangente sobre xbk e layouts personalizados.
link para uma pergunta semelhante com uma boa resposta.

Marcelo Avila
fonte
1
no Ubuntu e derivados modernos, você pode definir layouts e opções de XKB /etc/default/keyboardassim que essas alterações forem feitas. veja man 5 keyboardpara detalhes. eu recomendo adicionar novas variantes e opções em vez de alterar as existentes.
quixotesca
0

Para remapear CapsLock para AltGr, use

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(fonte: https://superuser.com/a/138757/160420 )

Para mapear as teclas de seta para AltGr + h, j, k e l, use xmodmap -pkepara encontrar as configurações corretas:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

e altere o quinto valor para as novas chaves e adicione tudo isso em um script bash:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(fonte: https://askubuntu.com/a/466315/34298 )

Coloque esse script bash nos seus Aplicativos de Inicialização (Escolha Dash> Aplicativos de Inicialização> Adicionar e adicione o comando.)

Nota: estranhamente gnome-terminalisso funciona bem, mas yakuakefunciona para o BackSpace no AltGr + F, mas define AltGr + h, j, k e l para D, B, A e C, a menos que você defina a Key Binding como "Linux" em vez de "(Padrão) XFree 4" e sublime-textnele não funciona de jeito nenhum

rubo77
fonte
xmodmapé preterido e desencorajado. ainda funciona em ambientes X11, mas não funcionará em Wayland e outras substituições X11. o uso de soluções baseadas em XKB é altamente recomendável.
quixotesca
Então eu acho que preciso adicionar um novo layout de teclado personalizado? askubuntu.com/questions/482678/...
rubo77
1
adicionar um layout personalizado é uma maneira, embora você provavelmente consiga fazer apenas uma opção personalizada . no GNOME ou Unity, pode ser necessário desativar o plug-in de teclado do settings-daemon para que a personalização do xmodmap funcione, mas se você criar uma nova opção / layout / variante / XKB para todo o sistema, poderá configurá-los /etc/default/keyboard.
quixotesca
1
Parece bastante trabalho, mas resolverá o problema de as novas combinações de teclas não funcionarem em alguns aplicativos?
rubo77