<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="978px" preserveAspectRatio="none" style="width:397px;height:978px;background:#F0F0F0;" version="1.1" viewBox="0 0 397 978" width="397px" zoomAndPan="magnify"><defs><filter height="300%" id="f1qsj2cwhw8y1j" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="27" y1="86.2969" y2="357.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="27" x2="27" y1="357.3594" y2="398.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="27" y1="398.1641" y2="586.9609"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="27" x2="27" y1="586.9609" y2="627.7656"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="27" y1="627.7656" y2="720.2969"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="27" x2="27" y1="720.2969" y2="761.1016"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="27" y1="761.1016" y2="891.6328"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="132" y1="86.2969" y2="357.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="132" x2="132" y1="357.3594" y2="398.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="132" y1="398.1641" y2="586.9609"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="132" x2="132" y1="586.9609" y2="627.7656"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="132" y1="627.7656" y2="720.2969"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="132" x2="132" y1="720.2969" y2="761.1016"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="132" y1="761.1016" y2="891.6328"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="284.5" x2="284.5" y1="86.2969" y2="357.3594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="284.5" x2="284.5" y1="357.3594" y2="398.1641"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="284.5" x2="284.5" y1="398.1641" y2="586.9609"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="284.5" x2="284.5" y1="586.9609" y2="627.7656"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="284.5" x2="284.5" y1="627.7656" y2="720.2969"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,4.0;" x1="284.5" x2="284.5" y1="720.2969" y2="761.1016"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="284.5" x2="284.5" y1="761.1016" y2="891.6328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="8" y="82.9951">User</text><ellipse cx="27" cy="13" fill="#FEFECE" filter="url(#f1qsj2cwhw8y1j)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M27,21 L27,48 M14,29 L40,29 M27,48 L14,63 M27,48 L40,63 " fill="none" filter="url(#f1qsj2cwhw8y1j)" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="8" y="903.6279">User</text><ellipse cx="27" cy="916.9297" fill="#FEFECE" filter="url(#f1qsj2cwhw8y1j)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><path d="M27,924.9297 L27,951.9297 M14,932.9297 L40,932.9297 M27,951.9297 L14,966.9297 M27,951.9297 L40,966.9297 " fill="none" filter="url(#f1qsj2cwhw8y1j)" style="stroke: #A80036; stroke-width: 2.0;"/><rect fill="#FEFECE" filter="url(#f1qsj2cwhw8y1j)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="44" x="108" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="115" y="70.9951">EVM</text><rect fill="#FEFECE" filter="url(#f1qsj2cwhw8y1j)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="44" x="108" y="890.6328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="30" x="115" y="910.6279">EVM</text><rect fill="#FEFECE" filter="url(#f1qsj2cwhw8y1j)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="258.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="35" x="265.5" y="70.9951">Apps</text><rect fill="#FEFECE" filter="url(#f1qsj2cwhw8y1j)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="49" x="258.5" y="890.6328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="35" x="265.5" y="910.6279">Apps</text><rect fill="#EEEEEE" filter="url(#f1qsj2cwhw8y1j)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="382" x="3" y="116.8633"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="385" y1="116.8633" y2="116.8633"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="385" y1="119.8633" y2="119.8633"/><rect fill="#EEEEEE" filter="url(#f1qsj2cwhw8y1j)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="180" x="104" y="106.2969"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="161" x="110" y="122.3638">Simple fast key press</text><polygon fill="#A80036" points="120,156.5625,130,160.5625,120,164.5625,124,160.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="126" y1="160.5625" y2="160.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="34" y="155.4966">KeyPress</text><polygon fill="#A80036" points="273,185.6953,283,189.6953,273,193.6953,277,189.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="189.6953" y2="189.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="139" y="184.6294">KeyPress</text><polygon fill="#A80036" points="120,214.8281,130,218.8281,120,222.8281,124,218.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="126" y1="218.8281" y2="218.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="34" y="213.7622">KeyRelease</text><polygon fill="#A80036" points="273,243.9609,283,247.9609,273,251.9609,277,247.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="247.9609" y2="247.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="139" y="242.895">KeyReleased</text><rect fill="#EEEEEE" filter="url(#f1qsj2cwhw8y1j)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="382" x="3" y="276.5273"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="385" y1="276.5273" y2="276.5273"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="385" y1="279.5273" y2="279.5273"/><rect fill="#EEEEEE" filter="url(#f1qsj2cwhw8y1j)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="101" x="143.5" y="265.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="82" x="149.5" y="282.0278">Long Press</text><polygon fill="#A80036" points="120,316.2266,130,320.2266,120,324.2266,124,320.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="126" y1="320.2266" y2="320.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="34" y="315.1606">KeyPress</text><polygon fill="#A80036" points="273,345.3594,283,349.3594,273,353.3594,277,349.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="349.3594" y2="349.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="139" y="344.2935">KeyPress</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="109.5" y="381.5698">Some</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="145.5" y="381.5698">long delay</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="205.5" y="381.5698"/><polygon fill="#A80036" points="273,415.2969,283,419.2969,273,423.2969,277,419.2969" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="419.2969" y2="419.2969"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="139" y="414.231">KeyLongPress</text><polygon fill="#A80036" points="120,444.4297,130,448.4297,120,452.4297,124,448.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="126" y1="448.4297" y2="448.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="73" x="34" y="443.3638">KeyRelease</text><line style="stroke: #A80036; stroke-width: 2.0;" x1="267" x2="277" y1="472.5625" y2="482.5625"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="267" x2="277" y1="482.5625" y2="472.5625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="272" y1="477.5625" y2="477.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="129" x="139" y="472.4966">No KeyRelease now!</text><rect fill="#EEEEEE" filter="url(#f1qsj2cwhw8y1j)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="382" x="3" y="506.1289"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="385" y1="506.1289" y2="506.1289"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="385" y1="509.1289" y2="509.1289"/><rect fill="#EEEEEE" filter="url(#f1qsj2cwhw8y1j)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="273" x="57.5" y="495.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="254" x="63.5" y="511.6294">Long Press - with continous action</text><polygon fill="#A80036" points="120,545.8281,130,549.8281,120,553.8281,124,549.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="126" y1="549.8281" y2="549.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="34" y="544.7622">KeyPress</text><polygon fill="#A80036" points="273,574.9609,283,578.9609,273,582.9609,277,578.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="578.9609" y2="578.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="139" y="573.895">KeyPress</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="109.5" y="611.1714">Some</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="145.5" y="611.1714">long delay</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="205.5" y="611.1714"/><polygon fill="#A80036" points="273,644.8984,283,648.8984,273,652.8984,277,648.8984" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="648.8984" y2="648.8984"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="139" y="643.8325">KeyLongPress</text><polygon fill="#FBFB77" filter="url(#f1qsj2cwhw8y1j)" points="199,661.8984,370,661.8984,380,687.8984,370,714.8984,199,714.8984,189,687.8984,199,661.8984" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="167" x="201" y="677.9653">App TIMER process things:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="201" y="693.0981">each 100ms:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="91" x="217" y="708.231">do_something</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="33" x="109.5" y="744.5073">Some</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="145.5" y="744.5073">long delay</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="205.5" y="744.5073"/><polygon fill="#A80036" points="120,778.2344,130,782.2344,120,786.2344,124,782.2344" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="27" x2="126" y1="782.2344" y2="782.2344"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="34" y="777.1685">KeyReleased</text><polygon fill="#A80036" points="273,807.3672,283,811.3672,273,815.3672,277,811.3672" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="279" y1="811.3672" y2="811.3672"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="139" y="806.3013">KeyLongRelease</text><polygon fill="#FBFB77" filter="url(#f1qsj2cwhw8y1j)" points="199,824.3672,370,824.3672,380,835.3672,370,847.3672,199,847.3672,189,835.3672,199,824.3672" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="167" x="201" y="840.4341">App end TIMER processing</text><line style="stroke: #A80036; stroke-width: 2.0;" x1="267" x2="277" y1="868.6328" y2="878.6328"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="267" x2="277" y1="878.6328" y2="868.6328"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="132" x2="272" y1="873.6328" y2="873.6328"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="129" x="139" y="868.5669">No KeyRelease now!</text><!--MD5=[78670620c5c2c0d19f61bbc4de275c40]
@startuml
skinparam BackgroundColor F0F0F0
actor User
== Simple fast key press ==
User -> EVM : KeyPress
EVM->Apps: KeyPress
User-> EVM: KeyRelease
EVM->Apps: KeyReleased
== Long Press ==
User -> EVM : KeyPress
EVM->Apps: KeyPress
... Some ~~long delay~~ ...
EVM->Apps: KeyLongPress
User-> EVM: KeyRelease
EVM -x Apps: No KeyRelease now!
== Long Press - with continous action ==
User -> EVM : KeyPress
EVM->Apps: KeyPress
... Some ~~long delay~~ ...
EVM->Apps: KeyLongPress
hnote over Apps
App TIMER process things:
each 100ms:
do_something
endhnote
... Some ~~long delay~~ ...
User->EVM: KeyReleased
EVM-> Apps: KeyLongRelease
hnote over Apps
App end TIMER processing
endhnote
EVM -x Apps: No KeyRelease now!
@enduml
PlantUML version 1.2020.02(Sun Mar 01 05:22:07 EST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.12+7-post-Debian-2
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>