summaryrefslogtreecommitdiffstats
path: root/osdep/mac
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-03-13 23:34:29 +0100
committerder richter <der.richter@gmx.de>2024-03-16 15:29:27 +0100
commitdb4eac140de5ac01c2014f86540ebffcb0d0596b (patch)
treec5ad90c8d1141eb6c15e487483be44cf66af7dde /osdep/mac
parentab419a6660c6f8f78b30ba0838ab3c274746af89 (diff)
downloadmpv-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.swift28
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 }