dcavalca / rpms / systemd

Forked from rpms/systemd 2 years ago
Clone
Zbigniew Jędrzejewski-Szmek 4f9456
From d57c6115e0aa3d04fea4c87c67ec455ffe5a0c75 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 4f9456
From: Martin Pitt <martin.pitt@ubuntu.com>
Zbigniew Jędrzejewski-Szmek 4f9456
Date: Mon, 10 Mar 2014 08:54:22 +0100
Zbigniew Jędrzejewski-Szmek 4f9456
Subject: [PATCH] input_id: Recognize buttonless joystick types
Zbigniew Jędrzejewski-Szmek 4f9456
Zbigniew Jędrzejewski-Szmek 4f9456
Input devices like rudders or pedals are joystick-like; they don't have
Zbigniew Jędrzejewski-Szmek 4f9456
buttons, but axes like RX, THROTTLE, or RUDDER. These don't interfere with
Zbigniew Jędrzejewski-Szmek 4f9456
other device types with absolute axes (touch screens, touchpads, and
Zbigniew Jędrzejewski-Szmek 4f9456
accelerometers), so it's fairly safe to mark them as ID_INPUT_JOYSTICK and thus
Zbigniew Jędrzejewski-Szmek 4f9456
hand out dynamic ACLs to the user.
Zbigniew Jędrzejewski-Szmek 4f9456
Zbigniew Jędrzejewski-Szmek 4f9456
https://bugs.freedesktop.org/show_bug.cgi?id=70734
Zbigniew Jędrzejewski-Szmek 4f9456
(cherry picked from commit 2658624399b22a9c4a345a22c69886dc9417f801)
Zbigniew Jędrzejewski-Szmek 4f9456
(cherry picked from commit 33fc27712a13b7502804a2a3016ce490a89e000d)
Zbigniew Jędrzejewski-Szmek 4f9456
---
Zbigniew Jędrzejewski-Szmek 4f9456
 src/udev/udev-builtin-input_id.c | 19 +++++++++++++++----
Zbigniew Jędrzejewski-Szmek 4f9456
 1 file changed, 15 insertions(+), 4 deletions(-)
Zbigniew Jędrzejewski-Szmek 4f9456
Zbigniew Jędrzejewski-Szmek 4f9456
diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
Zbigniew Jędrzejewski-Szmek 4f9456
index 4691fc0..33c8075 100644
Zbigniew Jędrzejewski-Szmek 4f9456
--- a/src/udev/udev-builtin-input_id.c
Zbigniew Jędrzejewski-Szmek 4f9456
+++ b/src/udev/udev-builtin-input_id.c
Zbigniew Jędrzejewski-Szmek 4f9456
@@ -116,16 +116,27 @@ static void test_pointers (struct udev_device *dev,
Zbigniew Jędrzejewski-Szmek 4f9456
                         udev_builtin_add_property(dev, test, "ID_INPUT_TABLET", "1");
Zbigniew Jędrzejewski-Szmek 4f9456
                 else if (test_bit (BTN_TOOL_FINGER, bitmask_key) && !test_bit (BTN_TOOL_PEN, bitmask_key))
Zbigniew Jędrzejewski-Szmek 4f9456
                         is_touchpad = 1;
Zbigniew Jędrzejewski-Szmek 4f9456
-                else if (test_bit (BTN_TRIGGER, bitmask_key) ||
Zbigniew Jędrzejewski-Szmek 4f9456
-                         test_bit (BTN_A, bitmask_key) ||
Zbigniew Jędrzejewski-Szmek 4f9456
-                         test_bit (BTN_1, bitmask_key))
Zbigniew Jędrzejewski-Szmek 4f9456
-                        udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1");
Zbigniew Jędrzejewski-Szmek 4f9456
                 else if (test_bit (BTN_MOUSE, bitmask_key))
Zbigniew Jędrzejewski-Szmek 4f9456
                         /* This path is taken by VMware's USB mouse, which has
Zbigniew Jędrzejewski-Szmek 4f9456
                          * absolute axes, but no touch/pressure button. */
Zbigniew Jędrzejewski-Szmek 4f9456
                         is_mouse = 1;
Zbigniew Jędrzejewski-Szmek 4f9456
                 else if (test_bit (BTN_TOUCH, bitmask_key))
Zbigniew Jędrzejewski-Szmek 4f9456
                         udev_builtin_add_property(dev, test, "ID_INPUT_TOUCHSCREEN", "1");
Zbigniew Jędrzejewski-Szmek 4f9456
+                /* joysticks don't necessarily have to have buttons; e. g.
Zbigniew Jędrzejewski-Szmek 4f9456
+                 * rudders/pedals are joystick-like, but buttonless; they have
Zbigniew Jędrzejewski-Szmek 4f9456
+                 * other fancy axes */
Zbigniew Jędrzejewski-Szmek 4f9456
+                else if (test_bit (BTN_TRIGGER, bitmask_key) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (BTN_A, bitmask_key) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (BTN_1, bitmask_key) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_RX, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_RY, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_RZ, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_THROTTLE, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_RUDDER, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_WHEEL, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_GAS, bitmask_abs) ||
Zbigniew Jędrzejewski-Szmek 4f9456
+                         test_bit (ABS_BRAKE, bitmask_abs))
Zbigniew Jędrzejewski-Szmek 4f9456
+                        udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1");
Zbigniew Jędrzejewski-Szmek 4f9456
         }
Zbigniew Jędrzejewski-Szmek 4f9456
 
Zbigniew Jędrzejewski-Szmek 4f9456
         if (test_bit (EV_REL, bitmask_ev) &&