2008-10-20 102 views
1

我的應用程序使用事件點擊來捕獲鍵盤事件,並且我想知道每個事件來自哪個設備(即哪個鍵盤)。是否有一種設備識別信息以及水龍頭可以獲得的CGEvent?我查看了NSEvent的方法和各種CGEventField鍵,但是它們中沒有一個似乎是設備唯一的。任何幫助?來自NSEvent/CGEvent的設備信息

回答

6

您可能想看看DDHidLib,Dave Dribin的優秀框架,可以獨立使用USB HID設備。

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

(不只是操縱桿,所以閱讀比博客文章的第一段更多)

一些的下豹DDHidLib不再起作用,功能,由於蘋果公司的一些安全問題關於捕捉HID設備,但如果你幸運的話,它可能會爲你提供你需要的東西。

+0

這太棒了!在CGEvent到達水龍頭之前,鍵盤會發布HID事件,因此我可以關聯這些數據。謝謝你的提示。 – kevingessner 2008-10-22 13:29:07

+0

我很高興它的工作,不要忘了感謝戴夫:) – 2008-10-22 21:39:46

3

DDHidLib是整潔的,實際上我重新編寫了Leopard更新的HID API的Delicious Library 2的一部分,並將這些更改提交給原作者 - 如果你寫他,你可以得到Leopard-only示例代碼。

不幸的是,新的Leopard HID API能夠在鍵盤事件經過時達到峯值,但不會攔截它們,因此您無法構建自己的應用程序級設備處理程序,除非可以確定關鍵事件也會去AppKit。 (這就是爲什麼在美味庫2中使用USB條形碼掃描儀時出現BONKING噪音 - 我在掃描儀出現峯值並讀取條形碼,但打印仍然會發送到最不希望的窗口,並且發出嗶嗶聲)

-Wil