[PATCH] Xi: define a default range of axis labels.
Matt Helsley
matt.helsley at gmail.com
Fri Jan 23 23:00:05 PST 2009
On Mon, 2009-01-19 at 23:23 +1100, Peter Hutterer wrote:
> ATM, we are able to announce that a device has multiple axes, but clients have
> to take educated guesses as to wether axis N is tilt, pressure, pan or
> bananas. This patch introduces a set of default properties, initialized by the
> server on init. Drivers can then take the AXIS_LABEL_PROP and fill it with the
> matching labels to indicate to the client which axis does what. Clients can
> query this property and adjust their user interface accordingly.
>
> The range of labels is taken from linux/input.h, presumably that's the ones at
> least the Linux kernel can give us for a device.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> Xi/xiproperty.c | 39 ++++++++++++++++++++++++++++++++-
> include/xserver-properties.h | 49 ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 87 insertions(+), 1 deletions(-)
>
> diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
> index 53b2f6a..3bc2818 100644
> --- a/Xi/xiproperty.c
> +++ b/Xi/xiproperty.c
> @@ -54,7 +54,44 @@ static struct dev_properties
> {0, ACCEL_PROP_PROFILE_NUMBER},
> {0, ACCEL_PROP_CONSTANT_DECELERATION},
> {0, ACCEL_PROP_ADAPTIVE_DECELERATION},
> - {0, ACCEL_PROP_VELOCITY_SCALING}
> + {0, ACCEL_PROP_VELOCITY_SCALING},
> + {0, AXIS_LABEL_PROP},
> + {0, AXIS_LABEL_PROP_REL_X},
> + {0, AXIS_LABEL_PROP_REL_Y},
> + {0, AXIS_LABEL_PROP_REL_Z},
> + {0, AXIS_LABEL_PROP_REL_RX},
> + {0, AXIS_LABEL_PROP_REL_RY},
> + {0, AXIS_LABEL_PROP_REL_RZ},
> + {0, AXIS_LABEL_PROP_REL_HWHEEL},
> + {0, AXIS_LABEL_PROP_REL_DIAL},
> + {0, AXIS_LABEL_PROP_REL_WHEEL},
> + {0, AXIS_LABEL_PROP_REL_MISC},
> + {0, AXIS_LABEL_PROP_ABS_X},
> + {0, AXIS_LABEL_PROP_ABS_Y},
> + {0, AXIS_LABEL_PROP_ABS_Z},
> + {0, AXIS_LABEL_PROP_ABS_RX},
> + {0, AXIS_LABEL_PROP_ABS_RY},
> + {0, AXIS_LABEL_PROP_ABS_RZ},
> + {0, AXIS_LABEL_PROP_ABS_THROTTLE},
> + {0, AXIS_LABEL_PROP_ABS_RUDDER},
> + {0, AXIS_LABEL_PROP_ABS_WHEEL},
> + {0, AXIS_LABEL_PROP_ABS_GAS},
> + {0, AXIS_LABEL_PROP_ABS_BRAKE},
> + {0, AXIS_LABEL_PROP_ABS_HAT0X},
> + {0, AXIS_LABEL_PROP_ABS_HAT0Y},
> + {0, AXIS_LABEL_PROP_ABS_HAT1X},
> + {0, AXIS_LABEL_PROP_ABS_HAT1Y},
> + {0, AXIS_LABEL_PROP_ABS_HAT2X},
> + {0, AXIS_LABEL_PROP_ABS_HAT2Y},
> + {0, AXIS_LABEL_PROP_ABS_HAT3X},
> + {0, AXIS_LABEL_PROP_ABS_HAT3Y},
> + {0, AXIS_LABEL_PROP_ABS_PRESSURE},
> + {0, AXIS_LABEL_PROP_ABS_DISTANCE},
> + {0, AXIS_LABEL_PROP_ABS_TILT_X},
> + {0, AXIS_LABEL_PROP_ABS_TILT_Y},
> + {0, AXIS_LABEL_PROP_ABS_TOOL_WIDTH},
> + {0, AXIS_LABEL_PROP_ABS_VOLUME},
> + {0, AXIS_LABEL_PROP_ABS_MISC}
> };
>
> static long XIPropHandlerID = 1;
> diff --git a/include/xserver-properties.h b/include/xserver-properties.h
> index 1327e59..1ce37c5 100644
> --- a/include/xserver-properties.h
> +++ b/include/xserver-properties.h
> @@ -43,4 +43,53 @@
> /* FLOAT, format 32 */
> #define ACCEL_PROP_VELOCITY_SCALING "Device Accel Velocity Scaling"
>
> +
> +/* Axis labels */
> +/* ATOM values, ideally one per axis */
> +#define AXIS_LABEL_PROP "Axis Labels"
> +
> +/* The following are for use in AXIS_LABEL_PROP only and do not have a
> + * defined value that is parsed by the server. */
> +#define AXIS_LABEL_PROP_REL_X "Rel X"
> +#define AXIS_LABEL_PROP_REL_Y "Rel Y"
> +#define AXIS_LABEL_PROP_REL_Z "Rel Z"
> +#define AXIS_LABEL_PROP_REL_RX "Rel Rotary X"
> +#define AXIS_LABEL_PROP_REL_RY "Rel Rotary Y"
> +#define AXIS_LABEL_PROP_REL_RZ "Rel Rotary Z"
> +#define AXIS_LABEL_PROP_REL_HWHEEL "Rel Horiz Wheel"
> +#define AXIS_LABEL_PROP_REL_DIAL "Rel Dial"
> +#define AXIS_LABEL_PROP_REL_WHEEL "Rel Vert Wheel"
> +#define AXIS_LABEL_PROP_REL_MISC "Rel Misc"
> +
> +/*
> + * Absolute axes
> + */
> +
> +#define AXIS_LABEL_PROP_ABS_X "Abs X"
> +#define AXIS_LABEL_PROP_ABS_Y "Abs Y"
> +#define AXIS_LABEL_PROP_ABS_Z "Abs Z"
> +#define AXIS_LABEL_PROP_ABS_RX "Abs Rotary X"
> +#define AXIS_LABEL_PROP_ABS_RY "Abs Rotary Y"
> +#define AXIS_LABEL_PROP_ABS_RZ "Abs Rotary Z"
> +#define AXIS_LABEL_PROP_ABS_THROTTLE "Abs Throttle"
> +#define AXIS_LABEL_PROP_ABS_RUDDER "Abs Rudder"
> +#define AXIS_LABEL_PROP_ABS_WHEEL "Abs Wheel"
> +#define AXIS_LABEL_PROP_ABS_GAS "Abs Gas"
> +#define AXIS_LABEL_PROP_ABS_BRAKE "Abs Brake"
> +#define AXIS_LABEL_PROP_ABS_HAT0X "Abs Hat 0 X"
> +#define AXIS_LABEL_PROP_ABS_HAT0Y "Abs Hat 0 Y"
> +#define AXIS_LABEL_PROP_ABS_HAT1X "Abs Hat 1 X"
> +#define AXIS_LABEL_PROP_ABS_HAT1Y "Abs Hat 1 Y"
> +#define AXIS_LABEL_PROP_ABS_HAT2X "Abs Hat 2 X"
> +#define AXIS_LABEL_PROP_ABS_HAT2Y "Abs Hat 2 Y"
> +#define AXIS_LABEL_PROP_ABS_HAT3X "Abs Hat 3 X"
> +#define AXIS_LABEL_PROP_ABS_HAT3Y "Abs Hat 3 Y"
> +#define AXIS_LABEL_PROP_ABS_PRESSURE "Abs Pressure"
> +#define AXIS_LABEL_PROP_ABS_DISTANCE "Abs Distance"
> +#define AXIS_LABEL_PROP_ABS_TILT_X "Abs Tilt X"
> +#define AXIS_LABEL_PROP_ABS_TILT_Y "Abs Tilt Y"
> +#define AXIS_LABEL_PROP_ABS_TOOL_WIDTH "Abs Tool Width"
> +#define AXIS_LABEL_PROP_ABS_VOLUME "Abs Volume"
> +#define AXIS_LABEL_PROP_ABS_MISC "Abs Misc"
> +
> #endif
A nit: "Rel" and "Abs" may be abbreviations end-users wouldn't
recognize. Perhaps expanding them would be good.
Cheers,
-Matt Helsley
More information about the xorg
mailing list