Skip to content

Commit

Permalink
[udev] Fixes #2654, ID_INPUT_KEY devices are ignored.
Browse files Browse the repository at this point in the history
Also added some references to udev code where these flags are set.
  • Loading branch information
gabomdq committed Oct 16, 2014
1 parent 29eb6e9 commit 5df970a
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/core/linux/SDL_udev.c
Expand Up @@ -398,6 +398,8 @@ device_event(SDL_UDEV_deviceevent type, struct udev_device *dev)
if (SDL_strcmp(subsystem, "sound") == 0) {
devclass = SDL_UDEV_DEVICE_SOUND;
} else if (SDL_strcmp(subsystem, "input") == 0) {
/* udev rules reference: http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-input_id.c */

val = _this->udev_device_get_property_value(dev, "ID_INPUT_JOYSTICK");
if (val != NULL && SDL_strcmp(val, "1") == 0 ) {
devclass |= SDL_UDEV_DEVICE_JOYSTICK;
Expand All @@ -408,7 +410,13 @@ device_event(SDL_UDEV_deviceevent type, struct udev_device *dev)
devclass |= SDL_UDEV_DEVICE_MOUSE;
}

val = _this->udev_device_get_property_value(dev, "ID_INPUT_KEYBOARD");
/* The undocumented rule is:
- All devices with keys get ID_INPUT_KEY
- From this subset, if they have ESC, numbers, and Q to D, it also gets ID_INPUT_KEYBOARD
Ref: http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-input_id.c#n183
*/
val = _this->udev_device_get_property_value(dev, "ID_INPUT_KEY");
if (val != NULL && SDL_strcmp(val, "1") == 0 ) {
devclass |= SDL_UDEV_DEVICE_KEYBOARD;
}
Expand Down

0 comments on commit 5df970a

Please sign in to comment.