如何获得shift键的状态,向下或向上?

时间:2016-03-01 09:24:16

标签: objective-c macos keyevent

我需要检查换档键的状态,当它按住或不按时,我会做不同的事情。

但是

- (void)flagsChanged:(NSEvent *)theEvent

[NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask

                                      handler:^NSEvent *(NSEvent * event)

我更喜欢使用显示器,但我只能获得按键事件,如何确定shift键是否按下?

我的粗略想法是声明一个bool,当按下键时,将bool指定为YES,当键入时,将bool指定给NO。

但我无法获得关键活动,有人知道如何获得关键活动,有什么更好的,如果你有更好的想法,请帮助我谢谢。

1 个答案:

答案 0 :(得分:2)

您可能会看到MASShortcut项目如何在https://github.com/shpakovski/MASShortcut/blob/master/Framework/MASShortcutView.m

的第400行处理此问题

修改

    NSEventMask eventMaskDown = (NSKeyDownMask | NSFlagsChangedMask);
    eventMonitorDown = [NSEvent addLocalMonitorForEventsMatchingMask:eventMaskDown handler:^(NSEvent *event) {
        // The event object contains the key that was pressed
    }

    NSEventMask eventMaskUp = (NSKeyUpMask | NSFlagsChangedMask);
    eventMonitorUp = [NSEvent addLocalMonitorForEventsMatchingMask:eventMaskUp handler:^(NSEvent *event) {
        // The event object contains the key that was released
    }

有关Apple网站的更多信息,请参阅Modifier flags