2009-02-03 131 views
8

鍵盤事件我正在尋找在OS X原鍵盤事件的應用範圍內的訪問,無論是使用Cocoa或碳框架(或任何底層API的,對於這個問題)。我知道我可以覆蓋NSApplication的sendEvent:獲取原始鍵盤信息,但對於元鍵(命令,控制,替代,移位等)不顯示爲按鍵事件。我正在尋找類似於微軟DirectInput框架的東西。直接訪問OSX

謝謝!

回答

10

我認爲相當於DirectInput是HID管理器。 HID代表「人機界面設備」,HID管理器(有時稱爲HIDLib)是HID的低級API:鍵盤,鼠標和遊戲杆。

Leopard獲得了新的HID管理器API,記錄在Technical Note TN2187中。 Pre-Leopard API記錄在HID Class Device Interface Guide中。我寫了周圍老的API,DDHidLib,這可能對你有用的Objecive-C包裝。豹的API是很多更好。如果可以的話,我會直接使用它。

+1

這是否是依賴於「啓用assitive設備訪問」? – Raviprakash 2013-07-18 06:25:46

1

您可以使用RegisterHotKeyEvent Carbon函數,但我不確定您是否可以明確註冊任何元鍵。

博客文章Program Global Hotkeys in Cocoa Easily解釋瞭如何做到這一點。

5

Core Graphics框架也具有埋在其作爲遠程操作系統的一部分一些有用的功能。查找CGRemoteOperation.h,並查看Quartz Events reference

可以使用石英活動系統中安裝特定應用或系統範圍內的「事件水龍頭」,這也讓您監視和在一個相當低的水平注入鍵盤和鼠標事件。幾年前,應用程序特定的事件點擊出現了一些錯誤,但他們希望現在能夠解決這個問題。

我認爲HID的東西主要是爲驅動程序的開發,所以如果你只是尋找適合您的應用程序的工具,HID可能是矯枉過正。

3

NSResponder派生類有一個方法-(void)flagsChanged:當元鍵被按下時被調用。