External Trackpad recognized as Mouse instead of Touchpad
I have just purchased an external trackpad/touchpad and successfully paired it via Bluetooth. The problem is that there's no pointer; it only has scrolling and dragging functionalities. I have also paired it with an Android smartphone, and there the pointer is present.
I ran sudo libinput list-devices and in the Capabilities section, it shows only "touch" and "pointer" is missing. In the bluetooth setting, the touchpad is listed as “mouse”, that's why it doesn't have the pointer capabilities.
Maybe I need to modify the udev rules?
48 Replies
Device: Function Trackpad Touchpad
Kernel: /dev/input/event258
Id: bluetooth:045e:0040
Group: 11
Seat: seat0, default
Size: 250x178mm
Capabilities: touch
Tap-to-click: n/a
Tap-and-drag: n/a
Tap button map: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: identity matrix
Scroll methods: none
Scroll button: n/a
Scroll button lock: n/a
Click methods: none
Clickfinger button map: n/a
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Area rectangle: n/a
Update1:
Thanks to @皇家海星 and based on the documentation in here https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html , I have attempted to write the quarks file for my device (placed in /etc/libinput/local-overrides.quirks).
This is its content:
[My Bluetooth Touchpad Keyboard]
MatchName=Function Trackpad Keyboard
MatchUSBId=045e:0040
AttrTapping=1
AttrNaturalScrolling=1
AttrClickMethod=clickfinger
AttrAccelProfile=flat
AttrAccelSpeed=0.0
AttrPointerAcceleration=1.0
AttrPointerThreshold=1.0
AttrScrollMethod=twofinger
AttrScrollButton=2
AttrMiddleEmulation=1
AttrCalibrationMatrix=1 0 0 0 1 0 0 0 1
AttrArea=0 0 250 178
[My Bluetooth Touchpad Touchpad]
MatchName=Function Trackpad Touchpad
MatchUSBId=045e:0040
AttrTapping=1
AttrNaturalScrolling=1
AttrClickMethod=clickfinger
AttrAccelProfile=flat
AttrAccelSpeed=0.0
AttrPointerAcceleration=1.0
AttrPointerThreshold=1.0
AttrScrollMethod=twofinger
AttrScrollButton=2
AttrMiddleEmulation=1
AttrCalibrationMatrix=1 0 0 0 1 0 0 0 1
AttrArea=0 0 250 178
Update2:
I have also created a 40-libinput.conf file and placed in /etc/X11/xorg.conf.d
This is its content:
Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
MatchUSBId "045e:0040"
Driver "libinput"
Option "Tapping" "on"
Option "NaturalScrolling" "true"
Option "ClickMethod" "clickfinger"
Option "AccelProfile" "flat"
Option "AccelSpeed" "0.0"
Option "PointerAcceleration" "1.0"
Option "PointerThreshold" "1.0"
Option "ScrollMethod" "twofinger"
Option "ScrollButton" "2"
Option "MiddleEmulation" "on"
Option "CalibrationMatrix" "1 0 0 0 1 0 0 0 1"
Option "Area" "0 0 250 178"
EndSection
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchUSBId "045e:0040"
Driver "libinput"
Option "Tapping" "on"
Option "NaturalScrolling" "true"
Option "ClickMethod" "clickfinger"
Option "AccelProfile" "flat"
Option "AccelSpeed" "0.0"
Option "PointerAcceleration" "1.0"
Option "PointerThreshold" "1.0"
Option "ScrollMethod" "twofinger"
Option "ScrollButton" "2"
Option "MiddleEmulation" "on"
Option "CalibrationMatrix" "1 0 0 0 1 0 0 0 1"
Option "Area" "0 0 250 178"
EndSection
Still it doesn't work.
x11 won't work because we aren't using x11
as for the quirk, I'm afraid I can't help you as I'm not familiar with this either
Ok, nevermind, thanks anyway 👍🏻
best of luck though, you may want to look elsewhere (maybe something is up with bluetooth, or try a wired connection if possible) before messing around with quirks
since from experience libinput usually works
Yeah, the trackpad has 3 ways of connection: bluetooth, 2.4ghz dongle and wired, but in linux (I have tried both on Bazzite and in Arch), only BT is recognized) while in Android and Windows there's no restrictions.
Sounds like this needs a kernel patch depending on what driver loads
It would be great! Let me know if I can provide some device specifics
I have found a thread on reddit (https://chk.me/l4y5Wd1) that should point in the right direction and it involves in adding (as I was guessing) a udev rule, but still I cannot get it to work. I think I'm almost there, but I'm missing something.
This is the udev rule they suggest:
KERNEL=="0003:05AC:0265.*", \
PROGRAM="/bin/sh -c 'echo -n %k > /sys/bus/hid/drivers/magicmouse/unbind;\
echo -n %k > /sys/bus/hid/drivers/hid-multitouch/bind'".
Reddit
From the Fedora community on Reddit: A better way of getting Bosto ...
Explore this post and more from the Fedora community
Update: I have added the udev rule to an Arch installation, and there it is working flawlessly.
For some reason, in Bazzite the rule isn't applied.
I placed the file with the udev rule in /etc/udev/rules.d/
I have also noticed that there's another location for various udev rules in /usr/lib/udev/rules.d , but it's read only.
@antheas @皇家海星 , please, any suggestion?
This means you need a kernel patch
Because the mouse driver incorrectly does not report it under group generic
So multi touch does not bind
So, I need to patch it myself for that to work? If that's the case, I don't even know where to start
I will try to in a few days
If I don't ping me
Thank you, much appreciated! 👍🏻
Hi there, did you have any chance to take a look into it?
not yet but im on the computer
so might as well
0003:05AC:0265
Great, thanks!
so what does the magicmouse driver do? display battery?
what if you blacklist it?
according to the driver using only magicmouse it should work great
I'm quoting the guy who nade the udev rule: "But this damn touchpad has the USB PID/VID of Apple's Magic Trackpad 2. So, when I plug it in, the kernel assigns hid-magicmouse to it automatically. How do I get it to use my test driver? Apparently, by using udev rules! sysfs exposes driver bind and unbind functions for devices, and this udev rule takes advantage of that by 1) unbinding device from default driver and 2) binding to target driver whenever it is triggered with a specific device name. This means that you can override drivers with this single line of code!"
so its not a magic trackpad 2?
I guess, the Apple's Magic Trackpad 2 has the hid-magicmouse drivers, I don't know...
whats the device?
a magic trackpad 2 knockoff?
yeah, a chinese one
rip



