Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux (Wayland): Simulating keyboard input crashes Labwc #356

Open
CrendKing opened this issue Nov 6, 2024 · 22 comments
Open

Linux (Wayland): Simulating keyboard input crashes Labwc #356

CrendKing opened this issue Nov 6, 2024 · 22 comments

Comments

@CrendKing
Copy link
Contributor

CrendKing commented Nov 6, 2024

Describe the bug
Recently Raspberry Pi OS switches their Wayland compositor from Wayfire to Labwc. The current version of Labwc in Debian Bookworm is 0.7.2. Now whenever a enigo key() is called, the compositor would crash. Before in Wayfire it would work.

Also, mouse movement and button clicks do not trigger crash.

Here is the log from Labwc:

Gdk-Message: 14:49:56.929: Error reading events from display: Broken pipe
(EE) failed to read Wayland events: Broken pipe
ERROR: ../src/main.c: 495: Compositor has gone away. Exiting...
Gdk-Message: 14:49:56.932: Error reading events from display: Broken pipe
Gdk-Message: 14:49:56.933: Error reading events from display: Broken pipe
Gdk-Message: 14:49:56.933: Error reading events from display: Broken pipe
warning: queue 0x7ffef0000ca0 destroyed while proxies still attached:
  zwp_primary_selection_offer_v1#4278190081 still attached
  wl_data_offer#4278190080 still attached
  zwp_primary_selection_device_v1#23 still attached
  zwp_primary_selection_device_manager_v1#19 still attached
  wl_data_device#22 still attached
  wl_seat#21 still attached
  wl_data_device_manager#20 still attached
  wl_registry#18 still attached
warning: queue 0x555598831510 destroyed while proxies still attached:
  wl_buffer#42 still attached
  wl_shm_pool#39 still attached
  xdg_wm_base#27 still attached
  wl_output#13 still attached
  zwp_pointer_constraints_v1#12 still attached
  zwp_relative_pointer_manager_v1#11 still attached
  zxdg_decoration_manager_v1#10 still attached
  xdg_activation_v1#9 still attached
  wl_seat#8 still attached
  zwp_text_input_manager_v3#7 still attached
  wl_subcompositor#6 still attached
  wl_compositor#5 still attached
  wl_shm#4 still attached
  wl_registry#2 still attached
warning: queue 0x555598861e70 destroyed while proxies still attached:
  wl_surface#26 still attached
gtk-nop failed with exit status 1.
X connection to :0 broken (explicit kill or server shutdown).
Error: "Event loop terminated with code: 1"

To Reproduce

  1. Switch to Labwc in Raspberry Pi
  2. Call enigo.key(enigo::Key::Unicode('A'), Direction::Click);

Expected behavior
No crash happens.

Environment (please complete the following information):

  • OS: Raspberry Pi OS. Linux rpi 6.6.51+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.51-1+rpt3 (2024-10-08) aarch64 GNU/Linux
  • Rust 1.82.0
  • Library Version 0.2.1
@pentamassiv
Copy link
Collaborator

Which features do you activate when using enigo (e.g wayland, libei, x11rb)? Could you please try running the keyboard and the mouse example and paste the output if they do crash?

@CrendKing
Copy link
Contributor Author

FYI, my project is at controller-remap. It uses wayland. I'll get back to you about the examples.

@CrendKing
Copy link
Contributor Author

CrendKing commented Nov 7, 2024

The examples directory doesn't have Cargo.toml, so I just use the same dependency from my Cargo.toml (excluding the default xdo feature because my OS doesn't have the xdo library).

For keyboard, only one "a" character is output. Seems the control key is not simulated. The log is pretty much the same as above:

(EE) failed to read Wayland events: Broken pipe
ERROR: ../src/main.c: 495: Compositor has gone away. Exiting...
Gdk-Message: 17:41:33.418: Error reading events from display: Broken pipe
Gdk-Message: 17:41:33.418: Error reading events from display: Broken pipe
Gdk-Message: 17:41:33.418: Error reading events from display: Broken pipe
Gdk-Message: 17:41:33.418: Error reading events from display: Broken pipe
gtk-nop failed with exit status 1.
warning: queue 0x7ffee4000ca0 destroyed while proxies still attached:
  zwp_primary_selection_device_v1#23 still attached
  zwp_primary_selection_device_manager_v1#19 still attached
  wl_data_device#22 still attached
  wl_seat#21 still attached
  wl_data_device_manager#20 still attached
  wl_registry#18 still attached
X connection to :0 broken (explicit kill or server shutdown).
warning: queue 0x555668d45510 destroyed while proxies still attached:
  wl_buffer#42 still attached
  wl_shm_pool#39 still attached
  xdg_wm_base#27 still attached
  wl_output#13 still attached
  zwp_pointer_constraints_v1#12 still attached
  zwp_relative_pointer_manager_v1#11 still attached
  zxdg_decoration_manager_v1#10 still attached
  xdg_activation_v1#9 still attached
  wl_seat#8 still attached
  zwp_text_input_manager_v3#7 still attached
  wl_subcompositor#6 still attached
  wl_compositor#5 still attached
  wl_shm#4 still attached
  wl_registry#2 still attached
warning: queue 0x555668d75e70 destroyed while proxies still attached:
  wl_surface#26 still attached
Error: "Event loop terminated with code: 1"

For mouse, I get these errors from the example. Seems the code should conditionally excludes the lines under Wayland.

[2024-11-07T01:35:20Z ERROR enigo::platform::wayland] You tried to get the dimensions of the main display. I don't know how this is possible under Wayland. Let me know if there is a new protocol

[2024-11-07T01:36:20Z ERROR enigo::platform::wayland] You tried to get the mouse location. I don't know how this is possible under Wayland. Let me know if there is a new protocol

Once I comment out those lines, the mouse moves, clicks and drags as expected. No crash.

@CrendKing CrendKing changed the title Simulating keyboard input crashes labwc Linux (Wayland): Simulating keyboard input crashes labwc Nov 7, 2024
@CrendKing CrendKing changed the title Linux (Wayland): Simulating keyboard input crashes labwc Linux (Wayland): Simulating keyboard input crashes Labwc Nov 7, 2024
@pentamassiv
Copy link
Collaborator

With Rust, you can usually clone the repository and then run
cargo run --example keyboard --feature wayland --no-default-features

I can't see anything in these logs that would hint at what the problem is. Could you please run your program with the environment variables WAYLAND_DEBUG=1 and RUST_LOG=debug.
So to run the example, you would run the command

WAYLAND_DEBUG=1 RUST_LOG=debug cargo run --example keyboard --feature wayland --no-default-features

@CrendKing
Copy link
Contributor Author

It seems the rdev dev-dependency unconditionally introduces the x11 crate dependency, which makes it unable to build. After commenting it out, I can manage to reproduce the issue. Here are the logs:

     Running `target/debug/examples/keyboard`
