gpt4 book ai didi

swift OSX : simultaneous command + non modifier key events

转载 作者:行者123 更新时间:2023-11-28 08:02:20 26 4
gpt4 key购买 nike

我一直试图在堆栈溢出中找到这个,但只得到一个关于同时按下非修改键的链接,这需要一些状态检查才能获得所需的结果。

我正在尝试创建诸如 command+1、command+2、...、command+n 或 option+I 或 ctrl+q 之类的命令,每个命令都是修饰键和非修饰键的组合。

我使用所有覆盖,例如 keyDown 和 keyUp,并使用 InterpretKeyEvents 覆盖其他键,例如 cancelOperation 或 newLine。

我发现了一个覆盖修饰符键(flagsChanged)的状态

但上面的内容似乎只注册了我可以使用 NSEvent 的修饰符标志检查器提取的修饰键的状态,但我似乎无法同时按下按键来调用所需的函数。

我正在尝试使用不同的组合来访问数字键,因此每个修饰符+数字都会给我该数字的不同配置。

最佳答案

因此,为了完整起见,并感谢你们的建议,这是我采用的一种方法:

1-指向整数的字母数字键字典指向与字母数字的整数返回关联的函数的 2 字典3-下面的键捕获代码。它可以通过将 2 个函数指针关联到修饰符 rawIndex 值来改进,但这对于可能有问题或可能提出相同问题的任何人来说应该足够了。分析,我在按键和被调用的函数跟踪结束之间的平均响应时间为 0.2 - 0.8 毫秒。

    override func keyDown(with event: NSEvent) {
let modifierFlags = event.modifierFlags
let key = event.characters!
if !event.isARepeat{
if modifierFlags.rawValue == 256{
//No modifiers pressed
guard let track = Int(key) else{
//not a number key so proceed with the function library containing relevant pointers
functionLib[keys[key]!]!(0)
//keys is [String: Int]
return
}
//Proceed with another function as we are using number keys
command(keys[key]!)
}else if modifierFlags.contains(NSEventModifierFlags.command){
//Command key is being pressed simultaneously
guard let track = Int(key) else{
//Go into command and non number key combinations
functionLib[commandKeys[key]!]!(0)
return
}
//Command and number key combo function call
openTrack(track)
}
}
}

注意:函数库中有void函数允许非映射键导致返回函数,所以有几个,字典:keys only,command+key,option+key等对于获得一个有用的要使用的全套命令。此外,避免 if else 语句并获得 1-3 个渐近点的一个额外步骤是将修饰键 rawValue 与其自己的字典相关联。可能有点像 monadish 结构,但它似乎足够快。

关于 swift OSX : simultaneous command + non modifier key events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290081/

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