[systemd-devel] [PATCH] udev: input_id: tag accelerometers as ID_INPUT_ACCELEROMETER

David Herrmann dh.herrmann at gmail.com
Fri Apr 3 06:51:43 PDT 2015


Hi

On Fri, Apr 3, 2015 at 12:07 PM, Hans de Goede <hdegoede at redhat.com> wrote:
> input_id already (tries to) tag accelerometers as such, but this only works
> for absolute accelerometers. Recent kernels mark accelerometers through an
> input prop. Trust that prop and always tag devices with it with
> ID_INPUT_ACCELEROMETER.
>
> Note that detection by the prop bit works the same as the existing detection
> and will ensure that no other tags get set on the device.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>  src/shared/missing.h             | 4 ++++
>  src/udev/udev-builtin-input_id.c | 5 +++++
>  2 files changed, 9 insertions(+)
>
> diff --git a/src/shared/missing.h b/src/shared/missing.h
> index 3bdfd8f..4464e35 100644
> --- a/src/shared/missing.h
> +++ b/src/shared/missing.h
> @@ -944,3 +944,7 @@ static inline int kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, uns
>  #ifndef INPUT_PROP_POINTING_STICK
>  #define INPUT_PROP_POINTING_STICK 0x05
>  #endif
> +
> +#ifndef INPUT_PROP_ACCELEROMETER
> +#define INPUT_PROP_ACCELEROMETER  0x06
> +#endif
> diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
> index d4c38ca..ecfc447 100644
> --- a/src/udev/udev-builtin-input_id.c
> +++ b/src/udev/udev-builtin-input_id.c
> @@ -136,6 +136,11 @@ static void test_pointers (struct udev_device *dev,
>          int is_mouse = 0;
>          int is_touchpad = 0;
>
> +        if (test_bit (INPUT_PROP_ACCELEROMETER, bitmask_props)) {
> +                udev_builtin_add_property(dev, test, "ID_INPUT_ACCELEROMETER", "1");
> +                return;
> +        }
> +

So this property is only set for accelerometer-only devices? I didn't
follow the kernel discussion, sorry.. I just wonder what happens if we
report accelerometer + keys on the same device. But I guess that's
broken, anyway, as we don't have ABS_ACCEL_*. Just thinking out loud..

But generally looks good to me!

Thanks
David

>          if (!test_bit (EV_KEY, bitmask_ev)) {
>                  if (test_bit (EV_ABS, bitmask_ev) &&
>                      test_bit (ABS_X, bitmask_abs) &&
> --
> 2.3.4
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list