2010-10-04 11 views
6

Ho creato un'app per Android che serve i dati del sensore del touch screen a un client java in ascolto sulla macchina Debian Lenny.Telefono Android come mouse del computer

Il client mappa questi dati in posizioni sullo schermo proprio come fa un pad wacom. Mi piacerebbe mettere fuori x_loc e y_loc in un file e avere il file riconosciuto come dispositivo. (Credo che questo sia il modo in cui dovrebbe funzionare)

Ho esperienza con Linux ma non ho dovuto creare un dispositivo prima. Come faccio a dire a Linux che questo file è un mouse. Devo creare un driver?

risposta

1

Ci sono molti modi per farlo, dalla scrittura di un vero driver di dispositivo, alla scrittura di X client per generare eventi X (usando l'estensione XTest per esempio), all'utilizzo di interfacce del kernel per iniettare eventi di sottosistema di input.

Vorrei andare con l'ultimo e utilizzare il sottosistema uinput. Fa parte di tutti i kernel recenti e fornisce /dev/uinput, che puoi aprire regolarmente e fare vari vari ioctl s per creare dispositivi di input dallo spazio utente regolare.

Si noti inoltre che esistono già alcuni meccanismi. I dispositivi di interfaccia umana Bluetooth, che funzionano bene su Linux, sono un esempio. rinputd, un demone per ascoltare i client rinput e la generazione di eventi uinput in base ai dati inviati. è un altro. Potresti prendere in considerazione solo la realizzazione della tua app Android come client rinput.

0

È possibile scrivere un driver di periferica linux per interpretare i dati come un vero mouse oppure è possibile convincere il server X (o qualsiasi altra cosa) ad accettare l'input da qualcos'altro, come una named pipe.

I file di dispositivo reali non sono file con qualsiasi contenuto - si tratta semplicemente di riferimenti a un numero maggiore e minore utilizzato per comunicare con un driver nel kernel che può eseguire vagamente opzioni simili a file su alcuni dispositivi. Crei i file del dispositivo con mknod, ma non funzioneranno finché non saranno supportati da un driver del kernel con numeri corrispondenti. Riteniamo ci siano ora alcuni meccanismi di stub in modo che la maggior parte del driver possa essere eseguito nello userspace.

Problemi correlati