OpenDeck icon indicating copy to clipboard operation
OpenDeck copied to clipboard

After upgrading to 2.5.1 all the input simulation buttons stopped working

Open webtrend opened this issue 4 months ago • 31 comments

I have been using input simulation to mimic various keyboard shortcuts for various application. After recent upgrade, they all stopped working. When I click on any of those keys, I see remote desktop window like this

Image

After that, opendeck stops responding. I have to restart it.

Can you please let me know why this is happening

webtrend avatar Aug 15 '25 15:08 webtrend

This is a security feature from Wayland. OpenDeck now supports native Wayland Apps for the input simulation. you need to allow the access for it to work.

Terrorwolf01 avatar Aug 15 '25 16:08 Terrorwolf01

This is a security feature from Wayland. OpenDeck now supports native Wayland Apps for the input simulation. you need to allow the access for it to work.

They said opendeck stops responding though, so they can't enable it it seems

nekename avatar Aug 15 '25 16:08 nekename

@webtrend Are you on X11 or Wayland?

Terrorwolf01 avatar Aug 16 '25 08:08 Terrorwolf01

I am also having input simulation problems after upgrading to 2.5.1

The following worked, now it does't: [k(Return),t("/hideout"), k(Return)] A simple macro to send me to my hideout in Path of Exile, doesn't work in game, doesn't work even when I have a text editor open.

running linux mint on X11

bradmcminn82 avatar Aug 16 '25 08:08 bradmcminn82

@pentamassiv - 2.5.1 is the update where the libei feature was enabled, because many people had issues without it, now it seems people have issues with it. Do you have any ideas?

nekename avatar Aug 16 '25 09:08 nekename

Sorry for the late response but I am on X11. I don't have wayland.

To clarify further, I can flip the switch allowing the remote interaction and then click Share button. But, opendeck stops responding after that. When I restart opendeck, I have the same issue again!

Any workaround?

webtrend avatar Aug 19 '25 00:08 webtrend

@webtrend Are you on X11 or Wayland?

I am on X11

webtrend avatar Aug 19 '25 00:08 webtrend

Sorry for the long no answer. The current Workaround will be to downgrade the Plugin to an older Version. I will prepare a HowTo after work today.

Terrorwolf01 avatar Aug 20 '25 08:08 Terrorwolf01

tldr; backup your config before updating to 2.5.1

It seems that the versioning of OpenDeck ist not "secmatic versioning", correct? After upgrading to 2.5.1 I could not simply go back to 2.5.0, because the configuration was made incompatible with the update. If the versioning was semantic versioning this should not happen. As far as I understand it at least.

sebkir avatar Aug 22 '25 08:08 sebkir

You don't need to downgrade all of Opendeck. Its enough to Downgrade the Plugin. The dev @nekename already has a working Version of the Plugin from me. Also in 2.5.1 was no change and only one file needs to be changed to be able to use 2.5.0.

Terrorwolf01 avatar Aug 22 '25 08:08 Terrorwolf01

It seems that the versioning of OpenDeck ist not "secmatic versioning", correct? After upgrading to 2.5.1 I could not simply go back to 2.5.0, because the configuration was made incompatible with the update. If the versioning was semantic versioning this should not happen. As far as I understand it at least.

There is no incompatibility introduced, all you have to do is change the version field in settings.json back to 2.5.0. I don't introduce incompatibilities in minor version bumps and I do follow semver. It prevents you from downgrading regardless of the version. But, if you downgrade to 2.5.0, make sure to delete your starter pack plugin from the config directory, otherwise that won't be downgraded as well.

nekename avatar Aug 22 '25 09:08 nekename

Sorry, but I don't know why it would hang.

It would be helpful to know what compositor they use (for example mutter/Gnome, wayfire, KDE, hyprland...). They could try running the enigo examples with different features activated to confirm that it is a bug with enigo. If the examples work, I think it's some kind of implementation bug in OpenDeck.

pentamassiv avatar Aug 22 '25 11:08 pentamassiv

Sorry, but I don't know why it would hang.

It would be helpful to know what compositor they use (for example mutter/Gnome, wayfire, KDE, hyprland...). They could try running the enigo examples with different features activated to confirm that it is a bug with enigo. If the examples work, I think it's some kind of implementation bug in OpenDeck.

@pentamassiv For me its mutter/Gnome X11 on Arch Linux. I will try the examples over the weekend and report back.

Terrorwolf01 avatar Aug 22 '25 11:08 Terrorwolf01

Are you sure the compositor is using X11 on Gnome on Arch? The default is Wayland. The compositor uses XWayland if the application is using X11. For enigo it is only important if the compositor is using Wayland/XWayland or if it a X11 session

pentamassiv avatar Aug 22 '25 11:08 pentamassiv

Are you sure the compositor is using X11 on Gnome on Arch? The default is Wayland. The compositor uses XWayland if the application is using X11. For enigo it is only important if the compositor is using Wayland/XWayland or if it a X11 session

Yes, Terrorwolf uses Xorg.

nekename avatar Aug 22 '25 11:08 nekename

@pentamassiv We discovered that the issue is actually due to using it in another thread (I used std::thread::spawn to get around the tokio crash with libei I told you about). So it wasn't enabling libei that caused this, but rather a sort of side effect

