Discussion:
[Linuxwacom-devel] [PATCH libwacom] data: Add data and SVG files for MobileStudio Pro
Jason Gerecke
2016-11-11 17:59:57 UTC
Permalink
Note that the MobileStudio Pro introduces a new "Pro Pen" which supports
8K pressure levels. The ID of this pen is identical to that of a (less
featureful) pen used by the Intuos2, so we have to slightly modify the
existing entry. Ideally, we would have some way to define multiple pens
which share the same IDs (which apparently, according to the technical
experts, are not guaranteed unique outside of a hardware generation).
Such a change will require serious design and planning that are outside
of the immediate scope of this patch.

Signed-off-by: Jason Gerecke <***@wacom.com>
---
data/layouts/mobilestudio-pro-13.svg | 279 +++++++++++++++++++++++++++++
data/layouts/mobilestudio-pro-16.svg | 331 +++++++++++++++++++++++++++++++++++
data/libwacom.stylus | 14 +-
data/mobilestudio-pro-13.tablet | 58 ++++++
data/mobilestudio-pro-16.tablet | 60 +++++++
5 files changed, 740 insertions(+), 2 deletions(-)
create mode 100644 data/layouts/mobilestudio-pro-13.svg
create mode 100644 data/layouts/mobilestudio-pro-16.svg
create mode 100644 data/mobilestudio-pro-13.tablet
create mode 100644 data/mobilestudio-pro-16.tablet