[2024-11-21T10:33:55Z DEBUG enigo] using default settings
[2024-11-21T10:33:55Z DEBUG enigo::platform::wayland] trying to establish a connection to $WAYLAND_DISPLAY
[3450551.844][rs] -> [email protected]_registry(wl_registry@2)
[3450551.875][rs] -> [email protected](wl_callback@3)
[3450551.992][rs] <- [email protected], (1, Some("wl_shm"), 1)
[3450552.017][rs] <- [email protected], (2, Some("wl_drm"), 2)
[3450552.034][rs] <- [email protected], (3, Some("zwp_linux_dmabuf_v1"), 4)
[3450552.050][rs] <- [email protected], (4, Some("zwlr_gamma_control_manager_v1"), 1)
[3450552.066][rs] <- [email protected], (5, Some("zxdg_output_manager_v1"), 3)
[3450552.083][rs] <- [email protected], (6, Some("zwlr_output_manager_v1"), 4)
[3450552.100][rs] <- [email protected], (7, Some("wl_compositor"), 5)
[3450552.116][rs] <- [email protected], (8, Some("wl_subcompositor"), 1)
[3450552.131][rs] <- [email protected], (9, Some("wl_data_device_manager"), 3)
[3450552.148][rs] <- [email protected], (10, Some("zwp_primary_selection_device_manager_v1"), 1)
[3450552.164][rs] <- [email protected], (11, Some("zwp_input_method_manager_v2"), 1)
[3450552.179][rs] <- [email protected], (12, Some("zwp_text_input_manager_v3"), 1)
[3450552.195][rs] <- [email protected], (13, Some("wl_seat"), 8)
[3450552.211][rs] <- [email protected], (14, Some("zwlr_virtual_pointer_manager_v1"), 2)
[3450552.226][rs] <- [email protected], (15, Some("zwp_virtual_keyboard_manager_v1"), 1)
[3450552.242][rs] <- [email protected], (16, Some("zwp_pointer_gestures_v1"), 3)
[3450552.258][rs] <- [email protected], (17, Some("wp_cursor_shape_manager_v1"), 1)
[3450552.274][rs] <- [email protected], (18, Some("xdg_wm_base"), 3)
[3450552.290][rs] <- [email protected], (19, Some("xdg_activation_v1"), 1)
[3450552.306][rs] <- [email protected], (20, Some("org_kde_kwin_server_decoration_manager"), 1)
[3450552.322][rs] <- [email protected], (21, Some("zxdg_decoration_manager_v1"), 1)
[3450552.338][rs] <- [email protected], (22, Some("wp_presentation"), 1)
[3450552.353][rs] <- [email protected], (23, Some("zwlr_export_dmabuf_manager_v1"), 1)
[3450552.369][rs] <- [email protected], (24, Some("zwlr_screencopy_manager_v1"), 3)
[3450552.385][rs] <- [email protected], (25, Some("zwlr_data_control_manager_v1"), 2)
[3450552.401][rs] <- [email protected], (26, Some("wp_security_context_manager_v1"), 1)
[3450552.417][rs] <- [email protected], (27, Some("wp_viewporter"), 1)
[3450552.432][rs] <- [email protected], (28, Some("wp_single_pixel_buffer_manager_v1"), 1)
[3450552.448][rs] <- [email protected], (29, Some("wp_fractional_scale_manager_v1"), 1)
[3450552.464][rs] <- [email protected], (30, Some("ext_idle_notifier_v1"), 1)
[3450552.480][rs] <- [email protected], (31, Some("zwp_idle_inhibit_manager_v1"), 1)
[3450552.495][rs] <- [email protected], (32, Some("zwp_relative_pointer_manager_v1"), 1)
[3450552.511][rs] <- [email protected], (33, Some("zwp_pointer_constraints_v1"), 1)
[3450552.533][rs] <- [email protected], (34, Some("zwlr_input_inhibit_manager_v1"), 1)
[3450552.549][rs] <- [email protected], (35, Some("zwlr_foreign_toplevel_manager_v1"), 3)
[3450552.566][rs] <- [email protected], (36, Some("ext_session_lock_manager_v1"), 1)
[3450552.591][rs] <- [email protected], (37, Some("wp_drm_lease_device_v1"), 1)
[3450552.611][rs] <- [email protected], (38, Some("zwlr_output_power_manager_v1"), 1)
[3450552.629][rs] <- [email protected], (39, Some("wp_tearing_control_manager_v1"), 1)
[3450552.647][rs] <- [email protected], (40, Some("zwp_tablet_manager_v2"), 1)
[3450552.665][rs] <- [email protected], (41, Some("zwlr_layer_shell_v1"), 4)
[3450552.683][rs] <- [email protected], (43, Some("wl_output"), 4)
[3450552.708][rs] <- [email protected], (117)
[3450552.738][rs] <- [email protected]_id, (3)
[3450552.878][rs] -> [email protected](11, Some("zwp_input_method_manager_v2"), 1, zwp_input_method_manager_v2@3)
[3450552.970][rs] -> [email protected](13, Some("wl_seat"), 1, wl_seat@4)
[3450553.847][rs] -> [email protected](14, Some("zwlr_virtual_pointer_manager_v1"), 1, zwlr_virtual_pointer_manager_v1@5)
[3450553.906][rs] -> [email protected](15, Some("zwp_virtual_keyboard_manager_v1"), 1, zwp_virtual_keyboard_manager_v1@6)
[3450554.072][rs] -> [email protected]_virtual_keyboard(wl_seat@4, zwp_virtual_keyboard_v1@7)
[3450554.124][rs] -> [email protected]_input_method(wl_seat@4, zwp_input_method_v2@8)
[3450554.159][rs] -> [email protected]_virtual_pointer(wl_seat@4, zwlr_virtual_pointer_v1@9)
[2024-11-21T10:33:55Z DEBUG enigo::platform::keymap] regenerated the keymap
[3450554.526][rs] -> [email protected](1, 4, 7346)
[3450554.564][rs] -> [email protected](wl_callback@10)
[3450577.673][rs] <- [email protected], (3)
[3450577.769][rs] <- [email protected], (118)
[3450577.788][rs] <- [email protected]_id, (10)
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a seat event Capabilities { capabilities: Value(Capability(Pointer | Key
board)) }
[2024-11-21T10:33:55Z DEBUG enigo::platform] wayland connection established
[2024-11-21T10:33:55Z DEBUG enigo::platform] fast_text(text: Hello World! here is a lot of text  ❤️)
[3450578.047][rs] -> [email protected]_string(Some("Hello World! here is a lot of text  \xe2\x9d\xa4\xef\xb8\x8f"))
[3450578.099][rs] -> [email protected](0)
[3450578.135][rs] -> [email protected](wl_callback@10)
[3450579.564][rs] <- [email protected], (118)
[3450579.655][rs] <- [email protected]_id, (10)
[2024-11-21T10:33:55Z DEBUG enigo] fast text entry was successful
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the text fast
[2024-11-21T10:33:55Z DEBUG enigo] fast text entry was successful
[2024-11-21T10:33:55Z DEBUG enigo::platform] key(key: Control, direction: Press)
[3450579.914][rs] -> [email protected](4, 0, 0, 0)
[3450580.005][rs] -> [email protected](wl_callback@10)
[3450607.849][rs] <- [email protected], (119)
[3450607.948][rs] <- [email protected]_id, (10)
[3450607.994][rs] <- [email protected], ()
[3450608.041][rs] <- [email protected], ()
[3450608.087][rs] <- [email protected]_change_cause, (0)
[3450608.136][rs] <- [email protected], ()
[3450608.178][rs] <- [email protected]_change_cause, (0)
[3450608.278][rs] <- [email protected], ()
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event Activate
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event Done
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event TextChangeCause { cause: Value(InputMethod) }
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event Done
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event TextChangeCause { cause: Value(InputMethod) }
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event Done
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the key via wayland
[2024-11-21T10:33:55Z DEBUG enigo::platform] added the key Control to the held keys
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the key
[2024-11-21T10:33:55Z DEBUG enigo::platform] key(key: Unicode('a'), direction: Click)
[2024-11-21T10:33:55Z DEBUG enigo::platform::keymap] mapped keycode 8 to keysym XK_a
[2024-11-21T10:33:55Z DEBUG enigo::platform::keymap] regenerated the keymap
[3450608.788][rs] -> [email protected](1, 4, 7384)
[3450608.900][rs] -> [email protected](wl_callback@10)
[3450610.082][rs] <- [email protected], (119)
[3450610.508][rs] <- [email protected]_id, (10)
[3450610.584][rs] -> [email protected](56, 0, 1)
[3450610.626][rs] -> [email protected](wl_callback@10)
[3450610.843][rs] <- [email protected], (120)
[3450611.215][rs] <- [email protected]_id, (10)
[3450611.613][rs] -> [email protected](56, 0, 0a)
[3450612.718][rs] -> [email protected](wl_callback@10)
[3450613.599][rs] <- [email protected], (121)
[3450615.869][rs] <- [email protected]_id, (10)
[3450615.969][rs] <- [email protected]_change_cause, (0)
[3450616.027][rs] <- [email protected], ()
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event TextChangeCause { cause: Value(InputMethod) }
[2024-11-21T10:33:55Z WARN  enigo::platform::wayland] Got a input method event Done
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the key via wayland
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the key
[2024-11-21T10:33:55Z DEBUG enigo::platform] key(key: Control, direction: Release)
[3450616.315][rs] -> [email protected](0, 0, 0, 0)
[3450616.397][rs] -> [email protected](wl_callback@10)
[3450617.440][rs] <- [email protected], (121)
[3450617.971][rs] <- [email protected]_id, (10)
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the key via wayland
[2024-11-21T10:33:55Z DEBUG enigo::platform] removed the key Control from the held keys
[2024-11-21T10:33:55Z DEBUG enigo::platform] entered the key
[2024-11-21T10:33:55Z DEBUG enigo::platform] released all held keys and held keycodes
[3450619.105][rs] -> [email protected]()
[3450619.260][rs] -> [email protected]()
[3450619.315][rs] -> [email protected]()
[3450619.858][rs] -> [email protected](wl_callback@10)
[3450619.970][rs] <- [email protected]_change_cause, (0)
[3450620.009][rs] <- [email protected], ()
[3450620.151][rs] <- [email protected]_id, (7)
[3450620.191][rs] <- [email protected]_id, (8)
[3450620.225][rs] <- [email protected]_id, (9)
[3450620.260][rs] <- [email protected], (121)
[3450620.296][rs] <- [email protected]_id, (10)

Immediately after the command, I can see an "a" character printed, and nothing went wrong. I could still move mouse. But whenever I click anywhere on the desktop, Labwc crashes. The log from Labwc was shown above.

@pentamassiv
Copy link
Collaborator

Thank you for the logs.

That's weird. According to the output even zwp_input_method_v2 seems to also be supported and at least Hello World! here is a lot of text ❤️ should also have been entered. Very curious behavior that labwc crashes only after you click.

@CrendKing
Copy link
Contributor Author

I reran and verified that the "Hello World ..." indeed not typed. "a" is the only text typed.

@pentamassiv
Copy link
Collaborator

Does the keyboard "Squeekboard" work? It uses the same protocols. I am starting to suspect that labwc is doing something unusual.

@CrendKing
Copy link
Contributor Author

Squeekboard works fine. No crash on Labwc. It is the default OSK of Raspberry Pi. If it crashes Labwc, I think they would fix it before making the switch from Wayfire.

If you need any log to debug, please let me know.

@pentamassiv
Copy link
Collaborator

I tried running Raspberry OS in a VM, but failed because it is only available as ARM.
Could you please try running squeekboard with WAYLAND_DEBUG=1 so we can see what it does differently?

Does LabWC crash if you click after the letter was entered but before the program terminates? Maybe it has something to do with dropping the Wayland objects. I pushed the branch https://github.com/pentamassiv/enigo/tree/labwc for you to try it out. It only contains an additional sleep statement in the keyboard example.

@CrendKing
Copy link
Contributor Author

Does LabWC crash if you click after the letter was entered but before the program terminates?

Unfortunately yes. I also added a sleep right after the enigo.text(). Even though the "Hello World" text was not printed, it crashes Labwc with a click as well.

Now the log for Squeekboard. I ran Squeekboard, click "p", confirm it is printed on screen, click desktop, no crash, then Ctrl-C. I can see that it is using the same zwp_input_method_v2#28.commit_string method, but somehow it works.

[1887450.845] {Default Queue}  -> wl_display#1.get_registry(new id wl_registry#2)
[1887450.915] {Default Queue}  -> wl_display#1.sync(new id wl_callback#3)
[1887451.046] {Display Queue} wl_display#1.delete_id(3)
[1887451.060] {Default Queue} wl_registry#2.global(1, "wl_shm", 1)
[1887451.066] {Default Queue}  -> wl_registry#2.bind(1, "wl_shm", 1, new id [unknown]#4)
[1887451.071] {Default Queue} wl_registry#2.global(2, "wl_drm", 2)
[1887451.075] {Default Queue} wl_registry#2.global(3, "zwp_linux_dmabuf_v1", 4)
[1887451.078] {Default Queue} wl_registry#2.global(4, "zwlr_gamma_control_manager_v1", 1)
[1887451.081] {Default Queue} wl_registry#2.global(5, "zxdg_output_manager_v1", 3)
[1887451.085] {Default Queue}  -> wl_registry#2.bind(5, "zxdg_output_manager_v1", 3, new id [unknown]#5)
[1887451.089] {Default Queue}  -> wl_display#1.sync(new id wl_callback#6)
[1887451.093] {Default Queue} wl_registry#2.global(6, "zwlr_output_manager_v1", 4)
[1887451.096] {Default Queue} wl_registry#2.global(7, "wl_compositor", 5)
[1887451.100] {Default Queue}  -> wl_registry#2.bind(7, "wl_compositor", 3, new id [unknown]#7)
[1887451.103] {Default Queue} wl_registry#2.global(8, "wl_subcompositor", 1)
[1887451.107] {Default Queue}  -> wl_registry#2.bind(8, "wl_subcompositor", 1, new id [unknown]#8)
[1887451.112] {Default Queue} wl_registry#2.global(9, "wl_data_device_manager", 3)
[1887451.115] {Default Queue}  -> wl_registry#2.bind(9, "wl_data_device_manager", 3, new id [unknown]#9)
[1887451.119] {Default Queue} wl_registry#2.global(10, "zwp_primary_selection_device_manager_v1", 1)
[1887451.122] {Default Queue}  -> wl_registry#2.bind(10, "zwp_primary_selection_device_manager_v1", 1, new id [unknown]#10)
[1887451.126] {Default Queue} wl_registry#2.global(11, "zwp_input_method_manager_v2", 1)
[1887451.129] {Default Queue} wl_registry#2.global(12, "zwp_text_input_manager_v3", 1)
[1887451.132] {Default Queue} wl_registry#2.global(13, "wl_seat", 8)
[1887451.136] {Default Queue} wl_registry#2.global(14, "zwlr_virtual_pointer_manager_v1", 2)
[1887451.139] {Default Queue} wl_registry#2.global(15, "zwp_virtual_keyboard_manager_v1", 1)
[1887451.142] {Default Queue} wl_registry#2.global(16, "zwp_pointer_gestures_v1", 3)
[1887451.145] {Default Queue}  -> wl_registry#2.bind(16, "zwp_pointer_gestures_v1", 1, new id [unknown]#11)
[1887451.150] {Default Queue} wl_registry#2.global(17, "wp_cursor_shape_manager_v1", 1)
[1887451.153] {Default Queue} wl_registry#2.global(18, "xdg_wm_base", 3)
[1887451.156] {Default Queue} wl_registry#2.global(19, "xdg_activation_v1", 1)
[1887451.160] {Default Queue}  -> wl_registry#2.bind(19, "xdg_activation_v1", 1, new id [unknown]#12)
[1887451.163] {Default Queue} wl_registry#2.global(20, "org_kde_kwin_server_decoration_manager", 1)
[1887451.167] {Default Queue}  -> wl_registry#2.bind(20, "org_kde_kwin_server_decoration_manager", 1, new id [unknown]#13)
[1887451.170] {Default Queue} wl_registry#2.global(21, "zxdg_decoration_manager_v1", 1)
[1887451.173] {Default Queue} wl_registry#2.global(22, "wp_presentation", 1)
[1887451.176] {Default Queue} wl_registry#2.global(23, "zwlr_export_dmabuf_manager_v1", 1)
[1887451.179] {Default Queue} wl_registry#2.global(24, "zwlr_screencopy_manager_v1", 3)
[1887451.183] {Default Queue} wl_registry#2.global(25, "zwlr_data_control_manager_v1", 2)
[1887451.186] {Default Queue} wl_registry#2.global(26, "wp_security_context_manager_v1", 1)
[1887451.189] {Default Queue} wl_registry#2.global(27, "wp_viewporter", 1)
[1887451.192] {Default Queue} wl_registry#2.global(28, "wp_single_pixel_buffer_manager_v1", 1)
[1887451.195] {Default Queue} wl_registry#2.global(29, "wp_fractional_scale_manager_v1", 1)
[1887451.198] {Default Queue} wl_registry#2.global(30, "ext_idle_notifier_v1", 1)
[1887451.201] {Default Queue} wl_registry#2.global(31, "zwp_idle_inhibit_manager_v1", 1)
[1887451.205] {Default Queue} wl_registry#2.global(32, "zwp_relative_pointer_manager_v1", 1)
[1887451.208] {Default Queue} wl_registry#2.global(33, "zwp_pointer_constraints_v1", 1)
[1887451.211] {Default Queue} wl_registry#2.global(34, "zwlr_input_inhibit_manager_v1", 1)
[1887451.218] {Default Queue} wl_registry#2.global(35, "zwlr_foreign_toplevel_manager_v1", 3)
[1887451.221] {Default Queue} wl_registry#2.global(36, "ext_session_lock_manager_v1", 1)
[1887451.224] {Default Queue} wl_registry#2.global(37, "wp_drm_lease_device_v1", 1)
[1887451.227] {Default Queue} wl_registry#2.global(38, "zwlr_output_power_manager_v1", 1)
[1887451.230] {Default Queue} wl_registry#2.global(39, "wp_tearing_control_manager_v1", 1)
[1887451.233] {Default Queue} wl_registry#2.global(40, "zwp_tablet_manager_v2", 1)
[1887451.237] {Default Queue}  -> wl_registry#2.bind(40, "zwp_tablet_manager_v2", 1, new id [unknown]#14)
[1887451.240] {Default Queue} wl_registry#2.global(41, "zwlr_layer_shell_v1", 4)
[1887451.243] {Default Queue} wl_registry#2.global(43, "wl_output", 4)
[1887451.247] {Default Queue}  -> wl_registry#2.bind(43, "wl_output", 2, new id [unknown]#15)
[1887451.298] {Default Queue}  -> zxdg_output_manager_v1#5.get_xdg_output(new id zxdg_output_v1#16, wl_output#15)
[1887451.304] {Default Queue}  -> wl_display#1.sync(new id wl_callback#17)
[1887451.307] {Default Queue} wl_callback#3.done(131)
[1887451.373] {Default Queue}  -> wl_shm#4.create_pool(new id wl_shm_pool#3, fd 12, 2304)
[1887451.531] {Default Queue}  -> wl_shm_pool#3.resize(6408)
[1887451.597] {Default Queue}  -> wl_shm_pool#3.resize(14032)
[1887451.706] {Default Queue}  -> wl_shm_pool#3.resize(29864)
[1887452.250] {Default Queue}  -> wl_shm_pool#3.resize(60868)
[1887452.275] {Default Queue}  -> wl_shm_pool#3.resize(123248)
[1887453.242] {Default Queue}  -> wl_shm_pool#3.resize(247636)
[1887454.096] {Default Queue}  -> wl_shm_pool#3.resize(497036)
[1887457.380] {Default Queue}  -> wl_registry#2.bind(13, "wl_seat", 5, new id [unknown]#18)
[1887461.039] {Default Queue}  -> wl_compositor#7.create_surface(new id wl_surface#19)
[1887461.067] {Default Queue}  -> zwp_primary_selection_device_manager_v1#10.get_device(new id zwp_primary_selection_device_v1#20, wl_seat#18)
[1887461.073] {Default Queue}  -> wl_data_device_manager#9.get_data_device(new id wl_data_device#21, wl_seat#18)
[1887461.170] {Default Queue}  -> wl_compositor#7.create_surface(new id wl_surface#22)
[1887461.175] {Default Queue}  -> zwp_tablet_manager_v2#14.get_tablet_seat(new id zwp_tablet_seat_v2#23, wl_seat#18)
[1887461.181] {Default Queue}  -> wl_display#1.sync(new id wl_callback#24)
[1887461.356] {Display Queue} wl_display#1.delete_id(6)
[1887461.363] {Display Queue} wl_display#1.delete_id(17)
[1887461.365] {Display Queue} wl_display#1.delete_id(24)
[1887461.368] {Default Queue} wl_shm#4.format(0)
[1887461.371] {Default Queue} wl_shm#4.format(1)
[1887461.374] {Default Queue} wl_shm#4.format(875709016)
[1887461.376] {Default Queue} wl_shm#4.format(875708993)
[1887461.379] {Default Queue} wl_shm#4.format(875710274)
[1887461.382] {Default Queue} wl_shm#4.format(842094674)
[1887461.384] {Default Queue} wl_shm#4.format(842088786)
[1887461.386] {Default Queue} wl_shm#4.format(892426322)
[1887461.389] {Default Queue} wl_shm#4.format(892420434)
[1887461.391] {Default Queue} wl_shm#4.format(909199186)
[1887461.394] {Default Queue} wl_shm#4.format(808665688)
[1887461.396] {Default Queue} wl_shm#4.format(808665665)
[1887461.399] {Default Queue} wl_shm#4.format(1211384408)
[1887461.401] {Default Queue} wl_shm#4.format(1211384385)
[1887461.404] {Default Queue} wl_callback#6.done(131)
[1887461.407] {Default Queue} org_kde_kwin_server_decoration_manager#13.default_mode(2)
[1887461.413] {Default Queue} wl_output#15.geometry(0, 0, 480, 270, 0, "LG Electronics", "LG IPS FULLHD", 0)
[1887461.422] {Default Queue} wl_output#15.mode(1, 1920, 1080, 60000)
[1887461.427] {Default Queue} wl_output#15.scale(1)
[1887461.430] {Default Queue} wl_output#15.done()
[1887461.442] {Default Queue} zxdg_output_v1#16.name("HDMI-A-1")
[1887461.445] {Default Queue} zxdg_output_v1#16.description("LG Electronics LG IPS FULLHD  (HDMI-A-1)")
[1887461.448] {Default Queue} zxdg_output_v1#16.logical_position(0, 0)
[1887461.451] {Default Queue} zxdg_output_v1#16.logical_size(1920, 1080)
[1887461.454] {Default Queue} wl_output#15.done()
[1887461.465] {Default Queue} wl_callback#17.done(131)
[1887461.468] {Default Queue} wl_seat#18.name("seat0")
[1887461.471] {Default Queue} wl_seat#18.capabilities(3)
[1887461.475] {Default Queue}  -> wl_seat#18.get_pointer(new id wl_pointer#17)
[1887461.484] {Default Queue}  -> zwp_pointer_gestures_v1#11.get_swipe_gesture(new id zwp_pointer_gesture_swipe_v1#6, wl_pointer#17)
[1887461.489] {Default Queue}  -> zwp_pointer_gestures_v1#11.get_pinch_gesture(new id zwp_pointer_gesture_pinch_v1#25, wl_pointer#17)
[1887461.492] {Default Queue}  -> wl_seat#18.get_keyboard(new id wl_keyboard#26)
[1887461.499] {Default Queue} wl_callback#24.done(131)
[1887461.503] {Default Queue}  -> wl_registry#2.bind(18, "xdg_wm_base", 1, new id [unknown]#24)
[1887552.914] {Default Queue}  -> wl_display#1.get_registry(new id wl_registry#27)
[1887552.944] {Default Queue}  -> wl_display#1.sync(new id wl_callback#28)
[1887553.079] {Display Queue} wl_display#1.delete_id(28)
[1887553.086] {Default Queue} wl_keyboard#26.keymap(1, fd 10, 66147)
[1887556.329] {Default Queue} wl_keyboard#26.repeat_info(25, 600)
[1887556.354] {Default Queue} wl_registry#27.global(1, "wl_shm", 1)
[1887556.359] {Default Queue} wl_registry#27.global(2, "wl_drm", 2)
[1887556.362] {Default Queue} wl_registry#27.global(3, "zwp_linux_dmabuf_v1", 4)
[1887556.365] {Default Queue} wl_registry#27.global(4, "zwlr_gamma_control_manager_v1", 1)
[1887556.369] {Default Queue} wl_registry#27.global(5, "zxdg_output_manager_v1", 3)
[1887556.371] {Default Queue} wl_registry#27.global(6, "zwlr_output_manager_v1", 4)
[1887556.374] {Default Queue} wl_registry#27.global(7, "wl_compositor", 5)
[1887556.377] {Default Queue} wl_registry#27.global(8, "wl_subcompositor", 1)
[1887556.380] {Default Queue} wl_registry#27.global(9, "wl_data_device_manager", 3)
[1887556.383] {Default Queue} wl_registry#27.global(10, "zwp_primary_selection_device_manager_v1", 1)
[1887556.386] {Default Queue} wl_registry#27.global(11, "zwp_input_method_manager_v2", 1)
[1887556.391] {Default Queue}  -> wl_registry#27.bind(11, "zwp_input_method_manager_v2", 1, new id [unknown]#29)
[1887556.397] {Default Queue} wl_registry#27.global(12, "zwp_text_input_manager_v3", 1)
[1887556.401] {Default Queue} wl_registry#27.global(13, "wl_seat", 8)
[1887556.404] {Default Queue}  -> wl_registry#27.bind(13, "wl_seat", 1, new id [unknown]#30)
[1887556.408] {Default Queue} wl_registry#27.global(14, "zwlr_virtual_pointer_manager_v1", 2)
[1887556.411] {Default Queue} wl_registry#27.global(15, "zwp_virtual_keyboard_manager_v1", 1)
[1887556.414] {Default Queue}  -> wl_registry#27.bind(15, "zwp_virtual_keyboard_manager_v1", 1, new id [unknown]#31)
[1887556.418] {Default Queue} wl_registry#27.global(16, "zwp_pointer_gestures_v1", 3)
[1887556.422] {Default Queue} wl_registry#27.global(17, "wp_cursor_shape_manager_v1", 1)
[1887556.424] {Default Queue} wl_registry#27.global(18, "xdg_wm_base", 3)
[1887556.427] {Default Queue} wl_registry#27.global(19, "xdg_activation_v1", 1)
[1887556.430] {Default Queue} wl_registry#27.global(20, "org_kde_kwin_server_decoration_manager", 1)
[1887556.433] {Default Queue} wl_registry#27.global(21, "zxdg_decoration_manager_v1", 1)
[1887556.436] {Default Queue} wl_registry#27.global(22, "wp_presentation", 1)
[1887556.439] {Default Queue} wl_registry#27.global(23, "zwlr_export_dmabuf_manager_v1", 1)
[1887556.442] {Default Queue} wl_registry#27.global(24, "zwlr_screencopy_manager_v1", 3)
[1887556.445] {Default Queue} wl_registry#27.global(25, "zwlr_data_control_manager_v1", 2)
[1887556.448] {Default Queue} wl_registry#27.global(26, "wp_security_context_manager_v1", 1)
[1887556.451] {Default Queue} wl_registry#27.global(27, "wp_viewporter", 1)
[1887556.454] {Default Queue} wl_registry#27.global(28, "wp_single_pixel_buffer_manager_v1", 1)
[1887556.457] {Default Queue} wl_registry#27.global(29, "wp_fractional_scale_manager_v1", 1)
[1887556.460] {Default Queue} wl_registry#27.global(30, "ext_idle_notifier_v1", 1)
[1887556.463] {Default Queue} wl_registry#27.global(31, "zwp_idle_inhibit_manager_v1", 1)
[1887556.470] {Default Queue} wl_registry#27.global(32, "zwp_relative_pointer_manager_v1", 1)
[1887556.473] {Default Queue} wl_registry#27.global(33, "zwp_pointer_constraints_v1", 1)
[1887556.476] {Default Queue} wl_registry#27.global(34, "zwlr_input_inhibit_manager_v1", 1)
[1887556.479] {Default Queue} wl_registry#27.global(35, "zwlr_foreign_toplevel_manager_v1", 3)
[1887556.482] {Default Queue} wl_registry#27.global(36, "ext_session_lock_manager_v1", 1)
[1887556.485] {Default Queue} wl_registry#27.global(37, "wp_drm_lease_device_v1", 1)
[1887556.488] {Default Queue} wl_registry#27.global(38, "zwlr_output_power_manager_v1", 1)
[1887556.491] {Default Queue} wl_registry#27.global(39, "wp_tearing_control_manager_v1", 1)
[1887556.494] {Default Queue} wl_registry#27.global(40, "zwp_tablet_manager_v2", 1)
[1887556.497] {Default Queue} wl_registry#27.global(41, "zwlr_layer_shell_v1", 4)
[1887556.501] {Default Queue}  -> wl_registry#27.bind(41, "zwlr_layer_shell_v1", 1, new id [unknown]#32)
[1887556.504] {Default Queue} wl_registry#27.global(43, "wl_output", 4)
[1887556.508] {Default Queue}  -> wl_registry#27.bind(43, "wl_output", 2, new id [unknown]#33)
[1887556.525] {Default Queue} wl_callback#28.done(132)
[1887556.531] {Default Queue}  -> zwp_input_method_manager_v2#29.get_input_method(wl_seat#30, new id zwp_input_method_v2#28)
[1887556.535] {Default Queue}  -> zwp_virtual_keyboard_manager_v1#31.create_virtual_keyboard(wl_seat#30, new id zwp_virtual_keyboard_v1#34)

** (squeekboard:1694): WARNING **: 15:20:07.257: could not connect to gsettings

** (squeekboard:1694): WARNING **: 15:20:07.284: Could not register to session manager: Cannot invoke method; proxy is for the well-known name org.gnome.SessionManager without an owner, and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag

[1887598.290] {Default Queue} discarded wl_seat#30.capabilities(3)
[1887598.308] {Default Queue} wl_output#33.geometry(0, 0, 480, 270, 0, "LG Electronics", "LG IPS FULLHD", 0)
[1887598.331] {Default Queue} wl_output#33.mode(1, 1920, 1080, 60000)
[1887598.340] {Default Queue} wl_output#33.scale(1)
[1887598.347] {Default Queue} wl_output#33.done()
[1887598.375] {Default Queue} wl_keyboard#26.keymap(1, fd 13, 66147)
[1887603.662] {Default Queue} wl_keyboard#26.repeat_info(25, 600)
[1887632.648] {Default Queue}  -> wl_compositor#7.create_surface(new id wl_surface#35)
[1887667.689] {Default Queue}  -> zwlr_layer_shell_v1#32.get_layer_surface(new id zwlr_layer_surface_v1#36, wl_surface#35, wl_output#33, 2, "osk")
[1887667.724] {Default Queue}  -> zwlr_layer_surface_v1#36.set_exclusive_zone(152)
[1887667.728] {Default Queue}  -> zwlr_layer_surface_v1#36.set_size(0, 152)
[1887667.732] {Default Queue}  -> zwlr_layer_surface_v1#36.set_anchor(14)
[1887667.735] {Default Queue}  -> zwlr_layer_surface_v1#36.set_margin(0, 0, 0, 0)
[1887667.739] {Default Queue}  -> zwlr_layer_surface_v1#36.set_keyboard_interactivity(0)
[1887667.742] {Default Queue}  -> wl_surface#35.commit()
[1887667.748] {Default Queue}  -> wl_display#1.sync(new id wl_callback#37)
[1887667.773] {Default Queue} zwp_input_method_v2#28.activate()
[1887667.788] {Default Queue} zwp_input_method_v2#28.done()
[1887667.820] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1887667.827] {Default Queue} zwp_input_method_v2#28.done()
[1887667.833] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1887667.838] {Default Queue} zwp_input_method_v2#28.done()
[1887668.465] {Display Queue} wl_display#1.delete_id(37)
[1887668.482] {Default Queue} zwlr_layer_surface_v1#36.configure(134, 1920, 152)
[1887668.490] {Default Queue}  -> zwlr_layer_surface_v1#36.ack_configure(134)
[1887668.528] {Default Queue} zwlr_layer_surface_v1#36.configure(137, 1920, 152)
[1887668.536] {Default Queue}  -> zwlr_layer_surface_v1#36.ack_configure(137)
[1887668.540] {Default Queue} wl_callback#37.done(139)
Debug: Tried file "/home/rpi/.local/share/squeekboard/keyboards/custom_wide.yaml", but it's missing: No such file or directory (os error 2)
Warning: Failed to load layout from Resource: custom_wide: Missing resource, skipping
Debug: Tried file "/home/rpi/.local/share/squeekboard/keyboards/custom.yaml", but it's missing: No such file or directory (os error 2)
Warning: Failed to load layout from Resource: custom: Missing resource, skipping
Debug: Tried file "/home/rpi/.local/share/squeekboard/keyboards/us_wide.yaml", but it's missing: No such file or directory (os error 2)
[1887729.751] {Default Queue}  -> zwp_virtual_keyboard_v1#34.keymap(1, fd 14, 9465)
[1887730.358] {Default Queue}  -> wl_surface#35.set_buffer_scale(1)
[1887730.553] {Default Queue}  -> wl_shm#4.create_pool(new id wl_shm_pool#37, fd 15, 1167360)
[1887730.569] {Default Queue}  -> wl_shm_pool#37.create_buffer(new id wl_buffer#38, 0, 1920, 152, 7680, 0)
[1887816.115] {Default Queue}  -> wl_surface#35.attach(wl_buffer#38, 0, 0)
[1887816.167] {Default Queue}  -> wl_surface#35.set_buffer_scale(1)
[1887816.174] {Default Queue}  -> wl_surface#35.damage(0, 0, 1920, 152)
[1887816.180] {Default Queue}  -> wl_compositor#7.create_region(new id wl_region#39)
[1887816.184] {Default Queue}  -> wl_region#39.add(0, 0, 1920, 152)
[1887816.188] {Default Queue}  -> wl_surface#35.set_opaque_region(wl_region#39)
[1887816.191] {Default Queue}  -> wl_region#39.destroy()
[1887816.195] {Default Queue}  -> wl_surface#35.set_input_region(nil)
[1887816.217] {Default Queue}  -> wl_surface#35.frame(new id wl_callback#40)
[1887816.223] {Default Queue}  -> wl_surface#35.commit()
[1887816.267] {Default Queue} wl_keyboard#26.keymap(1, fd 14, 9465)
[1887817.079] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1887817.166] {Default Queue} zwp_input_method_v2#28.done()
[1887833.291] {Display Queue} wl_display#1.delete_id(39)
[1887833.362] {Display Queue} wl_display#1.delete_id(40)
[1887833.366] {Default Queue} zwlr_layer_surface_v1#36.configure(140, 1920, 152)
[1887833.395] {Default Queue}  -> zwlr_layer_surface_v1#36.ack_configure(140)
[1887833.416] {Default Queue} wl_surface#35.enter(wl_output#33)
[1887833.428] {Default Queue} wl_surface#35.enter(wl_output#15)
[1887833.435] {Default Queue} zwlr_layer_surface_v1#36.configure(143, 1920, 152)
[1887833.439] {Default Queue}  -> zwlr_layer_surface_v1#36.ack_configure(143)
[1887833.445] {Default Queue} wl_buffer#38.release()
[1887833.453] {Default Queue} wl_callback#40.done(35273)
[1888156.695] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1888156.843] {Default Queue} zwp_input_method_v2#28.done()
[1888664.821] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1888664.926] {Default Queue} zwp_input_method_v2#28.done()
[1888755.634] {Default Queue} wl_pointer#17.enter(149, wl_surface#35, 1189.00000000, 0.00000000)
[1888755.677] {Default Queue} wl_pointer#17.frame()
[1888755.748] {Default Queue}  -> wl_shm_pool#3.create_buffer(new id wl_buffer#40, 254896, 19, 28, 76, 0)
[1888755.756] {Default Queue}  -> wl_pointer#17.set_cursor(149, wl_surface#22, 2, 2)
[1888755.761] {Default Queue}  -> wl_surface#22.attach(wl_buffer#40, 0, 0)
[1888755.765] {Default Queue}  -> wl_surface#22.set_buffer_scale(1)
[1888755.769] {Default Queue}  -> wl_surface#22.damage(0, 0, 19, 28)
[1888755.773] {Default Queue}  -> wl_surface#22.commit()
[1888755.779] {Default Queue} wl_pointer#17.frame()
[1888756.601] {Default Queue} wl_surface#22.enter(wl_output#33)
[1888756.618] {Default Queue} wl_surface#22.enter(wl_output#15)
[1888756.622] {Default Queue} discarded wl_buffer#40.release()
[1888757.642] {Default Queue} wl_pointer#17.motion(36198, 1188.00000000, 0.00000000)
[1888757.653] {Default Queue} wl_pointer#17.frame()
<lots of repeated messages as two above>
[1888907.027] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1888907.081] {Default Queue} zwp_input_method_v2#28.done()
[1889066.439] {Default Queue} wl_pointer#17.button(150, 36507, 272, 1)
[1889066.471] {Default Queue} wl_pointer#17.frame()
[1889066.614] {Default Queue}  -> zwp_input_method_v2#28.commit_string("p")
[1889066.626] {Default Queue}  -> zwp_input_method_v2#28.commit(7)
[1889074.586] {Default Queue}  -> wl_surface#35.attach(wl_buffer#38, 0, 0)
[1889074.636] {Default Queue}  -> wl_surface#35.set_buffer_scale(1)
[1889074.642] {Default Queue}  -> wl_surface#35.damage(0, 0, 1920, 152)
[1889074.681] {Default Queue}  -> wl_surface#35.frame(new id wl_callback#39)
[1889074.689] {Default Queue}  -> wl_surface#35.commit()
[1889087.800] {Display Queue} wl_display#1.delete_id(39)
[1889087.851] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1889087.886] {Default Queue} zwp_input_method_v2#28.done()
[1889087.929] {Default Queue} wl_buffer#38.release()
[1889087.937] {Default Queue} wl_callback#39.done(36528)
[1889087.968] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1889087.978] {Default Queue} zwp_input_method_v2#28.done()
[1889171.309] {Default Queue} wl_pointer#17.button(151, 36612, 272, 0)
[1889171.344] {Default Queue} wl_pointer#17.frame()
[1889176.938] {Default Queue}  -> wl_surface#35.attach(wl_buffer#38, 0, 0)
[1889176.972] {Default Queue}  -> wl_surface#35.set_buffer_scale(1)
[1889176.976] {Default Queue}  -> wl_surface#35.damage(0, 0, 1920, 152)
[1889176.997] {Default Queue}  -> wl_surface#35.frame(new id wl_callback#39)
[1889177.004] {Default Queue}  -> wl_surface#35.commit()
[1889192.748] {Display Queue} wl_display#1.delete_id(39)
[1889192.783] {Default Queue} wl_buffer#38.release()
[1889192.788] {Default Queue} wl_callback#39.done(36633)
[1889410.675] {Default Queue} wl_pointer#17.motion(36851, 1181.00000000, 16.00000000)
[1889410.709] {Default Queue} wl_pointer#17.frame()
<lots of repeated messages as two above>
[1889538.034] {Default Queue} wl_pointer#17.leave(152, wl_surface#35)
[1889538.044] {Default Queue}  -> wl_pointer#17.set_cursor(149, wl_surface#22, 2, 2)
[1889538.049] {Default Queue}  -> wl_surface#22.attach(wl_buffer#40, 0, 0)
[1889538.053] {Default Queue}  -> wl_surface#22.set_buffer_scale(1)
[1889538.057] {Default Queue}  -> wl_surface#22.damage(0, 0, 19, 28)
[1889538.061] {Default Queue}  -> wl_surface#22.commit()
[1889538.064] {Default Queue} wl_pointer#17.frame()
[1889543.881] {Default Queue}  -> wl_surface#35.attach(wl_buffer#38, 0, 0)
[1889543.913] {Default Queue}  -> wl_surface#35.set_buffer_scale(1)
[1889543.918] {Default Queue}  -> wl_surface#35.damage(0, 0, 1920, 152)
[1889543.938] {Default Queue}  -> wl_surface#35.frame(new id wl_callback#39)
[1889543.945] {Default Queue}  -> wl_surface#35.commit()
[1889544.030] {Default Queue} wl_surface#22.leave(wl_output#33)
[1889544.054] {Default Queue} wl_surface#22.leave(wl_output#15)
[1889544.058] {Default Queue} discarded wl_buffer#40.release()
[1889544.459] {Default Queue} wl_buffer#38.release()
[1889560.273] {Display Queue} wl_display#1.delete_id(39)
[1889560.311] {Default Queue} wl_callback#39.done(37001)
[1889822.312] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1889822.410] {Default Queue} zwp_input_method_v2#28.done()
[1890331.392] {Default Queue} zwp_input_method_v2#28.deactivate()
[1890331.449] {Default Queue} zwp_input_method_v2#28.done()
[1890531.811] {Default Queue}  -> zwlr_layer_surface_v1#36.destroy()
[1890531.873] {Default Queue}  -> wl_surface#35.destroy()
[1890531.893] {Default Queue}  -> wl_buffer#38.destroy()
[1890531.900] {Default Queue}  -> wl_shm_pool#37.destroy()
[1890556.027] discarded [unknown]#36.[event 0](0 fd, 20 byte)
[1890556.108] {Display Queue} wl_display#1.delete_id(36)
[1890556.118] {Display Queue} wl_display#1.delete_id(35)
[1890556.129] {Display Queue} wl_display#1.delete_id(38)
[1890556.133] {Display Queue} wl_display#1.delete_id(37)
[1891528.830] {Default Queue} zwp_input_method_v2#28.activate()
[1891528.879] {Default Queue} zwp_input_method_v2#28.done()
[1891528.914] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1891528.924] {Default Queue} zwp_input_method_v2#28.done()
[1891528.940] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1891528.948] {Default Queue} zwp_input_method_v2#28.done()
[1891529.071] {Default Queue}  -> wl_compositor#7.create_surface(new id wl_surface#37)
[1891529.117] {Default Queue}  -> zwlr_layer_shell_v1#32.get_layer_surface(new id zwlr_layer_surface_v1#38, wl_surface#37, wl_output#33, 2, "osk")
[1891529.125] {Default Queue}  -> zwlr_layer_surface_v1#38.set_exclusive_zone(152)
[1891529.129] {Default Queue}  -> zwlr_layer_surface_v1#38.set_size(0, 152)
[1891529.133] {Default Queue}  -> zwlr_layer_surface_v1#38.set_anchor(14)
[1891529.136] {Default Queue}  -> zwlr_layer_surface_v1#38.set_margin(0, 0, 0, 0)
[1891529.140] {Default Queue}  -> zwlr_layer_surface_v1#38.set_keyboard_interactivity(0)
[1891529.143] {Default Queue}  -> wl_surface#37.commit()
[1891529.148] {Default Queue}  -> wl_display#1.sync(new id wl_callback#35)
[1891544.243] {Display Queue} wl_display#1.delete_id(35)
[1891544.268] {Default Queue} zwlr_layer_surface_v1#38.configure(170, 1920, 152)
[1891544.285] {Default Queue}  -> zwlr_layer_surface_v1#38.ack_configure(170)
[1891544.297] {Default Queue} zwlr_layer_surface_v1#38.configure(173, 1920, 152)
[1891544.302] {Default Queue}  -> zwlr_layer_surface_v1#38.ack_configure(173)
[1891544.306] {Default Queue} wl_callback#35.done(175)
Debug: Tried file "/home/rpi/.local/share/squeekboard/keyboards/custom_wide.yaml", but it's missing: No such file or directory (os error 2)
Warning: Failed to load layout from Resource: custom_wide: Missing resource, skipping
Debug: Tried file "/home/rpi/.local/share/squeekboard/keyboards/custom.yaml", but it's missing: No such file or directory (os error 2)
Warning: Failed to load layout from Resource: custom: Missing resource, skipping
Debug: Tried file "/home/rpi/.local/share/squeekboard/keyboards/us_wide.yaml", but it's missing: No such file or directory (os error 2)
[1891555.123] {Default Queue}  -> zwp_virtual_keyboard_v1#34.keymap(1, fd 13, 9465)
[1891555.831] {Default Queue} zwp_input_method_v2#28.text_change_cause(0)
[1891555.861] {Default Queue} zwp_input_method_v2#28.done()
[1891555.980] {Default Queue}  -> wl_shm#4.create_pool(new id wl_shm_pool#35, fd 15, 1167360)
[1891555.998] {Default Queue}  -> wl_shm_pool#35.create_buffer(new id wl_buffer#36, 0, 1920, 152, 7680, 0)
[1891565.718] {Default Queue}  -> wl_surface#37.attach(wl_buffer#36, 0, 0)
[1891565.795] {Default Queue}  -> wl_surface#37.set_buffer_scale(1)
[1891565.802] {Default Queue}  -> wl_surface#37.damage(0, 0, 1920, 152)
[1891565.844] {Default Queue}  -> wl_surface#37.frame(new id wl_callback#39)
[1891565.852] {Default Queue}  -> wl_surface#37.commit()
[1891565.926] {Default Queue} wl_keyboard#26.keymap(1, fd 13, 9465)
[1891581.803] {Display Queue} wl_display#1.delete_id(39)
[1891581.881] {Default Queue} zwlr_layer_surface_v1#38.configure(176, 1920, 152)
[1891581.926] {Default Queue}  -> zwlr_layer_surface_v1#38.ack_configure(176)
[1891581.946] {Default Queue} wl_surface#37.enter(wl_output#33)
[1891581.960] {Default Queue} wl_surface#37.enter(wl_output#15)
[1891581.970] {Default Queue} zwlr_layer_surface_v1#38.configure(179, 1920, 152)
[1891581.975] {Default Queue}  -> zwlr_layer_surface_v1#38.ack_configure(179)
[1891581.981] {Default Queue} wl_buffer#36.release()
[1891581.990] {Default Queue} wl_callback#39.done(39022)
[1891870.151] {Default Queue} wl_keyboard#26.keymap(1, fd 13, 66147)
[1891874.581] {Default Queue} wl_keyboard#26.repeat_info(25, 600)

