[Linuxwacom-devel] [PATCH wdaemon 3/4] Add udev rules for Intuos5 series

2016-01-18 Thread Ping Cheng
It was missed in 228af55

Signed-off-by: Ping Cheng 
---
 udev/60-wacom.rules   | 5 +
 udev/wdaemon_is_uinput.sh | 5 +
 2 files changed, 10 insertions(+)

diff --git a/udev/60-wacom.rules b/udev/60-wacom.rules
index b883364..7f536e3 100644
--- a/udev/60-wacom.rules
+++ b/udev/60-wacom.rules
@@ -71,6 +71,11 @@ ENV{ID_MODEL_ID}=="00b8", 
SYMLINK+="input/wacom-tablets/intuos4-4x6 input/wacom-
 ENV{ID_MODEL_ID}=="00b9", SYMLINK+="input/wacom-tablets/intuos4-6x9 
input/wacom-tablets/intuos4-6x9-%b"
 ENV{ID_MODEL_ID}=="00ba", SYMLINK+="input/wacom-tablets/intuos4-8x13 
input/wacom-tablets/intuos4-8x13-%b"
 ENV{ID_MODEL_ID}=="00bb", SYMLINK+="input/wacom-tablets/intuos4-12x19 
input/wacom-tablets/intuos4-12x19-%b"
+ENV{ID_MODEL_ID}=="0026", SYMLINK+="input/wacom-tablets/intuos5-t-s 
input/wacom-tablets/intuos5-t-s-%b"
+ENV{ID_MODEL_ID}=="0027", SYMLINK+="input/wacom-tablets/intuos5-t-m 
input/wacom-tablets/intuos5-t-m-%b"
+ENV{ID_MODEL_ID}=="0028", SYMLINK+="input/wacom-tablets/intuos5-t-l 
input/wacom-tablets/intuos5-t-l-%b"
+ENV{ID_MODEL_ID}=="0029", SYMLINK+="input/wacom-tablets/intuos5-s 
input/wacom-tablets/intuos5-s-%b"
+ENV{ID_MODEL_ID}=="002a", SYMLINK+="input/wacom-tablets/intuos5-m 
input/wacom-tablets/intuos5-m-%b"
 ENV{ID_MODEL_ID}=="00cc", SYMLINK+="input/wacom-tablets/cintiq-21ux2 
input/wacom-tablets/cintiq-21ux2-%b"
 
 LABEL="wacom_end"
diff --git a/udev/wdaemon_is_uinput.sh b/udev/wdaemon_is_uinput.sh
index a88e0a6..d93f661 100755
--- a/udev/wdaemon_is_uinput.sh
+++ b/udev/wdaemon_is_uinput.sh
@@ -83,6 +83,11 @@ case "$vendor-$product" in
"056a-00B9") echo "intuos4-6x9"; ;;
"056a-00BA") echo "intuos4-8x13"; ;;
"056a-00BB") echo "intuos4-12x19"; ;;
+   "056a-0026") echo "intuos5-t-s"; ;;
+   "056a-0027") echo "intuos5-t-m"; ;;
+   "056a-0028") echo "intuos5-t-l"; ;;
+   "056a-0029") echo "intuos5-s"; ;;
+   "056a-002a") echo "intuos5-m"; ;;
"056a-00CC") echo "cintiq-21ux2"; ;;
"056a-00F0") echo "dtu1631"; ;;
"056a-00CE") echo "dtu2231"; ;;
-- 
1.9.1


--
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311=/4140
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


[Linuxwacom-devel] [PATCH wdaemon 4/4] Add Intuos Pro support

2016-01-18 Thread Ping Cheng
Signed-off-by: Ping Cheng 
---
 udev/60-wacom.rules   | 3 +++
 udev/wdaemon_is_uinput.sh | 3 +++
 wacom.c   | 9 +
 3 files changed, 15 insertions(+)

diff --git a/udev/60-wacom.rules b/udev/60-wacom.rules
index 7f536e3..0e62b35 100644
--- a/udev/60-wacom.rules
+++ b/udev/60-wacom.rules
@@ -76,6 +76,9 @@ ENV{ID_MODEL_ID}=="0027", 
SYMLINK+="input/wacom-tablets/intuos5-t-m input/wacom-
 ENV{ID_MODEL_ID}=="0028", SYMLINK+="input/wacom-tablets/intuos5-t-l 
input/wacom-tablets/intuos5-t-l-%b"
 ENV{ID_MODEL_ID}=="0029", SYMLINK+="input/wacom-tablets/intuos5-s 
