Como fazer com que o AltGr + i, j, k, l funcione corretamente como teclas de cursor?

4

(Eu já fiz essa pergunta em superusuário mas não tenho resposta então vou tentar aqui agora.)

Eu gostaria de ter as teclas do cursor e algumas outras disponíveis como AltGr + c, h, t, n etc. (i, j, k, l se você tiver qwerty). Eu fiz um arquivo de layout de teclado personalizado (veja aqui ). Lá eu basicamente peguei um arquivo de layout e modifiquei as linhas relevantes para serem como

key <AC09> { [ n, N, Right, Right ] };

Eu tenho isso como /usr/share/X11/xkb/symbols/nonpop e eu carrego com setxkbmap nonpop em ~/.xinitrc (não estou usando nenhum DE, apenas o Awesome WM).

E funciona --- quase.

  • No Firefox, por exemplo, tudo funciona bem. Por exemplo, AltGr + n move o cursor para a direita e Shift + AltGr + n seleciona o texto. Da mesma forma na área de texto principal no LyX.
  • No MonoDevelop, o cursor se move com AltGr + n, mas Shift + AltGr + n também move apenas o cursor em vez de selecioná-lo. Shift + Right seleciona o texto normalmente.
  • Nas caixas de diálogo do NetBeans e do LyX, pressionar (Shift +) AltGr + n não faz absolutamente nada.

Eu acho que esses outros programas leem o estado AltGr e decidem que é uma coisa ruim. Então, existe alguma maneira de fazer as coisas acontecerem do jeito que eu quero? Parece que as sobreposições podem ser uma solução, mas ainda não consegui que funcionassem.

    
por nonpop 05.09.2014 / 01:02

2 respostas

2

O problema é que quando você usa um modificador comum como AltGr , os programas realmente o vêem sendo pressionado quando você usa as setas AltGr. Então, Shift + AltGr + i na verdade aparece em um programa como se você estivesse pressionando Shift + Alt + Up e é a adição do Alt extra que confunde o programa. Você pode evitar isso adicionando mais atalhos ao programa, se possível, então Shift + Alt + Up faz a mesma ação que Shift + Up , ou você pode usar um modificador incomum do qual o programa não está ciente.

Existem outras maneiras de fazer isso, mas essa foi uma das maneiras mais simples e funciona bem para mim. Ele cria uma sobreposição "Grupo2" nas teclas alfanuméricas, de modo que, quando você alterna para o Grupo2, você terá setas lá em vez de letras. Você pode alternar para o Group2 com um toggle (ativado / desativado como o Caps Lock normalmente funciona) ou um momentâneo (pressione para ativar, como o Shift normalmente funciona)

partial alphanumeric_keys
xkb_symbols "alpha_arrows" {
    key <AD07> {
        symbols[Group2]= [            Home ]  # u
    };
    key <AD08> {
        symbols[Group2]= [              Up ]  # i
    };
    key <AD09> {
        symbols[Group2]= [             End ]  # o
    };
    key <AD10> {
        symbols[Group2]= [           Prior ]  # p
    };
    key <AC07> {
        symbols[Group2]= [            Left ]  # j
    };
    key <AC08> {
        symbols[Group2]= [            Down ]  # k
    };
    key <AC09> {
        symbols[Group2]= [           Right ]  # l
    };
    key <AC10> {
        symbols[Group2]= [            Next ]  # ;
    };
    key <AB06> {
        symbols[Group2]= [          Delete ]  # n
    };
};

Você pode escolher uma chave para usar como uma chave de ativação do Grupo2. Você pode ver todas as opções (se você não quiser fazer o seu próprio) com isto:

$ grep grp /usr/share/X11/xkb/rules/base.lst

Em seguida, escolha uma opção, por exemplo, esta ativa apenas as setas enquanto Caps Lock está sendo mantido. Ele também adiciona uma nova combinação Alt + Caps Lock para realmente ligar e desligar o caps lock:

$ setxkbmap -option grp:caps_switch

Você pode adicionar isso ao seu arquivo de configuração do Xorg para tornar a mudança permanente - há vários guias on-line sobre como fazer isso.

Observe que:

  • key é usado, ao contrário de replace key porque queremos adicionar à definição existente e não substituí-la.
  • Se você realmente tiver um layout de teclado alternativo (possivelmente alguns teclados internacionais que também podem digitar letras latinas / inglesas), esse método pode não funcionar para você. Você terá que definir um novo tipo com base em ALPHANUMERIC com modificadores estendidos (por exemplo, Hyper) para ativar as teclas de seta.
por 17.09.2014 / 08:03
0

Você pode estar interessado nos meus scripts de configuração do xkb. Em suma, eu defino emulação para Miniguru e TEX Yoda.

link

    
por 17.07.2015 / 20:05