HID: bpf: Fix Rapoo M50 Plus Silent side buttons
The Rapoo M50 Plus Silent mouse has 2 side buttons in addition to the left, right and middles buttons. However, its original HID descriptor has a Usage Maximum of 3, preventing the side buttons to work.
This HID-BPF driver changes that usage to 5.
Link: libinput/libinput#1015 (closed)
@jussi.lahtinen here is the fix for your mouse. Following the tutorial: https://libevdev.pages.freedesktop.org/udev-hid-bpf/getting-started.html
You should be able to install the HID-BPF program for your device executing these commands:
$ git clone --branch rapoo-m50 https://gitlab.freedesktop.org/JoseExposito/udev-hid-bpf.git
$ cd udev-hid-bpf
$ meson setup builddir
$ meson compile -C builddir
$ meson install -C builddir
Disconnect and connect your mouse and the side buttons should work.
I couldn't test it properly because the program refuses to load:
$ ninja -C builddir && \
sudo ./builddir/udev-hid-bpf --verbose add --replace \
/sys/bus/hid/devices/0003:24AE:2015.* - \
$(pwd)/builddir/src/bpf/10-Rapoo__M50-Plus-Silent.bpf.o
ninja: Entering directory `builddir'
ninja: no work to do.
[sudo] password for jexposit:
DEBUG - loading BPF object at "/home/jexposit/Devel/udev-hid-bpf/builddir/src/bpf/10-Rapoo__M50-Plus-Silent.bpf.o"
DEBUG - libbpf: elf: skipping unrecognized data section(7) .hid_bpf_config
DEBUG - Using HID_BPF_STRUCT_OPS
WARN - libbpf: struct_ops init_kern: struct bpf_struct_ops_hid_bpf_ops is not found in kernel BTF
WARN - libbpf: failed to load object '/home/jexposit/Devel/udev-hid-bpf/builddir/src/bpf/10-Rapoo__M50-Plus-Silent.bpf.o'
WARN - Failed to load "/home/jexposit/Devel/udev-hid-bpf/builddir/src/bpf/10-Rapoo__M50-Plus-Silent.bpf.o": No such file or directory (os error 2)
$ ls /home/jexposit/Devel/udev-hid-bpf/builddir/src/bpf/10-Rapoo__M50-Plus-Silent.bpf.o
/home/jexposit/Devel/udev-hid-bpf/builddir/src/bpf/10-Rapoo__M50-Plus-Silent.bpf.o
Maybe @bentiss knows why I'm getting a no such file or directory error when the file is present?