北京做彩右影影视公司网站,网站排名seo软件,互联网技术对人力资源管理的影响有哪些,科技建筑公司网站文章目录 关于 MASShortcut项目结构 快速使用源码学习检测是否有热键冲突处理 Event macOS 开发交流 秋秋群#xff1a;644096295#xff0c;V : ez-code 关于 MASShortcut
MASShortcut 是一款快捷键管理工具#xff0c;替代和兼容 ShortcutRecorder
github : https://git… 文章目录 关于 MASShortcut项目结构 快速使用源码学习检测是否有热键冲突处理 Event macOS 开发交流 秋秋群644096295V : ez-code 关于 MASShortcut
MASShortcut 是一款快捷键管理工具替代和兼容 ShortcutRecorder
github : https://github.com/cocoabits/MASShortcut 项目结构
model MASKeyCodes : 功能键和快捷键 枚举MASShortcut : 管理 key 的组合不管是否可用MASShortcutValidator 验证shortcut 是否可用 Monitoring MASHotKey : 初始化和注册 MASShortcutMASShortcutMonitor : 注册/解除/检测 MASShortcut监控更新 User Defaults Storage MASDictionaryTransformer : 转换 shortcut 数据格式以便于存储MASShortcutBinder : 绑定用户操作和 shortcut UI MASLocalization : 替代 NSLocalizedString以便退出 app 时能从 framework 种读取字符串。MASShortcutView : Shortcut 视图图MASShortcutViewButtonCell : MASShortcutView 内部的 cell 样式可调整和重绘MASShortcutViewBindings : 设置关联的默认键 快速使用
单独使用一个 MASShortcutView 你可以修改 它的属性来改变显示的样式
MASShortcutView *shortCutView [[MASShortcutView alloc] initWithFrame:NSMakeRect(10, 10, 200, 50)];[self.window.contentView addSubview:shortCutView];shortCutView.wantsLayer YES;shortCutView.layer.backgroundColor [NSColor blueColor].CGColor; 源码学习
检测是否有热键冲突
MASShortcutValidator.m
- (BOOL) isShortcutAlreadyTakenBySystem:(MASShortcut *)shortcut explanation: (NSString**) explanation
{CFArrayRef globalHotKeys;if (CopySymbolicHotKeys(globalHotKeys) noErr) {// Enumerate all global hotkeys and check if any of them matches current shortcutfor (CFIndex i 0, count CFArrayGetCount(globalHotKeys); i count; i) {CFDictionaryRef hotKeyInfo CFArrayGetValueAtIndex(globalHotKeys, i);CFNumberRef code CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyCode);CFNumberRef flags CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyModifiers);CFNumberRef enabled CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyEnabled);if (([(__bridge NSNumber *)code integerValue] [shortcut keyCode]) ([(__bridge NSNumber *)flags unsignedIntegerValue] [shortcut carbonFlags]) ([(__bridge NSNumber *)enabled boolValue])) {if (explanation) {*explanation MASLocalizedString(This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard Mouse panel in System Preferences.,Message for alert when shortcut is already used by the system);}return YES;}}CFRelease(globalHotKeys);}return [self isShortcut:shortcut alreadyTakenInMenu:[NSApp mainMenu] explanation:explanation];
}CopySymbolicHotKeys 来自 Carbon – HiToolbox – CarbonEvents.h 处理 Event
- (void) handleEvent: (EventRef) event
{if (GetEventClass(event) ! kEventClassKeyboard) {return;}EventHotKeyID hotKeyID;OSStatus status GetEventParameter(event, kEventParamDirectObject, typeEventHotKeyID, NULL, sizeof(hotKeyID), NULL, hotKeyID);if (status ! noErr || hotKeyID.signature ! MASHotKeySignature) {return;}[_hotKeys enumerateKeysAndObjectsUsingBlock:^(MASShortcut *shortcut, MASHotKey *hotKey, BOOL *stop) {if (hotKeyID.id [hotKey carbonID]) {if ([hotKey action]) {dispatch_async(dispatch_get_main_queue(), [hotKey action]);}*stop YES;}}];
}https://music.163.com/#/song?id865632948 伊织 2023-12-22