Merge pull request #93352 from Calinou/linuxbsd-controller-no-trackpad-graphics-tablet

Fix trackpads and graphics tablets being recognized as controllers on Linux/*BSD
This commit is contained in:
Rémi Verschelde 2024-07-09 16:47:04 +02:00
commit 49a6171319
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 21 additions and 0 deletions

View file

@ -374,6 +374,12 @@ void JoypadLinux::open_joypad(const char *p_path) {
name = namebuf;
}
for (const String &word : name.to_lower().split(" ")) {
if (banned_words.has(word)) {
return;
}
}
if (ioctl(fd, EVIOCGID, &inpid) < 0) {
close(fd);
return;

View file

@ -94,6 +94,21 @@ private:
Vector<String> attached_devices;
// List of lowercase words that will prevent the controller from being recognized if its name matches.
// This is done to prevent trackpads, graphics tablets and motherboard LED controllers from being
// recognized as controllers (and taking up controller ID slots as a result).
// Only whole words are matched within the controller name string. The match is case-insensitive.
const Vector<String> banned_words = {
"touchpad", // Matches e.g. "SynPS/2 Synaptics TouchPad", "Sony Interactive Entertainment DualSense Wireless Controller Touchpad"
"trackpad",
"clickpad",
"keyboard", // Matches e.g. "PG-90215 Keyboard", "Usb Keyboard Usb Keyboard Consumer Control"
"mouse", // Matches e.g. "Mouse passthrough"
"pen", // Matches e.g. "Wacom One by Wacom S Pen"
"finger", // Matches e.g. "Wacom HID 495F Finger"
"led", // Matches e.g. "ASRock LED Controller"
};
static void monitor_joypads_thread_func(void *p_user);
void monitor_joypads_thread_run();