Direcionando eventos de entrada do Linux a partir do dispositivo serial

5

Gostaria de criar um dispositivo baseado em RaspberryPi que possa se comunicar com meu laptop Linux via USB (não acho que seja importante, mas usarei um dongle USB personalizado que tenha um chip FTDI nele, e meu laptop terá os drivers FTDI instalados nele).

Gostaria de manipular meu dispositivo com um simples controle e um teclado simples, e o que eu gostaria de fazer é controlar o mouse e o teclado do meu laptop por meio desse dispositivo. Então:

    Exemplo de mouse
  • :
    • eu movo o controlador conectado ao RPi
    • O RPi converte isso em algum tipo de evento de comando / entrada
    • O RPi envia esse evento de comando / entrada para o dongle USB / FTDI conectado ao meu laptop
    • O dongle USB / FTDI envia o comando / entrada para os drivers de dispositivo FTDI
    • De alguma forma (???) o mouse (corretamente) se move na tela dos meus laptops
  • Exemplo de teclado
    • eu digito uma tecla no teclado conectada ao RPi
    • O RPi converte isso em algum tipo de evento de comando / entrada
    • O RPi envia esse evento de comando / entrada para o dongle USB / FTDI conectado ao meu laptop
    • O dongle USB / FTDI envia o comando / entrada para os drivers de dispositivo FTDI
    • De alguma forma (???) o sistema operacional recebe esse comando / entrada e o manipula apropriadamente; por exemplo, se um aplicativo estiver aberto na tela e um determinado campo de texto tiver foco, a chave aparecerá dentro dele, etc.

Eu posso manipular tudo até os drivers FTDI que recebem o comando / entrada, mas onde eu estou perdido é como eu posso fazer com que esses drivers "falem" com qualquer parte do Linux responsável por mover o mouse ou manipular as teclas . Alguma idéia?

Eu assumo que eu preciso escrever um código C nativo que irá:

  1. Ler da porta serial (onde os comandos / entradas do RPi serão enviados)
  2. Traduza os dados nessa porta em um comando estruturado ( MOVE_MOUSE_10_PIXELS_LEFT , KEYSTROKE_A , KEYSTROKE_H , etc.)
  3. De alguma forma, comuniquem-se com o sistema operacional Linux e digam para manipular esse comando. No caso de um comando MOVE_MOUSE_* , isso significa dizer ao Linux para realmente mover as coordenadas do mouse na tela. No caso de um comando KEY_* , isso significa dizer ao Linux para agir como se um usuário tivesse digitado essa chave ali mesmo no teclado do laptop.

Não tenho certeza de como realizar o Passo 3 acima.

    
por smeeb 28.04.2016 / 21:22
fonte

1 resposta

1

Eu tenho essa configuração com o Altera DE2 FPGA com C e código assembly escrevendo para uart0 e eu uso o minicom no Linux Ubuntu em outro computador para ler os dados do FPGA. Você tem que descobrir como interrompe o trabalho com o seu sistema e como comunicação serial é feito. Eu fiz isso em C e assembly, mas você pode verificar como é donoe em python

    
por 29.04.2016 / 06:13
fonte