Estou trabalhando em um projeto que visa usar um pequeno teclado (de 6 teclas) para controlar música tocada por mpd
(e mpc
) em um Raspberry Pi. Obviamente, preciso "capturar" as entradas do teclado e traduzi-las em comandos para mpd
. Não tenho (zero) experiência trabalhando com teclados, mas depois de alguma pesquisa e usando estas perguntas e respostas como ponto de partida , agora tenho um pequeno script funcional que evtest
monitora a saída do teclado.
Há uma declaração no site do Debian sobre o evtest
pacote sobre o qual quero perguntar:
O evtest agora está em modo de manutenção e não suporta todos os recursos dos kernels mais recentes; o evemu-record do pacote evemu-tools deve ser usado em seu lugar.
Também testei o evemu-record
comando no meu script; parece funcionar muito parecido com o evtest
.
Tenho duas perguntas: a primeira é se os problemas mencionados evtest
são ou não uma preocupação real, dado o seguinte:
- o sistema alvo é um Raspberry Pi sem cabeça ('bookworm', 64 bits)
- o teclado tem apenas 6 teclas e é conectado via USB
Eu também tenho uma pergunta sobre esta afirmação em man evtest
:
Se o sinalizador --grab for fornecido no modo de captura, o evtest mantém um EVIOCGRAB no dispositivo. Enquanto esse grab estiver ativo, outros processos não receberão eventos dos dispositivos do kernel.
Isso significa que, se meu script for iniciado @reboot
( cron
), a saída do teclado de 6 teclas nunca será direcionada a nenhum outro processo? Se for assim, isso me parece "uma coisa boa" e uma potencial vantagem sobre evemu-record
.
A segunda pergunta é uma "pergunta de opinião", eu acho, mas eu gostaria de saber se há "vantagens convincentes" reais em escrever esse monitor de teclado em C
vez de em bash
como eu fiz?
Em relação
evtest
ao modo de manutenção — se funcionar para você, sinta-se à vontade para usá-lo! Isso significa apenas que novos recursos do evdev adicionados ao kernel podem não ser suportados noevtest
. Para um teclado, no entanto, isso provavelmente não importa muito (a menos que tenha teclas incomuns que vocêevtest
não conheça).Você entendeu
--grab
corretamente; a entrada capturada não está disponível para outros processos.evemu-record
sempre pega, entãoevtest
não tem vantagem aí.Qualquer resposta à sua última pergunta será baseada em opinião; isso realmente depende do que você está tentando fazer e de quão confortável você se sente escrevendo scripts em C ou shell.