[systemd-devel] [PATCH udev v2] udev: Add program/rule to export touchscreen/tablet size as udev properties

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Fri Dec 19 09:24:17 PST 2014


On Fri, Dec 19, 2014 at 04:01:11PM +0100, Carlos Garnacho wrote:
> This rule is only run on tablet/touchscreen devices, and extracts their size
> in millimeters, as it can be found out through their struct input_absinfo.
> 
> This may be useful to separate policy and application at the time of mapping
> these devices to the available outputs in windowing environments that don't
> offer that information as readily (eg. Wayland). This way the compositor can
> stay deterministic, and the mix-and-match heuristics are performed outside.
> 
> Conceivably, that information can be changed through EVIOCSABS anywhere
> else, but we're only interested in values prior to any calibration, this
> rule is thus only run on "add", and no tracking of changes is performed.
> This should only remain a problem if calibration were automatically applied
> by an earlier udev rule (read: don't).
> 
>   v2: Folded rationale into commit log, made a builtin, set properties
>       on device nodes themselves
> ---
>  Makefile.am                            |  2 +
>  rules/60-input_abs_size.rules          |  8 ++++
>  src/udev/udev-builtin-input_abs_size.c | 78 ++++++++++++++++++++++++++++++++++
>  src/udev/udev-builtin.c                |  1 +
>  src/udev/udev.h                        |  2 +
>  5 files changed, 91 insertions(+)
>  create mode 100644 rules/60-input_abs_size.rules
>  create mode 100644 src/udev/udev-builtin-input_abs_size.c
> 
> diff --git a/Makefile.am b/Makefile.am
> index ab07d3b..db3e014 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -3412,6 +3412,7 @@ dist_udevrules_DATA += \
>  	rules/42-usb-hid-pm.rules \
>  	rules/50-udev-default.rules \
>  	rules/60-drm.rules \
> +	rules/60-input_abs_size.rules \
>  	rules/60-keyboard.rules \
>  	rules/70-mouse.rules \
>  	rules/60-persistent-storage-tape.rules \
> @@ -3512,6 +3513,7 @@ libudev_core_la_SOURCES = \
>  	src/udev/udev-builtin.c \
>  	src/udev/udev-builtin-btrfs.c \
>  	src/udev/udev-builtin-hwdb.c \
> +	src/udev/udev-builtin-input_abs_size.c \
>  	src/udev/udev-builtin-input_id.c \
>  	src/udev/udev-builtin-keyboard.c \
>  	src/udev/udev-builtin-net_id.c \
> diff --git a/rules/60-input_abs_size.rules b/rules/60-input_abs_size.rules
> new file mode 100644
> index 0000000..1541ced
> --- /dev/null
> +++ b/rules/60-input_abs_size.rules
> @@ -0,0 +1,8 @@
> +# do not edit this file, it will be overwritten on update
> +
> +ACTION!="add", GOTO="input_abs_size_end"
> +
> +ENV{ID_INPUT_TOUCHSCREEN}=="1", IMPORT{builtin}="input_abs_size"
> +ENV{ID_INPUT_TABLET}=="1", IMPORT{builtin}="input_abs_size"
> +
> +LABEL="input_abs_size_end"

David Hermann wrote:
> write those properties on the "eventXYZ" devices (the actual
> evdev nodes). Everyone should be using those instead of the
> input-device, so we should be fine.
Should't you add KERNEL!="event*", GOTO="input_abs_size_end"?

Zbyszek


More information about the systemd-devel mailing list