J'ai deux souris USB connectées à mon Mac, dont une que j'utilise comme scanner. J'ai besoin d'accéder aux données génériques X et Y mais je ne veux pas que ces données déplacent le curseur. Comment, dans un environnement de carbone ou de cacao, dois-je dire au système d'ignorer la souris comme un dispositif de pointage? Edit: après quelques recherches, j'ai trouvé que je pouvais désactiver la mise à jour de la position de la souris avec la fonction CGAssociateMouseAndMouseCursorPosition(), mais cela ne me permet pas de spécifier une seule souris. Quelqu'un peut-il expliquer la relation OS X entre les dispositifs de souris HID et le curseur? Il doit y avoir une liaison entre le matériel et le logiciel, appareil par appareil, mais je ne le trouve pas.Comment indiquer à OS X d'ignorer l'entrée de l'une des deux souris USB connectées?
Répondre
Je voudrais regarder dans l'écriture d'un pilote de l'espace utilisateur de base pour la souris. Cela vous permettra d'accéder directement à la souris en tant que périphérique USB. Vous pouvez également prendre le contrôle de l'appareil à partir du système pour votre usage exclusif.
Il y a une documentation ici:
Working With USB Device Interfaces
Pour démarrer, les mises en place des mesures pour se connecter à un périphérique USB aller comme ça (je pense, mon IOKit est rouillé)
comprennent < IOKit/IOKitLib.h> et < IOKit/usb/IOUSBLib.h>
- trouvez l'appareil qui vous intéresse en utilisant
IOServiceMatching()
. Cela vous permet de choisir le périphérique USB approprié en fonction de ses propriétés, notamment l'ID du fournisseur, & c. (Voir l'écran de l'outil IORegistryExplorer tourné ci-dessous) - obtenir une instance plugin USB (appelons-le
plugin
) avecIOCreatePlugInInterfaceForService()
- utilisation
plugin
de l'étape 2 obtenir une interface périphérique (appelons-ledevice
) en utilisant(**plugin)->QueryInterface()
device
représente une poignée de connexion à votre périphérique USB - ouvrez-le d'abord en utilisant(**device).USBDeviceOpen
ou(**device).USBDeviceOpenSeize()
. à partir de là, vous devriez être en mesure d'envoyer/recevoir des données.
Cela ressemble beaucoup à ce que je sais .. et il pourrait y avoir un moyen plus facile, mais c'est ce qui me vient à l'esprit. Il peut y avoir quelques avantages à avoir ce niveau de contrôle de l'appareil, pas sûr. bonne chance.