Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.11k stars 2.06k forks source link

Impossible to leave the "rotate object mode" when entered via the secondary button on a Wacom tablet pen. #12554

Open hugovangalen opened 2 years ago

hugovangalen commented 2 years ago

Application Version

5.0.0

Platform

Linux

Printer

Ender3 Pro

Reproduction steps

Use a Wacom tablet secondary button on the pen to rotate the object.

Stop pressing the secondary button to get out of rotate mode.

Actual results

The object rotates, but it is impossible to escape rotate mode, bar restarting the application. Even using the 2nd mouse button which also enters/leaves rotate mode is useless at this point.

Expected results

Leave rotate view mode when the secondary button on the pen is released.

Note that this worked perfectly fine in 4.x versions.

Checklist of files to include

Additional information & file uploads

No files to include. Nothing is logged when this occurs and this bug happens with an empty project.

3dHawwy commented 2 years ago

Same problem here. Mac, Wacom or touch pad. Nothing works.

MariMakes commented 2 years ago

Hey @hugovangalen, Thanks for the report!

I literally dusted off my old Wacom Bamboo CTE 440 to verify your findings. But it's not showing any unexpected behavior for me, perhaps because I'm on a windows device.

The issue however seems familiar to me. If you encounter it again, can you try to press Esc to leave Rotate Object Mode?

In the meantime, I'll ask around to see if we have someone on the team with a tablet that can check what is going on.

hugovangalen commented 2 years ago

The issue however seems familiar to me. If you encounter it again, can you try to press Esc to leave Rotate Object Mode?

In the meantime, I'll ask around to see if we have someone on the team with a tablet that can check what is going on.

I have just tested to verify: hitting Escape does not resolve the issue.

(I also tested this with the latest 5.1.0 version, by the way. Same thing happens there.)

felderkwek commented 2 years ago

I am having the same issue as well.

Sjullep commented 2 years ago

I have this problem too (MacOS 12.6 and a Wacom Intuos Pro). I had the same problem with the program Gyroflow. The solution de Gyroflow devs came with was updating QT version to 6.4.0. After that Gyroflow works fine here, so perhaps this is also the solution for the Cura 5.x problem?

z0u commented 1 year ago

Same here on Mac OS.

Cura 5.1.1 Wacom Pen & Touch CTH-490 version 1.0.0.0 Wacom drivers 6.3.46-1 Mac OS 12.6 / Intel

MariMakes commented 1 year ago

@GraafSybren mentioned that he might be able to supply a screen share of what he was running into. Do you mind sharing it here?

wchairy commented 1 year ago

I'm having the same issue. Seriously, what the heck. I'm disabled and it's my only touch point into the system. I see that you're wanting a screen grab but of what something not working.

GraafSybren commented 1 year ago

I did a screen recording. Issue appears on 00:05 This bug seems to appear random after a while.. there is no specific trick I have found to reproduce it.

https://user-images.githubusercontent.com/73584612/199455474-9020dabe-39f8-462a-aa87-7fc1691e3832.mov

z0u commented 1 year ago

Here's another screen recording, showing pen taps.

Black: Pen tip / left-click: image

Green: Side button / right-click: image

https://user-images.githubusercontent.com/1408875/200986819-57e78cb6-d9df-420e-92cb-bc1093f6420a.mov

Issue triggered at 0:24. Notice that, even though the button is released, it's still in rotate mode.

Tablet settings:

image

z0u commented 1 year ago

Possible clue: it seems to happen most reliably after the pointer jumps to another part of the screen.

Both of the following recordings begin with a fresh instance of Cura.

⭕️ Generally OK: not lifting the pen far from the tablet:

https://user-images.githubusercontent.com/1408875/200991668-0692c2a1-abca-4c1e-ac16-985fbd0c526a.mov

❌ Generally fails: dragging after the pointer jumps:

https://user-images.githubusercontent.com/1408875/200991923-5ee8c86f-04f1-45c2-ad5f-05099cd29782.mov

Braintoe commented 1 year ago

I followed the forward from issue #13707 which suits the behaviour on my computer (Linux Mint with a Wacom Intuos Pro PTH-651 as a mouse replacement) better.

Things I can add to this:

Braintoe commented 1 year ago

Thanks to a little help from the xf86-input-wacom team, I could test the input with the xinput test-xi2 terminal command. I compared a mouse click and a fingertip onto the tablet (both recognised by Cura) with a pen "click". This is what I got:

A click with multitouch (finger):

EVENT type 15 (RawButtonPress)
    device: 2 (10)
    detail: 1
    flags: 
    valuators:

EVENT type 16 (RawButtonRelease)
    device: 2 (10)
    detail: 1
    flags: 
    valuators:

