Por alguma razão, meu laptop está preso no Caps Lock. Eu tenho a Caps Lockchave mapeada xmodmap
para hyper_l
, então não tenho uma caps_lock
chave para desativá-la. Existe uma maneira de desativá-lo pela linha de comando? Seria bom se eu pudesse redefinir o estado de bloqueio sem reiniciar o computador, especialmente para referência futura. Isso já aconteceu antes, mas agora eu gostaria de saber como fazê-lo corretamente.
command-line
xmodmap
capslock
Echogene
fonte
fonte
Respostas:
Não conheço nenhuma ferramenta de linha de comando para isso no Ubuntu. (Para Num Lock, existe o numlockx .) Aqui está uma lista que você pode copiar e colar em uma janela do terminal:
Aqui está novamente de uma forma mais expandida. Usamos a biblioteca ctypes do Python para chamar diretamente as funções C da biblioteca X. A função altera o estado dos bloqueios do teclado, no teclado principal ( = 0x0100), afetando o Caps Lock (2), configurando-o para 0 (desativado).
XkbLockModifiers
XkbUseCoreKbd
Se você tiver um modificador bloqueado, altere 2 para a máscara dos modificadores que deseja desativar. Os modificadores são 1 = Shift, 2 = Bloqueio (Caps Lock), 4 = Controle, 8 = Mod1, 16 = Mod2, 32 = Mod3, 64 = Mod4, 128 = Mod5. Execute
xmodmap -pm
para ver a que Mod1 a Mod5 correspondem. Por exemplo, para desativar todos os modificadores, chameX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(255), c_uint(0))
. Para ativar o Num Lock, que está no Mod2, e ao mesmo tempo desativar o Caps Lock, ligueX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2 | 16), c_uint(16))
.Aqui está uma versão em C se você quiser criar um pequeno binário em vez de chamar o Python. Compile com
gcc -O -Wall -o caps_lock_off caps_lock_off.c -lX11
, com os pacotesbuild-essentials
elibx11-dev
instalado.Também possivelmente interessante é uma maneira de ignorar temporariamente o Caps Lock:
Depois disso, o Caps Lock será desativado permanentemente, até que você o reative
xkbset nullify -lock
.fonte
xtrace
executextrace python -c 'from ctypes import *; X11 = cdll.LoadLibrary("libX11.so.6"); buf = (c_char*16)(); display = X11.XOpenDisplay(None); X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0)); X11.XkbGetState(display, 0x0100, buf); X11.XCloseDisplay(display)'
e publique as últimas linhas, começando pela que contémQueryExtension name='XKEYBOARD'
. Não afirmo que vou entender a saída, mas vou tentar.As ferramentas de automação X podem ser usadas para enviar os principais eventos necessários.
Usando
xdotool
Instale-o
Enviar um evento para baixo / para cima do CAPS
Outra ferramenta é
xte
Instale-o
Enviar um evento de bloqueio / ativação do CAPS
Referências:
man xdotool
man xte
fonte
Quanto à versão python do Gilles não funcionar em ubuntus mais recente, definir o retorno correto para a exibição aberta parece fazer o truque:
(Código adaptado de https://stackoverflow.com/questions/29638210/how-can-i-use-python-xlib-to-generate-a-single-keypress )
fonte
Se você não pode acessar o CAPS porque o remapeava em .bashrc, como eu fiz, basta alternar para um terminal virtual (alt + ctl + fN) e, em seguida, voltar a funcionar para mim.
fonte
Eu tive esse problema e consegui corrigi-lo usando o teclado OnBoard (no Ubuntu Mate, sob Universal Access).
Uma vez ativada, você verá que a tecla CapsLock está vermelha ou de alguma forma indica que está bloqueada. Em seguida, você pode pressionar para desativar.
fonte