2013-02-09 58 views
1

最近兩天我一直在尋找和閱讀很多應該很簡單的東西。它已經很清楚,是不是這樣的:我試圖使這個:關鍵等效NSTextfield像Interface Builder

Key Equivalent field in IB

這就是全部。我知道快捷記錄器很舊,我一直在使用MASShortcut的Demo。 MASShortcut非常棒,但對於看起來很簡單的東西來說,它有很多代碼。我也搜索了很多蘋果示例代碼(希望他們會實現這個以外的地方,除了接口生成器,但沒有運氣到目前爲止)。

這給我留下了以下問題:

-Is有可能澄清一些這方面的東西任何文件?還是有比MASShortcut更簡單的解決方案嗎?我一直試圖複製類似於IB控件的東西,但我仍然堅持將按下的鍵「轉換」爲NSTextField中的字符(或者它是IB中的自定義NSView嗎?)。蘋果是否提供了一個簡單的方法來做到這一點因爲使用sendEvent捕獲所有內容並將其與所有鍵的列表進行比較似乎有很多工作,我想知道蘋果程序員如何在上面看到的控件中做到這一點。如果這是唯一的解決方案,那麼當我使用它時,我應該關注不同的鍵盤佈局嗎?

- 如何其他應用程序實現這一點,以便它變爲可見這裏: System Preferences > Keyboard

正如你可以看到這裏TextWranglers出現,是否自動發生時,我稱之爲「[NSEvent addGlobalMonitorForEventsMatchingMask:]」在我的應用程序?

這些是很多問題,我只是希望你們中的一個能夠指引我走向正確的方向。

由於提前, 弗蘭斯

回答

2

我與正從按鍵字符自己上週擺弄周圍,我偶然發現了一些原因,我從來沒有見過的兩個功能:UCKeyTranslate()在CoreServices和在ApplicationServices中顯然與CGEventKeyboardGetUnicodeString()(看起來像前者的包裝)有關。

看起來好像是這些函數 - 或者至少通過代碼 - 蘋果公司自己的文本系統正在使用這些函數將按鍵轉換爲Unicode字符串以便以文本形式顯示。

NSEventmodifierFlags的一個簡單的檢查應該能滿足轉向修正鍵狀態到像⌥⇧⌘的字符串:

NSUInteger flags = [theEvent modifierFlags]; 
NSString * modString = [NSString stringWithFormat:@"%@%@%@%@", 
           (flags & NSControlKeyMask) ? @"^" : @"", 
           (flags & NSAlternateKeyMask) ? @"⌥" : @"", 
           (flags & NSShiftKeyMask) ? @"⇧" : @"", 
           (flags & NSCommandKeyMask) ? @"⌘" : @""]; 

你也可能想看看艾倫Odgaard的博客文章"Deciphering an NSEvent"關於他開發的用於確定哪些按鍵被按下的啓發式。

+0

感謝您的反應,並對我遲到的回覆感到抱歉。我將瀏覽所有這些文檔,但不幸的是我現在沒有很多時間。我還發現:http://www.cocoacontrols.com/platforms/mac-os-x/controls/shortcutrecorder,似乎這是一個更新的版本,所以我也將研究該項目。只要我有時間完成所有這些,我會在這裏發佈! – Frans 2013-02-11 22:30:11

+0

我希望我有幫助。我不太瞭解您的評論,但如果我的帖子無法解決您的問題,請不要將勾號分配給它。只是upvote(箭頭上方的箭頭)表示它有幫助。 – 2013-02-11 22:35:11