Comments (3)
It seems Windows is not reporting double click events when a global event hook is registered.
I couldn't find a way to get these events reported, so it probably needs processing the left clicks and checking for interval. Note to self: the maximum interval to be considered a double click is available via the GetDoubleClickTime()
win32 function.
Thanks for the report. I'm extremely busy at the moment, but I'll take a look when I can. Feel free to work on it too.
from mouse.
I modified low_level_mouse_handler
callback in _winmouse.py
to calculate time difference between previous and current event and create new ButtonEvent
of type DOUBLE
if the difference is less or equal to the value returned by GetDoubleClickTime
.
GetDoubleClickTime = user32.GetDoubleClickTime
...
previous_button_event = None # defined in global scope
...
def low_level_mouse_handler(nCode, wParam, lParam):
global previous_button_event
struct = lParam.contents
# Can't use struct.time because it's usually zero.
t = time.time()
if wParam == WM_MOUSEMOVE:
event = MoveEvent(struct.x, struct.y, t)
elif wParam == WM_MOUSEWHEEL:
event = WheelEvent(struct.data / (WHEEL_DELTA * (2<<15)), t)
elif wParam in buttons_by_wm_code:
type, button = buttons_by_wm_code.get(wParam, ('?', '?'))
if wParam >= WM_XBUTTONDOWN:
button = {0x10000: X, 0x20000: X2}[struct.data]
event = ButtonEvent(type, button, t)
if (event.event_type == DOWN) and previous_button_event is not None:
diff = int(round(event.time * 1000.0)) - int(round(previous_button_event.time * 1000.0))
if diff <= GetDoubleClickTime():
event = ButtonEvent(DOUBLE, event.button, event.time)
previous_button_event = event
queue.put(event)
return CallNextHookEx(NULL, nCode, wParam, lParam)
So far this works as intented and generates UP, DOWN, DOUBLE, UP
event sequence which is a valid double click event sequence according to this MSDN article.
What do you think of this solution?
from mouse.
Thank you, that works great. It's added by commit bc8d989 .
from mouse.
Related Issues (20)
- [Feature request] Ability to hide mouse cursor
- Pressing the side keys HOT 1
- Mouse python lib HOT 1
- doesnt move mouse on roblox
- Issue with Wayland on Ubuntu 22.04 HOT 1
- mouse.move doesnt accept a list HOT 2
- Docker support
- Is there a way to detect either up or down mouse wheel scrolling?
- mouse.click() doesn't work on Ubuntu 22.04.1 LTS HOT 2
- not DPI aware HOT 3
- Touchscreen support - Question
- get_position altered after importing pyautogui
- typing this library
- Will creating multiple concurrent browsers automation also create individual mouse instances for each of the browsers?
- side mouse buttons plz help!!!
- [WAYLAND] Mouse won't move HOT 2
- [feature-request] Docs
- [BUG] `ImportError` while installing the (pre-release) package on macOS HOT 1
- release() in thread
- I have a question. And suggestion.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mouse.