Как мне указать OS X игнорировать ввод от одной из двух подключенных USB-мышей?

К моему Mac подключены две USB-мыши, одну из которых я использую в качестве сканера. Мне нужен доступ к общим данным X и Y, но я не хочу, чтобы эти данные перемещали курсор. Как в среде углерода или какао я могу сказать системе, чтобы она игнорировала мышь как указательное устройство?

Изменить: после некоторых копаний я обнаружил, что могу отключить обновление положения мыши с помощью функции CGAssociateMouseAndMouseCursorPosition (), но это не позволяет мне указать одну мышь. Может ли кто-нибудь объяснить взаимосвязь OS X между устройствами мыши HID и курсором? Между аппаратным и программным обеспечением должна быть связь на каждом устройстве, но я не могу ее найти.


person Jeff    schedule 18.08.2010    source источник


Ответы (1)


Я бы подумал о написании базового драйвера для пользовательского пространства для мыши. Это позволит вам получить прямой доступ к мыши как к USB-устройству. Вы также можете получить управление устройством из системы для своего исключительного использования.

Здесь есть некоторая документация:

Работа с интерфейсами USB-устройств

Чтобы вы начали, шаги по настройке для подключения к USB-устройству выглядят следующим образом (я думаю, мой IOKit заржавел)

include ‹IOKit / IOKitLib.h> и‹ IOKit / usb / IOUSBLib.h>

  1. найдите интересующее вас устройство, используя IOServiceMatching(). Это позволяет вам выбрать правильное USB-устройство на основе его свойств, включая такие вещи, как идентификатор поставщика и т. Д. (См. Снимок экрана инструмента IORegistryExplorer ниже)
  2. получить экземпляр USB-плагина (назовем его plugin) с помощью IOCreatePlugInInterfaceForService()
  3. используйте plugin из шага 2, чтобы получить интерфейс устройства (назовем его device), используя (**plugin)->QueryInterface()
  4. device представляет собой дескриптор подключения к вашему USB-устройству - сначала откройте его, используя (**device).USBDeviceOpen или (**device).USBDeviceOpenSeize(). оттуда вы сможете отправлять / получать данные.

Похоже, я многое знаю ... и может быть более простой способ, но это то, что мне приходит в голову. Не уверен, что у такого уровня контроля над устройством могут быть некоторые преимущества. удачи.

Снимок экрана IORegistryExplorer

person nielsbot    schedule 28.04.2012