Trabalhando em torno de um teclado com bugs / hackeando um fluxo de entrada?

5

Quando digito rapidamente a seqüência de teclas oun , a seqüência de teclas oun<F12> é emitida pelo meu teclado.

(Atualização: na verdade, você deve pressionar e segurar cada tecla na sequência para acionar o problema. Se o 'o' for liberado antes de pressionar 'u', o problema não será acionado).

Primeiramente, percebi o problema ao digitar em um site usando o Google Chrome e percebi que o console do desenvolvedor aparecia aleatoriamente durante a digitação. Eu não descobri os detalhes até que eu estava digitando no vim e, de repente, um <F12> apareceu no meu texto.

Alguns minutos de experimentação produziram o seguinte:

  • Isso é 100% reproduzível, sempre
  • É acionado especificamente pela sequência de teclas "oun"
  • A primeira tecla ainda deve estar deprimida quando você apertar a terceira tecla. Liberar cada tecla antes de pressionar a próxima não aciona o problema (é por isso que você só encontra o problema ao digitar rapidamente).

Como desenvolvedor, isso parece ser um problema direto a ser resolvido (se você vir essas quatro entradas em sequência, solte a quarta). No entanto, não tenho ideia de por onde começar: que filtro de fluxo de entrada de baixo nível está disponível no Linux, ou como proceder para hackear drivers de dispositivos e coisas do tipo.

Minha pergunta é: onde eu implementaria uma mudança como essa? No kernel? Existe um mecanismo de processamento de entrada de teclado que aceita filtros?

Detalhes adicionais:

Este é um HP ProBook 4530s (um laptop de negócios de 2011). Eu estou executando o Debian 8 em uma VM VirtualBox em um host do Windows 7. Ainda não inicializei no Knoppix para verificar se o problema ainda existe em um ambiente Linux 100% puro, mas estou bastante confiante de que este problema está acontecendo abaixo do nível do SO.

Alguém mais relatou exatamente o mesmo problema (a mesma seqüência de teclas) em 2012 com um novo 4530s: link

ATUALIZAÇÃO:

Eu inicializei o 4530 usando o Knoppix e rodei o xev para confirmar que este é um problema de hardware. Aqui está um trecho da saída, onde você pode ver a sequência oun<F12> : link

UPDATE 2:

Bem, tive sorte e uma atualização do BIOS foi suficiente para resolver o problema. Consulte o link

Estou aceitando a resposta de Dmitry, porque é isso que eu teria tentado depois se a atualização do BIOS não tivesse resolvido o problema.

    
por Jason Pepas 02.10.2015 / 16:17

1 resposta

1

Há um projeto no GitHub chamado inputty que faz o que você está tentando alcançar - lê eventos evdev de dispositivos HID reais e cria dispositivos de entrada de dados para emular hardware HID virtual. Por exemplo, aqui está um script qml adiciona um teclado virtual que gera um x pressione uma tecla após pressionar uma tecla f em um teclado real.

Você deve ser capaz de implementar seu algoritmo com isso, ou simplesmente soltar a tecla F12 se você puder viver sem ela.

    
por 02.10.2015 / 16:44