From 774d595668241a8013197f841fcf7a440566d0b4 Mon Sep 17 00:00:00 2001 From: Noah Kantrowitz Date: Mon, 17 Jan 2022 20:17:31 -0800 Subject: [PATCH] Differentiate middle mouse from the side buttons on macOS. --- lib/pynput/mouse/_darwin.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/pynput/mouse/_darwin.py b/lib/pynput/mouse/_darwin.py index 78d7d7ad..a03939d3 100644 --- a/lib/pynput/mouse/_darwin.py +++ b/lib/pynput/mouse/_darwin.py @@ -199,7 +199,7 @@ def _handle(self, _proxy, event_type, event, _refcon): else: for button in Button: try: - (press, release, drag), _ = button.value + (press, release, drag), value = button.value except TypeError: # Button.unknown cannot be enumerated continue @@ -207,6 +207,11 @@ def _handle(self, _proxy, event_type, event, _refcon): # Press and release generate click events, and drag # generates move events if event_type in (press, release): + # case mouseEventButtonNumber = 3 + button_value = Quartz.CGEventGetIntegerValueField(event, 3) + if value != button_value: + # This is a button >= 3, like a side button + button = button_value self.on_click(px, py, button, event_type == press) elif event_type == drag: self.on_move(px, py)