Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
[udev] Fixes #2654, ID_INPUT_KEY devices are ignored.
Also added some references to udev code where these flags are set.
- Loading branch information
Showing
with
9 additions
and
1 deletion.
-
+9
−1
src/core/linux/SDL_udev.c
|
@@ -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; |
|
@@ -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; |
|
|
} |
|
|