A mouse click with deliberate motion while pressing the button to simulate pen behaviour:

EVENT type 15 (RawButtonPress)
    device: 2 (16)
    detail: 1
    flags: 
    valuators:

--------- numerous EVENT type 17 (RawMotion) events ----------

EVENT type 16 (RawButtonRelease)
    device: 2 (16)
    detail: 1
    flags: 
    valuators:

A pen vertically dropped some centimeters onto the tablet surface with the hand kept at a distance to minimise any disturbances yielded the following results:

EVENT type 15 (RawButtonPress)
    device: 2 (8)
    detail: 1
    flags: 
    valuators:
          0: 16324.00 (16324.00)
          1: 15667.00 (15667.00)
          2: 42964.00 (42964.00)
          3: 0.00 (0.00)
          4: 4.00 (4.00)
          5: -900.00 (-900.00)

--------- numerous EVENT type 17 (RawMotion) events ----------

EVENT type 16 (RawButtonRelease)
    device: 2 (8)
    detail: 1
    flags: 
    valuators:
          0: 15986.00 (15986.00)
          1: 15339.00 (15339.00)
          2: 0.00 (0.00)
          3: 0.00 (0.00)
          4: 2.00 (2.00)
          5: -900.00 (-900.00)

Could it be that whatever you use to get mouse events has problems handling these valuators that come with the button events?

Braintoe commented 1 year ago

Small update to the comment above: I overlooked that I just copied the "Raw" events, sorry. In all cases above, there are also ButtonPress/Release events:

Pen:

EVENT type 15 (RawButtonPress)
    device: 2 (8)
    detail: 1
    flags: 
    valuators:
          0: 28385.00 (28385.00)
          1: 4290.00 (4290.00)
          2: 20457.00 (20457.00)
          3: 20.00 (20.00)
          4: 26.00 (26.00)
          5: -900.00 (-900.00)

EVENT type 4 (ButtonPress)
    device: 8 (8)
    detail: 1
    flags: 
    root: 2438.17/221.09
    event: 100.17/81.09
    buttons:
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
        0: 28385.00
        1: 4290.00
        2: 20457.00
        3: 20.00
        4: 26.00
        5: -900.00
    windows: root 0x1e0 event 0x7400001 child 0x0

