F2 key press event on macOS

36 Views Asked by At

Why kVK_F2 is not equivalent to constant NSF2FunctionKey for F2 key press event, What is equivalent constant of kVK_F2, since carbon framework is deprecated.

When I printed the keyCode, The [Event keyCode] against NSF2FunctionKey is 63237(0xF705) whereas for kVK_F2, it prints is 120 which is 0x78. 0x78 seems to be the standard keyboard value for F2 key.

Sample code :

//@property (nonatomic, strong) id eventMonitor;  

NSEvent* (^handler)(NSEvent*) = ^(NSEvent *theEvent) {

        NSEvent *result = theEvent;
        NSUInteger flags = [theEvent modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask;

        if ((flags & NSEventModifierFlagFunction) && (flags & NSEventModifierFlagCommand) && ([theEvent keyCode] == NSF2FunctionKey)) {
            NSLog(@"Command + F2 key pressed.");
        }

        return result;
    };

_eventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:(NSEventModifierFlagFunction | NSEventMaskKeyDown) handler:handler];

Whenever I press F2 key, it does not read the event for NSF2FunctionKey. but reads for KVK_F2.

0

There are 0 best solutions below