Browse Source

Set udev class for accelerometer

meyraud705 1 year ago
parent
commit
c6ec999869
2 changed files with 6 additions and 1 deletions
  1. 5 0
      src/core/linux/SDL_udev.c
  2. 1 1
      src/joystick/linux/SDL_sysjoystick.c

+ 5 - 0
src/core/linux/SDL_udev.c

@@ -428,6 +428,11 @@ static int device_class(struct udev_device *dev)
             devclass |= SDL_UDEV_DEVICE_JOYSTICK;
         }
 
+        val = _this->syms.udev_device_get_property_value(dev, "ID_INPUT_ACCELEROMETER");
+        if (val && SDL_strcmp(val, "1") == 0) {
+            devclass |= SDL_UDEV_DEVICE_ACCELEROMETER;
+        }
+
         val = _this->syms.udev_device_get_property_value(dev, "ID_INPUT_MOUSE");
         if (val && SDL_strcmp(val, "1") == 0) {
             devclass |= SDL_UDEV_DEVICE_MOUSE;

+ 1 - 1
src/joystick/linux/SDL_sysjoystick.c

@@ -360,7 +360,7 @@ static void joystick_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_clas
 
     switch (udev_type) {
     case SDL_UDEV_DEVICEADDED:
-        if (!(udev_class & SDL_UDEV_DEVICE_JOYSTICK)) {
+        if (!(udev_class & (SDL_UDEV_DEVICE_JOYSTICK | SDL_UDEV_DEVICE_ACCELEROMETER))) {
             return;
         }
         if (SDL_classic_joysticks) {