EVENT type 9 (FocusIn)
    device: 3 (3)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyNormal (detail NotifyNonlinear)
    flags:  [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  2438.00 / 221.00
    event x/y: 100.00 / 81.00

EVENT type 4 (ButtonPress)
    device: 2 (8)
    detail: 1
    flags: 
    root: 2438.17/221.09
    event: 100.17/81.09
    buttons:
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
        0: 28385.00
        1: 4290.00
        2: 20457.00
        3: 20.00
        4: 26.00
        5: -900.00
    windows: root 0x1e0 event 0x7400001 child 0x0

EVENT type 17 (RawMotion)
    device: 2 (8)
    detail: 0
    flags: 
    valuators:
          0: 28382.00 (28382.00)
          1: 4289.00 (4289.00)
          2: 27405.00 (27405.00)
          3: 19.00 (19.00)
          4: 26.00 (26.00)
          5: -900.00 (-900.00)

EVENT type 6 (Motion)
    device: 8 (8)
    detail: 0
    flags: 
    root: 2438.91/221.04
    event: 100.91/81.04
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
        0: 28382.00
        1: 4289.00
        2: 27405.00
        3: 19.00
        4: 26.00
        5: -900.00
    windows: root 0x1e0 event 0x7400001 child 0x0

EVENT type 8 (Leave)
    device: 2 (8)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyNormal (detail NotifyInferior)
    flags: [focus] [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  2437.00 / 221.00
    event x/y: 99.00 / 81.00

EVENT type 7 (Enter)
    device: 2 (8)
    windows: root 0x1e0 event 0x7400002 child 0x0
    mode: NotifyNormal (detail NotifyAncestor)
    flags: [focus] [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  2437.00 / 221.00
    event x/y: 49.00 / 31.00

------- Numerous events of Types EVENT type 6 (Motion) and EVENT type 17 (RawMotion) in between here -------

EVENT type 16 (RawButtonRelease)
    device: 2 (8)
    detail: 1
    flags: 
    valuators:
          0: 28359.00 (28359.00)
          1: 4255.00 (4255.00)
          2: 0.00 (0.00)
          3: 16.00 (16.00)
          4: 28.00 (28.00)
          5: -900.00 (-900.00)

EVENT type 5 (ButtonRelease)
    device: 8 (8)
    detail: 1
    flags: 
    root: 2435.94/219.29
    event: 97.94/79.29
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
        0: 28359.00
        1: 4255.00
        2: 0.00
        3: 16.00
        4: 28.00
        5: -900.00
    windows: root 0x1e0 event 0x7400001 child 0x7400002

EVENT type 5 (ButtonRelease)
    device: 2 (8)
    detail: 1
    flags: 
    root: 2435.94/219.29
    event: 97.94/79.29
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
        0: 28359.00
        1: 4255.00
        2: 0.00
        3: 16.00
        4: 28.00
        5: -900.00
    windows: root 0x1e0 event 0x7400001 child 0x7400002

EVENT type 8 (Leave)
    device: 2 (2)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyUngrab (detail NotifyInferior)
    flags: [focus] [same screen]
    buttons:
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  2435.00 / 219.00
    event x/y: 97.00 / 79.00

Finger touching tablet:

EVENT type 15 (RawButtonPress)
    device: 2 (10)
    detail: 1
    flags: 
    valuators:

EVENT type 4 (ButtonPress)
    device: 10 (10)
    detail: 1
    flags: 
    root: 134.63/220.88
    event: 84.63/89.88
    buttons:
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
    windows: root 0x1e0 event 0x7400001 child 0x7400002
EVENT type 7 (Enter)
    device: 2 (2)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyGrab (detail NotifyInferior)
    flags:  [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  134.00 / 220.00
    event x/y: 84.00 / 89.00
EVENT type 9 (FocusIn)
    device: 3 (3)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyNormal (detail NotifyNonlinear)
    flags:  [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  134.00 / 220.00
    event x/y: 84.00 / 89.00
EVENT type 8 (Leave)
    device: 2 (2)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyUngrab (detail NotifyInferior)
    flags: [focus] [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  134.00 / 220.00
    event x/y: 84.00 / 89.00
EVENT type 4 (ButtonPress)
    device: 2 (10)
    detail: 1
    flags: 
    root: 134.63/220.88
    event: 84.63/89.88
    buttons:
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
    windows: root 0x1e0 event 0x7400001 child 0x7400002
EVENT type 7 (Enter)
    device: 2 (2)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyGrab (detail NotifyInferior)
    flags: [focus] [same screen]
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  134.00 / 220.00
    event x/y: 84.00 / 89.00
EVENT type 16 (RawButtonRelease)
    device: 2 (10)
    detail: 1
    flags: 
    valuators:

EVENT type 5 (ButtonRelease)
    device: 10 (10)
    detail: 1
    flags: 
    root: 134.63/220.88
    event: 84.63/89.88
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
    windows: root 0x1e0 event 0x7400001 child 0x7400002
EVENT type 5 (ButtonRelease)
    device: 2 (10)
    detail: 1
    flags: 
    root: 134.63/220.88
    event: 84.63/89.88
    buttons: 1
    modifiers: locked 0x10 latched 0 base 0 effective: 0x10
    group: locked 0 latched 0 base 0 effective: 0
    valuators:
    windows: root 0x1e0 event 0x7400001 child 0x7400002
EVENT type 8 (Leave)
    device: 2 (2)
    windows: root 0x1e0 event 0x7400001 child 0x0
    mode: NotifyUngrab (detail NotifyInferior)
    flags: [focus] [same screen]
    buttons:
    modifiers: locked 0x10 latched 0 base 0 effective: 0
    group: locked 0 latched 0 base 0 effective: 0
    root x/y:  134.00 / 220.00
    event x/y: 84.00 / 89.00

Again, the valuators are the only obvious difference for these events unless I overlook something. While most programs handle these events just normal, Cura and Teamviewer do not.

(edit: typos corrected)

MariMakes commented 1 year ago

Wow! That's some amazing feedback @Braintoe. Super helpful ❤️

I'll bring it up with the team again. 🤞

Braintoe commented 1 year ago

Wow! That's some amazing feedback @Braintoe. Super helpful heart

I'll bring it up with the team again. crossed_fingers

Glad I could help! This problem is driving me crazy...

One more thing I found: while I have no clue how to dismantle or replace content in the Cura appimage, I was able to extract the contents of the .deb installers of the Teamviewer versions. Thus, I installed the last version of that program which still accepted pen inputs and replaced files with the ones from the version directly after that one in order to narrow down a bit what might be the cause. (In opposite to Cura, Teamviewer is overall smaller and the problem was introduced during a minor upgrade which makes this approach easier.)

The result I found - and that might help you even if it comes from an unrelated program - was that neither the QT libraries (QT 5, in their case) nor the XCB libraries Teamviewer comes with caused the error. The problem is somewhere within their main executable, so I hope this might be the case with Cura as well.

Braintoe commented 1 year ago

Hi there, I just noticed one more thing regarding this issue:

if you click with the tablet pen onto an item such as an entry in the menu on the top left of the "settings" window or a material in the list in settings --> materials), this item gets stuck in a seemingly "semi-selected state" and becomes unusable even if you switch to using a mouse. You have to close and re-open the corresponding window to be able to access that item again. This might also happen to the rotate object mode the original bug report above is about.

This does not apply to all items though. Here is a list of the items that become blocked and of the ones that stay accessible if I click onto the item with the pen and try to access it with the mouse afterwards (probably incomplete, but I hope it helps):

What becomes blocked against any later mouse interaction by a tap with the tablet pen::

What stays accessible:

If you want me to try any other items please do not hesitate to ask.

Sjullep commented 1 year ago

Thanks for all the testing. These problems drive me nuts and are making Cura unusable for me... Sometimes when items are "stuck", right-clicking with the pen a few times releases it. But sometimes it makes no difference....

Braintoe commented 1 year ago

@MariMakes Do you happen to have any news about the issue?

Having to dig out a mouse just for Cura is really unnerving, especially since I tend to open a model in Cura and then tap into the 3D view - which means Cura gets caught in the 3D rotation with no means to escape from there, apart from closing Cura and start over.

In order to try to solve this issue, I would like to help as good as I can. If someone could simply explain to me where to find examples in the Cura code for the working and the dysfunctional mouse events noted above, I will be happy to compare these and try to find my way forward from there.

wchairy commented 1 year ago

This is an accessibility nightmare. So many people use different types of input methods. Myself being one of them and this makes cura unusable

On Sat, Mar 11, 2023 at 7:44 AM Braintoe @.***> wrote:

@MariMakes https://github.com/MariMakes Do you happen to have any news about the issue?

Having to dig out a mouse just for Cura is really unnerving, especially since I tend to open a model in Cura and then tap into the 3D view - which means Cura gets caught in the 3D rotation with no means to escape from there, apart from closing Cura and start over.

In order to try to solve this issue, I would like to help as good as I can. If someone could simply explain to me where to find examples in the Cura code for the working and the dysfunctional mouse events noted above, I will be happy to compare these and try to find my way forward from there.

— Reply to this email directly, view it on GitHub https://github.com/Ultimaker/Cura/issues/12554#issuecomment-1464939092, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASP74BNVTADMFOIDEJNG74LW3SMWVANCNFSM5ZEZRRGA . You are receiving this because you commented.Message ID: @.***>

MariMakes commented 1 year ago

Hey All,

Quick update on what has been happening behind the scenes. At first, we thought changing this was outside of our control, since we are dependent on the QT library for fixing the bug on their side. But there seems to be a difference between TabletEvents, TouchscreenEvents, and MouseEvents that we are not yet utilizing.

After asking around we acquired a Wacom tablet in the office to test both the problem. I'm on Windows and was not able to reproduce it. But after handing it over to one of our Mac developers, were we able to reproduce it. So now we can see what's happening when the problem occurs and if we fix it if the fix works.

We've added a ticket to the backlog with the intent to improve this. For internal reference CURA-10420

Thanks for the report! 👍

Braintoe commented 1 year ago

@MariMakes This is great news, thank you very much in the name of my mouse/pen hand!!

As I noted before, the QT libraries do not seem to be the primary culprit here if I extrapolate what I found with Teamviewer (see above) - therefore I am very happy to see you found some further differences.

Did you also manage to recreate the issue on a Linux PC / X11? If not, I hereby volunteer for testing if this helps.

wchairy commented 1 year ago

Thanks so much

On Mon, Mar 20, 2023 at 5:03 AM MariMakes @.***> wrote:

Hey All,

Quick update on what has been happening behind the scenes. At first, we thought changing this was outside of our control, since we are dependent on the QT library for fixing the bug on their side. But there seems to be a difference between TabletEvents, TouchscreenEvents, and MouseEvents that we are not yet utilizing.

After asking around we acquired a Wacom tablet in the office to test both the problem. I'm on Windows and was not able to reproduce it. But after handing it over to one of our Mac developers, were we able to reproduce it. So now we can see what's happening when the problem occurs and if we fix it if the fix works.

We've added a ticket to the backlog with the intent to improve this. For internal reference CURA-10420 https://ultimaker.atlassian.net/browse/CURA-10420

Thanks for the report! 👍

— Reply to this email directly, view it on GitHub https://github.com/Ultimaker/Cura/issues/12554#issuecomment-1476100905, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASP74BIQCJ4AVQI2HOKFF3TW5BBPZANCNFSM5ZEZRRGA . You are receiving this because you commented.Message ID: @.***>

Sjullep commented 1 year ago

Great news, hope it gets fixed soon now👍