[PATCH libinput] debounce: handle a timeout in MAYBE_SPURIOUS state

Peter Hutterer peter.hutterer at who-t.net
Tue Nov 21 07:10:19 UTC 2017


Sequences to trigger:
- spurious debouncing is enabled
- release a button in IS_DOWN state -> RELEASE_DELAYED
- short timeout triggers RELEASE_WAITING

If a button press now comes before the long timeout expires, we transition to
MAYBE_SPURIOUS where the long timeout may expire. In that case we should
transition to pressed state again.

Reported-by: Vicente Bergas <vicencb at gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 doc/button-debouncing-state-machine.svg | 369 +++++++++++---------------------
 src/evdev-debounce.c                    |   4 +-
 2 files changed, 121 insertions(+), 252 deletions(-)

diff --git a/doc/button-debouncing-state-machine.svg b/doc/button-debouncing-state-machine.svg
index 6f106a89..48723a13 100644
--- a/doc/button-debouncing-state-machine.svg
+++ b/doc/button-debouncing-state-machine.svg
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!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" xmlns:xlink="http://www.w3.org/1999/xlink" width="1108px" height="2101px" version="1.1" content="<mxfile userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" version="7.7.1" editor="www.draw.io" type="google"><diagram id="27c35eac-9917-780f-69cd-550de3271581" name="Page-1">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</diagram></mxfile>">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1108px" height="2101px" version="1.1" content="<mxfile userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" version="7.7.2" editor="www.draw.io" type="google"><diagram id="27c35eac-9917-780f-69cd-550de3271581" name="Page-1">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</diagram></mxfile>">
   <defs/>
   <g transform="translate(0.5,0.5)">
     <rect x="271" y="220" width="160" height="40" rx="6" ry="6" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/>
@@ -8,12 +8,10 @@
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="35" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 36px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-IS_UP</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">IS_UP</div>
           </div>
         </foreignObject>
-        <text x="18" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-IS_UP</text>
+        <text x="18" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">IS_UP</text>
       </switch>
     </g>
     <path d="M 336 310 L 366 310 L 381 335 L 366 360 L 336 360 L 321 335 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -21,13 +19,10 @@ IS_UP</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 351 260 L 351 303.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -37,12 +32,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="95" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 96px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-DOWN_WAITING</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">DOWN_WAITING</div>
           </div>
         </foreignObject>
-        <text x="48" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-DOWN_WAITING</text>
+        <text x="48" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">DOWN_WAITING</text>
       </switch>
     </g>
     <rect x="61" y="810" width="160" height="40" rx="6" ry="6" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/>
@@ -50,12 +43,10 @@ DOWN_WAITING</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="118" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 119px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-RELEASE_PENDING</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">RELEASE_PENDING</div>
           </div>
         </foreignObject>
-        <text x="59" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-RELEASE_PENDING</text>
+        <text x="59" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">RELEASE_PENDING</text>
       </switch>
     </g>
     <path d="M 416 675 L 446 675 L 461 700 L 446 725 L 416 725 L 401 700 Z" fill="#ea6b66" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -63,12 +54,10 @@ RELEASE_PENDING</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout</div>
           </div>
         </foreignObject>
-        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout</text>
+        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout</text>
       </switch>
     </g>
     <path d="M 570.61 1120.1 C 571.78 1116.9 573.67 1115.04 575.67 1115.12 L 645.53 1115.12 C 647.13 1115.08 648.65 1115.63 649.65 1116.61 C 650.64 1117.59 650.99 1118.88 650.6 1120.1 L 631.36 1169.9 C 630.19 1173.1 628.3 1174.96 626.3 1174.88 L 555.42 1174.88 C 554.01 1174.69 552.77 1174.05 551.99 1173.1 C 551.22 1172.15 551 1170.99 551.37 1169.9 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