diff --git a/data/layouts/mobilestudio-pro-13.svg b/data/layouts/mobilestudio-pro-13.svg
new file mode 100644
index 0000000..172141b
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-13.svg
@@ -0,0 +1,279 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ style="color:#000000;stroke:#7f7f7f;fill:none;stroke-width:.25;font-size:8"
+ id="intuos-pro-m"
+ width="320"
+ height="208">
+ <title
+ id="title">Wacom MobileStudio Pro 13</title>
+ <g>
+ <circle
+ id="Ring"
+ class="Ring TouchRing"
+ cx="34"
+ cy="104"
+ r="19.5" />
+ <path
+ id="LeaderRingCW"
+ class="RingCW Ring Leader"
+ d="M 12 90 L 12 75 L 61 75 L 61 62 L 70 62" />
+ <text
+ id="LabelRingCW"
+ class="RingCW Ring Label"
+ x="72"
+ y="62"
+ style="text-anchor:start;">CW</text>
+ <g transform="rotate(-90,31,80) translate(-20,-20)">
+ <path
+ id="RingCW"
+ class="RingCW Button"
+ d="M 31 80 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 1 5 1.5 a 6.5 6.5 0 0 0 -5 -0.5 l 0 1 z" />
+ </g>
+ <path
+ id="LeaderRingCCW"
+ class="RingCCW Ring Leader"
+ d="M 12 118 L 12 133 L 61 133 L 61 146 L 70 146" />
+ <text
+ id="LabelRingCCW"
+ class="RingCCW Ring Label"
+ x="72"
+ y="146"
+ style="text-anchor:start;">CCW</text>
+ <g transform="rotate(90,31,128) translate(-20,20)">
+ <path
+ id="RingCCW"
+ class="RingCCW Button"
+ d="M 31 128 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 0 5 -1 a 6.5 6.5 0 0 1 -5 2 l 0 1 z" />
+ </g>
+ </g>
+ <g>
+ <rect
+ id="ButtonA"
+ class="A Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="33"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderA"
+ class="A Leader"
+ d="M 47 39 L 49 39 L 49 20 L 60 20" />
+ <text
+ id="LabelA"
+ class="A Label"
+ x="62"
+ y="20"
+ style="text-anchor:start;">A</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonB"
+ class="B Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="47"
+ width="20"
+ height="12" />
+ <circle
+ id="DotB1"
+ cx="34"
+ cy="53"
+ r=".75" />
+ <path
+ id="LeaderB"
+ class="B Leader"
+ d="M 47 53 L 53 53 L 53 34 L 60 34" />
+ <text
+ id="LabelB"
+ class="B Label"
+ x="62"
+ y="34"
+ style="text-anchor:start;">B</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonC"
+ class="C Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="61"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderC"
+ class="C Leader"
+ d="M 47 67 L 57 67 L 57 48 L 60 48" />
+ <text
+ id="LabelC"
+ class="C Label"
+ x="62"
+ y="48"
+ style="text-anchor:start;">C</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonD"
+ class="D Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="135"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderD"
+ class="D Leader"
+ d="M 47 141 L 57 141 L 57 160 L 60 160" />
+ <text
+ id="LabelD"
+ class="D Label"
+ x="62"
+ y="160"
+ style="text-anchor:start;">D</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonE"
+ class="E Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="149"
+ width="20"
+ height="12" />
+ <circle
+ id="DotE1"
+ cx="34"
+ cy="155"
+ r=".75" />
+ <path
+ id="LeaderE"
+ class="E Leader"
+ d="M 47 155 L 53 155 L 53 174 L 60 174" />
+ <text
+ id="LabelE"
+ class="E Label"
+ x="62"
+ y="174"
+ style="text-anchor:start;">E</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonF"
+ class="F Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="163"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderF"
+ class="F Leader"
+ d="M 47 169 L 49 169 L 49 188 L 60 188" />
+ <text
+ id="LabelF"
+ class="F Label"
+ x="62"
+ y="188"
+ style="text-anchor:start;">F</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonG"
+ class="G Button"
+ cx="34"
+ cy="104"
+ r="9.5" />
+ <path
+ id="LeaderG"
+ class="G Leader"
+ d="M 25 95 L 20 85 L 20 80 L 65 80 L 65 76 L 70 76" />
+ <text
+ id="LabelG"
+ class="G Label"
+ x="72"
+ y="76"
+ style="text-anchor:start;">G</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonH"
+ class="H ModeSwitch Button"
+ cx="48.5"
+ cy="104"
+ r=".75" />
+ <path
+ id="LeaderH"
+ class="H ModeSwitch Leader"
+ d="M 56 104 L 70 104" />
+ <text
+ id="LabelH"
+ class="H ModeSwitch Label"
+ x="72"
+ y="104"
+ style="text-anchor:start;">H</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonI"
+ class="I ModeSwitch Button"
+ cx="34"
+ cy="89.5"
+ r=".75" />
+ <path
+ id="LeaderI"
+ class="I ModeSwitch Leader"
+ d="M 38 90 L 70 90" />
+ <text
+ id="LabelI"
+ class="I ModeSwitch Label"
+ x="72"
+ y="90"
+ style="text-anchor:start;">I</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonJ"
+ class="J ModeSwitch Button"
+ cx="19.5"
+ cy="104"
+ r=".75" />
+ <path
+ id="LeaderJ"
+ class="J ModeSwitch Leader"
+ d="M 19 108 L 19 127 L 65 127 L 65 132 L 70 132" />
+ <text
+ id="LabelJ"
+ class="J ModeSwitch Label"
+ x="72"
+ y="132"
+ style="text-anchor:start;">J</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonK"
+ class="K ModeSwitch Button"
+ cx="34"
+ cy="118.5"
+ r=".75" />
+ <path
+ id="LeaderK"
+ class="K ModeSwitch Leader"
+ d="M 38 118 L 70 118" />
+ <text
+ id="LabelK"
+ class="K ModeSwitch Label"
+ x="72"
+ y="118"
+ style="text-anchor:start;">K</text>
+ </g>
+</svg>
diff --git a/data/layouts/mobilestudio-pro-16.svg b/data/layouts/mobilestudio-pro-16.svg
new file mode 100644
index 0000000..afe56a6
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-16.svg
@@ -0,0 +1,331 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ style="color:#000000;stroke:#7f7f7f;fill:none;stroke-width:.25;font-size:8"
+ id="intuos-pro-m"
+ width="380"
+ height="250">
+ <title
+ id="title">Wacom MobileStudio Pro 16</title>
+ <g>
+ <circle
+ id="Ring"
+ class="Ring TouchRing"
+ cx="34"
+ cy="125"
+ r="19.5" />
+ <path
+ id="LeaderRingCW"
+ class="RingCW Ring Leader"
+ d="M 12 111 L 12 96 L 65 96 L 65 83 L 73 83" />
+ <text
+ id="LabelRingCW"
+ class="RingCW Ring Label"
+ x="75"
+ y="83"
+ style="text-anchor:start;">CW</text>
+ <g transform="rotate(-90,31,111) translate(-10,-20)">
+ <path
+ id="RingCW"
+ class="RingCW Button"
+ d="M 31 111 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 1 5 1.5 a 6.5 6.5 0 0 0 -5 -0.5 l 0 1 z" />
+ </g>
+ <path
+ id="LeaderRingCCW"
+ class="RingCCW Ring Leader"
+ d="M 12 139 L 12 154 L 65 154 L 65 167 L 73 167" />
+ <text
+ id="LabelRingCCW"
+ class="RingCCW Ring Label"
+ x="75"
+ y="167"
+ style="text-anchor:start;">CCW</text>
+ <g transform="rotate(90,31,139) translate(-10,20)">
+ <path
+ id="RingCCW"
+ class="RingCCW Button"
+ d="M 31 139 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 0 5 -1 a 6.5 6.5 0 0 1 -5 2 l 0 1 z" />
+ </g>
+ </g>
+ <g>
+ <rect
+ id="ButtonA"
+ class="A Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="40"
+ width="20"
+ height="12" />
+ <circle
+ id="DotA1"
+ cx="34"
+ cy="46"
+ r=".75" />
+ <path
+ id="LeaderA"
+ class="A Leader"
+ d="M 47 46 L 49 46 L 49 27 L 63 27" />
+ <text
+ id="LabelA"
+ class="A Label"
+ x="65"
+ y="27"
+ style="text-anchor:start;">A</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonB"
+ class="B Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="54"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderB"
+ class="B Leader"
+ d="M 46 60 L 53 60 L 53 41 L 63 41" />
+ <text
+ id="LabelB"
+ class="B Label"
+ x="65"
+ y="41"
+ style="text-anchor:start;">B</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonC"
+ class="C Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="68"
+ width="20"
+ height="12" />
+ <circle
+ id="DotC1"
+ cx="34"
+ cy="74"
+ r=".75" />
+ <path
+ id="LeaderC"
+ class="C Leader"
+ d="M 46 74 L 57 74 L 57 55 L 63 55" />
+ <text
+ id="LabelC"
+ class="C Label"
+ x="65"
+ y="55"
+ style="text-anchor:start;">C</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonD"
+ class="D Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="82"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderD"
+ class="D Leader"
+ d="M 46 88 L 61 88 L 61 69 L 63 69" />
+ <text
+ id="LabelD"
+ class="D Label"
+ x="65"
+ y="69"
+ style="text-anchor:start;">D</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonE"
+ class="E Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="156"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderE"
+ class="E Leader"
+ d="M 46 162 L 61 162 L 61 181 L 63 181" />
+ <text
+ id="LabelE"
+ class="E Label"
+ x="65"
+ y="181"
+ style="text-anchor:start;">E</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonF"
+ class="F Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="170"
+ width="20"
+ height="12" />
+ <circle
+ id="DotF1"
+ cx="34"
+ cy="176"
+ r=".75" />
+ <path
+ id="LeaderF"
+ class="F Leader"
+ d="M 46 176 L 57 176 L 57 195 L 63 195" />
+ <text
+ id="LabelF"
+ class="F Label"
+ x="65"
+ y="195"
+ style="text-anchor:start;">F</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonG"
+ class="G Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="184"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderG"
+ class="G Leader"
+ d="M 46 190 L 53 190 L 53 209 L 63 209" />
+ <text
+ id="LabelG"
+ class="G Label"
+ x="65"
+ y="209"
+ style="text-anchor:start;">G</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonH"
+ class="H Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="198"
+ width="20"
+ height="12" />
+ <circle
+ id="DotF1"
+ cx="34"
+ cy="204"
+ r=".75" />
+ <path
+ id="LeaderH"
+ class="H Leader"
+ d="M 46 204 L 49 204 L 49 223 L 63 223" />
+ <text
+ id="LabelH"
+ class="H Label"
+ x="65"
+ y="223"
+ style="text-anchor:start;">H</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonI"
+ class="I Button"
+ cx="34"
+ cy="125"
+ r="9.5" />
+ <path
+ id="LeaderI"
+ class="I Leader"
+ d="M 25 116 L 20 106 L 20 101 L 69 101 L 69 97 L 73 97" />
+ <text
+ id="LabelI"
+ class="I Label"
+ x="75"
+ y="97"
+ style="text-anchor:start;">I</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonJ"
+ class="J ModeSwitch Button"
+ cx="48.5"
+ cy="125"
+ r=".75" />
+ <path
+ id="LeaderJ"
+ class="J ModeSwitch Leader"
+ d="M 56 125 L 73 125" />
+ <text
+ id="LabelJ"
+ class="J ModeSwitch Label"
+ x="75"
+ y="125"
+ style="text-anchor:start;">J</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonK"
+ class="K ModeSwitch Button"
+ cx="34"
+ cy="110.5"
+ r=".75" />
+ <path
+ id="LeaderK"
+ class="K ModeSwitch Leader"
+ d="M 38 111 L 73 111" />
+ <text
+ id="LabelK"
+ class="K ModeSwitch Label"
+ x="75"
+ y="111"
+ style="text-anchor:start;">K</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonL"
+ class="L ModeSwitch Button"
+ cx="19.5"
+ cy="125"
+ r=".75" />
+ <path
+ id="LeaderL"
+ class="L ModeSwitch Leader"
+ d="M 19 129 L 19 148 L 69 148 L 69 153 L 73 153" />
+ <text
+ id="LabelL"
+ class="L ModeSwitch Label"
+ x="75"
+ y="153"
+ style="text-anchor:start;">L</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonM"
+ class="M ModeSwitch Button"
+ cx="34"
+ cy="139.5"
+ r=".75" />
+ <path
+ id="LeaderM"
+ class="M ModeSwitch Leader"
+ d="M 38 139 L 73 139" />
+ <text
+ id="LabelM"
+ class="M ModeSwitch Label"
+ x="75"
+ y="139"
+ style="text-anchor:start;">M</text>
+ </g>
+</svg>
diff --git a/data/libwacom.stylus b/data/libwacom.stylus
index 21c1949..c063370 100644
--- a/data/libwacom.stylus
+++ b/data/libwacom.stylus
@@ -79,8 +79,11 @@ Type=General