@pentamassiv
Copy link
Collaborator

Thank you for the logs. Establishing the connection looks different. Maybe the error is even before trying to simulate input. Unfortunately this is just trial and error, but could you please run the keyboard example with all code that simulates any input removed? It should only create an enigo object and then terminate. If labwc crashes then as well, we can at least narrow it down to the start of the connection.

I published another branch where I removed the virtual_pointer protocol and the kde_fake_input protocol just in case the problem was because of them. If labwc crashes even in the above described process, could you please do the same process I explained above with that branch to see if it helps?

I think labwc should not crash even if enigo does something it doesn't expect. Maybe the labwc maintainers can help narrow down the issue and fix labwc to at least not crash. They likely know a lot more about wayland then I do as well and might be able to speed up the search for the issue. Please post a link to an issue if you decide to open one for their project as well.

@pentamassiv
Copy link
Collaborator

I got a raspberry pi and tried it myself. Labwc doesn't crash for me, but there's definitely a problem. I have yet to narrow it down. Modifiers don't work and every time I enter a letter, the terminal becomes unresponsive afterwards. The other windows continue to work though. Using the input_method protocol doesn't enter anything

@CrendKing
Copy link
Contributor Author

CrendKing commented Nov 30, 2024

Wow, I hope I doesn't force you to buy something you don't need. I'll still get back to you with the tests.

