Skip to content

Device contexts deactivate/reactivate back and forth on keypress/focus events since v4.2.2 #319

@ristomatti

Description

@ristomatti

I'm not sure if I've missed some breaking change somewhere between 4.12.1 -> 5.2.0, but by config/setup appears to be "slightly" incompatible with the newest versions. 🙂

Edit: The issue got introduced already with version 4.12.2 (commit 821ef02 to be precise).

Here's a screen capture to illustrate what I'm seeing:

recording-2025-12-03_17.27.20.mp4

I do not know how to even approach debugging this. Any suggestions what to check @houmain?

I'm still manually building for Ubuntu 20.04 (I'm just about to get a new laptop). There's some warning during the build which may or may not be relevant:

$ cmake -B ./build
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.50.1")
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'xkbcommon'
--   Found xkbcommon, version 0.10.0
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Checking for module 'dbus-1'
--   Found dbus-1, version 1.12.16
-- Checking for module 'wayland-client>=1.13.0'
--   Found wayland-client, version 1.18.0
-- Checking for module 'ayatana-appindicator3-0.1'
--   Found ayatana-appindicator3-0.1, version 0.5.4
-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.24.20
-- Configuring done (1.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/ristomatti/src/keymapper/build
[build] $ cmake --build ./build --config Release
[  2%] Generating wlr-foreign-toplevel-management-unstable-v1 protocol source code
%3Cstdin%3E:61: element event: validity error : No declaration for attribute type of element event
*******************************************************
*                                                     *
* WARNING: XML failed validation against built-in DTD *
*                                                     *
*******************************************************
[  4%] Generating wlr-foreign-toplevel-management-unstable-v1 protocol header
%3Cstdin%3E:61: element event: validity error : No declaration for attribute type of element event
*******************************************************
*                                                     *
* WARNING: XML failed validation against built-in DTD *
*                                                     *
*******************************************************
[  6%] Building C object CMakeFiles/wayland-proto.dir/wlr-foreign-toplevel-management-unstable-v1-protocol.c.o
[  8%] Linking C static library libwayland-proto.a
[  8%] Built target wayland-proto
[ 10%] Building CXX object CMakeFiles/keymapper.dir/src/client/ConfigFile.cpp.o
[ 12%] Building CXX object CMakeFiles/keymapper.dir/src/client/Settings.cpp.o
[ 14%] Building CXX object CMakeFiles/keymapper.dir/src/client/ServerPort.cpp.o
[ 16%] Building CXX object CMakeFiles/keymapper.dir/src/client/ControlPort.cpp.o
[ 18%] Building CXX object CMakeFiles/keymapper.dir/src/client/ClientState.cpp.o
[ 20%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/FocusedWindowImpl.cpp.o
[ 22%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/FocusedWindowX11.cpp.o
[ 25%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/FocusedWindowWlroots.cpp.o
[ 27%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/FocusedWindowDBus.cpp.o
[ 29%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/TrayIcon.cpp.o
[ 31%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/TrayIconGtk.cpp.o
[ 33%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/StringTyperImpl.cpp.o
[ 35%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/StringTyperGeneric.cpp.o
[ 37%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/StringTyperWayland.cpp.o
[ 39%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/StringTyperX11.cpp.o
[ 41%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/StringTyperXKB.cpp.o
[ 43%] Building CXX object CMakeFiles/keymapper.dir/src/client/unix/main.cpp.o
[ 45%] Building CXX object CMakeFiles/keymapper.dir/src/common/Connection.cpp.o
[ 47%] Building CXX object CMakeFiles/keymapper.dir/src/common/Host.cpp.o
[ 50%] Building CXX object CMakeFiles/keymapper.dir/src/common/output.cpp.o
[ 52%] Building CXX object CMakeFiles/keymapper.dir/src/config/ParseConfig.cpp.o
[ 54%] Building CXX object CMakeFiles/keymapper.dir/src/config/ParseKeySequence.cpp.o
[ 56%] Building CXX object CMakeFiles/keymapper.dir/src/config/get_key_name.cpp.o
[ 58%] Linking CXX executable keymapper
[ 58%] Built target keymapper
[ 60%] Building CXX object CMakeFiles/keymapperd.dir/src/server/ClientPort.cpp.o
[ 62%] Building CXX object CMakeFiles/keymapperd.dir/src/server/Settings.cpp.o
[ 64%] Building CXX object CMakeFiles/keymapperd.dir/src/server/ServerState.cpp.o
[ 66%] Building CXX object CMakeFiles/keymapperd.dir/src/server/unix/GrabbedDevicesLinux.cpp.o
[ 68%] Building CXX object CMakeFiles/keymapperd.dir/src/server/unix/main.cpp.o
[ 70%] Building CXX object CMakeFiles/keymapperd.dir/src/server/unix/VirtualDevicesLinux.cpp.o
[ 72%] Building CXX object CMakeFiles/keymapperd.dir/src/common/Connection.cpp.o
[ 75%] Building CXX object CMakeFiles/keymapperd.dir/src/common/Host.cpp.o
[ 77%] Building CXX object CMakeFiles/keymapperd.dir/src/common/output.cpp.o
[ 79%] Building CXX object CMakeFiles/keymapperd.dir/src/runtime/MatchKeySequence.cpp.o
[ 81%] Building CXX object CMakeFiles/keymapperd.dir/src/runtime/Stage.cpp.o
[ 83%] Building CXX object CMakeFiles/keymapperd.dir/src/runtime/MultiStage.cpp.o
[ 85%] Linking CXX executable keymapperd
[ 85%] Built target keymapperd
[ 87%] Building CXX object CMakeFiles/keymapperctl.dir/src/control/ClientPort.cpp.o
[ 89%] Building CXX object CMakeFiles/keymapperctl.dir/src/control/Settings.cpp.o
[ 91%] Building CXX object CMakeFiles/keymapperctl.dir/src/control/main.cpp.o
[ 93%] Building CXX object CMakeFiles/keymapperctl.dir/src/common/Connection.cpp.o
[ 95%] Building CXX object CMakeFiles/keymapperctl.dir/src/common/Host.cpp.o
[ 97%] Building CXX object CMakeFiles/keymapperctl.dir/src/common/output.cpp.o
[100%] Linking CXX executable keymapperctl
[100%] Built target keymapperctl
Finished in 40.51s

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions