From db4eac140de5ac01c2014f86540ebffcb0d0596b Mon Sep 17 00:00:00 2001 From: der richter Date: Wed, 13 Mar 2024 23:34:29 +0100 Subject: mac/input: move mouse event handling into input helper --- osdep/mac/input_helper.swift | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'osdep/mac') 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 } -- cgit v1.2.3