按下捕获修改键(Control,Alt,Shift o CMD)

时间:2011-04-05 10:50:52

标签: objective-c macos keyboard

我知道如何检测按键。除Control,Alt,Shift和CMD之外的所有键。

如何检测何时按下此键。

提前致谢。

2 个答案:

答案 0 :(得分:4)

如果要在NSView对象之类的内容中检测这些键,请查看NSResponder类。当您覆盖NSView课程(或其中一个子课程)时,您可以覆盖keyDown:(NSEvent *)theEvent (Apple Documentation)。当您致电[theEvent modifierFlags]时,会返回NSUInteger位域,然后您可以对其进行评估。

例如,有

if ([theEvent modifierFlags] & NSCommandKeyMask) {
   ...
}
您可以检查是否按下了Command键。

有关详细信息,请参阅Apple的Cocoa Event-handling Guide,尤其是“处理关键事件”部分。

答案 1 :(得分:3)

in

- (void) flagsChanged: (NSEvent *)theEvent

[theEvent keyCode]CRTLSHIFTALT等提供了一个数字,因此您只需要为这些修饰符切换变量,设置为{{1}在开始时。

如果您使用OpenGL,则可能需要设置:

0