【发布时间】:2012-09-04 23:43:29
【问题描述】:
我想拦截以 Control+Shift 开头并以字符结尾的热键(强制)。
我有以下代码:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSFlagsChangedMask handler: ^(NSEvent *event) {
NSUInteger flags = [event modifierFlags] & NSDeviceIndependentModifierFlagsMask;
if(flags == NSControlKeyMask + NSShiftKeyMask){
NSLog(@"pressed!");
}
}];
我需要在我的代码中添加什么来检查用户是否按下了 ControlShift+字符,以及用户按下了什么字符?
代码NSLog(@"pressed!");只有在我上面说的是真的时才会执行。
这是我正在寻找的伪代码:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSFlagsChangedMask handler: ^(NSEvent *event) {
NSUInteger flags = [event modifierFlags] & NSDeviceIndependentModifierFlagsMask;
if((flags == NSControlKeyMask + NSShiftKeyMask) && [event containsCharacter]){
NSLog(@"%@", [event character];
}
}];
所以如果用户按下 Control+Shift+1 我会做一件事,如果 Control+Shift kbd>+2 其他东西,等等……
【问题讨论】:
-
这是一个位掩码。像其他任何东西一样检查它。
-
你能用我所问的示例代码回答这个问题,以便我接受你的回答吗?
-
我不会重新发布该问题的答案。如果我提供的链接回答了您的问题,请单击“标记”链接并写一条消息表明这一点。否则,请更清楚您的要求以及它与我提供的链接有何不同。
-
我只想知道事件是否由 ctrl-shift 和普通字符触发。例如,看看这个伪代码(基于我上面写的):
if((flags == NSControlKeyMask + NSShiftKeyMask) && [event containsCharacter]){ NSLog(@"%@", [event character];}明白吗?
标签: objective-c xcode macos hotkeys nsevent