ThreeFingersDragOnWindows icon indicating copy to clipboard operation
ThreeFingersDragOnWindows copied to clipboard

Always Right-Clicks on Release

Open metal450 opened this issue 2 years ago • 23 comments

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!

metal450 avatar Nov 30 '22 04:11 metal450

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).

ClementGre avatar Nov 30 '22 06:11 ClementGre

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

metal450 avatar Dec 01 '22 01:12 metal450

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 ?

ClementGre avatar Dec 01 '22 08:12 ClementGre

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).

metal450 avatar Dec 01 '22 15:12 metal450

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.

ClementGre avatar Dec 01 '22 18:12 ClementGre

Regarding the driver, it looks like it's just using the generic Microsoft touchpad driver:

2022-12-01 17 31 14

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 :/

metal450 avatar Dec 02 '22 01:12 metal450

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

ClementGre avatar Dec 02 '22 07:12 ClementGre

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.

ClementGre avatar Dec 02 '22 12:12 ClementGre

Awesome! Thanks for looking into it :)

metal450 avatar Dec 02 '22 15:12 metal450

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

ClementGre avatar Nov 11 '23 08:11 ClementGre

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 :/

metal450 avatar Nov 11 '23 17:11 metal450

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.

ClementGre avatar Nov 11 '23 18:11 ClementGre

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:

peek

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?

metal450 avatar Nov 11 '23 19:11 metal450

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.

ClementGre avatar Nov 11 '23 19:11 ClementGre

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.

metal450 avatar Nov 11 '23 19:11 metal450

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.

ClementGre avatar Mar 23 '24 17:03 ClementGre

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

metal450 avatar Mar 23 '24 17:03 metal450

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.

ClementGre avatar Mar 25 '24 19:03 ClementGre

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?

ClementGre avatar Mar 27 '24 19:03 ClementGre

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.

metal450 avatar Mar 27 '24 21:03 metal450

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.

ClementGre avatar Apr 07 '24 12:04 ClementGre

The latest release available on GH is still 2.0.2, which is the same version I tried last time...?

metal450 avatar Apr 07 '24 16:04 metal450

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.

ClementGre avatar Apr 08 '24 10:04 ClementGre

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...

ClementGre avatar Jul 24 '24 14:07 ClementGre

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 :)

metal450 avatar Jul 24 '24 22:07 metal450

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!

ClementGre avatar Jul 25 '24 14:07 ClementGre