nekename avatar Aug 22 '25 11:08 nekename

Relevant source: https://github.com/nekename/OpenDeck/blob/main/plugins%2Fcom.amansprojects.starterpack.sdPlugin%2Fsrc%2Finput_simulation.rs

nekename avatar Aug 22 '25 11:08 nekename

Oh, okay. Thank you for the clarification.

Is there something I can change on my side to prevent similar problems for other developers? I still haven't looked at the issue again. Hopefully I can do so within the next couple of weeks

pentamassiv avatar Aug 22 '25 11:08 pentamassiv

Are you sure the compositor is using X11 on Gnome on Arch? The default is Wayland. The compositor uses XWayland if the application is using X11. For enigo it is only important if the compositor is using Wayland/XWayland or if it a X11 session

Wayland is disabled in the config file due to other Software Problems I have right now. So yeah its X11.

Terrorwolf01 avatar Aug 22 '25 12:08 Terrorwolf01

Oh, okay. Thank you for the clarification.

Is there something I can change on my side to prevent similar problems for other developers? I still haven't looked at the issue again. Hopefully I can do so within the next couple of weeks

Thanks for your help and sorry my response was a bit rushed earlier, I was on the move. We should only need to get "Issue 1" of https://github.com/enigo-rs/enigo/issues/453 resolved, then spawning a new thread shouldn't be necessary for libei support, and X11 will be happy too. You can use futures::executor::block_on or something similar to block on a future in any context regardless of whether it's in a Tokio runtime or not, so maybe look into that.

nekename avatar Aug 22 '25 15:08 nekename

Thank you for the recommendation. It should be fixed now on the main branch

pentamassiv avatar Aug 22 '25 19:08 pentamassiv

Thank you, I'll give it a spin when I get back home in a few days.

nekename avatar Aug 22 '25 21:08 nekename

Thank you for the recommendation. It should be fixed now on the main branch

@pentamassiv I just tried it with a local build Version of enigo Main Branch in OpenDeck and got the same Problem as before.

Terrorwolf01 avatar Aug 23 '25 01:08 Terrorwolf01

I just tried the key.rs and the keyboard.rs examples. the key.rs worked, the other got the following Error: I used the same features in the Cargo.toml as in opendeck.

[2025-08-23T02:05:52Z ERROR enigo::platform::wayland] Failed to connect to Wayland. Try setting 'WAYLAND_DISPLAY=wayland-0'.
Start emulating
Start emulating
Start emulating
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623688
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] the serial 4 contained an invalid object with the id 18374686479671623687
[2025-08-23T02:05:55Z ERROR enigo::platform::libei] err reading
[2025-08-23T02:05:55Z ERROR enigo] simulating input failed: (unable to update the libei connection to scroll)

thread 'main' panicked at keyboard.rs:16:10:
called `Result::unwrap()` on an `Err` value: Simulate("unable to update the libei connection to scroll")
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/panicking.rs:697:5
   1: core::panicking::panic_fmt
             at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/panicking.rs:75:14
   2: core::result::unwrap_failed
             at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/result.rs:1761:5
   3: core::result::Result<T,E>::unwrap
             at /home/jan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:1167:23
   4: keyboard::main
             at ./keyboard.rs:16:10
   5: core::ops::function::FnOnce::call_once
             at /home/jan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Terrorwolf01 avatar Aug 23 '25 02:08 Terrorwolf01

Thank you for the recommendation. It should be fixed now on the main branch

@pentamassiv I just tried it with a local build Version of enigo Main Branch in OpenDeck and got the same Problem as before.

You have to remove the usage of a separate thread in OpenDeck. The X11 problem seems to have been caused by that, and that was necessary for libei, and now on the main branch it isn't necessary anymore. You still have to remove it.

nekename avatar Aug 23 '25 07:08 nekename

Thank you for testing it. I've never seen your invalid object error before. It looks like a separate problem though, because it happens after the libei connection was established. Could you please run the example like this:

RUST_LOG=debug REIS_DEBUG=1 cargo run --example keyboard --no-default-features --features libei_tokio

and paste the output?

pentamassiv avatar Aug 23 '25 17:08 pentamassiv

Did this HowTo get published (https://github.com/nekename/OpenDeck/issues/120#issuecomment-3204776203)[here]

gazhay avatar Sep 26 '25 17:09 gazhay

Did this HowTo get published (https://github.com/nekename/OpenDeck/issues/120#issuecomment-3204776203)[here]%5Bhere%5D)

I don't think so, but you can send me a message on Discord or Matrix and I can send you a patched Starterpack.

Terrorwolf01 avatar Sep 27 '25 18:09 Terrorwolf01

Hey, by the way, I forgot to update people here, @webtrend @gazhay @sebkir @bradmcminn82 - did this get at least partially fixed with v2.7.0 of the Starter Pack plugin? I think at least it shouldn't crash any more, even if the input simulation doesn't always work...

nekename avatar Nov 18 '25 21:11 nekename

Is there a way to switch from libei to some local HID input like Solaar is doing it? Input simulation works in Wayland but you need to "Allow Remote Interaction". And this is not persistent. And if you click on the orange box in the sys-tray this sharing is stopped and OpenDeck is not asking again for permission.

Gauss23 avatar Nov 22 '25 22:11 Gauss23