Desativa o Caps lock quando Escape é pressionado

9

Existe alguma maneira de desativar CapsLock sempre que Esc é pressionado. Sim, eu uso o VIM! Na verdade, eu tenho um layout de teclado all-caps alternativo em Ctrl-6 , mas acho complicado e prefiro ter o CapsLock desabilitado quando o Esc é pressionado. Além disso, eu freqüentemente SSH em outros servidores por algumas horas, então estou em um estoque VIM lá.

Note que eu já troquei as teclas CapsLock e Esc . No entanto, quando a tecla Esc é pressionada (o que é rotulado como CapsLock no teclado e está ao lado de A ), eu preciso que ela execute Escape e Disable-CapsLock-If-It-Is-Enabled .

Isso está no Kubuntu 12.10. Obrigado.

    
por dotancohen 14.01.2013 / 13:03

3 respostas

4

No X11 (no console eu não sei) você pode fazer isso redefinindo o comportamento da tecla Escape. Eu olhei para a definição "shift (break_caps)" para ver como ela funciona e a adaptei.

Veja este responda no xkb para mais detalhes sobre como / onde colocar os arquivos modificados localmente e carregá-los.

E para fazer o que você quer, você precisa no arquivo de símbolos local (por exemplo: ~/.xkb/symbols/mysymbols ) uma seção como esta:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

e no arquivo de mapa de teclado local (por exemplo: ~/.xkb/keymap/mykbd ; você pode criá-lo com setxkbmap -print > ~/.xkb/keymap/mykbd ) altere a linha xkb_symbols para adicionar "+ mysymbols (esc_break_caps)"

agora você pode carregá-lo com: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY e pressionando Esc irá remover o estado CapsLock (na verdade, o efeito acontece no release de Esc; eu acho que apenas modificadores modificadores têm efeito imediato outros, o efeito é após o seu lançamento.)

Ah, se você quiser também trocar as teclas Escape e CapsLock; então use este lugar (e você coloca "+ mysymbols (esc_swap_and_breaks_caps)" no seu arquivo mykbd):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

observe que as chaves físicas são <CAPS> e <ESC> ; <CAPS> (tecla gravada CapsLock no seu teclado) envia Escape e <ESC> (tecla gravada Esc ) envia CapsLock, com <CAPS> (enviando Escape) também desativando capslock estado

    
por 21.02.2013 / 16:18
1

Adicione estas linhas a ~/.Xmodmap :

clear lock
keycode 0x42 = Escape

Em seguida, digite o comando:

xmodmap ~/.Xmodmap

Sua tecla Caps Lock agora é remapeada para a tecla Esc .

URL de referência .

Também passe por este belo artigo sobre Mapping CapsLock to Escape no Ubuntu , que parece ser um usuário unix.se:)

    
por 20.02.2013 / 10:55
1

Não tenho certeza se isso responde à sua pergunta, mas para mapear a função Esc para a tecla CapsLock , você pode usar isto:

setxkbmap -option "caps:escape"
    
por 21.02.2013 / 16:57