Closed mark2185 closed 9 months ago
Thanks for the report. I have no clue yet. Does it happen on Windows or Linux (X11, Wayland / Gnome or another WM)?
Ah, sorry, forgot to add.
Linux
, X11
, i3-wm
, built from latest master
.
Additional information: it might coincide with 100% CPU usage.
I will check that too, it stopped to work after hours on my Fedora Silverblue
journalctl
does not seem very verbose about that... 😐️
Welp, it happened to me an hour ago, and I didn't feel like restarting the daemon
.
An hour later it miraculously started working again. :shrug:
@RichardFevrier are you using Wayland/Gnome?
Correct!
And also only mappings for a specific window class stopped working?
No I think the client crashed, but I have a specific window class in my config
Maybe not related to this issue tho
To add (may be relevant, I don't know) - at random times, the keymapper -u
command pins one CPU core at 100%.
It's still working as one would expect, but I have no idea what causes it to hog so much CPU time, I've only now added the --verbose
flag so I'll report back if it happens again.
Thanks! I have also seen this once. I suspected two running keymapper
processes to cause the problems, but I could not reproduce it.
Happened again, the log looked "normal", just messages about switching focused windows, but there was a reasonable number of them.
Also there was only one keymapper
process, confirmed by running pgrep -x keymapper
.
Hi, I fixed two things in the Linux version which might have caused these problems. So please give the 2.4.0 release a try.
~I've been running it since then and now it's the second time it stopped working, both occurrences coincided with high CPU usage after which keymapper --update --verbose
hogs up one core at 100%
.~
~The log contains nothing except Detected focused window changed
blocks, and they aren't false, I did switch between those windows.~
~I'll try to reproduce it in a virtual machine with 1 CPU and will get back to you.~
~EDIT: I tried restarting only keymapper
, but ultimately I had to restart keymapperd
for it to start working again.~
I had two clones of keymapper
and I was running the wrong one these past 3 weeks, sorry for the noise.
Feel free to delete this comment after reading, I'm leaving it just for clarification. I'll get back to you if this issue appears again.
Unfortunately, it still happens.
keymapper
pins one CPU core at 100%
, certain mappings stop working, and I have to kill it and keymapperd
and restart it all to get it hopefully working.
Sometimes I don't feel like doing that so I just put the laptop to sleep and wake it up again, and that may or may not fix it.
It looks like just restarting keymapperd
is enough.
I usually started fixing it by killing keymapper
since it pinned one core, but today I went with stopping the daemon first, and the CPU usage dropped to 0%
after that, and after starting it again, everything seems to work.
At least it's an easy fix until we get to the bottom of this.
Hi @mark2185 may I ask if you are still having issues with a current version? Thanks!
Now that you've mentioned it, I'm on 3.1.0
currently and don't remember hitting the same issue in these past few months (I have reinstalled OS tho).
I suggest that we close this issue, I'll update to 3.2.0
and if it starts happening again I'll reopen it :)
Great thanks!
Unfortunately it resurfaced, a few times in the last couple of days, luckily restarting keymapperd
fixes the issue.
I'm also experiencing this or something related. I've noticed it pretty much every morning after unlocking my computer, but also occasionally while I'm working. It doesn't reproduce simply by locking/unlocking though. I haven't yet checked if either of the processes is eating a lot of CPU, I'll check if this is the case when it happens the next time.
Some possibly relevant notes:
ENABLE_WAYLAND
set to FALSE
(tag 3.4.0
)keymapper
has been running with the --update
flagHi, I just fixed a problem, when two keymapper
instances were running. The context updates of the second instance were not processed by keymapperd
and so the send buffer could fill up until it began to busy loop... Now it knows that it is not connected.
I could not reproduce it with one process yet. Maybe keymapperd
still thinks that the lock-key is still pressed and therefore does not process any context updates. I need to do some more testing.
@ristomatti, wow your configuration is really impressive!
I'm pretty confident I only had a single instance. After my comment, I ran keymapper -u -v
foreground to see if it would give some hints. It didn't took long for the bug to reproduce. I just had to go to get some groceries.
There was nothing on the verbose logs though, I didn't yet try with keymapperd
on verbose though. System journal
indicated my keyboard had disconnected and reconnected but I then remembered I disconnected it myself to charge another device. I've now built the latest version, I'll report back on the results.
Also, thanks for the kind words! I've been planning to post the config or some snippets of it on the discussion section at a later time. Keymapper has been very inspiring to say the least! It's also great for avoiding real work too... :sweat_smile:
Actually, I just found at least one way to reproduce the same behavior. Both my Keychron keyboards show up with different names depending on how they're connected:
# USB-cable
$ xinput list | grep K15
⎜ ↳ Keychron Keychron K15 Pro Consumer Control id=32 [slave pointer (2)]
⎜ ↳ Keychron Keychron K15 Pro Mouse id=37 [slave pointer (2)]
↳ Keychron Keychron K15 Pro id=20 [slave keyboard (3)]
↳ Keychron Keychron K15 Pro System Control id=23 [slave keyboard (3)]
↳ Keychron Keychron K15 Pro Keyboard id=24 [slave keyboard (3)]
↳ Keychron Keychron K15 Pro Consumer Control id=36 [slave keyboard (3)]
# Bluetooth
$ xinput list | grep K15
⎜ ↳ Keychron K15 Pro Keyboard id=9 [slave pointer (2)]
⎜ ↳ Keychron K15 Pro Mouse id=17 [slave pointer (2)]
↳ Keychron K15 Pro Keyboard id=10 [slave keyboard (3)]
Due to this behavior, I use a regex to match it:
[device=/Keychron K15 Pro Keyboard/]
# ...
If I change from USB to Bluetooth or vice versa, the mappings stop working. So technically it's not the same device in this case, but should this work regardless? Typically I've had it on cable all the time, so there's something else going on though.
So technically it's not the same device in this case, but should this work regardless?
Yes, multiple devices with identical names should not cause problems.
Maybe you can start keymapperd
with -v
and check if the devices are un/grabbed as expected when plugging in/out.
Will definitely do that, but it might take a while until I come back to this. Experimenting with keymapper is "somewhat" addicting. I'll need to focus a bit on actual work for a change. :grin:
Have you noticed #97 btw? I think I ran to another possibly related issue today with virtual modifiers and abstract commands. I managed to hack together an emulation of QMK's "Auto Shift" feature, then made it toggleable together with the config that allows me to write umlauts in a convenient manner. I then realized it'd be useful to somehow see when either is active. In the latest revisions of my config you'll see the initial implementation of the indicators. The indicators are shown on my i3wm status bar:
In the latest With this revision, I attempted to reduce the config required for the indicators but ran into odd issue and had to just work around with lots of trial and error. I'm wondering if I've misunderstood how the config is processed or if I ran across some bugs. To explain them, I'd need too recreate them as I've already deleted the parts. That will be some later time.
But briefly, I had added two sections at the end of the file. Something like this:
[modifier="!AutoShift"]
toggle_autoshift >> $(show_indicator) ^ AutoShift
[modifier="AutoShift"]
toggle_autoshift >> $(hide_indicator) ^ AutoShift
This toggled the feature correctly, but regardless of the state of AutoShift
, keymapper would always call the script on the lower blow. So the indicator was either always on or off.
Mainly I'd appreciate to know if I'm attempting to pull of things that aren't implemented and just happen to work by accident...
I ended up trying at least the previously mentioned repro by switching between USB and Bluetooth.
Disconnect USB while mappings are working
Jan 11 23:31:21 x1e keymapperd[1113366]: Updating device list
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:31:21 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ungrabbed device event22
Jan 11 23:31:22 x1e keymapperd[1113366]: Updating device list
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:31:22 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:31:23 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:31:23 x1e keymapperd[1113366]: Ungrabbed device event258
Jan 11 23:31:23 x1e keymapperd[1113366]: Ungrabbed device event30
Jan 11 23:31:23 x1e keymapperd[1113366]: Ungrabbed device event25
Jan 11 23:31:23 x1e keymapperd[1113366]: Ungrabbed device event24
Reconnect USB -> mappings still work
Jan 11 23:32:25 x1e keymapperd[1113366]: Updating device list
Jan 11 23:32:25 x1e keymapperd[1113366]: Grabbed device event22 'Keychron Keychron K15 Pro'
Jan 11 23:32:25 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:32:26 x1e keymapperd[1113366]: Updating device list
Jan 11 23:32:26 x1e keymapperd[1113366]: Grabbed device event258 'Keychron Keychron K15 Pro Keyboard'
Jan 11 23:32:26 x1e keymapperd[1113366]: Grabbed device event30 'Keychron Keychron K15 Pro Consumer Control'
Jan 11 23:32:26 x1e keymapperd[1113366]: Grabbed device event25 'Keychron Keychron K15 Pro System Control'
Jan 11 23:32:26 x1e keymapperd[1113366]: Grabbed device event24 'Keychron Keychron K15 Pro Mouse'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:32:26 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:32:27 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:32:27 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:32:27 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:32:27 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:32:27 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Disconnect USB, then reconnect via Bluetooth -> mappings stop working
Jan 11 23:34:52 x1e keymapperd[1113366]: Updating device list
Jan 11 23:34:52 x1e keymapperd[1113366]: Grabbed device event22 'Keychron K15 Pro Keyboard'
Jan 11 23:34:52 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:34:53 x1e keymapperd[1113366]: Updating device list
Jan 11 23:34:53 x1e keymapperd[1113366]: Grabbed device event24 'Keychron K15 Pro Mouse'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:34:53 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:34:54 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
touch
the config file, nothing gets logged but the mappings start working again.
Disconnect Bluetooth by powering the device off while mappings still work
Jan 11 23:42:25 x1e keymapperd[1113366]: Received contexts (10)
Jan 11 23:42:25 x1e keymapperd[1113366]: Received contexts (11)
Jan 11 23:42:28 x1e keymapperd[1113366]: Updating device list
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ungrabbed device event22
Jan 11 23:42:29 x1e keymapperd[1113366]: Updating device list
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ungrabbed device event24
Reconnect via USB -> mappings again working
Jan 11 23:42:25 x1e keymapperd[1113366]: Received contexts (10)
Jan 11 23:42:25 x1e keymapperd[1113366]: Received contexts (11)
Jan 11 23:42:28 x1e keymapperd[1113366]: Updating device list
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:42:28 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ungrabbed device event22
Jan 11 23:42:29 x1e keymapperd[1113366]: Updating device list
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:42:29 x1e keymapperd[1113366]: Ungrabbed device event24
I then followed with disconnect and reconnect USB -> mappings still worked, logs skipped.
Disconnect USB and connect via Bluetooth -> mappings still work
Jan 11 23:47:13 x1e keymapperd[1113366]: Updating device list
Jan 11 23:47:13 x1e keymapperd[1113366]: Grabbed device event22 'Keychron K15 Pro Keyboard'
Jan 11 23:47:13 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 11 23:47:14 x1e keymapperd[1113366]: Updating device list
Jan 11 23:47:14 x1e keymapperd[1113366]: Grabbed device event24 'Keychron K15 Pro Mouse'
Jan 11 23:47:14 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 11 23:47:15 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
I diffed the log of the earlier failed reconnect via Bluetooth after USB and this later properly working one. I can't spot anything different.. 🤔
Is there any way to enable more verbose logging? I now tried swapping from Bluetooth to USB quicker, while the BT still seems to be connected. Mappings persisted.
Hmm. I realized on the first try (when the issue reproduced), I had keymapper
running with --verbose
. I tried again:
Log of the full sequence, annotated with the events (hopefully correctly):
### Restart keymapper with --verbose ###
Jan 12 00:03:39 x1e keymapperd[1113366]: Connection to keymapper reset
Jan 12 00:03:39 x1e keymapperd[1113366]: Ungrabbing all devices
Jan 12 00:03:41 x1e keymapperd[1113366]: ---------------
Jan 12 00:03:41 x1e keymapperd[1113366]: Waiting for keymapper to connect
Jan 12 00:03:46 x1e keymapperd[1113366]: Updating device list
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event260 'Keychron Keychron K15 Pro Keyboard'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event259 'Keychron Keychron K15 Pro Consumer Control'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event258 'Keychron Keychron K15 Pro System Control'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event30 'Keychron Keychron K15 Pro Mouse'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event25 'Keychron Keychron K15 Pro'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event29 'MX Anywhere 2S Mouse'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event21 'MX Anywhere 2S Keyboard'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event20 'WH-1000XM3 (AVRCP)'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event23 'Generic Blue Microphones'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event7 'Generic Blue Microphones Consumer Control'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event257 'MX Anywhere 2S Mouse'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event256 'MX Anywhere 2S Keyboard'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event26 'Lenovo ThinkPad Thunderbolt 3 Dock USB Audio'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event31 'Logitech Webcam C925e'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event28 'Logitech USB Receiver Keyboard'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event27 'Logitech USB Receiver'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event17 'Integrated Camera: Integrated I'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event16 'Integrated Camera: Integrated C'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event9 'ThinkPad Extra Buttons'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event8 'TPPS/2 Elan TrackPoint'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event4 'Video Bus'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event3 'AT Translated Set 2 keyboard'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event2 'Power Button'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:03:47 x1e keymapperd[1113366]: Grabbed device event0 'Sleep Button'
Jan 12 00:03:47 x1e keymapperd[1113366]: Creating virtual device 'Keymapper'
Jan 12 00:03:47 x1e keymapperd[1113366]: Entering update loop
Jan 12 00:03:47 x1e keymapperd[1113366]: Updating device list
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:03:47 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:03:48 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:03:48 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:03:48 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:03:48 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:03:48 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:03:48 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
### Disconnect USB ###
Jan 12 00:03:56 x1e keymapperd[1113366]: Updating device list
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:03:56 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ungrabbed device event25
Jan 12 00:03:57 x1e keymapperd[1113366]: Updating device list
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:03:57 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:03:58 x1e keymapperd[1113366]: Ungrabbed device event260
Jan 12 00:03:58 x1e keymapperd[1113366]: Ungrabbed device event259
Jan 12 00:03:58 x1e keymapperd[1113366]: Ungrabbed device event258
Jan 12 00:03:58 x1e keymapperd[1113366]: Ungrabbed device event30
### Reconnect via Bluetooth, here mappings stopped working ###
Jan 12 00:04:05 x1e keymapperd[1113366]: Updating device list
Jan 12 00:04:05 x1e keymapperd[1113366]: Grabbed device event22 'Keychron K15 Pro Keyboard'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:04:05 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:04:06 x1e keymapperd[1113366]: Updating device list
Jan 12 00:04:06 x1e keymapperd[1113366]: Grabbed device event24 'Keychron K15 Pro Mouse'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:04:06 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
### Reconnect via USB, without Bluetooth disconnect not yet noticed ###
Jan 12 00:05:40 x1e keymapperd[1113366]: Updating device list
Jan 12 00:05:40 x1e keymapperd[1113366]: Grabbed device event25 'Keychron Keychron K15 Pro'
Jan 12 00:05:40 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:05:41 x1e keymapperd[1113366]: Updating device list
Jan 12 00:05:41 x1e keymapperd[1113366]: Grabbed device event260 'Keychron Keychron K15 Pro Keyboard'
Jan 12 00:05:41 x1e keymapperd[1113366]: Grabbed device event259 'Keychron Keychron K15 Pro Consumer Control'
Jan 12 00:05:41 x1e keymapperd[1113366]: Grabbed device event258 'Keychron Keychron K15 Pro System Control'
Jan 12 00:05:41 x1e keymapperd[1113366]: Grabbed device event30 'Keychron Keychron K15 Pro Mouse'
Jan 12 00:05:41 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:05:42 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:05:47 x1e keymapperd[1113366]: Received contexts (10)
### Here Bluetooth disconnect is noticed ###
Jan 12 00:05:54 x1e keymapperd[1113366]: Updating device list
Jan 12 00:05:55 x1e keymapperd[1113366]: Opening device event24 failed
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
Jan 12 00:05:55 x1e keymapperd[1113366]: Ungrabbed device event22
Jan 12 00:05:55 x1e keymapperd[1113366]: Ungrabbed device event24
Jan 12 00:05:55 x1e keymapperd[1113366]: Updating device list
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event6 'Keymapper'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event19 'sof-hda-dsp Headphone'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event18 'sof-hda-dsp Mic'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event15 'HDA NVidia HDMI/DP,pcm=11'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event14 'HDA NVidia HDMI/DP,pcm=10'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event13 'HDA NVidia HDMI/DP,pcm=9'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event12 'HDA NVidia HDMI/DP,pcm=8'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event11 'HDA NVidia HDMI/DP,pcm=7'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event10 'HDA NVidia HDMI/DP,pcm=3'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 12 00:05:56 x1e keymapperd[1113366]: Ignoring device event1 'Lid Switch'
`
Likely not much use. I'd need some advice on how to assist further. Sadly my only "C++" experience is from intermediate hobby level Arduino snippets, in which all the actual low level parts are abstracted behind simplified libraries.
Thank you for your thorough tests!
Ok, the grabbing seems to work as expected, good.
I also tried un/plugging two keyboards with a basic configuration containing a context:
[device=/Keyboard/]
Unfortunately here the context's mappings never stopped working.
I am thinking about whether the verbose logging can be improved somehow.
I am thinking about whether the verbose logging can be improved somehow.
In case you decide to add more verbose logging, it'd be very useful in debugging a config if you could see one or more of following:
Aside, I got slightly more useful logs from last night around 2h after locking the computer. At the very beginning there's Opening device event31 failed
and at approx the same time, systemd journal shows a device has disconnected.
Jan 13 04:34:08 x1e acpid[2333]: input device has been disconnected, fd 30`
Further down, Keychron K15 is not listed when the devices get updated:
Jan 13 04:34:08 x1e keymapperd[903649]: Updating device list
Jan 13 04:34:08 x1e keymapperd[903649]: Ignoring device event29 'Keymapper'
Jan 13 04:34:09 x1e keymapperd[903649]: Opening device event31 failed
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event28 'sof-hda-dsp Headphone'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event27 'sof-hda-dsp Mic'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event23 'HDA NVidia HDMI/DP,pcm=11'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event22 'HDA NVidia HDMI/DP,pcm=10'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event21 'HDA NVidia HDMI/DP,pcm=9'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event20 'HDA NVidia HDMI/DP,pcm=8'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event19 'HDA NVidia HDMI/DP,pcm=7'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event18 'HDA NVidia HDMI/DP,pcm=3'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event1 'Lid Switch'
Jan 13 04:34:09 x1e keymapperd[903649]: Ungrabbed device event31
Jan 13 04:34:09 x1e keymapperd[903649]: Ungrabbed device event30
Jan 13 04:34:09 x1e keymapperd[903649]: Updating device list
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event29 'Keymapper'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event28 'sof-hda-dsp Headphone'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event27 'sof-hda-dsp Mic'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event23 'HDA NVidia HDMI/DP,pcm=11'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event22 'HDA NVidia HDMI/DP,pcm=10'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event21 'HDA NVidia HDMI/DP,pcm=9'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event20 'HDA NVidia HDMI/DP,pcm=8'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event19 'HDA NVidia HDMI/DP,pcm=7'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event18 'HDA NVidia HDMI/DP,pcm=3'
Jan 13 04:34:09 x1e keymapperd[903649]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 13 04:34:10 x1e keymapperd[903649]: Ignoring device event1 'Lid Switch'
Today I could not wake the monitor from power saving mode from any input device. This is a fairly common issue I have with my USB-C dock. To recover I have to open the laptop lid, detach the dock cable and then reconnect it after first confirming the desktop comes up on the laptop then. After closing the lid I unlocked the desktop (typing my password on my Keychron). The key mappings didn't work. There's two Opening device eventX failed
lines:
Jan 13 16:29:25 x1e keymapperd[903649]: Updating device list
Jan 13 16:29:25 x1e keymapperd[903649]: Grabbed device event30 'MX Anywhere 2S Keyboard'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event29 'Keymapper'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event28 'sof-hda-dsp Headphone'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event27 'sof-hda-dsp Mic'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event23 'HDA NVidia HDMI/DP,pcm=11'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event22 'HDA NVidia HDMI/DP,pcm=10'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event21 'HDA NVidia HDMI/DP,pcm=9'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event20 'HDA NVidia HDMI/DP,pcm=8'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event19 'HDA NVidia HDMI/DP,pcm=7'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event18 'HDA NVidia HDMI/DP,pcm=3'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event1 'Lid Switch'
Jan 13 16:29:25 x1e keymapperd[903649]: Updating device list
Jan 13 16:29:25 x1e keymapperd[903649]: Grabbed device event31 'MX Anywhere 2S Mouse'
Jan 13 16:29:25 x1e keymapperd[903649]: Ignoring device event29 'Keymapper'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event28 'sof-hda-dsp Headphone'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event27 'sof-hda-dsp Mic'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event23 'HDA NVidia HDMI/DP,pcm=11'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event22 'HDA NVidia HDMI/DP,pcm=10'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event21 'HDA NVidia HDMI/DP,pcm=9'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event20 'HDA NVidia HDMI/DP,pcm=8'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event19 'HDA NVidia HDMI/DP,pcm=7'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event18 'HDA NVidia HDMI/DP,pcm=3'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 13 16:29:26 x1e keymapperd[903649]: Ignoring device event1 'Lid Switch'
Jan 13 16:31:23 x1e keymapperd[903649]: Updating device list
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event29 'Keymapper'
Jan 13 16:31:23 x1e keymapperd[903649]: Opening device event9 failed
Jan 13 16:31:23 x1e keymapperd[903649]: Opening device event8 failed
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event28 'sof-hda-dsp Headphone'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event27 'sof-hda-dsp Mic'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event23 'HDA NVidia HDMI/DP,pcm=11'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event22 'HDA NVidia HDMI/DP,pcm=10'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event21 'HDA NVidia HDMI/DP,pcm=9'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event20 'HDA NVidia HDMI/DP,pcm=8'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event19 'HDA NVidia HDMI/DP,pcm=7'
Jan 13 16:31:23 x1e keymapperd[903649]: Ignoring device event18 'HDA NVidia HDMI/DP,pcm=3'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event1 'Lid Switch'
Jan 13 16:31:24 x1e keymapperd[903649]: Ungrabbed device event9
Jan 13 16:31:24 x1e keymapperd[903649]: Ungrabbed device event8
Jan 13 16:31:24 x1e keymapperd[903649]: Ungrabbed device event7
Jan 13 16:31:24 x1e keymapperd[903649]: Updating device list
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event29 'Keymapper'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event28 'sof-hda-dsp Headphone'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event27 'sof-hda-dsp Mic'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event23 'HDA NVidia HDMI/DP,pcm=11'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event22 'HDA NVidia HDMI/DP,pcm=10'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event21 'HDA NVidia HDMI/DP,pcm=9'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event20 'HDA NVidia HDMI/DP,pcm=8'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event19 'HDA NVidia HDMI/DP,pcm=7'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event18 'HDA NVidia HDMI/DP,pcm=3'
Jan 13 16:31:24 x1e keymapperd[903649]: Ignoring device event5 'SynPS/2 Synaptics TouchPad'
Jan 13 16:31:25 x1e keymapperd[903649]: Ignoring device event1 'Lid Switch'
Jan 13 16:31:25 x1e keymapperd[903649]: Ungrabbed device event11
Jan 13 16:31:25 x1e keymapperd[903649]: Ungrabbed device event10
I saved the logs and did some other stuff. At 16:49, the same update device list sequence from yesterday is logged and the mappings started working. Unfortunately I don't remember if it was from touching the config file or reconnecting the keyboard, however I'm certain the issue did not got fixed by itself.
Based on this it seems like there's clearly some issue either with the keyboard or somewhere else. Next time Ill make sure to check the output of
xinput list` before doing anything else.
I guess I could also try removing the dock from the equation and connect the cable on the laptop and/or see if the Bluetooth connection is more stable.
I do prefer using the cable though since it always sits on the desk. Also I've only recently got the keyboard and still doing some QMK remaps using https://remap-keys.app/ or https://usevia.app/. I'm trying to get away with as little done there as possible since using just Keymapper would be much more convenient.
Since a couple of days ago, I've also seen keymapper
suddently maxing out one CPU core. If I restart it before restarting 'keymapperd', it gets stuck waiting for connection. Somewhat interestingly, some mappings keep working even when keymapper
is not running at all (before restarting keymapperd
).
I don't remember having such issues other than this week. I've changed the config quite a bit and introduced a set of mappings to another keyboard after that for instance. I suspect it's in some way related to the parts included in the config I posted here: #99.
My earlier config did not use virtual keys or executing external commands, both of which I've added last week.
But this might be off topic and unrelated to this particular issue. I just thought to mention as this is @mark2185 also mentioned to the sudden high CPU usage.
A quick update. Yesterday I noticed a message on syslog there's indicated insufficient power to allow all functionality when a device had been connected. It turned out to be just my phone, and it indeed was not losing power rather than charging when connected. Anyway, after this I tested various USB power paths using two USB testers and didn't notice the voltage dropping even close to the minimum of the USB specification. Just in case, I tried swapping my keyboard to a separately powered USB hubx from my laptop dock.
That did not help though. I've got this happen at least 5 times today. There's been various input device disconnection events but no clear pattern has emerged. I suspect it might be a hardware issue as many are reporting frequent disconnection issues on some Keychron model. But then again, what device had caused a . All of them keep working just fine regardless. I wish there was a way to someway check when this occurs to be able to restart Keymapper.
Any chance the fix for #101 could have fixed this as a side effect?
I wish there was a way to someway check when this occurs to be able to restart Keymapper.
There should be no need for restarting keymapper when devices dis-/appear. Doesn't it work as expected?
Any chance the fix for #101 could have fixed this as a side effect?
I think #99 could have fixed this issue since with it context updates are no longer hold back. Together with the fix for the problem that occured when two instances of keymapper where running.
@mark2185 and @ristomatti can you confirm that it works now?
Sorry I haven't had time to post updates to this thread. Unless my memory is failing due to continous lack of proper sleep the last few weeks, I would say I saw this happen plenty of times after upgrading to v3.5.1.
Based on my logs, it's always been intermittent input device disconnections. At first it seemed to be some specific device or two, but after a while that was proven wrong as well. Some just disconnect more frequently:
$ journalctl -u acpid --since 2024-01-01 | rg '.*input device has been disconnected, fd (\d+)' -r '/dev/input/event$1' | sort | uniq -cd | sort -nr
121 /dev/input/event29
94 /dev/input/event8
91 /dev/input/event7
83 /dev/input/event9
73 /dev/input/event26
67 /dev/input/event24
66 /dev/input/event23
64 /dev/input/event25
63 /dev/input/event10
55 /dev/input/event18
50 /dev/input/event30
38 /dev/input/event27
36 /dev/input/event31
33 /dev/input/event22
24 /dev/input/event28
22 /dev/input/event32
11 /dev/input/event11
10 /dev/input/event12
7 /dev/input/event19
5 /dev/input/event33
3 /dev/input/event35
3 /dev/input/event34
3 /dev/input/event20
2 /dev/input/event21
event29
is keymapperd
virtual device, so it's irrelevant.
But with that said, yesterday morning I switched some USB devices around between my dock and the two USB2 hubs attached to it. Since then the issue has not yet reproduced once. It includes two changes which I think could have made the difference.
If the reason is either of those, I'd put my money on the latter. I originally changed it to BT when I bought my new primary mouse, Logitech G502 X (it uses a Logitech Lightspeed dongle instead) due to interference issues. Namely, my then also new Keychron K3 Pro sufferenced from random stuck keys and this change fixed the issue completely, even though the keyboard was connected via USB.
I had noticed the mouse disconnecting several times a day (I assume for power saving), so I thought it's worth the shot to try the dongle again as the two hubs are further apart. And indeed, no interference issues so far either.
I believe swapping my keyboard to a port on the dock is less likely to have made a difference. as before doing that, I tried connecting it directly on the laptop. It didn't have any effect.
@houmain If you've got a Bluetooth input device at hand but not connected, it'd be interesting to hear if you'll then see this occur as well.
I already had an idea of using e.g. entr
to restart the process after detecting a change in /dev/input
but I haven't had to try that out yet.
Perhaps this could be some type of a race condition, like keymapperd
grabbing the devices too fast after a change? For instance, my logs earlier on the thread show there's sometimes two consecutive Updating device list
logs when a device is disconnected.
Regardless if this turns out to fix the issue for me for good, it would be useful to be able to either make keymapperd
grab only specific devices or to be able to blacklist some of them. This would also prevent virtual keys releasing unnecessarily. So many devices seem to also show up as input devices. In my case as an example:
/dev/input/event0: Sleep Button
/dev/input/event1: Lid Switch
/dev/input/event2: Power Button
/dev/input/event3: AT Translated Set 2 keyboard
/dev/input/event4: Video Bus
/dev/input/event5: SynPS/2 Synaptics TouchPad
/dev/input/event6: TPPS/2 Elan TrackPoint
/dev/input/event7: Logitech USB Receiver
/dev/input/event8: Logitech USB Receiver Keyboard
/dev/input/event9: Keychron Keychron K15 Pro
/dev/input/event10: Keychron Keychron K15 Pro Mouse
/dev/input/event11: Keychron Keychron K15 Pro System Control
/dev/input/event12: Keychron Keychron K15 Pro Consumer Control
/dev/input/event13: Lenovo ThinkPad Thunderbolt 3 Dock USB Audio
/dev/input/event14: Keychron Keychron K15 Pro Keyboard
/dev/input/event15: ThinkPad Extra Buttons
/dev/input/event16: HDA NVidia HDMI/DP,pcm=3
/dev/input/event17: HDA NVidia HDMI/DP,pcm=7
/dev/input/event18: HDA NVidia HDMI/DP,pcm=8
/dev/input/event19: HDA NVidia HDMI/DP,pcm=9
/dev/input/event20: HDA NVidia HDMI/DP,pcm=10
/dev/input/event21: HDA NVidia HDMI/DP,pcm=11
/dev/input/event22: Integrated Camera: Integrated C
/dev/input/event23: Integrated Camera: Integrated I
/dev/input/event24: Generic Blue Microphones Consumer Control
/dev/input/event25: sof-hda-dsp Mic
/dev/input/event26: sof-hda-dsp Headphone
/dev/input/event27: Logitech Webcam C925e
/dev/input/event28: Generic Blue Microphones
/dev/input/event29: Keymapper
/dev/input/event30: MX Anywhere 2S Keyboard
/dev/input/event31: MX Anywhere 2S Mouse
From this list, I don't need Keymapper to grab any of these:
/dev/input/event0: Sleep Button
/dev/input/event1: Lid Switch
/dev/input/event2: Power Button
/dev/input/event4: Video Bus
/dev/input/event5: SynPS/2 Synaptics TouchPad
/dev/input/event13: Lenovo ThinkPad Thunderbolt 3 Dock USB Audio
/dev/input/event16: HDA NVidia HDMI/DP,pcm=3
/dev/input/event17: HDA NVidia HDMI/DP,pcm=7
/dev/input/event18: HDA NVidia HDMI/DP,pcm=8
/dev/input/event19: HDA NVidia HDMI/DP,pcm=9
/dev/input/event20: HDA NVidia HDMI/DP,pcm=10
/dev/input/event21: HDA NVidia HDMI/DP,pcm=11
/dev/input/event22: Integrated Camera: Integrated C
/dev/input/event23: Integrated Camera: Integrated I
/dev/input/event24: Generic Blue Microphones Consumer Control
/dev/input/event25: sof-hda-dsp Mic
/dev/input/event26: sof-hda-dsp Headphone
/dev/input/event27: Logitech Webcam C925e
/dev/input/event28: Generic Blue Microphones
@mark2185 and @ristomatti can you confirm that it works now?
Unfortunately I could never reproduce it, so let's just hope it's fixed and I'll be sure to report back if it's not! :)
I finally got my hands on a bluetooth device and tried it out. The problem was that the device filters were only reapplied when the configuration changed not when the devices changed. This is finally fixed in 3.5.2. Sorry, it took so long!
Regardless if this turns out to fix the issue for me for good, it would be useful to be able to either make keymapperd grab only specific devices
Yes, right, I should really make this configurable.
This would also prevent virtual keys releasing unnecessarily
They are only reset when the configuration changes, not when the devices change.
Awesome, so you were able to reproduce it? I'll pull in the changes and deliberately reconnect the other mouse via BT and leave it running for the night. :crossed_fingers:
A quick unrelated question that I remembered when I was about to build the package: I've added a niceness setting to keymapperd.service
:
[Service]
ExecStart=keymapperd
Nice=-5
What's your opinion, could this have any meaningful effect on the input latency?
so you were able to reproduce it?
Yes, even quicker I guess, since my device had different names when connecting via dongle/bluetooh.
What's your opinion, could this have any meaningful effect on the input latency?
Maybe, do you perceive any latency or can measure it somehow?
Are you still having problems with context mappings which stop working?
Maybe, do you perceive any latency or can measure it somehow?
It's difficult to answer on perceived latency. I've noticed a strong correlation with perceived latency and lack of sleep. I haven't done any back and forth testing if I notice a difference after changing the nice/priority setting. As an experiment I've been using the duration based mappings quite a lot. I'll try to tweak each duration to the shortest I can consistently get. Sometimes i've tweaked with 5ms increments. Somehow I'd lean to thinking this could make a difference on a heavy load...
Are you still having problems with context mappings which stop working?
Nope. I'm pretty confident you found the root cause. From my side this can be closed. If the issue re-appears, I'd be willing to say it will be a different issue and therefore better handled on a new issue.
That was the last actual issue I've ran across. Stellar work! 👏
Yesterday it occurred to me that AutoHotkey was the one of the few Windows apps I haven't found a replacement I'd be willing to do. Most of my use for AHK was application specific mappings and hotstring replacements, both of which can be achieved with Keymapper. :100:
Awesome! Thank you very much!
I've had this issue for a while and now I've narrowed it down to only class specific abstract mappings.
E.g. I have things like these
And then, in specific class names, I remap them
But at some point in time (I'm not sure if it's timed with waking up from sleep, but if it is, it's not consistent) only the abstract command mappings stop working, i.e. I cannot switch tabs in
firefox
withcapslock-e
, but can jump to the first tab withcapslock-1
.The
capslock
is also an alias.The problem is fixed either by restarting both
keymapper
andkeymapperd
, or putting the system to sleep and waking it up again.What else can I provide? Sadly I cannot reproduce it consistently so I'm hoping you might have a better insight into what's wrong.