Fix trackpads and graphics tablets being recognized as controllers on Linux/*BSD
This commit is contained in:
parent
b75f0485ba
commit
724cdffc8c
|
@ -374,6 +374,12 @@ void JoypadLinux::open_joypad(const char *p_path) {
|
||||||
name = namebuf;
|
name = namebuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const String &word : name.to_lower().split(" ")) {
|
||||||
|
if (banned_words.has(word)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ioctl(fd, EVIOCGID, &inpid) < 0) {
|
if (ioctl(fd, EVIOCGID, &inpid) < 0) {
|
||||||
close(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -94,6 +94,21 @@ private:
|
||||||
|
|
||||||
Vector<String> attached_devices;
|
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);
|
static void monitor_joypads_thread_func(void *p_user);
|
||||||
void monitor_joypads_thread_run();
|
void monitor_joypads_thread_run();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue