2010-10-04 14 views
6

Creé una aplicación de Android que sirve los datos del sensor de pantalla táctil a un cliente de Java que está escuchando en la máquina Debian Lenny.Teléfono Android como mouse de computadora

El cliente correlaciona esta información con las ubicaciones de la pantalla, como lo hace una almohadilla wacom. Me gustaría poner el x_loc y el y_loc en un archivo y hacer que el archivo sea reconocido como un dispositivo. (Niegamente creo que así es como funciona)

Tengo experiencia con Linux pero no he tenido que crear un dispositivo antes. ¿Cómo le digo a Linux que este archivo es un mouse? ¿Tengo que crear un controlador?

Respuesta

1

Hay muchas maneras de hacerlo, desde escribir un controlador de dispositivo real, escribir clientes X para generar eventos X (usando la extensión XTest por ejemplo), hasta usar interfaces del kernel para inyectar eventos del subsistema de entrada.

Iría con el último y usaría el subsistema uinput. Es parte de casi todos los kernels recientes y proporciona /dev/uinput, que puede abrir regularmente y hacer varios ioctl para crear dispositivos de entrada desde el espacio de usuario habitual.

Tenga en cuenta que ya existen algunos mecanismos para esto. Los dispositivos Bluetooth Human Interface, que funcionan bien en Linux, son un ejemplo. rinputd, un daemon para escuchar a los clientes de rinput y generar eventos uinput basados ​​en los datos que envían. es otro. Es posible que desee considerar simplemente hacer su aplicación Android como un cliente de rinput.

0

Usted puede escribir un controlador de dispositivo Linux para interpretar los datos como un ratón genuino, o se puede convencer al servidor X (o cualquier otra cosa) para aceptar la entrada de otra cosa, como por ejemplo una tubería con nombre.

Los archivos de dispositivo reales no son archivos con ningún contenido; simplemente son referencias a un número mayor y menor utilizado para hablar con un controlador en el kernel que puede realizar opciones vagamente similares a archivos en algún dispositivo. Usted crea archivos de dispositivo con mknod, pero no funcionarán hasta que estén respaldados por un controlador de kernel con los mismos números. Creo que ahora hay algunos mecanismos de código auxiliar, por lo que la mayor parte del controlador real se puede ejecutar en el espacio de usuario.

Cuestiones relacionadas