Как я скажу OS X игнорировать ввод от одной из двух подключенных USB-мышей? - PullRequest
9 голосов
/ 19 августа 2010

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

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

1 Ответ

1 голос
/ 28 апреля 2012

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

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

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

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

включает и

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

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

IORegistryExplorer screen shot

...