summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/svg/tablet-cintiq24hd-modes.svg460
-rw-r--r--doc/svg/tablet-intuos-modes.svg321
-rw-r--r--doc/tablet-support.dox59
4 files changed, 840 insertions, 2 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
index eb5d3c0..9341489 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -49,7 +49,9 @@ diagram_files = \
$(srcdir)/svg/software-buttons.svg \
$(srcdir)/svg/swipe-gestures.svg \
$(srcdir)/svg/tablet-axes.svg \
+ $(srcdir)/svg/tablet-cintiq24hd-modes.svg \
$(srcdir)/svg/tablet-interfaces.svg \
+ $(srcdir)/svg/tablet-intuos-modes.svg \
$(srcdir)/svg/tablet-left-handed.svg \
$(srcdir)/svg/tablet-out-of-bounds.svg \
$(srcdir)/svg/tablet.svg \
diff --git a/doc/svg/tablet-cintiq24hd-modes.svg b/doc/svg/tablet-cintiq24hd-modes.svg
new file mode 100644
index 0000000..f1be53e
--- /dev/null
+++ b/doc/svg/tablet-cintiq24hd-modes.svg
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="134.12471mm"
+ height="73.121918mm"
+ viewBox="0 0 475.24503 259.09341"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="tablet-cintiq24hd-modes.svg">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="235.34348"
+ inkscape:cy="122.76858"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1136"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <sodipodi:guide
+ position="63.613208,240.91603"
+ orientation="0,1"
+ id="guide4164" />
+ <sodipodi:guide
+ position="61.087828,13.126636"
+ orientation="0,1"
+ id="guide4166" />
+ <sodipodi:guide
+ position="455.7142,176.16061"
+ orientation="0,1"
+ id="guide5966" />
+ <sodipodi:guide
+ position="457.99098,166.42846"
+ orientation="0,1"
+ id="guide5968" />
+ <sodipodi:guide
+ position="457.05348,156.47311"
+ orientation="-0.00010854417,-0.99999999"
+ id="guide5970" />
+ <sodipodi:guide
+ position="454.4642,169.19632"
+ orientation="1,0"
+ id="guide5972" />
+ <sodipodi:guide
+ position="22.365981,176.16061"
+ orientation="1,0"
+ id="guide5974" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="tablet"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline"
+ transform="translate(-139.42745,-156.36228)">
+ <rect
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.92000002;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4136"
+ width="474.32504"
+ height="258.1734"
+ x="139.88745"
+ y="156.82228"
+ rx="5" />
+ <rect
+ y="175.42407"
+ x="199.33878"
+ height="226.52563"
+ width="357.34042"
+ id="rect4140"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74800003;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <g
+ id="g5913">
+ <g
+ style="stroke-width:1.87739301;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(0.53265351,0,0,0.53265351,104.30809,96.440418)"
+ id="g7023">
+ <circle
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:1.87739301;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4158"
+ cx="135.61298"
+ cy="287.06125"
+ r="22.98097" />
+ <ellipse
+ cy="287.06125"
+ cx="135.61298"
+ id="circle4160"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:1.87739301;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ rx="11.5985"
+ ry="12.608653" />
+ </g>
+ <rect
+ rx="0.5"
+ y="268.93671"
+ x="175.8243"
+ height="8.9902887"
+ width="13.786156"
+ id="rect4162"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.29022256;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ rx="0.5"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.29022256;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7027"
+ width="13.786156"
+ height="8.9902887"
+ x="175.8243"
+ y="280.97675" />
+ <rect
+ rx="0.5"
+ y="293.01678"
+ x="175.8243"
+ height="8.9902887"
+ width="13.786156"
+ id="rect7029"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.29022256;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ rx="0.5"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.44849709;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7031"
+ width="9.1119308"
+ height="32.483532"
+ x="161.90343"
+ y="269.44443" />
+ <rect
+ rx="0.5"
+ y="269.44443"
+ x="149.90343"
+ height="32.483532"
+ width="9.1119308"
+ id="rect7033"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.44849709;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ rx="0.5"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.19463234;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7035"
+ width="9.3657951"
+ height="5.9516821"
+ x="149.77649"
+ y="256.10321" />
+ <rect
+ rx="0.5"
+ y="246.10321"
+ x="149.77649"
+ height="5.9516821"
+ width="9.3657951"
+ id="rect7037"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.19463234;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ rx="0.5"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.19463234;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7039"
+ width="9.3657951"
+ height="5.9516821"
+ x="149.77649"
+ y="236.10321" />
+ </g>
+ <g
+ id="g5889">
+ <g
+ id="g7056"
+ transform="matrix(-0.53265351,0,0,0.53265351,651.12665,96.440418)"
+ style="fill:#4e4e4e;fill-opacity:0.99215686;stroke-width:1.87739301;stroke-miterlimit:4;stroke-dasharray:none">
+ <circle
+ r="22.98097"
+ cy="287.06125"
+ cx="135.61298"
+ id="circle7058"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:1.87739301;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <ellipse
+ ry="12.608653"
+ rx="11.5985"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:1.87739301;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="ellipse7060"
+ cx="135.61298"
+ cy="287.06125" />
+ </g>
+ <rect
+ transform="scale(-1,1)"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.29022256;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7062"
+ width="13.786156"
+ height="8.9902887"
+ x="-579.61047"
+ y="268.93671"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ y="280.97675"
+ x="-579.61047"
+ height="8.9902887"
+ width="13.786156"
+ id="rect7064"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.29022256;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.29022256;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7066"
+ width="13.786156"
+ height="8.9902887"
+ x="-579.61047"
+ y="293.01678"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ y="269.44443"
+ x="-593.53131"
+ height="32.483532"
+ width="9.1119308"
+ id="rect7068"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.44849709;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.44849709;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7070"
+ width="9.1119308"
+ height="32.483532"
+ x="-605.53131"
+ y="269.44443"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ y="256.10321"
+ x="-605.65826"
+ height="5.9516821"
+ width="9.3657951"
+ id="rect7072"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.19463234;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.19463234;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7074"
+ width="9.3657951"
+ height="5.9516821"
+ x="-605.65826"
+ y="246.10321"
+ rx="0.5" />
+ <rect
+ transform="scale(-1,1)"
+ y="236.10321"
+ x="-605.65826"
+ height="5.9516821"
+ width="9.3657951"
+ id="rect7076"
+ style="opacity:0.92000002;fill:#4e4e4e;fill-opacity:0.99215686;stroke:#4d4d4d;stroke-width:0.19463234;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ rx="0.5" />
+ </g>
+ <circle
+ r="1.0714241"
+ cy="239.25041"
+ cx="593.89166"
+ id="circle5003"
+ style="opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle5941"
+ cx="593.89166"
+ cy="249.01828"
+ r="1.0714241" />
+ <circle
+ r="1.0714241"
+ cy="258.98257"
+ cx="593.89166"
+ id="circle5943"
+ style="opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ r="1.0714241"
+ cy="239.27275"
+ cx="161.79344"
+ id="circle5003-7"
+ style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ style="display:inline;opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle5941-3"
+ cx="161.79344"
+ cy="249.04956"
+ r="1.0714241" />
+ <circle
+ r="1.0714241"
+ cy="259.00488"
+ cx="161.79344"
+ id="circle5943-4"
+ style="display:inline;opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:'sans serif';-inkscape-font-specification:'sans serif';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="231.68831"
+ y="209.7363"
+ id="text5031"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5033"
+ x="231.68831"
+ y="209.7363"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1">mode indicators</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text6033"
+ y="209.7363"
+ x="421.35587"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:'sans serif';-inkscape-font-specification:'sans serif';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1"
+ y="209.7363"
+ x="421.35587"
+ id="tspan6035"
+ sodipodi:role="line">mode indicators</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text6037"
+ y="291.72427"
+ x="204.56126"
+ style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1"
+ y="291.72427"
+ x="204.56126"
+ id="tspan6039"
+ sodipodi:role="line">mode toggle buttons</tspan></text>
+ <g
+ id="g6047">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6041"
+ d="m 163.79343,258.98257 27.45536,0 38.75,-44.41964 40.98214,0.26786"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path6043"
+ d="m 163.79343,249.02722 35.9375,0"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path6045"
+ d="m 163.79343,239.29507 44.41964,0"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ id="g6052"
+ transform="matrix(-1,0,0,1,755.65383,-0.02232143)">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 163.79343,258.98257 27.45536,0 38.75,-44.41964 40.98214,0.26786"
+ id="path6054"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 163.79343,249.02722 35.9375,0"
+ id="path6056"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 163.79343,239.29507 44.41964,0"
+ id="path6058"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g6096">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6088"
+ d="m 145.10947,239.29507 0,55.95257 78.53936,0"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path6090"
+ d="m 145.23574,239.29507 4.98762,0"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 145.23574,259.29507 4.98762,0"
+ id="path6092"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path6094"
+ d="m 145.23574,249.01096 4.98762,0"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ id="g6102"
+ transform="matrix(-1,0,0,1,754.76113,0)">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 145.10947,239.29507 0,55.95257 78.53936,0"
+ id="path6104"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 145.23574,239.29507 4.98762,0"
+ id="path6106"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path6108"
+ d="m 145.23574,259.29507 4.98762,0"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 145.23574,249.01096 4.98762,0"
+ id="path6110"
+ inkscape:connector-curvature="0" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="420.56128"
+ y="291.72427"
+ id="text6112"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan6114"
+ x="420.56128"
+ y="291.72427"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1">mode toggle buttons</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="stylus"
+ style="display:inline"
+ transform="translate(-139.42745,-156.36228)" />
+</svg>
diff --git a/doc/svg/tablet-intuos-modes.svg b/doc/svg/tablet-intuos-modes.svg
new file mode 100644
index 0000000..74ef836
--- /dev/null
+++ b/doc/svg/tablet-intuos-modes.svg
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="111.70494mm"
+ height="65.496956mm"
+ viewBox="0 0 395.80491 232.07583"
+ id="svg4249"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="tablet-intuos-modes.svg">
+ <defs
+ id="defs4251">
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5774"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+ id="path5776"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4294"
+ id="linearGradient4300"
+ x1="465.81339"
+ y1="666.13727"
+ x2="454.82117"
+ y2="658.65521"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4294">
+ <stop
+ style="stop-color:#1a1a1a;stop-opacity:1;"
+ offset="0"
+ id="stop4296" />
+ <stop
+ style="stop-color:#808080;stop-opacity:1"
+ offset="1"
+ id="stop4298" />
+ </linearGradient>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="77.55251"
+ inkscape:cy="104.65462"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showguides="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1136"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:guide-bbox="true"
+ fit-margin-left="0.1"
+ fit-margin-top="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4897"
+ originx="-56.206096"
+ originy="-132.53353" />
+ <sodipodi:guide
+ position="71.578207,133.89422"
+ orientation="0,1"
+ id="guide4991" />
+ <sodipodi:guide
+ position="28.258193,123.80577"
+ orientation="1,0"
+ id="guide4993" />
+ <sodipodi:guide
+ position="63.704627,120.85934"
+ orientation="1,0"
+ id="guide4995" />
+ <sodipodi:guide
+ position="48.704626,98.44863"
+ orientation="0,1"
+ id="guide4997" />
+ <sodipodi:guide
+ position="54.937501,116.125"
+ orientation="0,1"
+ id="guide5057" />
+ <sodipodi:guide
+ position="46.000001,127.5625"
+ orientation="1,0"
+ id="guide5059" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4254">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-56.206094,-687.75286)">
+ <g
+ id="g5039">
+ <rect
+ y="688.15009"
+ x="56.95763"
+ height="231.28139"
+ width="394.65616"
+ id="rect4136"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.79444152;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.56541353;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4140"
+ width="270.06381"
+ height="171.19916"
+ x="150.33304"
+ y="719.33636" />
+ <rect
+ y="719.56689"
+ x="77.601257"
+ height="16.734699"
+ width="49.124439"
+ id="rect4142"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4148"
+ width="49.124439"
+ height="16.734699"
+ x="77.601257"
+ y="740.72821" />
+ <rect
+ y="761.88947"
+ x="77.601257"
+ height="16.734699"
+ width="49.124439"
+ id="rect4150"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="831.41949"
+ x="77.601257"
+ height="16.734699"
+ width="49.124439"
+ id="rect4154"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4156"
+ width="49.124439"
+ height="16.734699"
+ x="77.601257"
+ y="852.58075" />
+ <circle
+ r="17.368113"
+ cy="803.70734"
+ cx="102.17159"
+ id="path4158"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <ellipse
+ ry="9.5291233"
+ rx="8.7656898"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.39332128;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle4160"
+ cx="102.17159"
+ cy="803.70734" />
+ <rect
+ y="873.74207"
+ x="77.601257"
+ height="16.734699"
+ width="49.124439"
+ id="rect4162"
+ style="opacity:0.92000002;fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.74744725;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g4304"
+ transform="matrix(0.2806137,0.07519021,-0.0726958,0.27130439,247.48122,626.86299)">
+ <path
+ sodipodi:nodetypes="czcc"
+ inkscape:connector-curvature="0"
+ id="path4286"
+ d="m 387.83544,799.76093 c -1.1128,3.61694 -3.2211,13.05163 -1.08543,14.07769 2.13567,1.02606 7.81039,-3.72162 10.99756,-6.69095 z"
+ style="display:inline;fill:#cccccc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ssssccssscsssssssssssssssssss"
+ inkscape:connector-curvature="0"
+ id="path4283"
+ d="m 392.64431,804.79039 c -8.52094,-5.90399 -8.49394,-11.01546 0.22879,-43.30647 1.03999,-3.85 2.46829,-9.67602 3.17399,-12.9467 0.99731,-4.62219 2.39455,-7.29497 6.27321,-12 2.74456,-3.32932 5.25157,-6.2783 5.57113,-6.5533 40.78433,-60.97488 80.48307,-125.1652 118.27253,-184 9.86283,-15.675 26.59424,-42.225 37.18089,-59 10.58666,-16.775 34.01422,-53.9 52.06125,-82.5 18.04703,-28.6 35.04505,-55.31677 37.77338,-59.37059 l 4.9606,-7.3706 4.1828,0.57332 c 4.16371,0.5707 4.19706,0.54958 7.30887,-4.62941 3.75631,-6.2516 8.82067,-11.57582 12.2516,-12.88026 5.99391,-2.27888 14.03303,2.9506 14.03303,9.12854 0,3.90203 -2.51704,10.62127 -6.02878,16.09385 -1.63417,2.54664 -2.97122,4.85949 -2.97122,5.13969 0,0.28019 0.9,1.54715 2,2.81546 2.28453,2.63408 2.47267,4.21918 0.86833,7.31574 -1.28218,2.47476 -26.61383,45.18798 -55.85724,94.18426 -10.83283,18.15 -25.72943,43.1137 -33.10357,55.47489 -7.37413,12.3612 -13.69273,23.17153 -14.04131,24.02297 -0.34859,0.85144 -7.50972,12.78774 -15.91363,26.52511 -15.54138,25.40455 -32.24417,52.9052 -70.74345,116.47703 -40.26028,66.47968 -43.66308,72.46026 -49.21634,86.5 -1.74036,4.4 -3.92035,8.675 -4.8444,9.5 -0.92405,0.825 -4.36246,3.75 -7.6409,6.5 -3.27845,2.75 -9.57132,8.3067 -13.98415,12.34823 -10.62726,9.73304 -16.99729,13.87361 -22.52334,14.64034 -3.99187,0.55386 -5.03885,0.251 -9.27207,-2.6821 z"
+ style="display:inline;fill:#000000" />
+ <path
+ sodipodi:nodetypes="scccs"
+ inkscape:connector-curvature="0"
+ id="path4292"
+ d="m 450.89044,688.88586 c 8.71518,5.62513 45.74035,-59.18436 43.57923,-75.43494 l -7.07107,-6.56599 c -29.93081,25.86352 -47.78438,74.72281 -47.78438,74.72281 0,0 0,0 11.27622,7.27812 z"
+ style="fill:url(#linearGradient4300);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <circle
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5001"
+ cx="119.91072"
+ cy="785.93445"
+ r="1.0714241" />
+ <circle
+ r="1.0714241"
+ cy="785.93445"
+ cx="84.458878"
+ id="circle5003"
+ style="opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ r="1.0714241"
+ cy="821.38873"
+ cx="119.91072"
+ id="circle5005"
+ style="opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ style="opacity:1;fill:#858585;fill-opacity:1;stroke:none;stroke-width:0.56541353;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle5007"
+ cx="84.458878"
+ cy="821.38873"
+ r="1.0714241" />
+ <g
+ id="g5021">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0999999;stroke-dasharray:none;stroke-opacity:1"
+ d="M 121.60675,784.75904 144.71431,766.2249"
+ id="path5015"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ d="m 109.26292,766.15758 101.60169,0.0205 m -124.715997,18.514 23.107557,-18.53414"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path5017" />
+ </g>
+ <g
+ id="g5025"
+ transform="matrix(1,0,0,-1,0,1607.4699)">
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5027"
+ d="M 121.60675,784.75904 144.71431,766.2249"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0999999;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5029"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 109.26292,766.15758 101.60169,0.0205 m -124.715997,18.514 23.107557,-18.53414"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:'sans serif';-inkscape-font-specification:'sans serif';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="134.17352"
+ y="761.21094"
+ id="text5031"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5033"
+ x="134.17352"
+ y="761.21094"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1">mode indicators</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5035"
+ y="857.37744"
+ x="134.17352"
+ style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1"
+ y="857.37744"
+ x="134.17352"
+ id="tspan5037"
+ sodipodi:role="line">mode indicators</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 102.39358,803.70368 61,0"
+ id="path5051"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="167.36102"
+ y="806.87744"
+ id="text5053"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5055"
+ x="167.36102"
+ y="806.87744"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;font-family:'sans serif';-inkscape-font-specification:'sans serif';fill:#ff0000;fill-opacity:1">mode toggle button</tspan></text>
+ </g>
+</svg>
diff --git a/doc/tablet-support.dox b/doc/tablet-support.dox
index c555cea..cda0d70 100644
--- a/doc/tablet-support.dox
+++ b/doc/tablet-support.dox
@@ -240,8 +240,7 @@ tablet.
Some buttons may have expected default behaviors. For example, on Wacom
Intuos Pro series tablets, the button inside the touch ring is expected to
-switch between a mode switch. Mode switching is a feature implemented in the
-caller and libinput does not provide specific handling. Callers should use
+switch between modes, see @ref tablet-pad-modes. Callers should use
external sources like libwacom to identify which buttons have semantic
behaviors.
@@ -276,4 +275,60 @@ symmetric and thus do not support left-handed mode. libinput requires
libwacom to determine if a tablet is capable of being switched to
left-handed mode.
+@section tablet-pad-modes Tablet pad modes
+
+Tablet pad modes are virtual groupings of button, ring and strip
+functionality. A caller may assign different functionalities depending on
+the mode the tablet is in. For example, in mode 0 the touch ring may emulate
+scrolling, in mode 1 the touch ring may emulate zooming, etc. libinput
+handles the modes and mode switching but does not assign specific
+functionality to buttons, rings or strips based on the mode. It is up to the
+caller to decide whether the mode only applies to buttons, rings and strips
+or only to rings and strips (this is the case with the Wacom OS X and
+Windows driver).
+
+The availability of modes on a touchpad usually depends on visual feedback
+such as LEDs around the touch ring. If no visual feedback is available, only
+one mode may be available.
+
+Mode switching is controlled by libinput and usually toggled by one or
+more buttons on the device. For example, on the Wacom Intuos 4, 5, and
+Pro series tablets the mode button is the button centered in the touch
+ring and toggles the modes sequentially. On the Wacom Cintiq 24HD the
+three buttons next to each touch ring allow for directly changing the
+mode to the desired setting.
+
+Multiple modes may exist on the tablet, libinput uses the term "mode group"
+for such groupings of buttons that share a mode and mode toggle. For
+example, the Wacom Cintiq 24HD has two separate mode groups, one for the
+left set of buttons, strips, and touch rings and one for the right set.
+libinput handles the mode groups independently and returns the mode for each
+button as appropriate. The mode group is static for the lifetime of the
+device.
+
+@image html tablet-intuos-modes.svg "Modes on an Intuos Pro-like tablet"
+
+In the image above, the Intuos Pro-like tablet provides 4 LEDs to indicate
+the currently active modes. The button inside the touch ring cycles through
+the modes in a clockwise fashion. The upper-right LED indicates that the
+currently active mode is 1, based on 0-indexed mode numbering.
+libinput_event_tablet_pad_get_mode() would thus return 1 for all button and
+ring events on this tablet. When the center button is pressed, the mode
+switches to mode 2, the LED changes to the bottom-right and
+libinput_event_tablet_pad_get_mode() returns 2 for the center button event
+and all subsequent events.
+
+@image html tablet-cintiq24hd-modes.svg "Modes on an Cintiq 24HD-like tablet"
+
+In the image above, the Cintiq 24HD-like tablet provides 3 LEDs on each side
+of the tablet to indicate the currently active mode for that group of
+buttons and the respective ring. The buttons next to the touch ring select
+the mode directly. The two LEDs indicate that the mode for the left set of
+buttons is currently 0, the mode for the right set of buttons is currently
+1, based on 0-indexed mode numbering. libinput_event_tablet_pad_get_mode()
+would thus return 0 for all button and ring events on the left and 1 for all
+button and ring events on the right. When one of the three mode toggle
+buttons on the right is pressed, the right mode switches to that button's
+mode but the left mode remains unchanged.
+
*/