Signed-off-by: Aaron Skomra <aaron.sko...@wacom.com>
---
-pass make check tests

 data/ek-remote.tablet        |  34 ++++
 data/layouts/ek-remote.svg   | 430 +++++++++++++++++++++++++++++++++++++++++++
 libwacom/libwacom-database.c |   2 +
 libwacom/libwacom.c          |   1 +
 libwacom/libwacom.h          |   1 +
 test/dbverify.c              |   3 +
 test/tablet-validity.c       |  11 +-
 7 files changed, 479 insertions(+), 3 deletions(-)
 create mode 100644 data/ek-remote.tablet
 create mode 100644 data/layouts/ek-remote.svg

diff --git a/data/ek-remote.tablet b/data/ek-remote.tablet
new file mode 100644
index 0000000..a793bf4
--- /dev/null
+++ b/data/ek-remote.tablet
@@ -0,0 +1,34 @@
+# Wacom
+# ExpressKey Remote
+# ACK-411050
+#
+#    C D
+#  B  A  E
+#     F
+#  G  H  I
+#  J  K  L
+#  M  N  O
+#  P  Q  R
+
+[Device]
+Name=Wacom ExpressKey Remote
+DeviceMatch=usb:056a:0331
+Layout=ek-remote.svg
+Class=Remote
+
+[Features]
+Stylus=false
+Ring=true
+NumStrips=0
+Buttons=18
+#StatusLEDs=Ring
+
+[Buttons]
+Left=C;A;B;F;G;J;M;N;P;Q
+Right=D;E;I;L;H;K;O;R
+
+#Note that though this device has 3 ring modes
+#this mode selection does not function the same
+#as previous devices. The EKR's mode is read-only.
+#RingNumModes=3
+Ring=A
diff --git a/data/layouts/ek-remote.svg b/data/layouts/ek-remote.svg
new file mode 100644
index 0000000..9b6529a
--- /dev/null
+++ b/data/layouts/ek-remote.svg
@@ -0,0 +1,430 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/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="ek-remote"
+   width="350"
+   height="275"
+>
+  <metadata
+     id="metadata3448">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3446" />
+
+  <title
+     id="title">Wacom ExpressKey Remote</title>
+
+  <path
+     id="ButtonB"
+     class="B Button"
+     d="m 111,39.5 a 30,30 0 0 0 0,40 l 8,-6 a 20,20 0 0 1 0,-28 l -8,-6"
+      />
+  <path
+     id="ButtonE"
+     class="E Button"
+     d="m 157.87831,39.500803 a 30.478094,29.624531 0 0 1 0,39.499377 l 
-8.12747,-5.92491 a 20.31873,19.749687 0 0 0 0,-27.64956 l 8.12747,-5.924907"
+      />
+  <path
+     id="ButtonF"
+     class="F Button"
+     d="m 111.99446,80.28266 a 30.007371,27.700507 0 0 0 45.01106,0 l 
-8.00197,-5.5401 a 20.004914,18.467004 0 0 1 -29.00712,0 l -8.00197,5.5401"
+      />
+  <path
+     d="m 114.99747,35.267115 a 29.592561,29.014789 0 0 1 17.75554,-6.770118 l 
0,10.638757 a 19.728374,19.343193 0 0 0 -10.85061,3.868638 l -6.90493,-7.737277"
+     id="ButtonC"
+       class="C Button"
+      />
+  <path
+     d="m 138,28.5 a 30,30 0 0 1 17,7 l -8,8 a 20,20 0 0 0 -10,-4 l 1,-11"
+     id="ButtonD"
+       class="D Button"
+      />
+
+<g id="right side labels"
+   >
+    <path
+       id="LeaderF"
+       class="F Leader"
+       d="m 132,83 -39,-6 -12,0"
+       stroke="grey"
+       />
+    <text
+       id="LabelF"
+       class="F Label"
+       x="69"
+       y="76"
+       style="text-anchor:start">F</text>
+</g>
+
+  <g
+     id="g3675">
+    <circle
+       id="Ring"
+       class="Ring TouchRing"
+       cx="134"
+       cy="60"
+       r="19.5" />
+    <path
+       id="LeaderRingCCW"
+       class="RingCCW Ring Leader"
+       stroke="grey"
+       d="m 134,44 0,-2 67,0" />
+    <text
+       id="LabelRingCCW"
+       class="RingCCW Ring Label"
+       x="203"
+       y="42"
+       style="text-anchor:start">CCW</text>
+    <path
+       id="RingCCW"
+       class="RingCCW Button"
+       d="m 131,45 3,-1.5 0,1 a 7.5,7.5 0 0 1 5,1.5 6.5,6.5 0 0 0 -5,-0.5 l 
0,1 z" />
+    <path
+       id="LeaderRingCW"
+       class="RingCW Ring Leader"
+       stroke="grey"
+       d="m 134,74 0,2 67,0" />
+    <text
+       id="LabelRingCW"
+       class="RingCW Ring Label"
+       x="203"
+       y="76"
+       style="text-anchor:start">CW</text>
+    <path
+       id="RingCW"
+       class="RingCW Button"
+       d="m 131,73 3,-1.5 0,1 a 7.5,7.5 0 0 0 5,-1 6.5,6.5 0 0 1 -5,2 l 0,1 z" 
/>
+  </g>
+  <g
+     id="g3699">
+
+    <path
+       id="LeaderG"
+       class="G Leader"
+       stroke="grey"
+       d="m 110,96 -27,0 " />
+    <text
+       id="LabelG"
+       class="G Label"
+       x="70"
+       y="96"
+       style="text-anchor:start">G</text>
+       <path
+       id="ButtonG"
+       class="G Button"
+       d="m 105,78 A 30,30 0 0 0 120,89
+       L 120,104
+       L 105,104
+       L 105,78"
+       />
+    <path
+       id="LeaderH"
+       class="H Leader"
+       stroke="grey"
+       d="m 137,103 50,50 5,0"
+       />
+    <text
+       id="LabelH"
+       class="H Label"
+       x="193"
+       y="153"
+       style="text-anchor:start">H</text>
+       <path
+       id="ButtonH"
+       class="H Button"
+       d="m 123,101 A 10,10 0 0 1 143,101 L 143,111 L 123, 111   L 123, 101"
+       />
+    <path
+       id="LeaderI"
+       class="I Leader"
+       stroke="grey"
+       d="m 156,93 48,0 "
+       />
+    <text
+       id="LabelI"
+       class="I Label"
+       x="205"
+       y="92"
+       style="text-anchor:start">I</text>
+       <path
+       id ="ButtonI"
+       class="I Button"
+       d="m 146,89 A 30,30 0 0 0 161,78 L 161,104  L 146,104 L 146,89"
+       />
+    <path
+       id="LeaderJ"
+       class="J Leader"
+       stroke="grey"
+       d="m 110,122 -27,0 " />
+    <text
+       id="LabelJ"
+       class="J Label"
+       x="75"
+       y="121"
+       style="text-anchor:start">J</text>
+       <path
+       id="ButtonJ"
+       class="J Button"
+       d="m 105,106  L 120,106  L 120,126 L 105,126 L 105,106"
+       />
+    <path
+       id="LeaderK"
+       class="K Leader"
+       stroke="grey"
+       d="m 137,116 50,50 5,0"
+       />
+    <text
+       id="LabelK"
+       class="K Label"
+       x="193"
+       y="172"
+       style="text-anchor:start">K</text>
+       <path
+       id="ButtonK"
+       class="K Button"
+       d="m 123, 113 L 143,113 L 143, 126   L 123, 126 L 123, 113"
+       />
+    <path
+       id="LeaderL"
+       class="L Leader"
+       stroke="grey"
+       d="m 157,112 50,0"
+       />
+    <text
+       id="LabelL"
+       class="L Label"
+       x="204"
+       y="110"
+       style="text-anchor:start">L</text>
+       <path
+       id ="ButtonL"
+       class="L Button"
+       d="m 146,106  L 161,106  L 161,126 L 146,126 L 146,106"
+       />
+  </g>
+
+  <g
+     id="g3700">
+    <path
+       id="LeaderM"
+       class="M Leader"
+       stroke="grey"
+       d="m 110,142 -27,0 " />
+    <text
+       id="LabelM"
+       class="M Label"
+       x="70"
+       y="140"
+       style="text-anchor:start">M</text>
+       <path
+       id="ButtonM"
+       class="M Button"
+       d="m 105,128  L 120,128  L 120,148 L 105,148 L 105,128"
+       />
+    <path
+       id="LeaderN"
+       class="N Leader"
+       stroke="grey"
+       d="m 130,135  -40,30 -5,0"
+       />
+    <text
+       id="LabelN"
+       class="N Label"
+       x="70"
+       y="165"
+       style="text-anchor:start">N</text>
+       <path
+       id="ButtonN"
+       class="N Button"
+       d="m 123, 128 L 143,128 L 143, 142 L 123, 142 L 123, 128"
+       />
+    <path
+       id="LeaderO"
+       class="O Leader"
+       stroke="grey"
+       d="m 152,140  40,56"
+       />
+    <text
+       id="LabelO"
+       class="O Label"
+       x="190"
+       y="208"
+       style="text-anchor:start">O</text>
+       <path
+       id ="ButtonO"
+       class="O Button"
+       d="m 146,128
+        L 161,128
+        L 161,148
+        L 146,148
+       L 146,128"
+       />
+  </g>
+
+  <g
+     id="g3701">
+    <path
+       id="LeaderQ"
+       class="Q Leader"
+       stroke="grey"
+       d="m 117,175 0,20 "
+       />
+    <text
+       id="LabelQ"
+       class="Q Label"
+       x="111"
+       y="209"
+       style="text-anchor:start">Q</text>
+       <path
+       id="ButtonQ"
+       class="Q Button"
+       d="m 105,150
+       L 120,150 A 12,12 0 0 0 132,164
+       L 132,180
+       L 118, 180 A 15,15 0 0 1 105,164
+       L 105,150"
+       />
+    <path
+       id="LeaderP"
+       class="P Leader"
+       stroke="grey"
+       d="m 130,155  -60,40"
+       />
+    <text
+       id="LabelP"
+       class="P Label"
+       x="63"
+       y="208"
+       style="text-anchor:start">P</text>
+       <path
+       id="ButtonP"
+       class="P Button"
+       d="m 123,152 A 10,10 0 0 0 143,152
+        L 143,144
+        L 123,144
+        L 123,152"
+       />
+    <path
+       id="LeaderR"
+       class="R Leader"
+       stroke="grey"
+       d="m 147,175 0,20 "
+       />
+    <text
+       id="LabelR"
+       class="R Label"
+       x="141"
+       y="209"
+       style="text-anchor:start">R</text>
+       <path
+       id="ButtonR"
+       class="R Button"
+       d="m 161,150
+        L 146,150 A 12,12 0 0 1 134,164
+        L 134,180
+       L 150, 180 A 15,15 0 0 0 161,164
+       L 161,150"
+       />
+  </g>
+  <g
+     id="g3684">
+    <circle
+       id="ButtonA"
+       class="A ModeSwitch Button"
+       cx="134"
+       cy="59"
+       r="6.5" />
+    <path
+       id="LeaderA"
+       class="A ModeSwitch Leader"
+       stroke="grey"
+       d="m 134,59 -30,-18 -24,0" />
+    <text
+       id="LabelA"
+       class="A ModeSwitch Label"
+       x="69"
+       y="39"
+       style="text-anchor:start">A</text>
+  </g>
+  <g
+     id="g3689">
+    <circle
+       id="Ring Buttons"
+       class="Ring TouchRing"
+       cx="134"
+       cy="59"
+       r="0" />
+    <path
+       id="LeaderB"
+       class="B Leader"
+       stroke="grey"
+       d="m 80,59 30,0" />
+    <text
+       id="LabelB"
+       class="B Label"
+       x="70"
+       y="59"
+       style="text-anchor:start">B</text>
+    <path
+       id="LeaderC"
+       class="C Leader"
+       stroke="grey"
+       d="m 80,20 20,0 25,12"/>
+    <text
+       id="LabelC"
+       class="C Label"
+       x="70"
+       y="20"
+       style="text-anchor:start">C</text>
+    <path
+       id="LeaderD"
+       class="D Leader"
+       stroke="grey"
+       d="m 145,35 0,-10 5,-5 50,0" />
+    <text
+       id="LabelD"
+       class="D Label"
+       x="203"
+       y="20"
+       style="text-anchor:start">D</text>
+    <path
+       id="LeaderE"
+       class="E Leader"
+       stroke="grey"
+       d="m 162,59 39,0"
+       />
+    <text
+       id="LabelE"
+       class="E Label"
+       x="203"
+       y="59"
+       style="text-anchor:start">E</text>
+  </g>
+  <path
+     style="fill:white"
+     d="m 114.13253,36.257524 6.85981,7.45701 -1.31919,1.028553 
-7.91517,-6.171319 z"
+     id="LED0" />
+  <path
+     style="fill:white"
+     d="m 134.02961,38.991736 -0.27117,-10.733474 2.98286,0 -0.54234,10.733474 
z"
+     id="LED1" />
+  <path
+     style="fill:white"
+     d="m 148,43.249999 7.25,-6.75 1.75,2.5 -7.5,5.75 z"
+     id="LED2" />
+</svg>
diff --git a/libwacom/libwacom-database.c b/libwacom/libwacom-database.c
index ed67de9..997b53f 100644
--- a/libwacom/libwacom-database.c
+++ b/libwacom/libwacom-database.c
@@ -68,6 +68,8 @@ libwacom_class_string_to_enum(const char *class)
                return WCLASS_ISDV4;
        if (strcmp(class, "PenDisplay") == 0)
                return WCLASS_PEN_DISPLAYS;
+       if (strcmp(class, "Remote") == 0)
+               return WCLASS_REMOTE;
 
        return WCLASS_UNKNOWN;
 }
diff --git a/libwacom/libwacom.c b/libwacom/libwacom.c
index ba61764..d20b66c 100644
--- a/libwacom/libwacom.c
+++ b/libwacom/libwacom.c
@@ -717,6 +717,7 @@ libwacom_print_device_description(int fd, const WacomDevice 
*device)
                case WCLASS_INTUOS:     class_name = "Intuos";  break;
                case WCLASS_INTUOS2:    class_name = "Intuos2"; break;
                case WCLASS_PEN_DISPLAYS:       class_name = "PenDisplay";      
break;
+               case WCLASS_REMOTE:     class_name = "Remote";  break;
                default:                g_assert_not_reached(); break;
        }
 
diff --git a/libwacom/libwacom.h b/libwacom/libwacom.h
index 3d3cbb1..f36b2ac 100644
--- a/libwacom/libwacom.h
+++ b/libwacom/libwacom.h
@@ -142,6 +142,7 @@ typedef enum {
        WCLASS_INTUOS,          /**< Any Intuos series */
        WCLASS_INTUOS2,         /**< Any Intuos2 series */
        WCLASS_PEN_DISPLAYS,    /**< Any "interactive pen display" */
+       WCLASS_REMOTE,          /**< Any Wacom Remote */
 } WacomClass;
 
 /**
diff --git a/test/dbverify.c b/test/dbverify.c
index 5a4b687..799e717 100644
--- a/test/dbverify.c
+++ b/test/dbverify.c
@@ -151,6 +151,9 @@ compare_written_database(WacomDeviceDatabase *db)
                close(fd);
                free(path);
 
+               if (!libwacom_has_stylus(*device))
+                       continue;
+
                styli = libwacom_get_supported_styli(*device, &nstyli);
                for (i = 0; i < nstyli; i++) {
                        int fd_stylus;
diff --git a/test/tablet-validity.c b/test/tablet-validity.c
index 1fe741b..2fc1142 100644
--- a/test/tablet-validity.c
+++ b/test/tablet-validity.c
@@ -133,21 +133,26 @@ static void verify_tablet(WacomDeviceDatabase *db, 
WacomDevice *device)
        assert(libwacom_get_matches(device) != NULL);
 
        /* ISDv4 are built-in, they may be of varying size */
-       if (libwacom_get_class(device) != WCLASS_ISDV4) {
+       if (libwacom_get_class(device) != WCLASS_ISDV4 &&
+           libwacom_get_class(device) != WCLASS_REMOTE) {
                assert(libwacom_get_width(device) > 0);
                assert(libwacom_get_height(device) > 0);
        }
        assert(libwacom_get_num_buttons(device) >= 0);
 
        styli = libwacom_get_supported_styli(device, &nstyli);
-       assert(styli != NULL);
-       assert(nstyli >= 1);
+
+       if (libwacom_has_stylus(device)) {
+               assert(styli != NULL);
+               assert(nstyli >= 1);
+       }
 
        switch(libwacom_get_class(device)) {
                case WCLASS_BAMBOO:
                case WCLASS_ISDV4:
                case WCLASS_PEN_DISPLAYS:
                case WCLASS_GRAPHIRE:
+               case WCLASS_REMOTE:
                        break;
                case WCLASS_INTUOS:
                case WCLASS_INTUOS2:
-- 
2.5.0


------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to