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

How can I get the state of the shift key, down or up?

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

但是

- (void)flagsChanged:(NSEvent *)theEvent

[NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask

                                      handler:^NSEvent *(NSEvent * event)

我比较喜欢用monitor,但是我只能获取按键事件,如何确定shift键是否按下?

我的大概想法是声明一个bool,当按下时,将bool赋值给YES,当按下键时,将bool赋值给NO。

但是我获取不到按键事件,有没有人知道如何获取按键事件,有什么更好的,如果你有更好的想法,请帮助我谢谢。

您可能会在 https://github.com/shpakovski/MASShortcut/blob/master/Framework/MASShortcutView.m

的第 400 行看到 MASShortcut 项目如何处理这个问题

编辑

    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