Skip to content

fix: load uinput in Arch hook - #126

Merged
mmaher88 merged 2 commits into
mmaher88:masterfrom
FromSi:fix/arch-uinput-hook
Jul 28, 2026
Merged

fix: load uinput in Arch hook#126
mmaher88 merged 2 commits into
mmaher88:masterfrom
FromSi:fix/arch-uinput-hook

Conversation

@FromSi

@FromSi FromSi commented May 15, 2026

Copy link
Copy Markdown
Contributor

What happened

On my Manjaro KDE Wayland system, Logitune detected the mouse and received
button events correctly, but remapped button actions did nothing.

The log showed that hidraw access was working:

button event: CID c4 pressed
button 6 action type= 7 payload= "Next"

But uinput initialization failed:

UinputInjector: uinput init failed (no /dev/uinput access?)
Keystrokes will not be injected.

Root cause

In my case, /dev/uinput existed, but the actual uinput kernel device was
not loaded or registered
:

/dev/uinput existed as crw------- root root
/sys/class/misc/uinput did not exist
/proc/misc did not contain uinput
lsmod did not show uinput
udevadm info -n /dev/uinput returned "Unknown device"

Because of that, reloading and triggering udev rules was not enough. The rule
with TAG+="uaccess" had no live misc/uinput device to apply to.

Fix

This patch loads the uinput kernel module in the Arch install hook before
reloading and triggering udev rules.

It then triggers:

  • misc/uinput, so uaccess can be applied to /dev/uinput
  • hidraw, so Logitech device permissions are refreshed as before

After manually running modprobe uinput and reloading udev rules on my system,
Logitune stopped failing uinput init, and button remaps started working.

@mmaher88 mmaher88 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified: brings the Arch hook in line with the deb postinst and RPM spec, which already narrow udevadm trigger to hidraw/misc instead of re-triggering every device. The modprobe uinput is the right call — without the module loaded there's no /dev/uinput node for udev to tag with uaccess. The || true guards also mean a failing hook can't abort the install. Thanks!

@mmaher88
mmaher88 merged commit 232a372 into mmaher88:master Jul 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants