ThreeFingersDragOnWindows
ThreeFingersDragOnWindows copied to clipboard
Always Right-Clicks on Release
Thanks for this app! It's still a bit jumpy/finicky, but hopefully after a few more iterations, us poor Windows users will at last have the same level of touchpad experience as Mac users :)
One issue I observe 100% of the time: upon concluding a 3-finger drag, it always does a "right-click." My guess is that this is because 2-finger tap triggers a right click. Hopefully this can be somehow suppressed, so the context menu doesn't pop up each time after a drag?
Thanks again!
This is really strange. The right click must be due to Windows detecting two fingers, cause the app does not do anything about the right click, and I do not have the same issue on my laptop.
Do you can reproduce the issue when ThreeFingersDragOnWindows is stopped? (to determine if it is really a windows use or not).
Nope, it doesn't occur when the app is stopped.
Here's a video showing the behavior with ThreeFingerDrag: https://www.dropbox.com/s/yqzdu9hcpnunh62/V_20221130_173702_ES5.mp4?dl=0 Here's the behavior without it running (no context menu appears): https://www.dropbox.com/s/c4fo6k981lf7vqz/V_20221130_173636_ES5.mp4?dl=0
It looks like the right click is done at the starting point of the drag. Do you had this issue in the v1.0, and do you have it in the version of gurinderhans : https://github.com/gurinderhans/threefingerdrag ?
Yeah both do. (Also, v1.0 & gurinderhans are both unusably glitchy - the mouse jumps all over the place seemingly at random. v1.1 was the first version I've seen where the mouse moves somewhat predictably).
Ok, I think this is a specific issue with your computer. For moving the cursor and controlling the mouse, I use the user32
dll and I don't think of a way to fix this issue. There may be some kind of interferences between the app and your default touchpad driver.
You may try to update the driver, or even try an old version, or change windows preferences, but I don't know any way to fix this cause I can't reproduce the issue.
You can too try to edit the source code if you know a bit of C# and .NET.
Regarding the driver, it looks like it's just using the generic Microsoft touchpad driver:
Regarding settings, I tried disabling every built-in gesture, including taps: disabled tap with single finger to single-click, tap with two fingers to right click, two finger scroll to drag, etc. The behavior is the same.
It never occurs when ThreeFingersDrag is not running. And with ThreeFingersDrag running, it only occurs if I three-finger drag (never if I two-finger drag or four-finger drag). So it definitely seems related to the new behavior introduced by the app.
Strange :/
I may try to simulate a mouse right click release at the start of the dragging process, or even during the dragging process to make sure that your right click is considered released by the os.
MouseEvent(MouseOperations.MouseEventFlags.RightUp, position.x, position.y);
I'll make a test version for you
Well, in fact, sending a right click release event is interpreted as a full right click by Windows and shows the context menu.
There may be a way to fix this by using other functions of user32.
Awesome! Thanks for looking into it :)
ThreeFingersDragOnWindows v2.0 has just been released. In this release, the dragging algorithm have been redeveloped from scratch. It might have fixed your issue. Can you give it a try ? See release v2.0.1
Cool, thanks for the heads up! The new UI is amazing...but unfortunately, the behavior is even worse. In addition to still doing the "right click on release" thing (i.e. context menu appears when I release the 3-finger drag), during the 3-finger drag, the cursor jumps all over the place seemingly at random :/
Unfortunately, I had a fully working behaviour on the three different touchpad I tested the app on.
Although, I noticed that the way touchpad raw inputs are identified and change can differ depending of the touchpad. On what touchpad/laptop are you experiencing this behaviour?
Can you send me a screenshot of the raw inputs list with fingers coordinates that is shown on the Touchpad tab of the app (while dragging three fingers or more if possible, or after dragging three fingers or more). Can you tell me what is the shown event speed when moving one finger or more for some times, and when no fingers are on the touchpad. This might help to debug the issue.
Otherwise, I could add a proper logging system to be able to see how does the algorithm actually behave.
On what touchpad/laptop are you experiencing this behaviour?
Laptop is a Dynabook X30L. It's its internal touchpad - Synaptics TM-P3548 20-003730-01Rev1 (the text below the QR on the physical part shows G83C000KH320 TM-P3548-502). This is the mfr part: https://encompass.com/item/13052422/Toshiba_Computer/P000824270/
Can you send me a screenshot
Actually, to revise my description lightly: sometimes it does actually drag, just extremely slowly. I'm not able to discern when it jumps around vs when it actually drags - it seems to be random. Here's a video:
I also drag the full width of the touchpad, with one finger, in each direction, just to show the "normal" cursor motion speed. When doing 3-finger drag, I'm dragging a similar distance across the physical touchpad (you can see that when it does drag, how much more slowly it moves).
In the UI, I can see that it thinks one of the fingers is popping on & off the touchpad (it definitely isn't). So maybe the issue is just having a small buffer time, so if one of the 3 fingers is briefly removed but replaced, it ignores that?
In fact, the contacts inputs are sent independently and I am grouping them automatically when an input is registered twice. I might try to tweak this part of the algorithm. However, releasing a finger and replacing it on the touchpad should not cause any cursor move because "new" contacts are quarantined to not influence the cursor position, and if a finger is released, the drag is not stopped. You can try to start with three fingers and then release a finger, continuing the drag with only two fingers to see if you still have the issue. You can also try to add a fourth finger. (There should be 3 fingers to engage the drag, but then, as long as there is at least 2 fingers on the touchpad, it is ok.) I guess the speed issue is linked to the cursor jump.
About the right click, I'll check the behaviour of user32 function. I can't understand how a simulated left up mouse event could be interpreted as a right down/up mouse input. I'll also try to setup a logging system to see your logs.
Yeah, the pickup/release observation was just a shot-in-the-dark guess based on glancing at it. Not the issue tho, I guess. Yeah, seems like some type of logging is needed.
Do you think that your second issue us the same as #39? Otherwise, you might create another issue, but it seems to be the same bug.
Hard to tell. Both are "the motion jumping around unexpectedly", but as to whether or not it's the same cause, your guess is as good as mine
I released a new version of TFDOW that allows to record logs. You can follow the instructions I sent on #39 for the jumpy behavior issue, and post the log file on the #39 issue.
About the right click on release issue, I am not sure that logging will help to debug this, but you can still post the log file here and I'll see if I can identify anything anormal.
Can you reproduce the right click on release issue with the "Enable three finger mouse move" disabled? And with the app opened, but the Three Finger drag disabled?
Can you reproduce the right click on release issue with the "Enable three finger mouse move" disabled?
Yes, but the behavior is a bit different. If "Enable three finger mouse move" is on, then the context menu appears as soon as I complete a 3-finger drag. if "Enable three finger mouse move" is disabled, then I three-finger drag (nothing happens), I release the 3 fingers (nothing happens), and the next time I touch the touchpad it does a right click.
This is indeed very strange. Can you update to the latest version of TFDOW and record logs: restart the app, go to the Other settings tab, enable logging, reproduce the issue with a single three-finger drag, and disable logging. Then you can save the file and send the file here.
The latest release available on GH is still 2.0.2, which is the same version I tried last time...?
You're right. I've seen your log file on #39, and nothing could explain the right-click issue. I'll try to fix #39 first and then see if I can find a reason for this to happen.
In the latest release, I added a way to select which mouse button to press while dragging.
Can you try to change it to None, Right and Middle, and try to combine it with disabling the three-finger mouse move. Just trying to find out what is the source of this right click...
In the latest release, I added a way to select which mouse button to press while dragging.
You solved it!!! And now it makes perfect sense. On this system, I have the mouse buttons swapped - so I guess since this app is a "separate" implementation of the mouse behavior from the system, it doesn't know about it, and it's simulating a "right-click drag" from the perspective of the system,since the system is using the right button as the primary button. So in other words...it doesn't read from the system that the buttons are swapped,so if you swap the buttons on the system, you must also swap them here.
And...the right click on release is gone :)
I should have thought of that before! Indeed, Windows inverts the buttons even on top of the user32 library. I'm glad that we figured that out. Thank you for keeping trying to solve this with me!