@@ -76,14 +65,10 @@ timeout</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-notify<br/>
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">notify<br/>button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="21" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 320.61 500.1 C 321.78 496.9 323.67 495.04 325.67 495.12 L 395.53 495.12 C 397.13 495.08 398.65 495.63 399.65 496.61 C 400.64 497.59 400.99 498.88 400.6 500.1 L 381.36 549.9 C 380.19 553.1 378.3 554.96 376.3 554.88 L 305.42 554.88 C 304.01 554.69 302.77 554.05 301.99 553.1 C 301.22 552.15 301 550.99 301.37 549.9 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
@@ -91,14 +76,10 @@ release</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-notify<br/>
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">notify<br/>button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 356 640 L 405.76 679.81" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -108,12 +89,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="56" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 57px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-IS_DOWN</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">IS_DOWN</div>
           </div>
         </foreignObject>
-        <text x="28" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-IS_DOWN</text>
+        <text x="28" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">IS_DOWN</text>
       </switch>
     </g>
     <path d="M 441.33 675 L 610.31 265.89" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -123,13 +102,10 @@ IS_DOWN</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-button<br>release</text>
+        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">button<br>release</text>
       </switch>
     </g>
     <path d="M 336 640 L 343.21 668.82" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -141,12 +117,10 @@ button<br>release</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout</div>
           </div>
         </foreignObject>
-        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout</text>
+        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout</text>
       </switch>
     </g>
     <path d="M 128.5 850 L 59.68 960.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -156,12 +130,10 @@ timeout</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="35" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 36px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-IS_UP</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">IS_UP</div>
           </div>
         </foreignObject>
-        <text x="18" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-IS_UP</text>
+        <text x="18" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">IS_UP</text>
       </switch>
     </g>
     <path d="M 686 300 L 716 300 L 731 325 L 716 350 L 686 350 L 671 325 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -169,13 +141,10 @@ IS_UP</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-button<br>release</text>
+        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">button<br>release</text>
       </switch>
     </g>
     <path d="M 639.82 260 L 678.31 300.9" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -185,13 +154,10 @@ button<br>release</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 149.75 850 L 197.51 959.17" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -203,14 +169,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-notify<br/>
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">notify<br/>button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="21" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <rect x="511" y="1220" width="160" height="40" rx="6" ry="6" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/>
@@ -218,12 +180,10 @@ release</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="113" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 114px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-RELEASE_WAITING</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">RELEASE_WAITING</div>
           </div>
         </foreignObject>
-        <text x="57" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-RELEASE_WAITING</text>
+        <text x="57" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">RELEASE_WAITING</text>
       </switch>
     </g>
     <path d="M 686 1315 L 716 1315 L 731 1340 L 716 1365 L 686 1365 L 671 1340 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -231,13 +191,10 @@ RELEASE_WAITING</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 613 1260 L 676.88 1318.07" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -247,29 +204,27 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout</div>
           </div>
         </foreignObject>
-        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout</text>
+        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout</text>
       </switch>
     </g>
     <path d="M 42.56 1015 L 48.73 1113.64" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
     <path d="M 49.06 1118.88 L 45.13 1112.12 L 48.73 1113.64 L 52.11 1111.68 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
     <path d="M 55.52 1180 L 187.04 2053.7" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
     <path d="M 187.82 2058.89 L 183.32 2052.49 L 187.04 2053.7 L 190.24 2051.45 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
+    <path d="M 895.31 1495 L 848.83 1574.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
+    <path d="M 846.18 1579.03 L 846.69 1571.23 L 848.83 1574.5 L 852.73 1574.76 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
     <rect x="827" y="1455" width="160" height="40" rx="6" ry="6" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/>
     <g transform="translate(850.5,1468.5)">
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="112" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 113px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-MAYBE_SPURIOUS</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">MAYBE_SPURIOUS</div>
           </div>
         </foreignObject>
-        <text x="56" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-MAYBE_SPURIOUS</text>
+        <text x="56" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">MAYBE_SPURIOUS</text>
       </switch>
     </g>
     <path d="M 722.53 1354.11 L 871.16 1451.51" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -279,13 +234,10 @@ MAYBE_SPURIOUS</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-button<br>release</text>
+        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">button<br>release</text>
       </switch>
     </g>
     <path d="M 1077 1580 L 1077 1240 L 677.37 1240" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -297,13 +249,10 @@ button<br>release</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout<br/>
-short</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout<br/>short</div>
           </div>
         </foreignObject>
-        <text x="20" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout<br>short</text>
+        <text x="20" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout<br>short</text>
       </switch>
     </g>
     <path d="M 919.31 1495 L 968.47 1574.89" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -317,13 +266,10 @@ timeout<br>short</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="52" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 53px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-spurious<br/>
-enabled?</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">spurious<br/>enabled?</div>
           </div>
         </foreignObject>
-        <text x="26" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-spurious<br>enabled?</text>
+        <text x="26" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">spurious<br>enabled?</text>
       </switch>
     </g>
     <path d="M 662.66 930 L 611.36 1108.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -332,12 +278,10 @@ spurious<br>enabled?</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="12" height="11" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;background-color:#ffffff;">
-no</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;background-color:#ffffff;">no</div>
           </div>
         </foreignObject>
-        <text x="6" y="11" fill="#000000" text-anchor="middle" font-size="11px" font-family="Helvetica">
-no</text>
+        <text x="6" y="11" fill="#000000" text-anchor="middle" font-size="11px" font-family="Helvetica">no</text>
       </switch>
     </g>
     <path d="M 596 1315 L 626 1315 L 641 1340 L 626 1365 L 596 1365 L 581 1340 Z" fill="#9ac7bf" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -345,13 +289,10 @@ no</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout<br/>
-short</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout<br/>short</div>
           </div>
         </foreignObject>
-        <text x="20" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout<br>short</text>
+        <text x="20" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout<br>short</text>
       </switch>
     </g>
     <path d="M 595 1260 L 604.75 1308.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -361,12 +302,10 @@ timeout<br>short</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="65" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 66px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-RELEASED</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">RELEASED</div>
           </div>
         </foreignObject>
-        <text x="33" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-RELEASED</text>
+        <text x="33" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">RELEASED</text>
       </switch>
     </g>
     <path d="M 612.85 1365 L 619.05 1448.65" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -378,13 +317,10 @@ RELEASED</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 624.23 1495 L 636.95 1573.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -394,12 +330,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="103" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 104px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-PRESS_PENDING</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">PRESS_PENDING</div>
           </div>
         </foreignObject>
-        <text x="52" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-PRESS_PENDING</text>
+        <text x="52" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">PRESS_PENDING</text>
       </switch>
     </g>
     <path d="M 653.58 1630 L 674.06 1674.22" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -409,13 +343,10 @@ PRESS_PENDING</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-button<br>release</text>
+        <text x="21" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">button<br>release</text>
       </switch>
     </g>
     <path d="M 731.88 1720 L 851.38 1772.09" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -427,12 +358,10 @@ button<br>release</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout</div>
           </div>
         </foreignObject>
-        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout</text>
+        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout</text>
       </switch>
     </g>
     <path d="M 670.61 1885.1 C 671.78 1881.9 673.67 1880.04 675.67 1880.12 L 745.53 1880.12 C 747.13 1880.08 748.65 1880.63 749.65 1881.61 C 750.64 1882.59 750.99 1883.88 750.6 1885.1 L 731.36 1934.9 C 730.19 1938.1 728.3 1939.96 726.3 1939.88 L 655.42 1939.88 C 654.01 1939.69 652.77 1939.05 651.99 1938.1 C 651.22 1937.15 651 1935.99 651.37 1934.9 Z" fill="#ffd966" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/>
@@ -440,14 +369,10 @@ timeout</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-notify<br/>
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">notify<br/>button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 677.76 1720 L 663.72 1754.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -463,12 +388,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="120" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 121px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-RELEASE_DELAYED</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">RELEASE_DELAYED</div>
           </div>
         </foreignObject>
