Ignore NSEventModifierFlagFunction when parsing global shortcuts
This commit is contained in:
parent
fa6c74a9b1
commit
c473df4393
@ -554,6 +554,8 @@ typedef enum AppleShortcutNames {
|
|||||||
kSHKUnknown = 0, //
|
kSHKUnknown = 0, //
|
||||||
} AppleShortcutNames;
|
} AppleShortcutNames;
|
||||||
|
|
||||||
|
#define USEFUL_MODS(x) (x & (NSEventModifierFlagShift | NSEventModifierFlagOption | NSEventModifierFlagCommand | NSEventModifierFlagControl))
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build_global_shortcuts_lookup(void) {
|
build_global_shortcuts_lookup(void) {
|
||||||
NSMutableDictionary<NSString*, NSNumber*> *temp = [NSMutableDictionary dictionaryWithCapacity:128]; // will be autoreleased
|
NSMutableDictionary<NSString*, NSNumber*> *temp = [NSMutableDictionary dictionaryWithCapacity:128]; // will be autoreleased
|
||||||
@ -579,6 +581,7 @@ build_global_shortcuts_lookup(void) {
|
|||||||
NSInteger ch = [parameters[0] isKindOfClass:[NSNumber class]] ? [parameters[0] integerValue] : 0xffff;
|
NSInteger ch = [parameters[0] isKindOfClass:[NSNumber class]] ? [parameters[0] integerValue] : 0xffff;
|
||||||
NSInteger vk = [parameters[1] isKindOfClass:[NSNumber class]] ? [parameters[1] integerValue] : 0xffff;
|
NSInteger vk = [parameters[1] isKindOfClass:[NSNumber class]] ? [parameters[1] integerValue] : 0xffff;
|
||||||
NSEventModifierFlags mods = ([parameters count] > 2 && [parameters[2] isKindOfClass:[NSNumber class]]) ? [parameters[2] unsignedIntegerValue] : 0;
|
NSEventModifierFlags mods = ([parameters count] > 2 && [parameters[2] isKindOfClass:[NSNumber class]]) ? [parameters[2] unsignedIntegerValue] : 0;
|
||||||
|
mods = USEFUL_MODS(mods);
|
||||||
static char buf[64];
|
static char buf[64];
|
||||||
if (ch == 0xffff) {
|
if (ch == 0xffff) {
|
||||||
if (vk == 0xffff) continue;
|
if (vk == 0xffff) continue;
|
||||||
@ -600,7 +603,7 @@ is_shiftable_shortcut(int scv) {
|
|||||||
static int
|
static int
|
||||||
is_active_apple_global_shortcut(NSEvent *event) {
|
is_active_apple_global_shortcut(NSEvent *event) {
|
||||||
if (global_shortcuts == nil) build_global_shortcuts_lookup();
|
if (global_shortcuts == nil) build_global_shortcuts_lookup();
|
||||||
NSEventModifierFlags modifierFlags = [event modifierFlags] & (NSEventModifierFlagShift | NSEventModifierFlagOption | NSEventModifierFlagCommand | NSEventModifierFlagControl);
|
NSEventModifierFlags modifierFlags = USEFUL_MODS([event modifierFlags]);
|
||||||
static char lookup_key[64];
|
static char lookup_key[64];
|
||||||
if ([event.charactersIgnoringModifiers length] == 1) {
|
if ([event.charactersIgnoringModifiers length] == 1) {
|
||||||
const unichar ch = [event.charactersIgnoringModifiers characterAtIndex:0];
|
const unichar ch = [event.charactersIgnoringModifiers characterAtIndex:0];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user