Às vezes, quando uso sinergia entre minhas máquinas quando uma está usando o convidado do VirtualBox em tela cheia, fico com alguns modificadores de teclas estranhos ativados. Se eles existirem no meu teclado (como Shift_L), basta tocar nele e seu status é redefinido e posso continuar digitando letras minúsculas. Mas alguns deles não estão mapeados para o meu teclado (como ISO_Level3_Shift), então não tenho como desativá-los!
Como redefini-los? No momento, tudo o que posso fazer é reiniciar o computador, mas é uma solução bastante embaraçosa.
Tudo o que eu quero é um programa que possa "tocar" artificialmente todos os possíveis modificadores de teclado, para que seu status seja redefinido. Isso pode ser feito?
Eu uso o Mint 14 (um clone do Ubuntu 12.10 Quantal).
fonte
xdotool keyup 204
.DISAPLAY=:1 xmodmap -pk | grep -iP 'alt|meta|super|hyper'
. Você precisará alterar o número de exibição para o número de exibição de VNC quebrado.DISPLAY=:1
no comentário acima.xdotool
suporta uma--clearmodifiers
opção parakey
/keydown
/keyup
- talvez não quando essa resposta foi escrita? Espero quexdotool keyup --clearmodifiers space
funcione. (xdotool keyup
requer que uma chave seja especificada; “espaço” é arbitrário.)Descobri que, para o meu sistema, a solução publicada que envolvia
xdotool
muitas vezes não cobria a chave que estava presa e a execuçãosetxkbmap
parecia não realizar nada no meu sistema.A solução que eu descobri, que até agora funcionou sem falhas, é usar
x11vnc
. Especificamente, eu uso o seguinte comando:-clear_keys
é a parte chave aqui. Ele instruix11vnc
a limpar todas as teclas pressionadas quando sair.-timeout 1
dizx11vnc
para sair após 1 segundo sem conexões e-deny_all
garante que ninguém possa se conectar durante essa janela.Às vezes, a chave que fica presa impede qualquer interação significativa com a área de trabalho; nesse caso, executarei o seguinte através do ssh:
fonte
Eu uso "setxkbmap" sem argumentos. Parece redefinir o teclado. Eu tenho um "atalho" no painel que posso usar com o mouse para quando o teclado estiver completamente inoperante.
fonte
A
x11vnc
resposta é engenhosa, mas se a instalaçãox11vnc
apenas para a limpeza de modificadores parece um exagero, aqui está uma solução Bash que usaxmodmap -pm
a saída de para emitir um keyup para todos os modificadores conhecidos. A conversão de código-chave hexadecimal para decimal depende da expansão aritmética de Bash.Se você o estiver executando a partir de um atalho de teclado, é recomendável adicionar
sleep 1
no início (para permitir tempo para que as teclas físicas sejam liberadas). Oecho
to stderr não é necessário, é claro; Eu só gostaria de poder verificar meu~/.xsession-errors
arquivo para obter resultados como este.fonte