JoseExposito / touchegg

Linux multi-touch gesture recognizer
GNU General Public License v3.0
3.68k stars 172 forks source link

Rotating Compiz desktop cube using drag #665

Open Secret-chest opened 4 weeks ago

Secret-chest commented 4 weeks ago

Is your feature request related to a problem? Please describe

I have a tablet, and I want to rotate the Compiz desktop cube without a keyboard.

Describe the solution you'd like

I want dragging with a certan number of fingers to actually drag with a button and some modifiers (Control+Super+Button1) so it can be used to rotate the desktop cube.

Describe alternatives you've considered

None.

Additional context

None

JoseExposito commented 2 weeks ago

You can emulate the keyboard shortcut: https://github.com/JoseExposito/touchegg?tab=readme-ov-file#keyboard-shortcut-send_keys

But, if you want a better experience (the cube following your fingers rather than a one immediate action) you'd have to request it to the compiz cube developers.

Secret-chest commented 2 weeks ago

But, if you want a better experience (the cube following your fingers rather than a one immediate action) you'd have to request it to the compiz cube developers.

No, because the cube can be set to be dragged with a specific button, optionally with modifiers. I want dragging with a number of fingers on the touchscreen to drag like this.

Secret-chest commented 2 weeks ago

@JoseExposito sorry, but please read the clarification if you can.

JoseExposito commented 2 weeks ago

Does swiping with 2 fingers move the cursor in your desktop environment?

If not, this is complicated to implement Touchégg. You would like to be able to emulate a mouse. But mice are relative devices, i.e., they send relative information (moved 10 units to the left and 20 to the bottom) not absolute devices (moved to pixel 150,400).

The mouse pointer is affected by the acceleration profile and by the speed configured in settings. That means that 50 units to the left can be 50 pixels or 100px depending on the mouse speed and how fast you moved it.

With all of this, it is not possible to me to emulate cursor movement in a way that the mouse follows your fingers.

The best option is to request the desktop cube developers to add support for your touchscreen rather than trying to emulate with a third party tool. If they already have support to move it with the mouse, it should be easy to do the same with a touchscreen.

Secret-chest commented 2 weeks ago

In fact, it does move the cursor.

Secret-chest commented 1 week ago

@JoseExposito

JoseExposito commented 6 days ago

Which desktop cube are you using? I just tested this GNOME Shell extension: https://extensions.gnome.org/extension/4648/desktop-cube/

And it works with a touchscreen. Also, is your device a touchscreen or a drawing tablet? I assumed touchscreen, but reading again the bug report description it is not clear.

I emphasize requesting this feature to the desktop cube developers, at the moment, there is no way to perform this with Touchégg. I'm trying to think in ways to implement this in a generic way so all actions can benefit from it, and so far I don't find a good way to implement it.

Secret-chest commented 6 days ago

@JoseExposito

My device is a touchscreen.

I'm using the Compiz cube extension which is shipped with Compiz, in the Mate DE. It can be rotated with the touchscreen, but I have to press a key combination of my choice to enable rotate mode. Since the cursor does move when I drag with multiple fingers, I basically want some modifier keys to be activated while dragging like this.

JoseExposito commented 6 days ago

Ok, thanks for the clarification:

I basically want some modifier keys to be activated while dragging like this

Have you tried to use the send keys action?

https://github.com/JoseExposito/touchegg?tab=readme-ov-file#keyboard-shortcut-send_keys

If you just need to send the modifiers, that should be enough. Even though I spect a mouse button to be pressed.

If that's the case, at the moment it is not possible. I'll need to implement a way to execute an action on gesture start (a script that presses the keys and mouse button) and another script on gesture end (another script to release everything).

Secret-chest commented 6 days ago

A mouse button needs to be pressed to drag, but I think you can release the modifiers after initiating it. I'll check when I can

Secret-chest commented 6 days ago

@JoseExposito It does work if I hold Ctrl-Super, then start dragging and release: it will keep dragging. However, I can't make Touchegg do it.

Secret-chest commented 6 days ago

The best implementation I can think of is a "drag" gesture type which can specify the mouse button to emulate dragging with (if possible; not necessary) and the modifiers to hold while dragging.