[0x842]
# Intuos2
-Name=Designer Pen
-HasEraser=false
+#Name=Designer Pen
+#HasEraser=false
+# MobileStudio Pro
+Name=Pro Pen
+HasEraser=true
Buttons=2
Axes=Tilt;Pressure;Distance;
Type=General
@@ -209,6 +212,13 @@ Buttons=2
Axes=Tilt;Pressure;Distance;
Type=Classic

+[0x84a]
+Name=Pro Pen Eraser
+IsEraser=true
+Buttons=2
+Axes=Tilt;Pressure;Distance;
+Type=General
+
[0x85a]
# Intuos2
Name=Grip Pen Eraser
diff --git a/data/mobilestudio-pro-13.tablet b/data/mobilestudio-pro-13.tablet
new file mode 100644
index 0000000..1b06421
--- /dev/null
+++ b/data/mobilestudio-pro-13.tablet
@@ -0,0 +1,58 @@
+# Wacom
+# MobileStudio Pro 13
+# DTH-W1320
+#
+# Button Map:
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# | |
+# I | |
+# J G H | DISPLAY |
+# K | |
+# | |
+# D | |
+# E | |
+# F | |
+# | |
+# *-----------------------*
+#
+# Touch Ring Map:
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons H, I, J, K are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 13
+Class=Cintiq
+DeviceMatch=usb:056a:034d
+PairedID=usb:056a:034a
+Width=12
+Height=7
+Layout=mobilestudio-pro-13.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=11
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=H;I;J;K
diff --git a/data/mobilestudio-pro-16.tablet b/data/mobilestudio-pro-16.tablet
new file mode 100644
index 0000000..9569d11
--- /dev/null
+++ b/data/mobilestudio-pro-16.tablet
@@ -0,0 +1,60 @@
+# Wacom
+# MobileStudio Pro 16
+# DTH-W1620
+#
+# Button Map:
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# D | |
+# | |
+# K | |
+# L I J | DISPLAY |
+# M | |
+# | |
+# E | |
+# F | |
+# G | |
+# H | |
+# | |
+# *-----------------------*
+#
+# Touch Ring Map:
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons J, K, L, M are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 16
+Class=Cintiq
+DeviceMatch=usb:056a:034e
+PairedID=usb:056a:034b
+Width=14
+Height=8
+Layout=mobilestudio-pro-16.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=13
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K;L;M
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=J;K;L;M
--
2.10.1
Peter Hutterer
2016-11-14 01:04:28 UTC
Permalink
Post by Jason Gerecke
Note that the MobileStudio Pro introduces a new "Pro Pen" which supports
8K pressure levels. The ID of this pen is identical to that of a (less
featureful) pen used by the Intuos2, so we have to slightly modify the
existing entry. Ideally, we would have some way to define multiple pens
which share the same IDs (which apparently, according to the technical
experts, are not guaranteed unique outside of a hardware generation).
Such a change will require serious design and planning that are outside
of the immediate scope of this patch.
---
data/layouts/mobilestudio-pro-13.svg | 279 +++++++++++++++++++++++++++++
data/layouts/mobilestudio-pro-16.svg | 331 +++++++++++++++++++++++++++++++++++
data/libwacom.stylus | 14 +-
data/mobilestudio-pro-13.tablet | 58 ++++++
data/mobilestudio-pro-16.tablet | 60 +++++++
5 files changed, 740 insertions(+), 2 deletions(-)
create mode 100644 data/layouts/mobilestudio-pro-13.svg
create mode 100644 data/layouts/mobilestudio-pro-16.svg
create mode 100644 data/mobilestudio-pro-13.tablet
create mode 100644 data/mobilestudio-pro-16.tablet
diff --git a/data/layouts/mobilestudio-pro-13.svg b/data/layouts/mobilestudio-pro-13.svg
new file mode 100644
index 0000000..172141b
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-13.svg
[...]
Post by Jason Gerecke
diff --git a/data/libwacom.stylus b/data/libwacom.stylus
index 21c1949..c063370 100644
--- a/data/libwacom.stylus
+++ b/data/libwacom.stylus
@@ -79,8 +79,11 @@ Type=General
[0x842]
# Intuos2
-Name=Designer Pen
-HasEraser=false
+#Name=Designer Pen
+#HasEraser=false
+# MobileStudio Pro
+Name=Pro Pen
+HasEraser=true
I think this should warrant another entry, given that these files are quite
static. If we replace the Intuos2 entry (fair enough, it's not exactly the
most recent hardware) either drop all references and let the git hisotry
handle the rest or duplicate the whole entry as comment and add a new one
for the MSP:

# Superseded by 0x842 for the Mobile Studio Pro
# [0x842]
# Intuos2
# Name=Designer Pen
# HasEraser=false
...
Post by Jason Gerecke
Buttons=2
Axes=Tilt;Pressure;Distance;
Type=General
@@ -209,6 +212,13 @@ Buttons=2
Axes=Tilt;Pressure;Distance;
Type=Classic
+[0x84a]
+Name=Pro Pen Eraser
+IsEraser=true
+Buttons=2
+Axes=Tilt;Pressure;Distance;
+Type=General
+
[0x85a]
# Intuos2
Name=Grip Pen Eraser
diff --git a/data/mobilestudio-pro-13.tablet b/data/mobilestudio-pro-13.tablet
new file mode 100644
index 0000000..1b06421
--- /dev/null
+++ b/data/mobilestudio-pro-13.tablet
@@ -0,0 +1,58 @@
+# Wacom
+# MobileStudio Pro 13
+# DTH-W1320
+#
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# | |
+# I | |
+# J G H | DISPLAY |
+# K | |
+# | |
+# D | |
+# E | |
+# F | |
+# | |
+# *-----------------------*
+#
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons H, I, J, K are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 13
+Class=Cintiq
+DeviceMatch=usb:056a:034d
+PairedID=usb:056a:034a
+Width=12
+Height=7
+Layout=mobilestudio-pro-13.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=11
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=H;I;J;K
I've pushed the 22HDT patch for this already, so IMO we should continue the
same here, add the entry and wait for userspace to catch up.

Cheers,
Peter
Jason Gerecke
2016-11-14 17:43:54 UTC
Permalink
Note that the MobileStudio Pro introduces a new "Pro Pen" which supports
8K pressure levels. The ID of this pen is identical to that of a (less
featureful) pen used by the Intuos2, so we have to slightly modify the
existing entry. Ideally, we would have some way to define multiple pens
which share the same IDs (which apparently, according to the technical
experts, are not guaranteed unique outside of a hardware generation).
Such a change will require serious design and planning that are outside
of the immediate scope of this patch.

