Objective c 拦截命令+;带IMKit(或类似工具)的钥匙
我想截取命令键组合,并认为Objective c 拦截命令+;带IMKit(或类似工具)的钥匙,objective-c,macos,cocoa,appkit,input-method-kit,Objective C,Macos,Cocoa,Appkit,Input Method Kit,我想截取命令键组合,并认为IMKit将是一个不错的选择。通过扩展IMKInputController我可以截获大多数键,但它似乎忽略了修改过的键 我已经试过了 -(BOOL)inputText:(NSString*)string client:(id)sender; 及(或) 但是没有运气;当应用修饰符时,不会调用简单的方法。更具体地说,命令和alt键不会被上述方法捕获。像shift和ctrl这样的简单修饰符起作用(修饰符flags变量在第二种方法中设置)。启动Apple的示例应用程序,亲自查
IMKit
将是一个不错的选择。通过扩展IMKInputController
我可以截获大多数键,但它似乎忽略了修改过的键
我已经试过了
-(BOOL)inputText:(NSString*)string client:(id)sender;
及(或)
但是没有运气;当应用修饰符时,不会调用简单的方法。更具体地说,命令
和alt
键不会被上述方法捕获。像shift
和ctrl
这样的简单修饰符起作用(修饰符flags
变量在第二种方法中设置)。启动Apple的示例应用程序,亲自查看
有什么建议吗?我是不是完全走错了方向?简短回答:
使用handleEvent:client:
并收听NSFlagsChanged
事件
IMKInputController
实现,它提供了三种处理事件的方法
inputText:client:
和didCommandBySelector:client:
inputText:key:modifiers:client:
handleEvent:client:
handleEvent:client:
-(BOOL)handleEvent:(NSEvent*)event client:(id)sender
{
NSLog(@"handling event: %@", event);
return false;
}
您可以在Console中看到修改器的每个向下键和向上键的打印输出,包括
命令
和alt
发生了什么,它们没有被调用?“不走运”有点含糊不清……更新了…………测试这一点,在recognizedEvents:
中设置NSKeyUpMask
,仍然无法捕获NSKeyUp
类型事件。认为这是解决这个问题的办法,但显然不是:
- (NSUInteger)recognizedEvents:(id)sender
{
return NSKeyDownMask | NSFlagsChangedMask;
}
-(BOOL)handleEvent:(NSEvent*)event client:(id)sender
{
NSLog(@"handling event: %@", event);
return false;
}