Since you got a Raspberry Pi yourself now, could you also give a shot to test the old Wayfire compositor? I remember enigo doesn't behave correctly for some keys there too, though the behavior is different (I remember simulating PageDown would minimize the current focused window). Of course, both could be linked to one root source.

@CrendKing
Copy link
Contributor Author

could you please run the keyboard example with all code that simulates any input removed?

No crash. The log is similar to what posted above, just ended with

[2857294.367][rs] <- [email protected]_id, (7)
[2857294.631][rs] <- [email protected]_id, (8)
[2857294.911][rs] <- [email protected]_id, (9)
[2857295.175][rs] <- [email protected], (100)
[2857295.508][rs] <- [email protected]_id, (10)

could you please do the same process I explained above with that branch to see if it helps?

Still crashes. Still only "a" typed. Log:

[2024-12-01T00:15:05Z DEBUG enigo] using default settings
[2024-12-01T00:15:05Z DEBUG enigo::platform::wayland] trying to establish a connection to $WAYLAND_DISPLAY
[1391058.623][rs] -> [email protected]_registry(wl_registry@2)
[1391058.669][rs] -> [email protected](wl_callback@3)
[1391058.783][rs] <- [email protected], (1, Some("wl_shm"), 1)
[1391058.813][rs] <- [email protected], (2, Some("wl_drm"), 2)
[1391058.835][rs] <- [email protected], (3, Some("zwp_linux_dmabuf_v1"), 4)
[1391058.857][rs] <- [email protected], (4, Some("zwlr_gamma_control_manager_v1"), 1)
[1391058.880][rs] <- [email protected], (5, Some("zxdg_output_manager_v1"), 3)
[1391058.902][rs] <- [email protected], (6, Some("zwlr_output_manager_v1"), 4)
[1391058.925][rs] <- [email protected], (7, Some("wl_compositor"), 5)
[1391058.947][rs] <- [email protected], (8, Some("wl_subcompositor"), 1)
[1391058.969][rs] <- [email protected], (9, Some("wl_data_device_manager"), 3)
[1391058.992][rs] <- [email protected], (10, Some("zwp_primary_selection_device_manager_v1"), 1)
[1391059.015][rs] <- [email protected], (11, Some("zwp_input_method_manager_v2"), 1)
[1391059.038][rs] <- [email protected], (12, Some("zwp_text_input_manager_v3"), 1)
[1391059.061][rs] <- [email protected], (13, Some("wl_seat"), 8)
[1391059.089][rs] <- [email protected], (14, Some("zwlr_virtual_pointer_manager_v1"), 2)
[1391059.112][rs] <- [email protected], (15, Some("zwp_virtual_keyboard_manager_v1"), 1)
[1391059.134][rs] <- [email protected], (16, Some("zwp_pointer_gestures_v1"), 3)
[1391059.156][rs] <- [email protected], (17, Some("wp_cursor_shape_manager_v1"), 1)
[1391059.179][rs] <- [email protected], (18, Some("xdg_wm_base"), 3)
[1391059.201][rs] <- [email protected], (19, Some("xdg_activation_v1"), 1)
[1391059.223][rs] <- [email protected], (20, Some("org_kde_kwin_server_decoration_manager"), 1)
[1391059.245][rs] <- [email protected], (21, Some("zxdg_decoration_manager_v1"), 1)
[1391059.267][rs] <- [email protected], (22, Some("wp_presentation"), 1)
[1391059.289][rs] <- [email protected], (23, Some("zwlr_export_dmabuf_manager_v1"), 1)
[1391059.311][rs] <- [email protected], (24, Some("zwlr_screencopy_manager_v1"), 3)
[1391059.333][rs] <- [email protected], (25, Some("zwlr_data_control_manager_v1"), 2)
[1391059.355][rs] <- [email protected], (26, Some("wp_security_context_manager_v1"), 1)
[1391059.377][rs] <- [email protected], (27, Some("wp_viewporter"), 1)
[1391059.399][rs] <- [email protected], (28, Some("wp_single_pixel_buffer_manager_v1"), 1)
[1391059.422][rs] <- [email protected], (29, Some("wp_fractional_scale_manager_v1"), 1)
[1391059.444][rs] <- [email protected], (30, Some("ext_idle_notifier_v1"), 1)
[1391059.466][rs] <- [email protected], (31, Some("zwp_idle_inhibit_manager_v1"), 1)
[1391059.488][rs] <- [email protected], (32, Some("zwp_relative_pointer_manager_v1"), 1)
[1391059.510][rs] <- [email protected], (33, Some("zwp_pointer_constraints_v1"), 1)
[1391059.536][rs] <- [email protected], (34, Some("zwlr_input_inhibit_manager_v1"), 1)
[1391059.558][rs] <- [email protected], (35, Some("zwlr_foreign_toplevel_manager_v1"), 3)
[1391059.580][rs] <- [email protected], (36, Some("ext_session_lock_manager_v1"), 1)
[1391059.602][rs] <- [email protected], (37, Some("wp_drm_lease_device_v1"), 1)
[1391059.624][rs] <- [email protected], (38, Some("zwlr_output_power_manager_v1"), 1)
[1391059.646][rs] <- [email protected], (39, Some("wp_tearing_control_manager_v1"), 1)
[1391059.668][rs] <- [email protected], (40, Some("zwp_tablet_manager_v2"), 1)
[1391059.690][rs] <- [email protected], (41, Some("zwlr_layer_shell_v1"), 4)
[1391059.712][rs] <- [email protected], (43, Some("wl_output"), 4)
[1391059.733][rs] <- [email protected], (107)
[1391059.748][rs] <- [email protected]_id, (3)
[1391059.802][rs] -> [email protected](11, Some("zwp_input_method_manager_v2"), 1, zwp_input_method_manager_v2@3)
[1391059.847][rs] -> [email protected](13, Some("wl_seat"), 1, wl_seat@4)
[1391059.884][rs] -> [email protected](15, Some("zwp_virtual_keyboard_manager_v1"), 1, zwp_virtual_keyboard_manager_v1@5)
[1391061.043][rs] -> [email protected]_virtual_keyboard(wl_seat@4, zwp_virtual_keyboard_v1@6)
[1391061.074][rs] -> [email protected]_input_method(wl_seat@4, zwp_input_method_v2@7)
[2024-12-01T00:15:05Z DEBUG enigo::platform::keymap] regenerated the keymap
[1391061.224][rs] -> [email protected](1, 4, 7346)
[1391061.253][rs] -> [email protected](wl_callback@8)
[1391066.344][rs] <- [email protected], (3)
[1391066.450][rs] <- [email protected], (108)
[1391066.477][rs] <- [email protected]_id, (8)
[2024-12-01T00:15:05Z WARN  enigo::platform::wayland] Got a seat event Capabilities { capabilities: Value(Capability(Pointer | Keyboard)) }
[2024-12-01T00:15:05Z DEBUG enigo::platform] wayland connection established
[2024-12-01T00:15:05Z DEBUG enigo::platform] fast_text(text: Hello World! here is a lot of text  ❤️)
[1391066.822][rs] -> [email protected]_string(Some("Hello World! here is a lot of text  \xe2\x9d\xa4\xef\xb8\x8f"))
[1391066.865][rs] -> [email protected](0)
[1391066.897][rs] -> [email protected](wl_callback@8)
[1391071.260][rs] <- [email protected], (108)
[1391071.327][rs] <- [email protected]_id, (8)
[2024-12-01T00:15:05Z DEBUG enigo] fast text entry was successful
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the text fast
[2024-12-01T00:15:05Z DEBUG enigo] fast text entry was successful
[2024-12-01T00:15:05Z DEBUG enigo::platform] key(key: Control, direction: Press)
[1391071.571][rs] -> [email protected](4, 0, 0, 0)
[1391071.619][rs] -> [email protected](wl_callback@8)
[1391071.775][rs] <- [email protected], (109)
[1391071.802][rs] <- [email protected]_id, (8)
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the key via wayland
[2024-12-01T00:15:05Z DEBUG enigo::platform] added the key Control to the held keys
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the key
[2024-12-01T00:15:05Z DEBUG enigo::platform] key(key: Unicode('a'), direction: Click)
[2024-12-01T00:15:05Z DEBUG enigo::platform::keymap] mapped keycode 8 to keysym XK_a
[2024-12-01T00:15:05Z DEBUG enigo::platform::keymap] regenerated the keymap
[1391072.209][rs] -> [email protected](1, 4, 7384)
[1391072.259][rs] -> [email protected](wl_callback@8)
[1391073.982][rs] <- [email protected], (109)
[1391074.033][rs] <- [email protected]_id, (8)
[1391074.056][rs] <- [email protected], ()
[1391074.079][rs] <- [email protected], ()
[1391074.102][rs] <- [email protected]_change_cause, (0)
[1391074.122][rs] <- [email protected], ()
[2024-12-01T00:15:05Z WARN  enigo::platform::wayland] Got a input method event Activate
[2024-12-01T00:15:05Z WARN  enigo::platform::wayland] Got a input method event Done
[2024-12-01T00:15:05Z WARN  enigo::platform::wayland] Got a input method event TextChangeCause { cause: Value(InputMethod) }
[2024-12-01T00:15:05Z WARN  enigo::platform::wayland] Got a input method event Done
[1391074.520][rs] -> [email protected](14, 0, 1)
[1391074.583][rs] -> [email protected](wl_callback@8)
[1391074.725][rs] <- [email protected], (110)
[1391074.749][rs] <- [email protected]_id, (8)
[1391074.788][rs] -> [email protected](14, 0, 0)
[1391074.824][rs] -> [email protected](wl_callback@8)
[1391074.903][rs] <- [email protected], (111)
[1391074.921][rs] <- [email protected]_id, (8)
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the key via wayland
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the key
[2024-12-01T00:15:05Z DEBUG enigo::platform] key(key: Control, direction: Release)
[1391075.069][rs] -> [email protected](0, 0, 0, 0)
[1391075.103][rs] -> [email protected](wl_callback@8)
[1391075.170][rs] <- [email protected], (111)
[1391075.187][rs] <- [email protected]_id, (8)
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the key via wayland
[2024-12-01T00:15:05Z DEBUG enigo::platform] removed the key Control from the held keys
[2024-12-01T00:15:05Z DEBUG enigo::platform] entered the key
[2024-12-01T00:15:05Z DEBUG enigo::platform] released all held keys and held keycodes
[1391075.353][rs] -> [email protected]()
[1391075.372][rs] -> [email protected]()
[1391075.398][rs] -> [email protected](wl_callback@8)
[1391075.485][rs] <- [email protected]_id, (6)
[1391075.500][rs] <- [email protected]_id, (7)
[1391075.515][rs] <- [email protected], (111)
[1391075.529][rs] <- [email protected]_id, (8)

