[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