[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