If you add new parameter to xsetwacom, you should also increment total
parameters count in test_parameter_number() in xsetwacom.c. Otherwise,
the driver will not pass `make check`.

В Птн, 06/01/2012 в 17:57 -0800, Ping Cheng пишет:
> This property enables/disables multi-touch events on a multi-touch
> device. When MT is disabled, the device behaves like a single
> touch device. The corresponding xorg.conf option is also added.
> 
> Signed-off-by: Ping Cheng <pi...@wacom.com>
> ---
>  include/wacom-properties.h |    3 +++
>  man/wacom.man              |    3 +++
>  src/wcmCommon.c            |   19 ++++++++++++++++---
>  src/wcmUSB.c               |    9 ++++++---
>  src/wcmValidateDevice.c    |    4 ++++
>  src/wcmXCommand.c          |   18 +++++++++++++++++-
>  src/xf86WacomDefs.h        |    3 ++-
>  tools/xsetwacom.c          |   10 ++++++++++
>  8 files changed, 61 insertions(+), 8 deletions(-)
> 
> diff --git a/include/wacom-properties.h b/include/wacom-properties.h
> index 0bb84b1..aa43d4d 100644
> --- a/include/wacom-properties.h
> +++ b/include/wacom-properties.h
> @@ -77,6 +77,9 @@
>  #define WACOM_PROP_TOUCH "Wacom Enable Touch"
>  
>  /* 8 bit, 1 values */
> +#define WACOM_PROP_ENABLE_MT "Wacom Enable Multi-Touch"
> +
> +/* 8 bit, 1 values */
>  #define WACOM_PROP_ENABLE_GESTURE "Wacom Enable Touch Gesture"
>  
>  /* 32 bit, 3 values, zoom, rotate, tap parameters */
> diff --git a/man/wacom.man b/man/wacom.man
> index 3d4a143..04d84a7 100644
> --- a/man/wacom.man
> +++ b/man/wacom.man
> @@ -225,6 +225,9 @@ sets the pressure threshold used to generate a button 1 
> events of stylus.
>  The threshold applies to the normalised pressure range of [0..2048].
>  The default is 27.
>  .TP 4
> +.B Option \fI"Multi-Touch"\fP \fI"bool"\fP
> +Enable or disable multi-touch events on the device. Default: on.
> +.TP 4
>  .B Option \fI"Gesture"\fP \fI"bool"\fP
>  Enable or disable gesture support on the device. Default: off unless the
>  tablet supports multi-touch.
> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> index 0f041e3..cf1e5c2 100644
> --- a/src/wcmCommon.c
> +++ b/src/wcmCommon.c
> @@ -1,6 +1,6 @@
>  /*
>   * Copyright 1995-2002 by Frederic Lepied, France. <lep...@xfree86.org>
> - * Copyright 2002-2010 by Ping Cheng, Wacom. <pi...@wacom.com>
> + * Copyright 2002-2012 by Ping Cheng, Wacom. <pi...@wacom.com>
>   *
>   * This program is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU General Public License
> @@ -1009,8 +1009,21 @@ void wcmEvent(WacomCommonPtr common, unsigned int 
> channel,
>       pChannel->valid.state = ds; /*save last raw sample */
>       if (pChannel->nSamples < common->wcmRawSample) ++pChannel->nSamples;
>  
> -     if ((ds.device_type == TOUCH_ID) && common->wcmTouch)
> -             wcmGestureFilter(priv, channel);
> +     if ((ds.device_type == TOUCH_ID) && (common->wcmTouch))
> +     {
> +             /* enable left click for single touch touchscreen */
> +/*           if ((!common->wcmMT || 
> +                     TabletSetFeature(priv->common, WCM_1FGT)) &&
> +                     TabletHasFeature(priv->common, WCM_LCD))
> +             {
> +                     if (ds.proximity)
> +                             pChannel->valid.state.buttons |= 1;
> +                     else
> +                             pChannel->valid.state.buttons &= ~1;
> +             }
> +             else
> +*/                   wcmGestureFilter(priv, channel);
> +     }
>  
>       /* For touch, only first finger moves the cursor */
>       if ((ds.device_type == TOUCH_ID && common->wcmTouch && !channel) ||
> diff --git a/src/wcmUSB.c b/src/wcmUSB.c
> index ba88696..9ace8a1 100644
> --- a/src/wcmUSB.c
> +++ b/src/wcmUSB.c
> @@ -582,6 +582,8 @@ int usbWcmGetRanges(InputInfoPtr pInfo)
>       if (ISBITSET(abs, ABS_MT_SLOT))
>       {
>               private->wcmUseMT = 1;
> +             if (!common->wcmMT)
> +                     private->wcmUseMT = 0;
>  
>               /* pen and MT on the same logical port */
>               if (ISBITSET(common->wcmKeys, BTN_TOOL_PEN))
> @@ -1210,9 +1212,10 @@ static int usbParseKeyEvent(WacomCommonPtr common,
>                 case BTN_TOUCH:
>                       if (common->wcmProtocolLevel == WCM_PROTOCOL_GENERIC)
>                       {
> -                             /* 1FG USB touchscreen */
> +                             /* 1FG USB touchscreen or MT disabled */
>                               if (!TabletHasFeature(common, WCM_PEN) &&
> -                                     TabletHasFeature(common, WCM_1FGT) &&
> +                                     (TabletHasFeature(common, WCM_1FGT) ||
> +                                     !common->wcmMT) &&
>                                       TabletHasFeature(common, WCM_LCD))
>                               {
>                                       DBG(6, common,
> @@ -1525,7 +1528,7 @@ static void usbDispatchEvents(InputInfoPtr pInfo)
>                               channel_change |= 1;
>                       else if (usbParseAbsMTEvent(common, event))
>                       {
> -                             if (private->wcmMTChannel == 0)
> +                             if (private->wcmMTChannel == 0 || 
> !common->wcmMT)
>                                       channel_change |= 1;
>                               else if (private->wcmMTChannel == 1)
>                                       mt_channel_change |= 1;
> diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c
> index 0e0e57a..af2653e 100644
> --- a/src/wcmValidateDevice.c
> +++ b/src/wcmValidateDevice.c
> @@ -885,6 +885,10 @@ Bool wcmPreInitParseOptions(InputInfoPtr pInfo, Bool 
> is_primary,
>                               "by a touch tool.\n", pInfo->name);
>       }
>  
> +     /* set MT support on for all devices */
> +     common->wcmMT = xf86SetBoolOption(pInfo->options,
> +                                              "MultiTouch", TRUE);
> +
>       /* 2FG touch device */
>       if (TabletHasFeature(common, WCM_2FGT))
>       {
> diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c
> index 40393dc..72fbcb7 100644
> --- a/src/wcmXCommand.c
> +++ b/src/wcmXCommand.c
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright 2007-2010 by Ping Cheng, Wacom. <pi...@wacom.com>
> + * Copyright 2007-2012 by Ping Cheng, Wacom. <pi...@wacom.com>
>   * 
>   * This program is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU General Public License
> @@ -92,6 +92,7 @@ Atom prop_cursorprox;
>  Atom prop_threshold;
>  Atom prop_suppress;
>  Atom prop_touch;
> +Atom prop_mt;
>  Atom prop_gesture;
>  Atom prop_gesture_param;
>  Atom prop_hover;
> @@ -209,6 +210,9 @@ void InitWcmDeviceProperties(InputInfoPtr pInfo)
>       values[0] = common->wcmTouch;
>       prop_touch = InitWcmAtom(pInfo->dev, WACOM_PROP_TOUCH, XA_INTEGER, 8, 
> 1, values);
>  
> +     values[0] = common->wcmMT;
> +     prop_mt = InitWcmAtom(pInfo->dev, WACOM_PROP_ENABLE_MT, XA_INTEGER, 8, 
> 1, values);
> +
>       if (IsStylus(priv)) {
>               values[0] = !common->wcmTPCButton;
>               prop_hover = InitWcmAtom(pInfo->dev, WACOM_PROP_HOVER, 
> XA_INTEGER, 8, 1, values);
> @@ -779,6 +783,18 @@ int wcmSetProperty(DeviceIntPtr dev, Atom property, 
> XIPropertyValuePtr prop,
>  
>               if (!checkonly && common->wcmTouch != values[0])
>                       common->wcmTouch = values[0];
> +     } else if (property == prop_mt)
> +     {
> +             CARD8 *values = (CARD8*)prop->data;
> +
> +             if (prop->size != 1 || prop->format != 8)
> +                     return BadValue;
> +
> +             if ((values[0] != 0) && (values[0] != 1))
> +                     return BadValue;
> +
> +             if (!checkonly && common->wcmMT != values[0])
> +                     common->wcmMT = values[0];
>       } else if (property == prop_gesture)
>       {
>               CARD8 *values = (CARD8*)prop->data;
> diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
> index 2f3f7b4..15e9df5 100644
> --- a/src/xf86WacomDefs.h
> +++ b/src/xf86WacomDefs.h
> @@ -1,6 +1,6 @@
>  /*
>   * Copyright 1995-2002 by Frederic Lepied, France. <lep...@xfree86.org>
> - * Copyright 2002-2010 by Ping Cheng, Wacom. <pi...@wacom.com>
> + * Copyright 2002-2012 by Ping Cheng, Wacom. <pi...@wacom.com>
>   * 
>   * This program is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU General Public License
> @@ -455,6 +455,7 @@ struct _WacomCommonRec
>       int wcmRotate;               /* rotate screen (for TabletPC) */
>       int wcmThreshold;            /* Threshold for button pressure */
>       WacomChannel wcmChannel[MAX_CHANNELS]; /* channel device state */
> +     BOOL wcmMT;                  /* only ST will be send when it is false */
>  
>       WacomDeviceClassPtr wcmDevCls; /* device class functions */
>       WacomModelPtr wcmModel;        /* model-specific functions */
> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> index 9ab285b..3af2672 100644
> --- a/tools/xsetwacom.c
> +++ b/tools/xsetwacom.c
> @@ -214,6 +214,16 @@ static param_t parameters[] =
>               .prop_flags = PROP_FLAG_BOOLEAN
>       },
>       {
> +             .name = "MT",
> +             .desc = "Turns on/off multi-touch events "
> +             "(default is on). ",
> +             .prop_name = WACOM_PROP_ENABLE_MT,
> +             .prop_format = 8,
> +             .prop_offset = 0,
> +             .arg_count = 1,
> +             .prop_flags = PROP_FLAG_BOOLEAN
> +     },
> +     {
>               .name = "ZoomDistance",
>               .desc = "Minimum distance for a zoom gesture "
>               "(default is 50). ",
> -- 
> 1.7.6.4
> 
> 
> ------------------------------------------------------------------------------
> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
> infrastructure or vast IT resources to deliver seamless, secure access to
> virtual desktops. With this all-in-one solution, easily deploy virtual 
> desktops for less than the cost of PCs and save 60% on VDI infrastructure 
> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> _______________________________________________
> Linuxwacom-devel mailing list
> Linuxwacom-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel



------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to