我想過濾第二個鍵盤上的鍵盤輸入,並防止第二個鍵盤的鍵盤事件到達OS(自己處理它們)。如何才能做到這一點?OSX用於輔助鍵盤的HID過濾器?
7
A
回答
5
它可以通過使用由於IOKit和HIDManager類來完成。
如果對鍵盤的獨佔訪問需要,kIOHIDOptionsTypeSeizeDevice
選項可以使用,但程序會以root權限運行。
爲了獲得這種效果所需要的代碼的存根如下:
// Create a manager instance
IOHIDManagerRef manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDManagerOptionNone);
if (CFGetTypeID(manager) != IOHIDManagerGetTypeID()) {
exit(1);
}
// Setup device filtering using IOHIDManagerSetDeviceMatching
//matchingdict = ...
IOHIDManagerSetDeviceMatching(manager, matchingdict);
// Setup callbacks
IOHIDManagerRegisterDeviceMatchingCallback(manager, Handle_DeviceMatchingCallback, null);
IOHIDManagerRegisterDeviceRemovalCallback(manager, Handle_RemovalCallback, null);
IOHIDManagerRegisterInputValueCallback(manager, Handle_InputCallback, null);
// Open the manager and schedule it with the run loop
IOHIDManagerOpen(manager, kIOHIDOptionsTypeSeizeDevice);
IOHIDManagerScheduleWithRunLoop(manager, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
// Start the run loop
//...
更詳細的信息可以在蘋果的文檔在這裏找到:http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html
我用完整的代碼我應用程序可以在這裏找到: https://gist.github.com/3783042
-1
我要採取刺在這個很短,但寫自己的驅動程序,你不能攔截緩衝。這是爲了防止鍵盤記錄器和其他惡意程序。一切都必須通過操作系統。
相關問題
- 1. 在.net中使用輔助USB鍵盤
- 2. Windows鍵盤輔助功能和輔助技術
- 3. Android 2.2上的HID鍵盤
- 4. 使用USB控制器作爲Visual Studio的輔助鍵盤
- 5. 自定義Android鍵盤:如何創建輔助鍵盤
- 6. Android模擬HID鍵盤
- 7. 使用「過濾器」方法作爲常規輔助方法
- 8. 如何在Mac OSX上僅在具有特定HID的鍵盤上使用鍵盤事件?
- 9. 過濾器鍵盤TextField Java FXML
- 10. 輔助和TAB鍵
- 11. 鍵盤輔助功能 - 不關注Tab鍵的鏈接 - Safari瀏覽器
- 12. B-樹中的輔助鍵
- 13. SQL Management Studio中用於過濾的鍵盤方法是什麼?
- 14. OSX上的鍵盤輸入
- 15. Mac OSX中的Eclipse鍵盤快捷鍵
- 16. 輔助功能不會讀取鍵盤按鈕
- 17. jQuery的過濾器幫助
- 18. django過濾器的幫助
- 19. Rails的通過輔助方法HAS_MANY使用非主鍵
- 20. 是否有按主鍵和輔助鍵排序的容器?
- 21. 有沒有像主鍵和輔助鍵?
- 22. 如何禁用OSX下的「幫助」鍵?
- 23. iPhone模擬器的鍵盤幫助
- 24. 十六進制鍵盤掃描碼和USB HID鍵盤文檔的列表
- 25. jQuery語法輔助過濾器通過文本框擊鍵選擇選項(隱藏)
- 26. 如何過濾UICollectionView並保持鍵盤?
- 27. 在Python中過濾USB HID列
- 28. 用於鍵盤敲擊的記錄器
- 29. Django的:過濾器外鍵
- 30. Servlet過濾器 - 不要將過濾器應用於特定的過濾器
非常感謝!我不知道如何,但我沒有得到通知,說這個問題得到了答覆。我很高興終於知道如何做到這一點。我試用了你的示例代碼,它的功能就像一個魅力。 – JayGee 2014-03-13 23:12:28