-        <text x="60" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-RELEASE_DELAYED</text>
+        <text x="60" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">RELEASE_DELAYED</text>
       </switch>
     </g>
     <path d="M 627 889.02 L 497.27 912.43" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -477,12 +400,10 @@ RELEASE_DELAYED</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="19" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;background-color:#ffffff;">
-yes</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;background-color:#ffffff;">yes</div>
           </div>
         </foreignObject>
-        <text x="10" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-yes</text>
+        <text x="10" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">yes</text>
       </switch>
     </g>
     <path d="M 426 995 L 456 995 L 471 1020 L 456 1045 L 426 1045 L 411 1020 Z" fill="#9ac7bf" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -490,13 +411,10 @@ yes</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout<br/>
-short</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout<br/>short</div>
           </div>
         </foreignObject>
-        <text x="20" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout<br>short</text>
+        <text x="20" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout<br>short</text>
       </switch>
     </g>
     <path d="M 417.52 948 L 430.87 988.95" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -508,13 +426,10 @@ timeout<br>short</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 441.43 948 L 524.16 1002.36" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -526,13 +441,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="27" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 28px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-set<br/>
-timer</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">set<br/>timer</div>
           </div>
         </foreignObject>
-        <text x="14" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="14" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 351 360 L 351 403.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -544,13 +456,10 @@ timer</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="27" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 28px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-set<br/>
-timer</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">set<br/>timer</div>
           </div>
         </foreignObject>
-        <text x="14" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="14" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 700.26 350 L 691.92 633.65" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -562,13 +471,10 @@ timer</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="46" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 47px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-set short<br/>
-timer</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">set short<br/>timer</div>
           </div>
         </foreignObject>
-        <text x="23" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-set short<br>timer</text>
+        <text x="23" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">set short<br>timer</text>
       </switch>
     </g>
     <path d="M 679.36 809.99 L 678.73 823.64" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -578,13 +484,10 @@ set short<br>timer</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 376 640 L 481.5 686.89" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -596,13 +499,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 139.75 850 L 132.96 958.64" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -614,13 +514,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 559 1260 L 458.22 1322.99" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -632,13 +529,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 608.69 1495 L 559.53 1574.89" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -650,13 +544,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 702.71 1720 L 735.46 1759.21" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -668,13 +559,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 506 1315 L 536 1315 L 551 1340 L 536 1365 L 506 1365 L 491 1340 Z" fill="#ea6b66" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -682,12 +570,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-timeout</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout</div>
           </div>
         </foreignObject>
-        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-timeout</text>
+        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout</text>
       </switch>
     </g>
     <path d="M 577 1260 L 540.81 1311.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -701,14 +587,10 @@ timeout</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-notify<br/>
-button<br/>
-press</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">notify<br/>button<br/>press</div>
           </div>
         </foreignObject>
-        <text x="17" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 922.25 1630 L 973.4 1873.77" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -720,13 +602,10 @@ press</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 670.41 260 L 800.96 312.84" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -736,13 +615,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 392.52 948 L 348.51 995.64" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -752,14 +628,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="41" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 42px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-notify<br/>
-button<br/>
-release</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">notify<br/>button<br/>release</div>
           </div>
         </foreignObject>
-        <text x="21" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="21" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 315.06 1045 L 236.68 1224.17" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -771,19 +643,13 @@ release</div>
         <foreignObject style="overflow:visible;" pointer-events="all" width="430" height="169" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 190px; max-width: 430px; width: 430px; white-space: normal; overflow-wrap: normal;">
             <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-              <h1>
-Entry states: IS_UP, IS_DOWN<br/>
-</h1>
-              <p>
-Assumption: state is stored per-button, and OTHER BUTTON events are always processed before the actual button. Stored state per button is a single bit (up/down), a single state for the state machine across the device is sufficient.</p>
-              <p>
-Start the state machine with IS_UP or IS_DOWN based on the button's bit, any OTHER BUTTON event will reset it to that state anyway, so the state can be re-used for the new button.<br/>
-</p>
+              <h1>Entry states: IS_UP, IS_DOWN<br/></h1>
+              <p>Assumption: state is stored per-button, and OTHER BUTTON events are always processed before the actual button. Stored state per button is a single bit (up/down), a single state for the state machine across the device is sufficient.</p>
+              <p>Start the state machine with IS_UP or IS_DOWN based on the button's bit, any OTHER BUTTON event will reset it to that state anyway, so the state can be re-used for the new button.<br/></p>
             </div>
           </div>
         </foreignObject>
-        <text x="215" y="91" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="215" y="91" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 468 310 L 494 310 L 511 335 L 494 360 L 468 360 L 451 335 Z" fill="#e1d5e7" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -791,13 +657,10 @@ Start the state machine with IS_UP or IS_DOWN based on the button's bit, any OTH
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="34" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-other<br/>
-button</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">other<br/>button</div>
           </div>
         </foreignObject>
-        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-[Not supported by viewer]</text>
+        <text x="17" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text>
       </switch>
     </g>
     <path d="M 378.37 260 L 455 316" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -809,13 +672,10 @@ button</div>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="47" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 48px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-enable<br/>
-spurious</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">enable<br/>spurious</div>
           </div>
         </foreignObject>
-        <text x="24" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-enable<br>spurious</text>
+        <text x="24" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">enable<br>spurious</text>
       </switch>
     </g>
     <path d="M 597.84 1175 L 593.77 1213.67" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
@@ -831,12 +691,23 @@ enable<br>spurious</text>
       <switch>
         <foreignObject style="overflow:visible;" pointer-events="all" width="56" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
           <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 57px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
-            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
-IS_DOWN</div>
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">IS_DOWN</div>
           </div>
         </foreignObject>
-        <text x="28" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">
-IS_DOWN</text>
+        <text x="28" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">IS_DOWN</text>
+      </switch>
+    </g>
+    <path d="M 843.3 1630 L 963.44 1874.29" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
+    <path d="M 965.75 1879 L 959.52 1874.26 L 963.44 1874.29 L 965.8 1871.17 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
+    <path d="M 816 1580 L 846 1580 L 861 1605 L 846 1630 L 816 1630 L 801 1605 Z" fill="#ea6b66" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
+    <g transform="translate(810.5,1598.5)">
+      <switch>
+        <foreignObject style="overflow:visible;" pointer-events="all" width="40" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
+          <div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
+            <div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">timeout</div>
+          </div>
+        </foreignObject>
+        <text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">timeout</text>
       </switch>
     </g>
   </g>
diff --git a/src/evdev-debounce.c b/src/evdev-debounce.c
index 7f96249b..74faf39b 100644
--- a/src/evdev-debounce.c
+++ b/src/evdev-debounce.c
@@ -335,9 +335,6 @@ debounce_maybe_spurious_handle_event(struct fallback_dispatch *fallback, enum de
 	case DEBOUNCE_EVENT_RELEASE:
 		debounce_set_state(fallback, DEBOUNCE_STATE_RELEASE_WAITING);
 		break;
-	case DEBOUNCE_EVENT_TIMEOUT:
-		log_debounce_bug(fallback, event);
-		break;
 	case DEBOUNCE_EVENT_TIMEOUT_SHORT:
 		debounce_cancel_timer(fallback);
 		debounce_set_state(fallback, DEBOUNCE_STATE_IS_DOWN);
@@ -345,6 +342,7 @@ debounce_maybe_spurious_handle_event(struct fallback_dispatch *fallback, enum de
 		debounce_notify_button(fallback,
 				       LIBINPUT_BUTTON_STATE_PRESSED);
 		break;
+	case DEBOUNCE_EVENT_TIMEOUT:
 	case DEBOUNCE_EVENT_OTHERBUTTON:
 		debounce_set_state(fallback, DEBOUNCE_STATE_IS_DOWN);
 		debounce_notify_button(fallback,
-- 
2.13.6



More information about the wayland-devel mailing list