macOS 在 KeyDown 中检测鼠标按钮是否按下
macOS detect if mouse button is down in KeyDown
在keyDown(with event: NSEvent)
中我可以知道是否按下了OPT、CMD、CTRL、Shift,代码如下
override func keyDown(with event: NSEvent) {
let shiftPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.shift.rawValue != 0)
let commandPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.command.rawValue != 0)
let optionPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.option.rawValue != 0)
let controlPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.control.rawValue != 0)
...
如何在 keyDown 中检测鼠标左键是向上还是向下?
您可能会注意到,keyDown:
跟踪键盘而不是鼠标,因此您需要跟踪鼠标。然后:
捕获鼠标事件并跟踪 mouseDown:
,在其中设置一个您在 mouseUp:
中重置的标志,然后在 keyDown:
.
中测试此标志
-----编辑----
您也可以使用 NSEvent
的方法 pressedMouseButtons:
来轮询鼠标(无论如何轮询并不总是一个好主意)。
在keyDown(with event: NSEvent)
中我可以知道是否按下了OPT、CMD、CTRL、Shift,代码如下
override func keyDown(with event: NSEvent) {
let shiftPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.shift.rawValue != 0)
let commandPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.command.rawValue != 0)
let optionPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.option.rawValue != 0)
let controlPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.control.rawValue != 0)
...
如何在 keyDown 中检测鼠标左键是向上还是向下?
您可能会注意到,keyDown:
跟踪键盘而不是鼠标,因此您需要跟踪鼠标。然后:
捕获鼠标事件并跟踪 mouseDown:
,在其中设置一个您在 mouseUp:
中重置的标志,然后在 keyDown:
.
-----编辑----
您也可以使用 NSEvent
的方法 pressedMouseButtons:
来轮询鼠标(无论如何轮询并不总是一个好主意)。