Signed-off-by: Jason Gerecke <***@wacom.com>
---
Changes from v1:
* Fully (rather than partially) comment out 0x842 Intuos2 "Designer Pen"
* Add "MobileStudio Pro" comment to 0x84a eraser

data/layouts/mobilestudio-pro-13.svg | 279 +++++++++++++++++++++++++++++
data/layouts/mobilestudio-pro-16.svg | 331 +++++++++++++++++++++++++++++++++++
data/libwacom.stylus | 20 ++-
data/mobilestudio-pro-13.tablet | 58 ++++++
data/mobilestudio-pro-16.tablet | 60 +++++++
5 files changed, 745 insertions(+), 3 deletions(-)
create mode 100644 data/layouts/mobilestudio-pro-13.svg
create mode 100644 data/layouts/mobilestudio-pro-16.svg
create mode 100644 data/mobilestudio-pro-13.tablet
create mode 100644 data/mobilestudio-pro-16.tablet

diff --git a/data/layouts/mobilestudio-pro-13.svg b/data/layouts/mobilestudio-pro-13.svg
new file mode 100644
index 0000000..172141b
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-13.svg
@@ -0,0 +1,279 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ style="color:#000000;stroke:#7f7f7f;fill:none;stroke-width:.25;font-size:8"
+ id="intuos-pro-m"
+ width="320"
+ height="208">
+ <title
+ id="title">Wacom MobileStudio Pro 13</title>
+ <g>
+ <circle
+ id="Ring"
+ class="Ring TouchRing"
+ cx="34"
+ cy="104"
+ r="19.5" />
+ <path
+ id="LeaderRingCW"
+ class="RingCW Ring Leader"
+ d="M 12 90 L 12 75 L 61 75 L 61 62 L 70 62" />
+ <text
+ id="LabelRingCW"
+ class="RingCW Ring Label"
+ x="72"
+ y="62"
+ style="text-anchor:start;">CW</text>
+ <g transform="rotate(-90,31,80) translate(-20,-20)">
+ <path
+ id="RingCW"
+ class="RingCW Button"
+ d="M 31 80 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 1 5 1.5 a 6.5 6.5 0 0 0 -5 -0.5 l 0 1 z" />
+ </g>
+ <path
+ id="LeaderRingCCW"
+ class="RingCCW Ring Leader"
+ d="M 12 118 L 12 133 L 61 133 L 61 146 L 70 146" />
+ <text
+ id="LabelRingCCW"
+ class="RingCCW Ring Label"
+ x="72"
+ y="146"
+ style="text-anchor:start;">CCW</text>
+ <g transform="rotate(90,31,128) translate(-20,20)">
+ <path
+ id="RingCCW"
+ class="RingCCW Button"
+ d="M 31 128 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 0 5 -1 a 6.5 6.5 0 0 1 -5 2 l 0 1 z" />
+ </g>
+ </g>
+ <g>
+ <rect
+ id="ButtonA"
+ class="A Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="33"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderA"
+ class="A Leader"
+ d="M 47 39 L 49 39 L 49 20 L 60 20" />
+ <text
+ id="LabelA"
+ class="A Label"
+ x="62"
+ y="20"
+ style="text-anchor:start;">A</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonB"
+ class="B Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="47"
+ width="20"
+ height="12" />
+ <circle
+ id="DotB1"
+ cx="34"
+ cy="53"
+ r=".75" />
+ <path
+ id="LeaderB"
+ class="B Leader"
+ d="M 47 53 L 53 53 L 53 34 L 60 34" />
+ <text
+ id="LabelB"
+ class="B Label"
+ x="62"
+ y="34"
+ style="text-anchor:start;">B</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonC"
+ class="C Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="61"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderC"
+ class="C Leader"
+ d="M 47 67 L 57 67 L 57 48 L 60 48" />
+ <text
+ id="LabelC"
+ class="C Label"
+ x="62"
+ y="48"
+ style="text-anchor:start;">C</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonD"
+ class="D Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="135"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderD"
+ class="D Leader"
+ d="M 47 141 L 57 141 L 57 160 L 60 160" />
+ <text
+ id="LabelD"
+ class="D Label"
+ x="62"
+ y="160"
+ style="text-anchor:start;">D</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonE"
+ class="E Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="149"
+ width="20"
+ height="12" />
+ <circle
+ id="DotE1"
+ cx="34"
+ cy="155"
+ r=".75" />
+ <path
+ id="LeaderE"
+ class="E Leader"
+ d="M 47 155 L 53 155 L 53 174 L 60 174" />
+ <text
+ id="LabelE"
+ class="E Label"
+ x="62"
+ y="174"
+ style="text-anchor:start;">E</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonF"
+ class="F Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="163"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderF"
+ class="F Leader"
+ d="M 47 169 L 49 169 L 49 188 L 60 188" />
+ <text
+ id="LabelF"
+ class="F Label"
+ x="62"
+ y="188"
+ style="text-anchor:start;">F</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonG"
+ class="G Button"
+ cx="34"
+ cy="104"
+ r="9.5" />
+ <path
+ id="LeaderG"
+ class="G Leader"
+ d="M 25 95 L 20 85 L 20 80 L 65 80 L 65 76 L 70 76" />
+ <text
+ id="LabelG"
+ class="G Label"
+ x="72"
+ y="76"
+ style="text-anchor:start;">G</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonH"
+ class="H ModeSwitch Button"
+ cx="48.5"
+ cy="104"
+ r=".75" />
+ <path
+ id="LeaderH"
+ class="H ModeSwitch Leader"
+ d="M 56 104 L 70 104" />
+ <text
+ id="LabelH"
+ class="H ModeSwitch Label"
+ x="72"
+ y="104"
+ style="text-anchor:start;">H</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonI"
+ class="I ModeSwitch Button"
+ cx="34"
+ cy="89.5"
+ r=".75" />
+ <path
+ id="LeaderI"
+ class="I ModeSwitch Leader"
+ d="M 38 90 L 70 90" />
+ <text
+ id="LabelI"
+ class="I ModeSwitch Label"
+ x="72"
+ y="90"
+ style="text-anchor:start;">I</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonJ"
+ class="J ModeSwitch Button"
+ cx="19.5"
+ cy="104"
+ r=".75" />
+ <path
+ id="LeaderJ"
+ class="J ModeSwitch Leader"
+ d="M 19 108 L 19 127 L 65 127 L 65 132 L 70 132" />
+ <text
+ id="LabelJ"
+ class="J ModeSwitch Label"
+ x="72"
+ y="132"
+ style="text-anchor:start;">J</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonK"
+ class="K ModeSwitch Button"
+ cx="34"
+ cy="118.5"
+ r=".75" />
+ <path
+ id="LeaderK"
+ class="K ModeSwitch Leader"
+ d="M 38 118 L 70 118" />
+ <text
+ id="LabelK"
+ class="K ModeSwitch Label"
+ x="72"
+ y="118"
+ style="text-anchor:start;">K</text>
+ </g>
+</svg>
diff --git a/data/layouts/mobilestudio-pro-16.svg b/data/layouts/mobilestudio-pro-16.svg
new file mode 100644
index 0000000..afe56a6
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-16.svg
@@ -0,0 +1,331 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ style="color:#000000;stroke:#7f7f7f;fill:none;stroke-width:.25;font-size:8"
+ id="intuos-pro-m"
+ width="380"
+ height="250">
+ <title
+ id="title">Wacom MobileStudio Pro 16</title>
+ <g>
+ <circle
+ id="Ring"
+ class="Ring TouchRing"
+ cx="34"
+ cy="125"
+ r="19.5" />
+ <path
+ id="LeaderRingCW"
+ class="RingCW Ring Leader"
+ d="M 12 111 L 12 96 L 65 96 L 65 83 L 73 83" />
+ <text
+ id="LabelRingCW"
+ class="RingCW Ring Label"
+ x="75"
+ y="83"
+ style="text-anchor:start;">CW</text>
+ <g transform="rotate(-90,31,111) translate(-10,-20)">
+ <path
+ id="RingCW"
+ class="RingCW Button"
+ d="M 31 111 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 1 5 1.5 a 6.5 6.5 0 0 0 -5 -0.5 l 0 1 z" />
+ </g>
+ <path
+ id="LeaderRingCCW"
+ class="RingCCW Ring Leader"
+ d="M 12 139 L 12 154 L 65 154 L 65 167 L 73 167" />
+ <text
+ id="LabelRingCCW"
+ class="RingCCW Ring Label"
+ x="75"
+ y="167"
+ style="text-anchor:start;">CCW</text>
+ <g transform="rotate(90,31,139) translate(-10,20)">
+ <path
+ id="RingCCW"
+ class="RingCCW Button"
+ d="M 31 139 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 0 5 -1 a 6.5 6.5 0 0 1 -5 2 l 0 1 z" />
+ </g>
+ </g>
+ <g>
+ <rect
+ id="ButtonA"
+ class="A Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="40"
+ width="20"
+ height="12" />
+ <circle
+ id="DotA1"
+ cx="34"
+ cy="46"
+ r=".75" />
+ <path
+ id="LeaderA"
+ class="A Leader"
+ d="M 47 46 L 49 46 L 49 27 L 63 27" />
+ <text
+ id="LabelA"
+ class="A Label"
+ x="65"
+ y="27"
+ style="text-anchor:start;">A</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonB"
+ class="B Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="54"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderB"
+ class="B Leader"
+ d="M 46 60 L 53 60 L 53 41 L 63 41" />
+ <text
+ id="LabelB"
+ class="B Label"
+ x="65"
+ y="41"
+ style="text-anchor:start;">B</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonC"
+ class="C Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="68"
+ width="20"
+ height="12" />
+ <circle
+ id="DotC1"
+ cx="34"
+ cy="74"
+ r=".75" />
+ <path
+ id="LeaderC"
+ class="C Leader"
+ d="M 46 74 L 57 74 L 57 55 L 63 55" />
+ <text
+ id="LabelC"
+ class="C Label"
+ x="65"
+ y="55"
+ style="text-anchor:start;">C</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonD"
+ class="D Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="82"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderD"
+ class="D Leader"
+ d="M 46 88 L 61 88 L 61 69 L 63 69" />
+ <text
+ id="LabelD"
+ class="D Label"
+ x="65"
+ y="69"
+ style="text-anchor:start;">D</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonE"
+ class="E Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="156"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderE"
+ class="E Leader"
+ d="M 46 162 L 61 162 L 61 181 L 63 181" />
+ <text
+ id="LabelE"
+ class="E Label"
+ x="65"
+ y="181"
+ style="text-anchor:start;">E</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonF"
+ class="F Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="170"
+ width="20"
+ height="12" />
+ <circle
+ id="DotF1"
+ cx="34"
+ cy="176"
+ r=".75" />
+ <path
+ id="LeaderF"
+ class="F Leader"
+ d="M 46 176 L 57 176 L 57 195 L 63 195" />
+ <text
+ id="LabelF"
+ class="F Label"
+ x="65"
+ y="195"
+ style="text-anchor:start;">F</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonG"
+ class="G Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="184"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderG"
+ class="G Leader"
+ d="M 46 190 L 53 190 L 53 209 L 63 209" />
+ <text
+ id="LabelG"
+ class="G Label"
+ x="65"
+ y="209"
+ style="text-anchor:start;">G</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonH"
+ class="H Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="198"
+ width="20"
+ height="12" />
+ <circle
+ id="DotF1"
+ cx="34"
+ cy="204"
+ r=".75" />
+ <path
+ id="LeaderH"
+ class="H Leader"
+ d="M 46 204 L 49 204 L 49 223 L 63 223" />
+ <text
+ id="LabelH"
+ class="H Label"
+ x="65"
+ y="223"
+ style="text-anchor:start;">H</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonI"
+ class="I Button"
+ cx="34"
+ cy="125"
+ r="9.5" />
+ <path
+ id="LeaderI"
+ class="I Leader"
+ d="M 25 116 L 20 106 L 20 101 L 69 101 L 69 97 L 73 97" />
+ <text
+ id="LabelI"
+ class="I Label"
+ x="75"
+ y="97"
+ style="text-anchor:start;">I</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonJ"
+ class="J ModeSwitch Button"
+ cx="48.5"
+ cy="125"
+ r=".75" />
+ <path
+ id="LeaderJ"
+ class="J ModeSwitch Leader"
+ d="M 56 125 L 73 125" />
+ <text
+ id="LabelJ"
+ class="J ModeSwitch Label"
+ x="75"
+ y="125"
+ style="text-anchor:start;">J</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonK"
+ class="K ModeSwitch Button"
+ cx="34"
+ cy="110.5"
+ r=".75" />
+ <path
+ id="LeaderK"
+ class="K ModeSwitch Leader"
+ d="M 38 111 L 73 111" />
+ <text
+ id="LabelK"
+ class="K ModeSwitch Label"
+ x="75"
+ y="111"
+ style="text-anchor:start;">K</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonL"
+ class="L ModeSwitch Button"
+ cx="19.5"
+ cy="125"
+ r=".75" />
+ <path
+ id="LeaderL"
+ class="L ModeSwitch Leader"
+ d="M 19 129 L 19 148 L 69 148 L 69 153 L 73 153" />
+ <text
+ id="LabelL"
+ class="L ModeSwitch Label"
+ x="75"
+ y="153"
+ style="text-anchor:start;">L</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonM"
+ class="M ModeSwitch Button"
+ cx="34"
+ cy="139.5"
+ r=".75" />
+ <path
+ id="LeaderM"
+ class="M ModeSwitch Leader"
+ d="M 38 139 L 73 139" />
+ <text
+ id="LabelM"
+ class="M ModeSwitch Label"
+ x="75"
+ y="139"
+ style="text-anchor:start;">M</text>
+ </g>
+</svg>
diff --git a/data/libwacom.stylus b/data/libwacom.stylus
index 21c1949..2d42f07 100644
--- a/data/libwacom.stylus
+++ b/data/libwacom.stylus
@@ -77,10 +77,16 @@ Buttons=2
Axes=Pressure;Distance;
Type=General

-[0x842]
+# Superseded by 0x842 for the MobileStudio Pro
+# [0x842]
# Intuos2
-Name=Designer Pen
-HasEraser=false
+# Name=Designer Pen
+# HasEraser=false
+
+[0x842]
+# MobileStudio Pro
+Name=Pro Pen
+HasEraser=true
Buttons=2
Axes=Tilt;Pressure;Distance;
Type=General
@@ -209,6 +215,14 @@ Buttons=2
Axes=Tilt;Pressure;Distance;
Type=Classic

+[0x84a]
+# MobileStudio Pro
+Name=Pro Pen Eraser
+IsEraser=true
+Buttons=2
+Axes=Tilt;Pressure;Distance;
+Type=General
+
[0x85a]
# Intuos2
Name=Grip Pen Eraser
diff --git a/data/mobilestudio-pro-13.tablet b/data/mobilestudio-pro-13.tablet
new file mode 100644
index 0000000..1b06421
--- /dev/null
+++ b/data/mobilestudio-pro-13.tablet
@@ -0,0 +1,58 @@
+# Wacom
+# MobileStudio Pro 13
+# DTH-W1320
+#
+# Button Map:
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# | |
+# I | |
+# J G H | DISPLAY |
+# K | |
+# | |
+# D | |
+# E | |
+# F | |
+# | |
+# *-----------------------*
+#
+# Touch Ring Map:
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons H, I, J, K are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 13
+Class=Cintiq
+DeviceMatch=usb:056a:034d
+PairedID=usb:056a:034a
+Width=12
+Height=7
+Layout=mobilestudio-pro-13.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=11
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=H;I;J;K
diff --git a/data/mobilestudio-pro-16.tablet b/data/mobilestudio-pro-16.tablet
new file mode 100644
index 0000000..9569d11
--- /dev/null
+++ b/data/mobilestudio-pro-16.tablet
@@ -0,0 +1,60 @@
+# Wacom
+# MobileStudio Pro 16
+# DTH-W1620
+#
+# Button Map:
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# D | |
+# | |
+# K | |
+# L I J | DISPLAY |
+# M | |
+# | |
+# E | |
+# F | |
+# G | |
+# H | |
+# | |
+# *-----------------------*
+#
+# Touch Ring Map:
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons J, K, L, M are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 16
+Class=Cintiq
+DeviceMatch=usb:056a:034e
+PairedID=usb:056a:034b
+Width=14
+Height=8
+Layout=mobilestudio-pro-16.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=13
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K;L;M
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=J;K;L;M
--
2.10.2


------------------------------------------------------------------------------
Peter Hutterer
2016-11-14 21:26:27 UTC
Permalink
Post by Jason Gerecke
Note that the MobileStudio Pro introduces a new "Pro Pen" which supports
8K pressure levels. The ID of this pen is identical to that of a (less
featureful) pen used by the Intuos2, so we have to slightly modify the
existing entry. Ideally, we would have some way to define multiple pens
which share the same IDs (which apparently, according to the technical
experts, are not guaranteed unique outside of a hardware generation).
Such a change will require serious design and planning that are outside
of the immediate scope of this patch.
---
* Fully (rather than partially) comment out 0x842 Intuos2 "Designer Pen"
* Add "MobileStudio Pro" comment to 0x84a eraser
thanks,

b9181e6..221edda master -> master

Cheers,
Peter
Post by Jason Gerecke
data/layouts/mobilestudio-pro-13.svg | 279 +++++++++++++++++++++++++++++
data/layouts/mobilestudio-pro-16.svg | 331 +++++++++++++++++++++++++++++++++++
data/libwacom.stylus | 20 ++-
data/mobilestudio-pro-13.tablet | 58 ++++++
data/mobilestudio-pro-16.tablet | 60 +++++++
5 files changed, 745 insertions(+), 3 deletions(-)
create mode 100644 data/layouts/mobilestudio-pro-13.svg
create mode 100644 data/layouts/mobilestudio-pro-16.svg
create mode 100644 data/mobilestudio-pro-13.tablet
create mode 100644 data/mobilestudio-pro-16.tablet
diff --git a/data/layouts/mobilestudio-pro-13.svg b/data/layouts/mobilestudio-pro-13.svg
new file mode 100644
index 0000000..172141b
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-13.svg
@@ -0,0 +1,279 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ style="color:#000000;stroke:#7f7f7f;fill:none;stroke-width:.25;font-size:8"
+ id="intuos-pro-m"
+ width="320"
+ height="208">
+ <title
+ id="title">Wacom MobileStudio Pro 13</title>
+ <g>
+ <circle
+ id="Ring"
+ class="Ring TouchRing"
+ cx="34"
+ cy="104"
+ r="19.5" />
+ <path
+ id="LeaderRingCW"
+ class="RingCW Ring Leader"
+ d="M 12 90 L 12 75 L 61 75 L 61 62 L 70 62" />
+ <text
+ id="LabelRingCW"
+ class="RingCW Ring Label"
+ x="72"
+ y="62"
+ style="text-anchor:start;">CW</text>
+ <g transform="rotate(-90,31,80) translate(-20,-20)">
+ <path
+ id="RingCW"
+ class="RingCW Button"
+ d="M 31 80 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 1 5 1.5 a 6.5 6.5 0 0 0 -5 -0.5 l 0 1 z" />
+ </g>
+ <path
+ id="LeaderRingCCW"
+ class="RingCCW Ring Leader"
+ d="M 12 118 L 12 133 L 61 133 L 61 146 L 70 146" />
+ <text
+ id="LabelRingCCW"
+ class="RingCCW Ring Label"
+ x="72"
+ y="146"
+ style="text-anchor:start;">CCW</text>
+ <g transform="rotate(90,31,128) translate(-20,20)">
+ <path
+ id="RingCCW"
+ class="RingCCW Button"
+ d="M 31 128 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 0 5 -1 a 6.5 6.5 0 0 1 -5 2 l 0 1 z" />
+ </g>
+ </g>
+ <g>
+ <rect
+ id="ButtonA"
+ class="A Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="33"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderA"
+ class="A Leader"
+ d="M 47 39 L 49 39 L 49 20 L 60 20" />
+ <text
+ id="LabelA"
+ class="A Label"
+ x="62"
+ y="20"
+ style="text-anchor:start;">A</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonB"
+ class="B Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="47"
+ width="20"
+ height="12" />
+ <circle
+ id="DotB1"
+ cx="34"
+ cy="53"
+ r=".75" />
+ <path
+ id="LeaderB"
+ class="B Leader"
+ d="M 47 53 L 53 53 L 53 34 L 60 34" />
+ <text
+ id="LabelB"
+ class="B Label"
+ x="62"
+ y="34"
+ style="text-anchor:start;">B</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonC"
+ class="C Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="61"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderC"
+ class="C Leader"
+ d="M 47 67 L 57 67 L 57 48 L 60 48" />
+ <text
+ id="LabelC"
+ class="C Label"
+ x="62"
+ y="48"
+ style="text-anchor:start;">C</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonD"
+ class="D Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="135"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderD"
+ class="D Leader"
+ d="M 47 141 L 57 141 L 57 160 L 60 160" />
+ <text
+ id="LabelD"
+ class="D Label"
+ x="62"
+ y="160"
+ style="text-anchor:start;">D</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonE"
+ class="E Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="149"
+ width="20"
+ height="12" />
+ <circle
+ id="DotE1"
+ cx="34"
+ cy="155"
+ r=".75" />
+ <path
+ id="LeaderE"
+ class="E Leader"
+ d="M 47 155 L 53 155 L 53 174 L 60 174" />
+ <text
+ id="LabelE"
+ class="E Label"
+ x="62"
+ y="174"
+ style="text-anchor:start;">E</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonF"
+ class="F Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="163"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderF"
+ class="F Leader"
+ d="M 47 169 L 49 169 L 49 188 L 60 188" />
+ <text
+ id="LabelF"
+ class="F Label"
+ x="62"
+ y="188"
+ style="text-anchor:start;">F</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonG"
+ class="G Button"
+ cx="34"
+ cy="104"
+ r="9.5" />
+ <path
+ id="LeaderG"
+ class="G Leader"
+ d="M 25 95 L 20 85 L 20 80 L 65 80 L 65 76 L 70 76" />
+ <text
+ id="LabelG"
+ class="G Label"
+ x="72"
+ y="76"
+ style="text-anchor:start;">G</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonH"
+ class="H ModeSwitch Button"
+ cx="48.5"
+ cy="104"
+ r=".75" />
+ <path
+ id="LeaderH"
+ class="H ModeSwitch Leader"
+ d="M 56 104 L 70 104" />
+ <text
+ id="LabelH"
+ class="H ModeSwitch Label"
+ x="72"
+ y="104"
+ style="text-anchor:start;">H</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonI"
+ class="I ModeSwitch Button"
+ cx="34"
+ cy="89.5"
+ r=".75" />
+ <path
+ id="LeaderI"
+ class="I ModeSwitch Leader"
+ d="M 38 90 L 70 90" />
+ <text
+ id="LabelI"
+ class="I ModeSwitch Label"
+ x="72"
+ y="90"
+ style="text-anchor:start;">I</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonJ"
+ class="J ModeSwitch Button"
+ cx="19.5"
+ cy="104"
+ r=".75" />
+ <path
+ id="LeaderJ"
+ class="J ModeSwitch Leader"
+ d="M 19 108 L 19 127 L 65 127 L 65 132 L 70 132" />
+ <text
+ id="LabelJ"
+ class="J ModeSwitch Label"
+ x="72"
+ y="132"
+ style="text-anchor:start;">J</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonK"
+ class="K ModeSwitch Button"
+ cx="34"
+ cy="118.5"
+ r=".75" />
+ <path
+ id="LeaderK"
+ class="K ModeSwitch Leader"
+ d="M 38 118 L 70 118" />
+ <text
+ id="LabelK"
+ class="K ModeSwitch Label"
+ x="72"
+ y="118"
+ style="text-anchor:start;">K</text>
+ </g>
+</svg>
diff --git a/data/layouts/mobilestudio-pro-16.svg b/data/layouts/mobilestudio-pro-16.svg
new file mode 100644
index 0000000..afe56a6
--- /dev/null
+++ b/data/layouts/mobilestudio-pro-16.svg
@@ -0,0 +1,331 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ style="color:#000000;stroke:#7f7f7f;fill:none;stroke-width:.25;font-size:8"
+ id="intuos-pro-m"
+ width="380"
+ height="250">
+ <title
+ id="title">Wacom MobileStudio Pro 16</title>
+ <g>
+ <circle
+ id="Ring"
+ class="Ring TouchRing"
+ cx="34"
+ cy="125"
+ r="19.5" />
+ <path
+ id="LeaderRingCW"
+ class="RingCW Ring Leader"
+ d="M 12 111 L 12 96 L 65 96 L 65 83 L 73 83" />
+ <text
+ id="LabelRingCW"
+ class="RingCW Ring Label"
+ x="75"
+ y="83"
+ style="text-anchor:start;">CW</text>
+ <g transform="rotate(-90,31,111) translate(-10,-20)">
+ <path
+ id="RingCW"
+ class="RingCW Button"
+ d="M 31 111 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 1 5 1.5 a 6.5 6.5 0 0 0 -5 -0.5 l 0 1 z" />
+ </g>
+ <path
+ id="LeaderRingCCW"
+ class="RingCCW Ring Leader"
+ d="M 12 139 L 12 154 L 65 154 L 65 167 L 73 167" />
+ <text
+ id="LabelRingCCW"
+ class="RingCCW Ring Label"
+ x="75"
+ y="167"
+ style="text-anchor:start;">CCW</text>
+ <g transform="rotate(90,31,139) translate(-10,20)">
+ <path
+ id="RingCCW"
+ class="RingCCW Button"
+ d="M 31 139 l 3 -1.5 l 0 1 a 7.5 7.5 0 0 0 5 -1 a 6.5 6.5 0 0 1 -5 2 l 0 1 z" />
+ </g>
+ </g>
+ <g>
+ <rect
+ id="ButtonA"
+ class="A Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="40"
+ width="20"
+ height="12" />
+ <circle
+ id="DotA1"
+ cx="34"
+ cy="46"
+ r=".75" />
+ <path
+ id="LeaderA"
+ class="A Leader"
+ d="M 47 46 L 49 46 L 49 27 L 63 27" />
+ <text
+ id="LabelA"
+ class="A Label"
+ x="65"
+ y="27"
+ style="text-anchor:start;">A</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonB"
+ class="B Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="54"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderB"
+ class="B Leader"
+ d="M 46 60 L 53 60 L 53 41 L 63 41" />
+ <text
+ id="LabelB"
+ class="B Label"
+ x="65"
+ y="41"
+ style="text-anchor:start;">B</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonC"
+ class="C Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="68"
+ width="20"
+ height="12" />
+ <circle
+ id="DotC1"
+ cx="34"
+ cy="74"
+ r=".75" />
+ <path
+ id="LeaderC"
+ class="C Leader"
+ d="M 46 74 L 57 74 L 57 55 L 63 55" />
+ <text
+ id="LabelC"
+ class="C Label"
+ x="65"
+ y="55"
+ style="text-anchor:start;">C</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonD"
+ class="D Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="82"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderD"
+ class="D Leader"
+ d="M 46 88 L 61 88 L 61 69 L 63 69" />
+ <text
+ id="LabelD"
+ class="D Label"
+ x="65"
+ y="69"
+ style="text-anchor:start;">D</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonE"
+ class="E Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="156"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderE"
+ class="E Leader"
+ d="M 46 162 L 61 162 L 61 181 L 63 181" />
+ <text
+ id="LabelE"
+ class="E Label"
+ x="65"
+ y="181"
+ style="text-anchor:start;">E</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonF"
+ class="F Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="170"
+ width="20"
+ height="12" />
+ <circle
+ id="DotF1"
+ cx="34"
+ cy="176"
+ r=".75" />
+ <path
+ id="LeaderF"
+ class="F Leader"
+ d="M 46 176 L 57 176 L 57 195 L 63 195" />
+ <text
+ id="LabelF"
+ class="F Label"
+ x="65"
+ y="195"
+ style="text-anchor:start;">F</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonG"
+ class="G Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="184"
+ width="20"
+ height="12" />
+ <path
+ id="LeaderG"
+ class="G Leader"
+ d="M 46 190 L 53 190 L 53 209 L 63 209" />
+ <text
+ id="LabelG"
+ class="G Label"
+ x="65"
+ y="209"
+ style="text-anchor:start;">G</text>
+ </g>
+ <g>
+ <rect
+ id="ButtonH"
+ class="H Button"
+ rx="2"
+ ry="2"
+ x="24"
+ y="198"
+ width="20"
+ height="12" />
+ <circle
+ id="DotF1"
+ cx="34"
+ cy="204"
+ r=".75" />
+ <path
+ id="LeaderH"
+ class="H Leader"
+ d="M 46 204 L 49 204 L 49 223 L 63 223" />
+ <text
+ id="LabelH"
+ class="H Label"
+ x="65"
+ y="223"
+ style="text-anchor:start;">H</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonI"
+ class="I Button"
+ cx="34"
+ cy="125"
+ r="9.5" />
+ <path
+ id="LeaderI"
+ class="I Leader"
+ d="M 25 116 L 20 106 L 20 101 L 69 101 L 69 97 L 73 97" />
+ <text
+ id="LabelI"
+ class="I Label"
+ x="75"
+ y="97"
+ style="text-anchor:start;">I</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonJ"
+ class="J ModeSwitch Button"
+ cx="48.5"
+ cy="125"
+ r=".75" />
+ <path
+ id="LeaderJ"
+ class="J ModeSwitch Leader"
+ d="M 56 125 L 73 125" />
+ <text
+ id="LabelJ"
+ class="J ModeSwitch Label"
+ x="75"
+ y="125"
+ style="text-anchor:start;">J</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonK"
+ class="K ModeSwitch Button"
+ cx="34"
+ cy="110.5"
+ r=".75" />
+ <path
+ id="LeaderK"
+ class="K ModeSwitch Leader"
+ d="M 38 111 L 73 111" />
+ <text
+ id="LabelK"
+ class="K ModeSwitch Label"
+ x="75"
+ y="111"
+ style="text-anchor:start;">K</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonL"
+ class="L ModeSwitch Button"
+ cx="19.5"
+ cy="125"
+ r=".75" />
+ <path
+ id="LeaderL"
+ class="L ModeSwitch Leader"
+ d="M 19 129 L 19 148 L 69 148 L 69 153 L 73 153" />
+ <text
+ id="LabelL"
+ class="L ModeSwitch Label"
+ x="75"
+ y="153"
+ style="text-anchor:start;">L</text>
+ </g>
+ <g>
+ <circle
+ id="ButtonM"
+ class="M ModeSwitch Button"
+ cx="34"
+ cy="139.5"
+ r=".75" />
+ <path
+ id="LeaderM"
+ class="M ModeSwitch Leader"
+ d="M 38 139 L 73 139" />
+ <text
+ id="LabelM"
+ class="M ModeSwitch Label"
+ x="75"
+ y="139"
+ style="text-anchor:start;">M</text>
+ </g>
+</svg>
diff --git a/data/libwacom.stylus b/data/libwacom.stylus
index 21c1949..2d42f07 100644
--- a/data/libwacom.stylus
+++ b/data/libwacom.stylus
@@ -77,10 +77,16 @@ Buttons=2
Axes=Pressure;Distance;
Type=General
-[0x842]
+# Superseded by 0x842 for the MobileStudio Pro
+# [0x842]
# Intuos2
-Name=Designer Pen
-HasEraser=false
+# Name=Designer Pen
+# HasEraser=false
+
+[0x842]
+# MobileStudio Pro
+Name=Pro Pen
+HasEraser=true
Buttons=2
Axes=Tilt;Pressure;Distance;
Type=General
@@ -209,6 +215,14 @@ Buttons=2
Axes=Tilt;Pressure;Distance;
Type=Classic
+[0x84a]
+# MobileStudio Pro
+Name=Pro Pen Eraser
+IsEraser=true
+Buttons=2
+Axes=Tilt;Pressure;Distance;
+Type=General
+
[0x85a]
# Intuos2
Name=Grip Pen Eraser
diff --git a/data/mobilestudio-pro-13.tablet b/data/mobilestudio-pro-13.tablet
new file mode 100644
index 0000000..1b06421
--- /dev/null
+++ b/data/mobilestudio-pro-13.tablet
@@ -0,0 +1,58 @@
+# Wacom
+# MobileStudio Pro 13
+# DTH-W1320
+#
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# | |
+# I | |
+# J G H | DISPLAY |
+# K | |
+# | |
+# D | |
+# E | |
+# F | |
+# | |
+# *-----------------------*
+#
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons H, I, J, K are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 13
+Class=Cintiq
+DeviceMatch=usb:056a:034d
+PairedID=usb:056a:034a
+Width=12
+Height=7
+Layout=mobilestudio-pro-13.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=11
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=H;I;J;K
diff --git a/data/mobilestudio-pro-16.tablet b/data/mobilestudio-pro-16.tablet
new file mode 100644
index 0000000..9569d11
--- /dev/null
+++ b/data/mobilestudio-pro-16.tablet
@@ -0,0 +1,60 @@
+# Wacom
+# MobileStudio Pro 16
+# DTH-W1620
+#
+# (A=1, B=2, C=3, ...)
+#
+# *-----------------------*
+# | |
+# A | |
+# B | |
+# C | |
+# D | |
+# | |
+# K | |
+# L I J | DISPLAY |
+# M | |
+# | |
+# E | |
+# F | |
+# G | |
+# H | |
+# | |
+# *-----------------------*
+#
+# (A=1st ring, B=2nd ring, ...)
+#
+# *-----------------------*
+# | |
+# A | TABLET |
+# | |
+# *-----------------------*
+#
+# Note: Buttons J, K, L, M are on a circle
+#
+
+[Device]
+Name=Wacom MobileStudio Pro 16
+Class=Cintiq
+DeviceMatch=usb:056a:034e
+PairedID=usb:056a:034b
+Width=14
+Height=8
+Layout=mobilestudio-pro-16.svg
+Styli=0x842;0x84a;0x160802;0x16080a;0x100802;0x10080a;0x140802;0x14080a;0x120802;0x100804;0x10080c;0x100902;0x10090a
+IntegratedIn=Display;System
+
+[Features]
+Stylus=true
+Touch=true
+Ring=true
+Buttons=13
+
+[Buttons]
+Left=A;B;C;D;E;F;G;H;I;J;K;L;M
+
+# This tablet has mode buttons but no LEDs to signal the current mode to the
+# user and thus requires the caller to display an on-screen notification.
+Ring=J;K;L;M
--
2.10.2
------------------------------------------------------------------------------
Loading...