Remapear o CapsLock para escapar e controlar todo o sistema
18
É possível remapear todo o sistema de teclas CapsLock, de modo que, quando o botão CapsLock é pressionado por si só, ele atua como tecla de escape e, quando pressionado com outra tecla, atua como tecla de controle?
Parece que seria muito difícil. Por exemplo, não foi possível gerar eventos de pressionamento de tecla, porque você não sabe qual tecla foi pressionada. Se for liberado sem pressionar outra tecla, será Escape, caso contrário, será Control.
Cjm
Respostas:
16
Eu encontrei uma solução muito boa chamada xcape . No README:
O xcape é executado como um daemon e intercepta a tecla Control. Se a tecla Control for pressionada e liberada sozinha, ela gerará um evento da tecla Escape.
Isso faz mais sentido se você tiver remapeado sua tecla Caps Lock para Control. Versões futuras deste programa podem fazer esse mapeamento para você, mas, por enquanto, isso é algo que você deve fazer sozinho.
Mapeei Caps para Escape para me sentir mais confortável digitando no Vim. Eu usei xmodmape coloquei isso ~/.Xmodmap.
clear Lock
keycode 0x42 = Escape
Para aplicar: xmodmap ~/.Xmodmap. Você pode colocar isso em um arquivo como ~ / .bash_profile (eu coloquei em ~ / .xinitrc, porque não uso um gerenciador de login.
Para mapear CapsLock + [outra tecla], considere usar xbindkeys.
Uma solução apenas para Linux para remapear as chaves em todo o sistema é escrever uma regra simples do udev. Não dependerá do X, funcionará em qualquer terminal ou aplicativo e é portátil entre qualquer instalação recente do Linux, basta copiar dois arquivos.
Você precisa escrever 2 arquivos: um contendo a regra udev, que informa ao kernel para remapear as chaves, e outro contendo os mapeamentos reais necessários.
Encontrei uma pergunta com uma palavra diferente no AskUbuntu que tinha uma boa resposta , mas tive que modificá-la um pouco para funcionar nos meus sistemas.
Pelos comentários de Louis e Sergiy por lá, eu vim com essa solução que está funcionando para mim no Ubuntu 16.04 (Xenial) e vou trazê-la comigo para os outros sistemas Linux que eu uso.
Instalei o xcape e coloquei as seguintes linhas de código no meu .profilearquivo no meu diretório pessoal.
MÉTODO ATUALIZADO:
Por causa dos vários gerenciadores de exibição (gdm / kdm / sddm / etc) se comportando de maneiras estranhas e redefinindo o setxbmapapós suspender / retomar ou bloquear / desbloquear, descobri como definir as opções da maneira que elas herdam e não ' t reinicia o tempo todo. Como eu suspendo e continuo muito, eu precisava me certificar de que não recebi muitas cópias da xcapeexecução, o que é resolvido no novo script abaixo.
Primeiro modifique a configuração do teclado com sudo gedit /etc/default/keyboarde defina XKBOPTIONS="ctrl:nocaps"e, em seguida, ~/.xprofilecoloque sua única linha abaixo.
Esperamos que as várias seções do script economizem algum tempo / problemas e evitem logins bloqueados. Primeiro, ele verifica se já existe uma instância em execução e a mata, já que a única coisa que xcapefaz é mapear Ctrl para Esc, isso é seguro; a hashparte garante que você tenha xcape
instalado, caso contrário, seu sistema poderá travar quando você tentar fazer o login, porque todas as inicialização foram iniciadas. os scripts devem sair corretamente.
Eu usei o gnome-tweak-tool para mapear Caps Lock para Ctrl, pois não há layout de teclado nas Configurações do sistema no Ubuntu 14.04. O xcape -e 'Control_L = Escape' não funcionou, mas depois de usar o xcape -d, descobri que o Caps Lock gera o código de chave 66 e o remapeou, respectivamente: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov 4 / set / 14 às 10:08
Louis:
De acordo com este post do blog, é possível fazer isso apenas com o xcape: 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 4/15 '15 às 10:06
Respostas:
Eu encontrei uma solução muito boa chamada xcape . No README:
fonte
Mapeei Caps para Escape para me sentir mais confortável digitando no Vim. Eu usei
xmodmap
e coloquei isso~/.Xmodmap
.Para aplicar:
xmodmap ~/.Xmodmap
. Você pode colocar isso em um arquivo como ~ / .bash_profile (eu coloquei em ~ / .xinitrc, porque não uso um gerenciador de login.Para mapear CapsLock + [outra tecla], considere usar
xbindkeys
.fonte
Uma solução apenas para Linux para remapear as chaves em todo o sistema é escrever uma regra simples do udev. Não dependerá do X, funcionará em qualquer terminal ou aplicativo e é portátil entre qualquer instalação recente do Linux, basta copiar dois arquivos.
Você precisa escrever 2 arquivos: um contendo a regra udev, que informa ao kernel para remapear as chaves, e outro contendo os mapeamentos reais necessários.
Usando esse método, eu remapeei todo o teclado, talvez o código seja útil como inspiração http://git.adirat.com/carpalx-keyboard
fonte
Criei uma ferramenta em C especialmente para esse fim, que supera muitos dos problemas da solução xcape / xmodmap :
fonte
Encontrei uma pergunta com uma palavra diferente no AskUbuntu que tinha uma boa resposta , mas tive que modificá-la um pouco para funcionar nos meus sistemas.
Pelos comentários de Louis e Sergiy por lá, eu vim com essa solução que está funcionando para mim no Ubuntu 16.04 (Xenial) e vou trazê-la comigo para os outros sistemas Linux que eu uso.
Instalei o xcape e coloquei as seguintes linhas de código no meu
.profile
arquivo no meu diretório pessoal.MÉTODO ATUALIZADO:
Por causa dos vários gerenciadores de exibição (gdm / kdm / sddm / etc) se comportando de maneiras estranhas e redefinindo o
setxbmap
após suspender / retomar ou bloquear / desbloquear, descobri como definir as opções da maneira que elas herdam e não ' t reinicia o tempo todo. Como eu suspendo e continuo muito, eu precisava me certificar de que não recebi muitas cópias daxcape
execução, o que é resolvido no novo script abaixo.Primeiro modifique a configuração do teclado com
sudo gedit /etc/default/keyboard
e definaXKBOPTIONS="ctrl:nocaps"
e, em seguida,~/.xprofile
coloque sua única linha abaixo.Esperamos que as várias seções do script economizem algum tempo / problemas e evitem logins bloqueados. Primeiro, ele verifica se já existe uma instância em execução e a mata, já que a única coisa que
xcape
faz é mapear Ctrl para Esc, isso é seguro; ahash
parte garante que você tenhaxcape
instalado, caso contrário, seu sistema poderá travar quando você tentar fazer o login, porque todas as inicialização foram iniciadas. os scripts devem sair corretamente.À moda antiga:
Sergiy:
Louis:
fonte