2010-08-18 21 views
8

Tengo dos ratones USB conectados a mi Mac, uno de los cuales estoy usando como escáner. Necesito acceso a los datos Generic X e Y, pero no quiero que esos datos muevan el cursor. ¿Cómo, bajo los ambientes de carbono o cacao, le digo al sistema que ignore el mouse como un dispositivo señalador?¿Cómo le digo a OS X que ignore la entrada de uno de los dos ratones USB conectados?

Editar: después de algunas búsquedas descubrí que puedo desactivar la actualización de posición del mouse con la función CGAssociateMouseAndMouseCursorPosition(), pero esto no me permite especificar un solo mouse. ¿Alguien puede explicar la relación OS X entre los dispositivos de mouse HID y el cursor? Tiene que haber un enlace entre el hardware y el software dispositivo por dispositivo, pero no puedo encontrarlo.

Respuesta

1

Me gustaría escribir un controlador básico de espacio de usuario para el mouse. Esto le permitirá acceder directamente al mouse como dispositivo USB. También puede tomar el control del dispositivo del sistema para su uso exclusivo.

Hay alguna documentación aquí:

Working With USB Device Interfaces

Para empezar, los pasos configurado para conectarse a un dispositivo USB ir como esto (creo, mi IOKit está oxidado)

incluyen < IOKit/IOKitLib.h> y < IOKit/USB/IOUSBLib.h>

  1. encuentra el dispositivo que te interesa usando IOServiceMatching(). Esto le permite elegir el dispositivo USB correcto en función de sus propiedades, incluidos elementos como la identificación del proveedor, & c. (Ver la pantalla de la herramienta IORegistryExplorer disparó abajo)
  2. obtener una instancia USB plug-in (vamos a llamarlo plugin) con IOCreatePlugInInterfaceForService()
  3. uso plugin desde el paso 2 y obtenga una interfaz de dispositivo (vamos a llamarlo device) usando (**plugin)->QueryInterface()
  4. device representa un asa de conexión a su dispositivo USB - ábralo primero usando (**device).USBDeviceOpen o (**device).USBDeviceOpenSeize(). a partir de ahí, debería poder enviar/recibir datos.

Suena como mucho, lo sé ... y podría haber una manera más fácil, pero esto es lo que me viene a la mente. Puede haber algunos beneficios de tener este nivel de control del dispositivo, no estoy seguro. buena suerte.

IORegistryExplorer screen shot

Cuestiones relacionadas