【发布时间】:2023-03-18 00:29:01
【问题描述】:
我知道如何检测按键。除 Control、Alt、Shift 和 CMD 之外的所有键。
如何检测何时按下此键。
提前致谢。
【问题讨论】:
标签: objective-c macos keyboard
我知道如何检测按键。除 Control、Alt、Shift 和 CMD 之外的所有键。
如何检测何时按下此键。
提前致谢。
【问题讨论】:
标签: objective-c macos keyboard
如果您想在NSView 对象中检测这些键,请查看NSResponder 类。当您覆盖NSView 类(或其子类之一)时,您可以覆盖keyDown:(NSEvent *)theEvent(Apple Documentation)。当您调用[theEvent modifierFlags] 时,将返回一个NSUInteger 位域,然后您可以对其进行评估。
例如,与
if ([theEvent modifierFlags] & NSCommandKeyMask) {
...
}
您可以检查是否按下了 Command 键。
有关详细信息,请参阅 Apple 的 Cocoa Event-handling Guide,尤其是“处理关键事件”部分。
【讨论】:
在
- (void) flagsChanged: (NSEvent *)theEvent
[theEvent keyCode] 为CRTL、SHIFT、ALT 等提供一个数字,因此您只需为这些修饰符切换一个变量,在开始时设置为0。
如果你使用 OpenGL,你可能需要设置:
-(BOOL) canBecomeKeyWindow
【讨论】: