我试图检查函数运行时是否按下了 Shift 键。像这样的东西(但显然不是这个,这只是一个例子):
func doThisThing() {
if Keyboard.shared.keyBeingPressed(.shift) { // < What I'm trying to figure out
print("Doing this thing.")
} else {
print("You're not holding shift.")
}
}
我尝试查找,但我所能找到的只是 keyDown/keyUp 事件,这在这种情况下不实用。
import AppKit
public class KeyboardHelper
{
public static var optionKeyIsDown: Bool
{
let flags = NSEvent.modifierFlags
return flags.contains(.option)
}
public static var shiftKeyIsDown: Bool
{
let flags = NSEvent.modifierFlags
return flags.contains(.shift)
}
}
我已经很久没有做过这类事情了,但我似乎记得你需要设置一个 NSResponder 并监视 keyDown/keyUp 事件。然后,您将解析该事件以查找按下或释放的 Shift 键。
看起来还有一个函数 flagsChanged ,您可以实现该函数以在其中一个修饰键更改状态时收到通知。请参阅此主题:
查看
NSEvent.modifierFlags
:
let shiftIsPressed = NSEvent.modifierFlags.contains(.shift)