input/wacom-tablets/intuos5-s-%b"
 ENV{ID_MODEL_ID}=="002a", SYMLINK+="input/wacom-tablets/intuos5-m 
input/wacom-tablets/intuos5-m-%b"
+ENV{ID_MODEL_ID}=="0314", SYMLINK+="input/wacom-tablets/intuospro-s 
input/wacom-tablets/intuospro-s-%b"
+ENV{ID_MODEL_ID}=="0315", SYMLINK+="input/wacom-tablets/intuospro-m 
input/wacom-tablets/intuospro-m-%b"
+ENV{ID_MODEL_ID}=="0317", SYMLINK+="input/wacom-tablets/intuospro-l 
input/wacom-tablets/intuospro-l-%b"
 ENV{ID_MODEL_ID}=="00cc", SYMLINK+="input/wacom-tablets/cintiq-21ux2 
input/wacom-tablets/cintiq-21ux2-%b"
 
 LABEL="wacom_end"
diff --git a/udev/wdaemon_is_uinput.sh b/udev/wdaemon_is_uinput.sh
index d93f661..3c56c85 100755
--- a/udev/wdaemon_is_uinput.sh
+++ b/udev/wdaemon_is_uinput.sh
@@ -88,6 +88,9 @@ case "$vendor-$product" in
"056a-0028") echo "intuos5-t-l"; ;;
"056a-0029") echo "intuos5-s"; ;;
"056a-002a") echo "intuos5-m"; ;;
+   "056a-0314") echo "intuospro-s"; ;;
+   "056a-0315") echo "intuospro-m"; ;;
+   "056a-0317") echo "intuospro-l"; ;;
"056a-00CC") echo "cintiq-21ux2"; ;;
"056a-00F0") echo "dtu1631"; ;;
"056a-00CE") echo "dtu2231"; ;;
diff --git a/wacom.c b/wacom.c
index 2f0cce9..b64915e 100644
--- a/wacom.c
+++ b/wacom.c
@@ -100,6 +100,9 @@ enum {
INTUOS5S,
INTUOS5M,
INTUOS5L,
+   INTUOSPS,
+   INTUOSPM,
+   INTUOSPL,
TABLETPC,
DTU,
INTUOS5_FG,
@@ -185,6 +188,9 @@ static struct wacom_features {
{ "Wacom Intuos5 touch L Finger",  4096,  4096,0,  0, INTUOS5_FG, 
0x28},
{ "Wacom Intuos5 S Pen",  31496, 19685, 2047, 63, INTUOS5S,   
0x29},
{ "Wacom Intuos5 M Pen",  44704, 27940, 2047, 63, INTUOS5M,   
0x2A},
+   { "Wacom Intuos Pro S Pen",   31496, 19685, 2047, 63, INTUOSPS,   
0x314},
+   { "Wacom Intuos Pro M Pen",   44704, 27940, 2047, 63, INTUOSPM,   
0x315},
+   { "Wacom Intuos Pro L Pen",   65024, 40640, 2047, 63, INTUOSPL,   
0x317},
 };
 #define WACOM_N_TABLETS (sizeof(wacom_features)/sizeof(wacom_features[0]))
 int wacom_check_type(int x)
@@ -367,9 +373,12 @@ static int wacom_set_events(struct uinput_info *info, 
struct uinput_user_dev *de
break;
case INTUOS5M:
case INTUOS5L:
+   case INTUOSPM:
+   case INTUOSPL:
set_event(info, UI_SET_KEYBIT, BTN_7);
set_event(info, UI_SET_KEYBIT, BTN_8);
case INTUOS5S:
+   case INTUOSPS:
set_event(info, UI_SET_ABSBIT, ABS_Z);
set_event(info, UI_SET_KEYBIT, BTN_0);
set_event(info, UI_SET_KEYBIT, BTN_1);
-- 
1.9.1


--
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311=/4140
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


[Linuxwacom-devel] [PATCH wdaemon 1/4] Set Cintiq and Intuos events in a new routine

2016-01-18 Thread Ping Cheng
Those events are set for all devices in current code.

Signed-off-by: Ping Cheng 
---
 wacom.c | 141 ++--
 1 file changed, 57 insertions(+), 84 deletions(-)

diff --git a/wacom.c b/wacom.c
index 4ec3290..cd89aab 100644
--- a/wacom.c
+++ b/wacom.c
@@ -193,6 +193,58 @@ int wacom_get_n_devices(void)
return WACOM_N_TABLETS;
 }
 
+static int wacom_intuos_events(struct uinput_info *info)
+{
+   struct wacom_priv *priv = wacom_priv(info);
+   struct wacom_features *features = _features[priv->type];
+
+   set_event(info, UI_SET_EVBIT, EV_REL);
+   set_event(info, UI_SET_EVBIT, EV_SYN);
+   set_event(info, UI_SET_EVBIT, EV_MSC);
+
+   set_event(info, UI_SET_RELBIT, REL_WHEEL);
+   set_event(info, UI_SET_MSCBIT, MSC_SERIAL);
+
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_PENCIL);
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_BRUSH);
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_AIRBRUSH);
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_RUBBER);
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_MOUSE);
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_LENS);
+   if (features->type != INTUOS5S &&
+   features->type != INTUOS5M &&
+   features->type != INTUOS5L)
+   set_event(info, UI_SET_KEYBIT, BTN_TOOL_FINGER);
+   set_event(info, UI_SET_KEYBIT, BTN_TOUCH);
+   set_event(info, UI_SET_KEYBIT, BTN_STYLUS2);
+   set_event(info, UI_SET_KEYBIT, BTN_RIGHT);
+   set_event(info, UI_SET_KEYBIT, BTN_LEFT);
+   set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
+   set_event(info, UI_SET_KEYBIT, BTN_SIDE);
+   set_event(info, UI_SET_KEYBIT, BTN_EXTRA);
+   if (features->type != INTUOS5S &&
+   features->type != INTUOS5M &&
+   features->type != INTUOS5L)
+   set_event(info, UI_SET_KEYBIT, BTN_7);
+   set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
+
+   if (features->type != INTUOS5S &&
+   features->type != INTUOS5M &&
+   features->type != INTUOS5L) {
+   set_event(info, UI_SET_ABSBIT, ABS_RX);
+   set_event(info, UI_SET_ABSBIT, ABS_RY);
+   }
+   set_event(info, UI_SET_ABSBIT, ABS_RZ);
+   set_event(info, UI_SET_ABSBIT, ABS_TILT_X);
+   set_event(info, UI_SET_ABSBIT, ABS_TILT_Y);
+   set_event(info, UI_SET_ABSBIT, ABS_PRESSURE);
+   set_event(info, UI_SET_ABSBIT, ABS_DISTANCE);
+   set_event(info, UI_SET_ABSBIT, ABS_WHEEL);
+   set_event(info, UI_SET_ABSBIT, ABS_THROTTLE);
+
+   return 0;
+}
+
 static int wacom_set_events(struct uinput_info *info, struct uinput_user_dev 
*dev)
 {
struct wacom_priv *priv = wacom_priv(info);
@@ -201,12 +253,12 @@ static int wacom_set_events(struct uinput_info *info, 
struct uinput_user_dev *de
/* common */
set_event(info, UI_SET_EVBIT, EV_KEY);
set_event(info, UI_SET_EVBIT, EV_ABS);
+   set_event(info, UI_SET_ABSBIT, ABS_X);
+   set_event(info, UI_SET_ABSBIT, ABS_Y);
 
/* touch devices don't have the common features of others */
switch(features->type) {
case INTUOS5_FG:
-   set_event(info, UI_SET_ABSBIT, ABS_X);
-   set_event(info, UI_SET_ABSBIT, ABS_Y);
 #ifdef ABS_MT_SLOT
set_event(info, UI_SET_ABSBIT, ABS_MT_SLOT);
set_event(info, UI_SET_ABSBIT, ABS_MT_TOUCH_MAJOR);
@@ -277,7 +329,6 @@ static int wacom_set_events(struct uinput_info *info, 
struct uinput_user_dev *de
set_event(info, UI_SET_KEYBIT, BTN_7);
/* fall thru */
case INTUOS3S:
-   set_event(info, UI_SET_KEYBIT, BTN_TOOL_FINGER);
set_event(info, UI_SET_KEYBIT, BTN_0);
set_event(info, UI_SET_KEYBIT, BTN_1);
set_event(info, UI_SET_KEYBIT, BTN_2);
@@ -285,25 +336,7 @@ static int wacom_set_events(struct uinput_info *info, 
struct uinput_user_dev *de
set_event(info, UI_SET_ABSBIT, ABS_Z);
/* fall thru */
case INTUOS:
-   set_event(info, UI_SET_EVBIT, EV_MSC);
-   set_event(info, UI_SET_EVBIT, EV_REL);
-
-   set_event(info, UI_SET_MSCBIT, MSC_SERIAL);
-
-   set_event(info, UI_SET_RELBIT, REL_WHEEL);
-
-   set_event(info, UI_SET_KEYBIT, BTN_LEFT);
-   set_event(info, UI_SET_KEYBIT, BTN_RIGHT);
-   set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
-   set_event(info, UI_SET_KEYBIT, BTN_SIDE);
-   set_event(info, UI_SET_KEYBIT, BTN_EXTRA);
-   set_event(info, UI_SET_KEYBIT, BTN_TOOL_RUBBER);
-   set_event(info, UI_SET_KEYBIT, BTN_TOOL_MOUSE);
-   set_event(info, UI_SET_KEYBIT, BTN_TOOL_BRUSH);
-   set_event(info, UI_SET_KEYBIT, BTN_TOOL_PENCIL);
-   set_event(info, UI_SET_KEYBIT, BTN_TOOL_AIRBRUSH);
-   

Re: [Linuxwacom-devel] [PATCH wdaemon 1/4] Set Cintiq and Intuos events in a new routine

2016-01-18 Thread Peter Hutterer
On Mon, Jan 18, 2016 at 03:46:37PM -0800, Ping Cheng wrote:
> Those events are set for all devices in current code.
> 
> Signed-off-by: Ping Cheng 
> ---
>  wacom.c | 141 
> ++--
>  1 file changed, 57 insertions(+), 84 deletions(-)
> 
> diff --git a/wacom.c b/wacom.c
> index 4ec3290..cd89aab 100644
> --- a/wacom.c
> +++ b/wacom.c
[...]
> - set_event(info, UI_SET_ABSBIT, ABS_Y);
> - if (features->type != INTUOS5S &&
> - features->type != INTUOS5M &&
> - features->type != INTUOS5L) {
> - set_event(info, UI_SET_ABSBIT, ABS_RX);
> - set_event(info, UI_SET_ABSBIT, ABS_RY);
> - }
> - set_event(info, UI_SET_ABSBIT, ABS_RZ);
> - set_event(info, UI_SET_ABSBIT, ABS_TILT_X);
> - set_event(info, UI_SET_ABSBIT, ABS_TILT_Y);
> - set_event(info, UI_SET_ABSBIT, ABS_PRESSURE);
> - set_event(info, UI_SET_ABSBIT, ABS_DISTANCE);
> - set_event(info, UI_SET_ABSBIT, ABS_WHEEL);
> - set_event(info, UI_SET_ABSBIT, ABS_THROTTLE);
> - set_event(info, UI_SET_ABSBIT, ABS_MISC);
> -
> - set_event(info, UI_SET_RELBIT, REL_WHEEL);
> -
> - set_event(info, UI_SET_MSCBIT, MSC_SERIAL);
> -
> - return 0;

I've readded the return 0 here, otherwise:
wacom.c: In function ‘wacom_set_events’:
wacom.c:385:1: warning: control reaches end of non-void function
[-Wreturn-type]

this one and 3/4 are pushed now

Cheers,
   Peter


>  }
>  
>  #define USB_VENDOR_ID_WACOM 0x056a
> -- 
> 1.9.1
> 

--
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311=/4140
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


[Linuxwacom-devel] Distributions are picking up releases

2016-01-18 Thread Pander
Distributions are picking up releases

see:
https://bugs.launchpad.net/ubuntu/+source/libwacom/+bug/1534965
and:
https://bugs.launchpad.net/ubuntu/+source/xf86-input-wacom/+bug/1534966

--
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311=/4140
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


Re: [Linuxwacom-devel] [PATCH wdaemon 2/4] Cleanup initial values

2016-01-18 Thread Peter Hutterer
On Mon, Jan 18, 2016 at 03:47:56PM -0800, Ping Cheng wrote:
> Group inital values by device types. Also, on kernels older than
> 2.6.36, BTN_TOOL_FINGER is borrowed to indicate Expresskey events.

I'm not happy with that, tbh. Is there another way to check for this? anyone
still running 2.6.36 is likely running an enterprise kernel where version
checks are meaningless.

> 
> Signed-off-by: Ping Cheng 
> ---
>  wacom.c | 59 ---
>  1 file changed, 16 insertions(+), 43 deletions(-)
> 
> diff --git a/wacom.c b/wacom.c
> index cd89aab..2f0cce9 100644
> --- a/wacom.c
> +++ b/wacom.c
> @@ -19,6 +19,10 @@
>  #include 
>  #endif
>  
> +# ifndef LINUX_VERSION_CODE
> +# include 
> +# endif
> +
>  #include 
>  #include 
>  #include 
> @@ -83,21 +87,21 @@ enum {
>   PTU,
>   PL,
>   INTUOS,
> - INTUOS3S,
> - INTUOS3,
> - INTUOS3L,
>   CINTIQ,
>   BEE,
>   MO,
> - TABLETPC,
> + WACOM_21UX2,
> + INTUOS3S,
> + INTUOS3,
> + INTUOS3L,
>   INTUOS4S,
>   INTUOS4,
>   INTUOS4L,
> - WACOM_21UX2,
> - DTU,
>   INTUOS5S,
>   INTUOS5M,
>   INTUOS5L,
> + TABLETPC,
> + DTU,
>   INTUOS5_FG,

any reason you're splitting the INTUOS5_FG from the other INTUOS5 enums?

>   MAX_TYPE
>  };
> @@ -211,10 +215,10 @@ static int wacom_intuos_events(struct uinput_info *info)
>   set_event(info, UI_SET_KEYBIT, BTN_TOOL_RUBBER);
>   set_event(info, UI_SET_KEYBIT, BTN_TOOL_MOUSE);
>   set_event(info, UI_SET_KEYBIT, BTN_TOOL_LENS);
> - if (features->type != INTUOS5S &&
> - features->type != INTUOS5M &&
> - features->type != INTUOS5L)
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)
> + if (features->type > INTUOS)
>   set_event(info, UI_SET_KEYBIT, BTN_TOOL_FINGER);
> +#endif
>   set_event(info, UI_SET_KEYBIT, BTN_TOUCH);
>   set_event(info, UI_SET_KEYBIT, BTN_STYLUS2);
>   set_event(info, UI_SET_KEYBIT, BTN_RIGHT);
> @@ -222,15 +226,10 @@ static int wacom_intuos_events(struct uinput_info *info)
>   set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
>   set_event(info, UI_SET_KEYBIT, BTN_SIDE);
>   set_event(info, UI_SET_KEYBIT, BTN_EXTRA);
> - if (features->type != INTUOS5S &&
> - features->type != INTUOS5M &&
> - features->type != INTUOS5L)
> - set_event(info, UI_SET_KEYBIT, BTN_7);
>   set_event(info, UI_SET_KEYBIT, BTN_MIDDLE);
>  
> - if (features->type != INTUOS5S &&
> - features->type != INTUOS5M &&
> - features->type != INTUOS5L) {
> + if (features->type >= CINTIQ &&
> + features->type <= INTUOS3L) {

I really dislike using enums for > and <=, it's not very expressive. it'd be
trivial to have a switch here with the list of tablets that need this. given
how often tablets are released (and wdaemon is updated) this is cheaper than
making people double-check the range.

plus there's the argument to be made: why the set_event can't be done
automatically in an absmax function. But this is wdaemon, probably better
not to touch it too much...

Cheers,
   Peter


>   set_event(info, UI_SET_ABSBIT, ABS_RX);
>   set_event(info, UI_SET_ABSBIT, ABS_RY);
>   }
> @@ -414,7 +413,6 @@ static int wacom_set_initial_values(struct uinput_info 
> *info,
>   dev->absmax[ABS_WHEEL] = 71;
>   /* fall through */
>   case G4:
> - /* fall through */
>   case GRAPHIRE:
>   break;
>  
> @@ -427,40 +425,15 @@ static int wacom_set_initial_values(struct uinput_info 
> *info,
>   /* fall through */
>   case INTUOS3S:
>   dev->absmax[ABS_RX] = 4096;
> - dev->absmax[ABS_Z] = 899;
> - dev->absmin[ABS_Z] = -900;
> - /* fall through */
> - case INTUOS:
> - dev->absmax[ABS_WHEEL] = 1023;
> - dev->absmax[ABS_TILT_X] = 127;
> - dev->absmax[ABS_TILT_Y] = 127;
> - dev->absmin[ABS_RZ] = -900;
> - dev->absmax[ABS_RZ] = 899;
> - dev->absmin[ABS_THROTTLE] = -1023;
> - dev->absmax[ABS_THROTTLE] = 1023;
> - break;
> - case PL:
> - case PTU:
> - break;
> - case PENPARTNER:
> - break;
> - case TABLETPC:
> - dev->absmax[ABS_RX] = 1023;
> - dev->absmax[ABS_RY] = 1023;
>   case INTUOS4S:
>   case INTUOS4:
>   case INTUOS4L:
> - dev->absmin[ABS_Z] = -900;
> - dev->absmax[ABS_Z] = 899;
> - break;
>   case INTUOS5S:
>   case INTUOS5M:
>   case INTUOS5L:
> - dev->absfuzz[ABS_X] = 4;
> - dev->absfuzz[ABS_Y] = 4;
> - dev->absfuzz[ABS_Y] = 4;
>   dev->absmin[ABS_Z] = -900;
>   dev->absmax[ABS_Z] = 899;
> + case INTUOS:
>