Eu tenho um teclado IBM 122 de modelo-chave vintage M que estou adaptando para uso em um computador moderno. Estou usando um Teensy 2.0 para fazer a codificação e lidar com o lado USB das coisas. Peguei emprestado o firmware do projeto de teclado do Humble Hacker ( https://github.com/humblehacker/keyboard ) e adicionei as chaves extras na configuração da compilação. Por enquanto, tudo bem.
Todas as chaves "regulares" funcionam, mas o kernel parece estar descartando as chaves extras ( F13- F24, etc.).
A execução /lib/udev/keymap -i input/event0
mostra os códigos de verificação de todas as teclas normais, mas nada para as teclas extras.
Correr wireshark
para capturar pacotes na porta USB mostra que o teclado está enviando os códigos de verificação, mas parece que o kernel os está descartando por princípio.
Eu sinto que isso é algo nos drivers do kernel que simplesmente não está fornecendo códigos de verificação que ele não espera.
Eu pensaria que haveria algum tipo de mapa-chave "mestre" em algum .h
arquivo na fonte do kernel em algum lugar, mas até agora, não tive êxito em meus esforços para encontrá-lo.
Vale ressaltar que não estou perguntando sobre o mapeamento de chaves extras em X, como tantas outras antes de mim. Este é um problema de baixo nível, aparentemente relacionado ao kernel. Suponha, por enquanto, que eu não usarei o X. O que eu preciso é que os códigos de verificação apareçam quando eu corro /lib/udev/keymap -i
, posso fazer o resto a partir daí.
fonte
evtest
vez de/lib/udev/keymap -i
, não sei se isso será diferente.Respostas:
O kernel vê os códigos de verificação estranhos e os descarta. Eu tentaria obter esses valores dos códigos de verificação e atualizar o índice do banco de dados de hardware. Então, resumindo, o plano é o seguinte:
obtenha os códigos da saída dmesg - o dmesg deve gerar algo assim quando o código de tecla desconhecido for pressionado:
a0
sendo o valor do código.crie um arquivo de mapeamento de código de chave personalizado. Os exemplos e a ajuda estão no arquivo padrão
(
/usr/lib/udev/hwdb.d/60-keyboard.hwdb
para o Arch, pode ser diferente em outras distribuições).atualize e acione o banco de dados de hardware executando os comandos:
onde
eventXX
corresponde ao seu teclado (você pode obtê-lo executandoevtest
). Você também pode reiniciar em vez de acionar.Procure no Arch wiki e no arquivo de mapeamento de código de chave padrão para obter uma descrição mais detalhada (ou na documentação de distribuição, se não for Arch).
Este é o método confiável e simples, faz o mapeamento no nível do kernel para funcionar com qualquer servidor de exibição, DE etc.
fonte
Este site oferece conversões personalizadas de teclado http://straypoetry.com/ibm-model-m-keyboard/
Com base nas informações deste site: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html
fonte