i dont know how to fix this via kernel
best thing to do is a udev rule for now...
problem is that the udev rule doesn't work in Bazzite
...it works in Arch and other distros
udev rules work on bazzite
I placed the rule in the udev rule in /etc/udev/rules.d/
it should work, i made udev rules many times
perhaps you need to name the file with e.g. 80 so that it is pushed up
but the easiest thing you can do is blacklist magicmouse
/etc/modprobe.d
you mean changin from 99 to 80?
oh its already 99
yep
I can try by blacklisting the magicmouse: just put in the file "blacklist magicmouse"?
yes
Just tried to blacklist the magicmouse and still it doesn't work (I have tried both with and without the udev rule).
Could it be that the udev rule doesn't have enough permissions to execute the bind/unbind operation?
i was looking into the kernel and its kind of hardcoded to load the special driver
because of the immutable nature of Bazzite?
no, nothing is specific to bazzite
its weird it works on other distros, udev rules work fine in my experience
yeah, strange
Does it looks correct to you?:
KERNEL=="0003:05AC:0265.*", \
PROGRAM="/bin/sh -c 'echo -n %k > /sys/bus/hid/drivers/magicmouse/unbind;\
echo -n %k > /sys/bus/hid/drivers/hid-multitouch/bind'"
yeah, depending on what %k is
I don't have idea, sorry.
I will try to seek help also on the Bazzite github, what do you think?
you wont get more help there
its a very weird issue thats hard to fix
its easier for everyone to get a better touchpad
or figure out a hack that semi works
damn, ok
Apple trackpad works fine in Bazzite, right?
...but I won't give up on this one
I'm using Gnome Deck, and I noticed that something appears in the taskbar for brief moment when I connect this trackpad (second icon from the left).

it works the same as other distros
its supported by the magic mouse driver
that is causing you grief
Ok, got it, thanks.
And thank you for helping me and if something new comes up on your mind, please don't hesitate to share it!
...I have a couple of old installation of Bazzite on microsd cards, tomorrow I want to try also there ...just to have more confirmation
I just did more attempts and I think blacklisting magicmouse isn't working, If I run "sudo modprobe -r hid-magicmouse" I get "modprobe: FATAL: Module hid_magicmouse is builtin."
unfortunate
So, is that the main reason?
if its compiled as =y
you cant remove it
😭