[systemd-commits] src/shared src/udev

Peter Hutterer whot at kemper.freedesktop.org
Mon Apr 6 18:22:32 PDT 2015


 src/shared/missing.h             |    4 ++++
 src/udev/udev-builtin-input_id.c |    9 ++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

New commits:
commit 606df97b6a2438a8844c828ecdef1e9b25e2e838
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Mar 26 14:08:35 2015 +1000

    udev: input_id: tag pointing sticks as ID_INPUT_POINTINGSTICK
    
    Also referred to as trackpoint, trackstick. These are marked by recent kernels
    through an input prop. Forward that prop as udev property so userspace can
    easily determine whether there is a pointing stick present.
    
    These devices were previously marked as ID_INPUT_MOUSE, for backwards
    compatibility we keep that in place, the new property is an addition.

diff --git a/src/shared/missing.h b/src/shared/missing.h
index 67006fb..52d49f7 100644
--- a/src/shared/missing.h
+++ b/src/shared/missing.h
@@ -948,3 +948,7 @@ static inline int kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, uns
 #ifndef KCMP_FILE
 #define KCMP_FILE 0
 #endif
+
+#ifndef INPUT_PROP_POINTING_STICK
+#define INPUT_PROP_POINTING_STICK 0x05
+#endif
diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
index 46f1c53..d4c38ca 100644
--- a/src/udev/udev-builtin-input_id.c
+++ b/src/udev/udev-builtin-input_id.c
@@ -131,6 +131,7 @@ static void test_pointers (struct udev_device *dev,
                            const unsigned long* bitmask_abs,
                            const unsigned long* bitmask_key,
                            const unsigned long* bitmask_rel,
+                           const unsigned long* bitmask_props,
                            bool test) {
         int is_mouse = 0;
         int is_touchpad = 0;
@@ -173,6 +174,9 @@ static void test_pointers (struct udev_device *dev,
                         udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1");
         }
 
+        if (test_bit (INPUT_PROP_POINTING_STICK, bitmask_props))
+                udev_builtin_add_property(dev, test, "ID_INPUT_POINTINGSTICK", "1");
+
         if (test_bit (EV_REL, bitmask_ev) &&
             test_bit (REL_X, bitmask_rel) && test_bit (REL_Y, bitmask_rel) &&
             test_bit (BTN_MOUSE, bitmask_key))
@@ -232,6 +236,7 @@ static int builtin_input_id(struct udev_device *dev, int argc, char *argv[], boo
         unsigned long bitmask_abs[NBITS(ABS_MAX)];
         unsigned long bitmask_key[NBITS(KEY_MAX)];
         unsigned long bitmask_rel[NBITS(REL_MAX)];
+        unsigned long bitmask_props[NBITS(INPUT_PROP_MAX)];
         const char *sysname, *devnode;
 
         /* walk up the parental chain until we find the real input device; the
@@ -248,7 +253,9 @@ static int builtin_input_id(struct udev_device *dev, int argc, char *argv[], boo
                 get_cap_mask(dev, pdev, "capabilities/abs", bitmask_abs, sizeof(bitmask_abs), test);
                 get_cap_mask(dev, pdev, "capabilities/rel", bitmask_rel, sizeof(bitmask_rel), test);
                 get_cap_mask(dev, pdev, "capabilities/key", bitmask_key, sizeof(bitmask_key), test);
-                test_pointers(dev, bitmask_ev, bitmask_abs, bitmask_key, bitmask_rel, test);
+                get_cap_mask(dev, pdev, "properties", bitmask_props, sizeof(bitmask_props), test);
+                test_pointers(dev, bitmask_ev, bitmask_abs, bitmask_key,
+                              bitmask_rel, bitmask_props, test);
                 test_key(dev, bitmask_ev, bitmask_key, test);
         }
 



More information about the systemd-commits mailing list