gpt4 book ai didi

objective-c - 使用 IMKit(或类似的)拦截 Command+key

转载 作者:行者123 更新时间:2023-12-03 17:12:01 25 4
gpt4 key购买 nike

我正在寻找拦截 Command 组合键,并认为 IMKit 将是一个不错的选择。通过扩展 IMKInputController 我可以拦截大多数键,但它似乎会忽略修改过的键。

我尝试过覆盖

-(BOOL)inputText:(NSString*)string client:(id)sender;

和(或者)

-(BOOL)inputText:(NSString*)string 
key:(NSInteger)keyCode
modifiers:(NSUInteger)flags
client:(id)sender;

但运气不佳;应用修饰符时,不会调用这些方法。更具体地说,上面的方法不会捕获 commandalt 键。像 shiftctrl 这样的简单修饰符可以工作(并且修饰符 flags 变量在第二种方法中设置)。启动 Apple 的示例应用程序 NumberInput亲自看看。

有什么建议吗?我是不是走错了路?

最佳答案

简短回答:

Use handleEvent:client: and listen to the NSFlagsChanged event.

<小时/>

IMKInputController 实现 IMKServerInput Protocol ,它提供了三种处理事件的方法。

  1. 按键绑定(bind) - 使用 inputText:client:didCommandBySelector:client:
  2. 仅限文本数据 - 使用 inputText:key:modifiers:client:
  3. 处理所有事件 - 使用 handleEvent:client:

看来您只尝试了前两个。您可以使用第三个选项来实现目标。

尝试以下操作:

  1. 覆盖recognizedEvents:(来自IMKStateSetting Protocol)

    - (NSUInteger)recognizedEvents:(id)sender
    {
    return NSKeyDownMask | NSFlagsChangedMask;
    }
  2. 并使用handleEvent:client:

    -(BOOL)handleEvent:(NSEvent*)event client:(id)sender
    {
    NSLog(@"handling event: %@", event);
    return false;
    }

您可以在控制台中看到修饰符的每个 keydown 和 keyup 的打印输出,包括 commandalt

关于objective-c - 使用 IMKit(或类似的)拦截 Command+key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21412985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com