shp*_*ont 8 keyboard macos objective-c
是否有可能在没有引用的情况下在Objective-C中获得键盘状态NSEvent
?
一般情况下,我不能使用NSResponder
类似的方法,-[NSResponder flagsChanged:]
但我需要知道当前是否按下了Command键.
Jos*_*ell 18
我仍然想知道为什么你不能使用NSEvent
,但我还是会回答这个问题.也许你正在构建一个"命令行工具"并且只与基金会相关联?您将不得不至少包含一个框架.如果你想链接AppKit,你可以(正如我在评论中提到的)使用+[NSEvent modifierFlags]
; 这是一个类方法NSEvent
,因此您可以在任何地方使用它,而无需访问单个事件,以将修饰符键的当前状态作为位掩码.文档解释了位掩码的含义.
if( NSCommandKeyMask & [NSEvent modifierFlags] ){
NSLog(@"Oh, yeah!");
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用Quartz Event Services获取此信息.在这种情况下,您必须包含ApplicationServices框架*.该CGEventSource功能会给你同样的位掩码你得到NSEvent
:
CGEventFlags theFlags;
theFlags = CGEventSourceFlagsState(kCGEventSourceStateHIDSystemState);
if( kCGEventFlagMaskCommand & theFlags ){
NSLog(@"Uh huh!");
}
Run Code Online (Sandbox Code Playgroud)
*如果您实际上正在编写Cocoa应用程序,那么这已经包含在内了 - 它是Quartz的一部分.
归档时间: |
|
查看次数: |
5789 次 |
最近记录: |