我是Mac編程的新手,所以我希望這不是很明顯。多鍵可可(OS X)
總之,我似乎沒有得到多個按鍵事件。我創建了這個片段,它永遠不會觸發斷言,因此絕不會打印多個鍵。不過,我獲得了單鍵版畫。
- (void)keyDown:(NSEvent *) theEvent {
NSString *characters = [theEvent characters];
assert([characters length]<2);
for (int i=0;i<[characters length];++i) {
NSLog(@"k=[%d]\n", [characters characterAtIndex:i]);
}
}
有誰知道我在做什麼錯?如果您有興趣,我需要爲OpenGL查看應用程序提供多個按鍵。也許我完全不在這種應用程序的標記。
編輯:進一步研究後,我發現這一點: http://www.cocoadev.com/index.pl?GameKeyBoardHandling 這使得基於這裏的討論,意義上,只有最後一個鍵重複。當引發keyDown事件時,向下鍵被放置並在keyUp上移除。這意味着該套具有完整的當前按下鍵,避免了唯一重複最後一次持有的問題。 它'夠好',所以我現在使用這種方法。它似乎工作得很好,並且因爲它使用標準鍵盤事件系統(而不是HID),所以不應該有任何兼容性問題。
問候, 巴蒂爾
「我最好的猜測是多個字符引用的是UNICODE代碼點,但NSString是UNICODE序列,所以我看不到如何通過創建自己的事件來生成多個字符。」首先,它是Unicode,不是UNICODE。其次,`unichar`是兩個字節;一個`unichar`只能容納一個UTF-16編碼單元。在基礎多語言平面之外(即U + FFFF以上),角色必須表示爲兩個形成代理對的單身漢。 – 2009-07-20 03:04:27
好吧,但我應該至少得到每個持有的密鑰重複按鍵事件。有關我的意思的更多信息,請參閱下面的答案。 – Shane 2009-07-20 05:46:40
您的意思是Jon Steinmetz的回答。 (訂單是不固定的,可以隨着投票而改變。) – 2009-07-20 14:42:19