[Linuxwacom-devel] [PATCH wdaemon 3/4] Add udev rules for Intuos5 series
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
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
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
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
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
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: >