Resolvi isso lendo o dispositivo de entrada bruto e analisando-o de forma semelhante ao link
Eu tenho um raspberry pi rodando algum software (eu tenho a fonte) que precisa da interação do usuário e tem um teclado especial (USB) com apenas 3 teclas. O programa é executado no framebuffer (SDL) e é lançado remotamente; Eu preciso deste programa para reagir às teclas pressionadas, mas parece impossível se o usuário não estiver logado localmente.
O que posso fazer? A solução não deve usar muitos recursos e o atraso deve estar dentro de 300 ms.
O caso de uso típico é um pressionamento de tecla a cada 10 minutos ao longo de 4 a 8 horas, mas pode ser tão frequente quanto uma tecla pressionada a cada 2 segundos (altamente improvável). Isso tudo funciona em cima do raspbian, eu tenho acesso root.
Resolvi isso lendo o dispositivo de entrada bruto e analisando-o de forma semelhante ao link
Instale o openssh-server (no RPi)
apt-get install openssh-server
Você pode querer usar ssh com a opção -X
(de outro host)
ssh -X <username>@<IP_of_Rasperry_Pi>
[Enter password when prompted]
Uma vez que você está conectado, seu prompt deve ter mudado para o que você veria quando estivesse logado localmente no pi de framboesa.
Após conectar-se, execute epiphany &
para executar o navegador padrão incluído no Raspbian e exibi-lo na máquina do cliente (não no Raspberry Pi) e navegue até o site que executa o programa em questão e abra-o .
Você pode anexar um teclado [normal] ao Pi e alternar para o modo multiusuário (sem gráficos) pressionando Ctrl + Alt + F1
, efetuando login como root e digitando pkill X
(sim, o X precisa ser capitalizado ) no tty para matar a GUI no display diretamente conectado ao pi (economiza recursos do sistema). Então você pode ssh para ele (não esqueça a opção -X
) e abra o navegador (como antes). Ou, em vez de anexar um teclado, você também pode usar o ssh (sem a chave -X
) para matar o servidor X. Uma coisa a notar, este comando irá matar todas as sessões X em execução no pi, incluindo qualquer que você possa estabelecer com o ssh.
Isso só funcionará se as chaves puderem ser mapeadas para o programa através do teclado usado na conexão remota.
Para configurar a GUI para não aparecer na inicialização [localmente no RPi], use o comando sudo raspi-config
e siga as instruções dadas aqui: link
Espero que isso ajude a resolver seu problema.
Tags keyboard tty framebuffer