Guida degli eventi di input Linux dal dispositivo seriale

5

Mi piacerebbe costruire un dispositivo basato su RaspberryPi in grado di comunicare con il mio laptop Linux via USB (non credo che importi, ma userò un dongle USB su misura che ha un chip FTDI su di esso, e il mio laptop avrà i driver FTDI installati su di esso).

Mi piacerebbe rigare il mio dispositivo con un semplice stick di controllo e una semplice tastiera, e quello che mi piacerebbe fare è controllare il mouse e la tastiera del mio portatile attraverso questo dispositivo. Quindi:

  • Esempio di mouse:
    • Sposto il controller collegato al RPi
    • RPi lo converte in una sorta di comando / evento di input
    • RPi invia questo comando / evento di ingresso al dongle USB / FTDI collegato al mio laptop
    • Il dongle USB / FTDI invia il comando / input ai driver del dispositivo FTDI
    • In qualche modo (???) il mouse (correttamente) si sposta sullo schermo del mio laptop
  • Esempio di tastiera
    • Digito un tasto sulla tastiera collegata al RPi
    • RPi lo converte in una sorta di comando / evento di input
    • RPi invia questo comando / evento di ingresso al dongle USB / FTDI collegato al mio laptop
    • Il dongle USB / FTDI invia il comando / input ai driver del dispositivo FTDI
    • In qualche modo (???) il sistema operativo riceve questo comando / input e lo gestisce appropriatamente; ad esempio se un'app è aperta sullo schermo e un determinato campo di testo è attivo, la chiave verrà visualizzata al suo interno, ecc.

Posso gestire tutto fino ai driver FTDI che ricevono il comando / input, ma dove sono perso è come posso convincere quei driver a "parlare" con qualsiasi parte di Linux che è responsabile dello spostamento del mouse o della gestione delle sequenze di tasti . Qualche idea?

I presumo Ho bisogno di scrivere un codice C nativo che:

  1. Leggi dalla porta seriale (dove verranno inviati i comandi / gli input dal RPi)
  2. Traduci i dati su quella porta in un comando strutturato ( MOVE_MOUSE_10_PIXELS_LEFT , KEYSTROKE_A , KEYSTROKE_H , ecc.)
  3. In qualche modo comunichi al sistema operativo Linux e digli di gestire un comando del genere. Nel caso di un comando MOVE_MOUSE_* , questo significa dire a Linux di spostare effettivamente le coordinate del mouse sullo schermo. Nel caso di un comando KEY_* , questo significa dire a Linux di comportarsi come se un utente avesse digitato quella chiave proprio lì sulla tastiera del portatile.

Sono semplicemente insicuro su come eseguire il passaggio n. 3 sopra.

    
posta smeeb 28.04.2016 - 21:22
fonte

1 risposta

1

Ho una tale configurazione con Altera DE2 FPGA con C e codice assembly code in uart0 e uso minicom in Linux Ubuntu su un altro computer per leggere i dati dall'FPGA. Devi capire come interruzioni funzionano con il tuo sistema e in che modo è comunicazione seriale . L'ho fatto in C e assembly, ma puoi controllare come è donoe in python

    
risposta data 29.04.2016 - 06:13
fonte

Leggi altre domande sui tag