diff options
author | der richter <der.richter@gmx.de> | 2024-03-13 23:34:29 +0100 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2024-03-16 15:29:27 +0100 |
commit | db4eac140de5ac01c2014f86540ebffcb0d0596b (patch) | |
tree | c5ad90c8d1141eb6c15e487483be44cf66af7dde /osdep/mac | |
parent | ab419a6660c6f8f78b30ba0838ab3c274746af89 (diff) | |
download | mpv-db4eac140de5ac01c2014f86540ebffcb0d0596b.tar.bz2 mpv-db4eac140de5ac01c2014f86540ebffcb0d0596b.tar.xz |
mac/input: move mouse event handling into input helper
Diffstat (limited to 'osdep/mac')
-rw-r--r-- | osdep/mac/input_helper.swift | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/osdep/mac/input_helper.swift b/osdep/mac/input_helper.swift index 7f2272521a..fdab411deb 100644 --- a/osdep/mac/input_helper.swift +++ b/osdep/mac/input_helper.swift @@ -115,6 +115,16 @@ class InputHelper: NSObject { } } + func processMouse(event: NSEvent) { + if !mouseEnabled() { return } + lock.withLock { + putKey(map(button: event.buttonNumber), modifiers: event.modifierFlags, type: event.type) + if event.clickCount > 1 { + putKey(map(button: event.buttonNumber), modifiers: event.modifierFlags, type: .keyUp) + } + } + } + func draggable(at pos: NSPoint) -> Bool { lock.withLock { guard let input = input else { return false } @@ -158,6 +168,12 @@ class InputHelper: NSObject { let typeMapping: [NSEvent.EventType:UInt32] = [ .keyDown: MP_KEY_STATE_DOWN, .keyUp: MP_KEY_STATE_UP, + .leftMouseDown: MP_KEY_STATE_DOWN, + .leftMouseUp: MP_KEY_STATE_UP, + .rightMouseDown: MP_KEY_STATE_DOWN, + .rightMouseUp: MP_KEY_STATE_UP, + .otherMouseDown: MP_KEY_STATE_DOWN, + .otherMouseUp: MP_KEY_STATE_UP, ] return Int32(typeMapping[type] ?? 0); @@ -182,6 +198,18 @@ class InputHelper: NSObject { return Int32(mask) } + private func map(button: Int) -> Int32 { + let buttonMapping: [Int:Int32] = [ + 0: SWIFT_MBTN_LEFT, + 1: SWIFT_MBTN_RIGHT, + 2: SWIFT_MBTN_MID, + 3: SWIFT_MBTN_BACK, + 4: SWIFT_MBTN_FORWARD, + ] + + return Int32(buttonMapping[button] ?? SWIFT_MBTN9 + Int32(button - 5)); + } + @objc func open(files: [String]) { lock.withLock { guard let input = input else { return } |