Document the evdev "interesting" heuristic
Was checking over this old code, and saw a comment calling me out for a lack of documentation. It might be half a decade late, but better late then never.
This commit is contained in:
parent
99c0c8d4e8
commit
21528c3e72
|
@ -410,8 +410,39 @@ evdevDevice::evdevDevice(const std::string& devnode) : m_devfile(devnode)
|
||||||
|
|
||||||
// TODO: Add leds as output devices
|
// TODO: Add leds as output devices
|
||||||
|
|
||||||
// Was there some reasoning behind these numbers?
|
// Filter out interesting devices (see description below)
|
||||||
m_interesting = num_motion_axis != 0 || num_axis >= 2 || num_buttons >= 8;
|
m_interesting = num_motion_axis != 0 || num_axis >= 2 || num_buttons >= 8;
|
||||||
|
|
||||||
|
// On modern linux systems, there are a lot of event devices that aren't controllers.
|
||||||
|
// For example, the PC Speaker is an event device. Webcams sometimes show up as
|
||||||
|
// event devices. The power button is an event device.
|
||||||
|
|
||||||
|
// We don't want these showing up in the list of controllers, so we use this
|
||||||
|
// heuristic to filter out anything that doesn't smell like a controller:
|
||||||
|
//
|
||||||
|
// More than two analog axis:
|
||||||
|
// Most controllers have at least one stick. This rule will catch all such
|
||||||
|
// controllers, while ignoring anything with a single axis (like the mouse
|
||||||
|
// scroll-wheel)
|
||||||
|
//
|
||||||
|
// --- OR ---
|
||||||
|
//
|
||||||
|
// More than 8 buttons:
|
||||||
|
// The user might be using a digital only pad such as a NES controller.
|
||||||
|
// This rule caches such controllers, while eliminating any device with
|
||||||
|
// only a few buttons, like the power button. Sometimes laptops have devices
|
||||||
|
// with 5 or 6 special buttons, which is why the threshold is set to 8 to
|
||||||
|
// match a NES controller.
|
||||||
|
//
|
||||||
|
// --- OR ---
|
||||||
|
//
|
||||||
|
// Any Motion Axis:
|
||||||
|
// This rule is to catch any theoretical motion controllers with only a few
|
||||||
|
// buttons that the user might want to use as a controller.
|
||||||
|
//
|
||||||
|
// This heuristic is quite loose. The user may still see weird devices showing up
|
||||||
|
// as controllers, but it hopefully shouldn't filter out anything they actually
|
||||||
|
// want to use.
|
||||||
}
|
}
|
||||||
|
|
||||||
evdevDevice::~evdevDevice()
|
evdevDevice::~evdevDevice()
|
||||||
|
|
Loading…
Reference in New Issue