@pentamassiv
Copy link
Collaborator

Don't worry, the RPI was sitting in my drawer, eagerly waiting to get used. It just took some time to get it running.

I did some more experiments here:

https://github.com/pentamassiv/enigo/tree/wayland_fixes

It's yet another new branch but I plan to merge these changes once the crash is fixed. So far, it's mostly refactorings to simplify the code. I also removed the Drop implementation. Now it seems to correctly destroy the objects. Apparently it is done automatically. When I now run the keyboard example without simulating anything, labwc no longer crashes. It does have a problem as soon as I enter a letter though. I guess it's progress though :)

@pentamassiv
Copy link
Collaborator

The issue is related to the input_method protocol. When I removed it, everything worked as expected (see this commit 7357f79). I thought that maybe the order of events was incorrect, but so far I didn't have any luck with it.

Squeekboard binds to wl_seat first and gets the registry twice.

Here is the output of the keyboard.rs example with the input_method protocol disabled:

[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo] using default settings
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::wayland] trying to establish a connection to $WAYLAND_DISPLAY
[XXXXXXX.XXX][rs] -> [email protected]_registry(wl_registry@2)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@3)
[XXXXXXX.XXX][rs] <- [email protected], (1, Some("wl_shm"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (2, Some("wl_drm"), 2)
[XXXXXXX.XXX][rs] <- [email protected], (3, Some("zwp_linux_dmabuf_v1"), 4)
[XXXXXXX.XXX][rs] <- [email protected], (4, Some("zwlr_gamma_control_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (5, Some("zxdg_output_manager_v1"), 3)
[XXXXXXX.XXX][rs] <- [email protected], (6, Some("zwlr_output_manager_v1"), 4)
[XXXXXXX.XXX][rs] <- [email protected], (7, Some("wl_compositor"), 5)
[XXXXXXX.XXX][rs] <- [email protected], (8, Some("wl_subcompositor"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (9, Some("wl_data_device_manager"), 3)
[XXXXXXX.XXX][rs] <- [email protected], (10, Some("zwp_primary_selection_device_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (11, Some("zwp_input_method_manager_v2"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (12, Some("zwp_text_input_manager_v3"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (13, Some("wl_seat"), 8)
[XXXXXXX.XXX][rs] <- [email protected], (14, Some("zwlr_virtual_pointer_manager_v1"), 2)
[XXXXXXX.XXX][rs] <- [email protected], (15, Some("zwp_virtual_keyboard_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (16, Some("zwp_pointer_gestures_v1"), 3)
[XXXXXXX.XXX][rs] <- [email protected], (17, Some("wp_cursor_shape_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (18, Some("xdg_wm_base"), 3)
[XXXXXXX.XXX][rs] <- [email protected], (19, Some("xdg_activation_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (20, Some("org_kde_kwin_server_decoration_manager"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (21, Some("zxdg_decoration_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (22, Some("wp_presentation"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (23, Some("zwlr_export_dmabuf_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (24, Some("zwlr_screencopy_manager_v1"), 3)
[XXXXXXX.XXX][rs] <- [email protected], (25, Some("zwlr_data_control_manager_v1"), 2)
[XXXXXXX.XXX][rs] <- [email protected], (26, Some("wp_security_context_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (27, Some("wp_viewporter"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (28, Some("wp_single_pixel_buffer_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (29, Some("wp_fractional_scale_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (30, Some("ext_idle_notifier_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (31, Some("zwp_idle_inhibit_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (32, Some("zwp_relative_pointer_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (33, Some("zwp_pointer_constraints_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (34, Some("zwlr_input_inhibit_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (35, Some("zwlr_foreign_toplevel_manager_v1"), 3)
[XXXXXXX.XXX][rs] <- [email protected], (36, Some("ext_session_lock_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (37, Some("wp_drm_lease_device_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (38, Some("zwlr_output_power_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (39, Some("wp_tearing_control_manager_v1"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (40, Some("zwp_tablet_manager_v2"), 1)
[XXXXXXX.XXX][rs] <- [email protected], (41, Some("zwlr_layer_shell_v1"), 4)
[XXXXXXX.XXX][rs] <- [email protected], (43, Some("wl_output"), 4)
[XXXXXXX.XXX][rs] <- [email protected], (1128)
[XXXXXXX.XXX][rs] <- [email protected]_id, (3)
[XXXXXXX.XXX][rs] -> [email protected](13, Some("wl_seat"), 1, wl_seat@3)
[XXXXXXX.XXX][rs] -> [email protected](14, Some("zwlr_virtual_pointer_manager_v1"), 1, zwlr_virtual_pointer_manager_v1@4)
[XXXXXXX.XXX][rs] -> [email protected](15, Some("zwp_virtual_keyboard_manager_v1"), 1, zwp_virtual_keyboard_manager_v1@5)
[XXXXXXX.XXX][rs] -> [email protected]_virtual_keyboard(wl_seat@3, zwp_virtual_keyboard_v1@6)
[XXXXXXX.XXX][rs] -> [email protected]_virtual_pointer(wl_seat@3, zwlr_virtual_pointer_v1@7)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7346)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (3)
[XXXXXXX.XXX][rs] <- [email protected], (1129)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ WARN  enigo::platform::wayland] Got a seat event Capabilities { capabilities: Value(Capability(Pointer | Keyboard)) }
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] wayland connection established
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] fast_text(text: Hello World! here is a lot of text  ❤️)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo] fast text entry not available. Trying to enter individual letters now
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 8 to keysym XK_H
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7384)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1129)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](29, 0, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1130)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](29, 0, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1131)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 9 to keysym XK_e
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7422)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1131)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](39, 1, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1132)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](39, 1, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1133)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 10 to keysym XK_l
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7461)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1133)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](48, 2, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1134)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](48, 2, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1135)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](52, 2, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1136)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](52, 2, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1137)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 11 to keysym XK_o
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7500)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1137)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](66, 3, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1138)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](66, 3, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1139)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 12 to keysym XK_space
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7543)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1139)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](84, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1140)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](84, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1141)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 13 to keysym XK_W
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7582)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1141)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](137, 5, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1142)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](137, 5, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1143)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](142, 3, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1144)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](142, 3, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1145)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 14 to keysym XK_r
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7621)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1145)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](156, 6, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1146)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](156, 6, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1147)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](157, 2, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1148)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](157, 2, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1149)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 15 to keysym XK_d
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7660)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1149)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](167, 7, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1150)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](167, 7, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1151)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 16 to keysym XK_exclam
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7704)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1151)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](184, 8, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1152)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](184, 8, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1153)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](186, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1154)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](186, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1155)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 17 to keysym XK_h
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7743)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1155)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](202, 9, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1156)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](202, 9, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1157)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](209, 1, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1158)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](209, 1, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1159)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](217, 6, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1160)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](217, 6, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1161)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](225, 1, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1162)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](225, 1, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1163)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](228, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1164)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](228, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1165)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 18 to keysym XK_i
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7782)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1165)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](264, 10, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1166)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](264, 10, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1167)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 19 to keysym XK_s
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7821)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1167)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](306, 11, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1168)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](306, 11, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1169)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](319, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1170)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](319, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1171)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 20 to keysym XK_a
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7860)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1171)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](341, 12, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1172)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](341, 12, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1173)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](346, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1174)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](346, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1175)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](351, 2, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1176)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](351, 2, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1177)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](356, 3, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1178)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](356, 3, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1179)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 21 to keysym XK_t
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7899)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1179)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](376, 13, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1180)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](376, 13, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1181)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](419, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1182)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](419, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1183)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](425, 3, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1184)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](425, 3, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1185)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 22 to keysym XK_f
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7938)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1185)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](443, 14, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1186)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](443, 14, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1187)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](492, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1188)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](492, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1189)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](498, 13, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1190)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](498, 13, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1191)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](504, 1, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1192)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](504, 1, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1193)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 23 to keysym XK_x
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 7977)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1193)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](524, 15, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1194)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](524, 15, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1195)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](550, 13, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1196)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](550, 13, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1197)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](552, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1198)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](552, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1199)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](555, 4, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1200)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](555, 4, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1201)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 24 to keysym 0x1002764
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 8020)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1201)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](599, 16, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1202)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](599, 16, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1203)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] mapped keycode 25 to keysym 0x100fe0f
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] regenerated the keymap
[XXXXXXX.XXX][rs] -> [email protected](1, 4, 8063)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1203)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](640, 17, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1204)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](640, 17, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1205)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the text fast
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo] fast text entry was successful
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] key(key: Control, direction: Press)
[XXXXXXX.XXX][rs] -> [email protected](4, 0, 0, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1206)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the key via wayland
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] added the key Control to the held keys
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the key
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] key(key: Unicode('a'), direction: Click)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform::keymap] keymap did not change and does not require regeneration
[XXXXXXX.XXX][rs] -> [email protected](666, 12, 1)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1207)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXXXXX.XXX][rs] -> [email protected](666, 12, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1208)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the key via wayland
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the key
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] key(key: Control, direction: Release)
[XXXXXXX.XXX][rs] -> [email protected](0, 0, 0, 0)
[XXXXXXX.XXX][rs] -> [email protected](wl_callback@8)
[XXXXXXX.XXX][rs] <- [email protected], (1209)
[XXXXXXX.XXX][rs] <- [email protected]_id, (8)
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the key via wayland
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] removed the key Control from the held keys
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] entered the key
[XXXX-XX-XXTXX:XX:XXZ DEBUG enigo::platform] released all held keys and held keycodes

@CrendKing
Copy link
Contributor Author

Thank you. Please let me know if there is anything I could do to help.

@pentamassiv
Copy link
Collaborator

I created a draft PR to fix the many issues I found: #368

I won't have time to continue with it for the next days/weeks though. The hopefully last blocking issue is that the keycode that gets sent to the compositor via virtual_keyboard protocol likely is wrong. If you want to help, that would be the best place to look into. Other than that I am afraid there's not much you can do for now.

If you do decide to look into it, the code within the keymap module needs a refactoring and it would probably be best to replace as much of the code as possible with functions provided by xkbcommon. Instead of starting with a completely new keymap, ideally we would read the keymap the compositor sends to us. That should also fix issue #302

@CrendKing
Copy link
Contributor Author

I tried the PR. It now outputs more text:

Hello World! here is a lot of text  ❤️keycode before: 8
pkeycode before: 9
keycode before: 8
username@rpi ~/d/penta (wayland_fixes)> Hello World! here is a lot of text  ❤️p

From the source code, I see it is supposed to press "pop", but it seems only "p" is typed.

FYI, it still crashes my Labwc, though you said it doesn't for you. Weird. Maybe I need to reinstall the OS.

@pentamassiv
Copy link
Collaborator

pentamassiv commented Dec 10, 2024

No, it also crashes for me with that PR. It didn't crash with an older commit. No need to reinstall your OS.

It outputs more text because I think the input_method protocol is fixed and works. The virtual_keyboard protocol is still broken. I think it successfully initializes the keyboard for the virtual keyboard but then it crashes when trying to simulate a key.

Now that I'm looking at the output, you could try to comment out this [line]https://github.com/pentamassiv/enigo/blob/847176b3f567a4fc6f944861a4c52c08e7843904/src/linux/wayland.rs#L306() and see if it fixed the issue.

@CrendKing
Copy link
Contributor Author

I reran the keyboard example several times, and I found that

  • Without that line, the "pop" never shows up, so that line seems necessary.
  • With that line (unchanged), sometimes only "p" shows up. Sometimes "po". Sometimes "pop". Every time it's different result.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants