Информация об устройстве из NSEvent / CGEvent - PullRequest
1 голос
/ 20 октября 2008

Мое приложение использует нажатие события для захвата событий клавиатуры, и я хотел бы знать, с какого устройства (т.е. с какой клавиатуры) происходит каждое событие. Существует ли какая-то информация, идентифицирующая устройство, вместе с CGEvent, которую получает тап? Я посмотрел на методы NSEvent и различные ключи CGEventField, но ни один из них не кажется уникальным для устройства. Любая помощь?

Ответы [ 2 ]

6 голосов
/ 22 октября 2008

Возможно, вы захотите взглянуть на DDHidLib, превосходную платформу Дэйва Дрибина для независимой работы с USB HID-устройствами.

http://www.dribin.org/dave/blog/archives/2007/03/19/ddhidlib_10

(не только о джойстиках, так что читайте больше, чем первый абзац этого поста)

Некоторые функции DDHidLib больше не работают в Leopard из-за некоторых проблем с безопасностью в Apple, связанных с захватом устройства HID, но если вам повезет, он может предоставить вам то, что вам нужно.

3 голосов
/ 23 октября 2008

DDHidLib аккуратен, и на самом деле я переписал его части для Delicious Library 2 для более новых HID API Leopard и отправил изменения обратно первоначальному автору - если вы напишите ему, вы можете получить образец кода только для Leopard.

К сожалению, новые Leopard HID API имеют возможность пиковаться при событиях клавиатуры при их прохождении, но НЕ перехватывать их, поэтому вы не можете создать свой собственный обработчик устройства уровня приложения, если не все в порядке, что ключевые события также собирается в AppKit, а также. (Вот почему при использовании USB-сканера штрих-кода в Delicious Library 2 возникает БЕЗУМНЫЙ шум - я нажимаю на сканер и читаю штрих-код, но затем набор текста по-прежнему отправляется в самое верхнее окно, которое ему не нужно, и много пищит. Вздох.)

-Wil

...