Remapear o CapsLock para escapar e controlar todo o sistema

17

É possível remapear o sistema de teclas CapsLock para que, quando o botão CapsLock for pressionado sozinho, ele atue como a tecla de escape e, quando pressionado com outra tecla, ele atue como a tecla de controle?

    
por Zameer Manji 17.02.2012 / 17:46

5 respostas

15

Encontrei uma solução muito boa chamada xcape . Do README:

xcape runs as a daemon and intercepts the Control key. If the Control key is pressed and released on its own, it will generate an Escape key event.

This makes more sense if you have remapped your Caps Lock key to Control. Future versions of this program might do that mapping for you, but for now this is something that you have to do yourself.

    
por 02.10.2012 / 03:47
5

Eu mapeei Caps to Escape para que eu ficasse mais confortável digitando no Vim. Eu usei xmodmap e coloquei isso em ~/.Xmodmap .

clear Lock
keycode 0x42 = Escape

Para aplicar: xmodmap ~/.Xmodmap . Você pode colocar isso em um arquivo como ~ / .bash_profile (eu coloco em ~ / .xinitrc, porque eu não uso um gerenciador de login.

Para mapear CapsLock + [outra chave], considere usar xbindkeys .

    
por 20.03.2012 / 01:11
3

Uma solução somente de Linux para remapear chaves em todo o sistema é escrever uma regra simples do udev. Ele não depende do X, funciona em qualquer terminal ou aplicativo e é portátil entre as instalações recentes do Linux simplesmente copiando dois arquivos.

Você precisa escrever 2 arquivos: um contendo a regra do udev que diz ao kernel para remapear as chaves e uma contendo os mapeamentos reais que você precisa.

Usando esse método, eu remapei todo o meu teclado, talvez o código seja útil como inspiração link

    
por 08.10.2012 / 05:32
2

Eu criei uma ferramenta em C especialmente para esse propósito que supera muitos dos problemas com a solução xcape / xmodmap :

por 13.10.2016 / 02:53
1

Eu encontrei uma pergunta diferente no AskUbuntu que tinha uma boa resposta , mas eu tive que modificá-la levemente para trabalho nos meus sistemas.

Por meio dos comentários de Perry e Sergiy, eu descobri essa solução que está funcionando no Ubuntu 16.04 (Xenial) e estarei levando-a comigo para os outros sistemas Linux que uso.

Eu instalei o xcape e coloquei as seguintes linhas de código no meu arquivo .profile em meu diretório pessoal.

MÉTODO ATUALIZADO:

Devido a vários gerenciadores de exibição (gdm / kdm / sddm / etc) se comportarem de maneiras estranhas e redefinirem o setxbmap após a suspensão / retomada ou bloqueio / desbloqueio, descobri como definir as opções de uma maneira que eles herdam e não redefinem o tempo todo. Como suspendo e retomei muito, precisei ter certeza de que não recebi muitas cópias de xcape em execução, o que é resolvido no novo script abaixo.

Primeiro, modifique a configuração do teclado com sudo gedit /etc/default/keyboard e defina XKBOPTIONS="ctrl:nocaps" e, em seguida, no seu ~/.xprofile coloque a linha abaixo.

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

Espero que as várias seções do script economizem algum tempo / problema e evitem logins emperrados. Primeiro, ele verifica se já existe uma instância em execução e a mata, pois a única coisa que xcape faz é mapear Ctrl para Esc, isso é seguro, então a parte hash garante que você tenha xcape instalado, caso contrário, seu sistema pode travar quando você tentar fazer o login, porque todos os scripts de inicialização devem sair corretamente.

Forma antiga:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

Sergiy:

I've used gnome-tweak-tool to map Caps Lock to Ctrl as there is no Keyboard layout in System Settings on Ubuntu 14.04. Then xcape -e 'Control_L=Escape' didn't work, but after using xcape -d I've discovered that Caps Lock generates keycode 66 and remapped it respectively: xcape -e '#66=Escape'. – Sergiy Byelozyorov Sep 4 '14 at 10:08

Louis:

As per this blog post, it is possible to do this with xcape alone: setxkbmap -option 'caps:ctrl_modifier'; xcape -e 'Caps_Lock=Escape' setxkbmap -option 'caps:ctrl_modifier'; xcape -e 'Caps_Lock=Escape;Control_L=Escape;Control_R=Escape' – Louis Simoneau Aug 4 '15 at 10:06

    
por 27.03.2016 / 00:09

Tags