2010-08-18 13 views
8

Ho due mouse USB collegati al mio Mac, uno dei quali sto usando come scanner. Ho bisogno di accedere ai dati X e Y generici ma non voglio che quei dati spostino il cursore. In che modo, in ambienti di carbonio o di cacao, dico al sistema di ignorare il mouse come dispositivo di puntamento?Come dire a OS X di ignorare l'input da uno dei due mouse USB collegati?

Modifica: dopo alcuni scavi ho scoperto che posso disattivare l'aggiornamento della posizione del mouse con la funzione CGAssociateMouseAndMouseCursorPosition(), ma questo non mi consente di specificare un singolo mouse. Qualcuno può spiegare la relazione OS X tra i dispositivi mouse HID e il cursore? Ci deve essere un legame tra l'hardware e il software su un dispositivo per dispositivo, ma non riesco a trovarlo.

risposta

1

Vorrei esaminare la scrittura di un driver di spazio utente di base per il mouse. Ciò consentirà l'accesso diretto al mouse come dispositivo USB. Puoi anche prendere il controllo del dispositivo dal sistema per il tuo uso esclusivo.

C'è un po 'di documentazione qui:

Working With USB Device Interfaces

per iniziare, i passi configurato per la connessione a un dispositivo USB andare in questo modo (penso, il mio IOKit è arrugginito)

includono < IOKit/IOKitLib.h> e < IOKit/usb/IOUSBLib.h>

  1. trova il dispositivo che ti interessa usando IOServiceMatching(). Ciò ti consente di trovare il dispositivo USB corretto in base alle sue proprietà, incluse cose come l'ID del venditore, & c. (Vedere la schermata strumento IORegistryExplorer girato sotto)
  2. ottenere un plugin USB grado (chiamiamolo plugin) con IOCreatePlugInInterfaceForService()
  3. uso plugin dal passaggio 2 ottiene un dispositivo di interfaccia (chiamiamolo device) utilizzando (**plugin)->QueryInterface()
  4. device rappresenta un handle di connessione al dispositivo USB: aprirlo prima utilizzando (**device).USBDeviceOpen o (**device).USBDeviceOpenSeize(). da lì dovresti essere in grado di inviare/ricevere dati.

Suoni che so molto ... e potrebbe esserci un modo più semplice, ma questo è ciò che mi viene in mente. Potrebbero esserci alcuni vantaggi nell'avere questo livello di controllo del dispositivo, non sono sicuro. in bocca al lupo.

IORegistryExplorer screen shot