This commit is contained in:
Kovid Goyal 2022-01-13 16:04:50 +05:30
parent 8fe71e3dc8
commit 9504f50bd4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -524,28 +524,27 @@ build_global_shortcuts_lookup(void) {
if (symbolic_hotkeys) {
for (NSString *key in symbolic_hotkeys) {
id obj = symbolic_hotkeys[key];
if ([key isKindOfClass:[NSString class]] && [obj isKindOfClass:[NSDictionary class]]) {
if (![key isKindOfClass:[NSString class]] || ![obj isKindOfClass:[NSDictionary class]]) continue;
NSInteger sc = [(NSString*)key integerValue];
NSDictionary *sc_value = obj;
id enabled = [sc_value objectForKey:@"enabled"];
if (!enabled || ![enabled isKindOfClass:[NSNumber class]] || ![(NSNumber*)enabled boolValue]) return;
if (!enabled || ![enabled isKindOfClass:[NSNumber class]] || ![(NSNumber*)enabled boolValue]) continue;
id v = [sc_value objectForKey:@"value"];
if (!v || ![v isKindOfClass:[NSDictionary class]]) return;
if (!v || ![v isKindOfClass:[NSDictionary class]]) continue;
NSDictionary *value = v;
id p = [value objectForKey:@"parameters"];
if (!p || ![p isKindOfClass:[NSArray class]]) return;
if (!p || ![p isKindOfClass:[NSArray class]]) continue;
NSArray<NSNumber*> *parameters = p;
NSInteger ch = [parameters[0] integerValue];
NSInteger vk = [parameters[1] integerValue];
NSEventModifierFlags mods = [parameters[2] unsignedIntegerValue];
static char buf[64];
if (ch == 0xffff) {
if (vk == 0xffff) return;
if (vk == 0xffff) continue;
snprintf(buf, sizeof(buf) - 1, "v:%lx:%ld", (unsigned long)mods, (long)vk);
} else snprintf(buf, sizeof(buf) - 1, "c:%lx:%ld", (unsigned long)mods, (long)ch);
temp[@(buf)] = @(sc);
}
};
}
}
global_shortcuts = [[NSDictionary dictionaryWithDictionary:temp] retain];