an alternate keyflow diagram
authorschepers
Thu, 04 Jun 2009 03:29:16 +0900
changeset 120 e8dfe4f02f22
parent 119 7ee153fa5806
child 121 3b33aa09cbb0
an alternate keyflow diagram
proposals/keyflow-gecko.svg
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/proposals/keyflow-gecko.svg	Thu Jun 04 03:29:16 2009 +0900
@@ -0,0 +1,278 @@
+<svg width="100%" height="100%" viewBox="0 0 1000 1800"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1.33333 1.33333) rotate(0) translate(76 1276)">
+<title>G</title>
+<polygon style="fill:white;stroke:white;" points="-4,4 -4,-1204 363,-1204 363,4 -4,4"/>
+<!-- keydown -->
+<g id="node1" class="node"><title>keydown</title>
+<polygon style="fill:none;stroke:black;" points="323,-1122 257,-1122 257,-1086 323,-1086 323,-1122"/>
+<text text-anchor="middle" x="290" y="-1100" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keydown</text>
+</g>
+<!-- isCharKey -->
+<g id="node6" class="node"><title>isCharKey</title>
+<polygon style="fill:none;stroke:black;" points="218,-1048 157.064,-1000 218,-952 278.936,-1000 218,-1048"/>
+<text text-anchor="middle" x="218" y="-1006" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">character</text>
+<text text-anchor="middle" x="218" y="-986" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">key?</text>
+</g>
+<!-- keydown&#45;&gt;isCharKey -->
+<g id="edge4" class="edge"><title>keydown&#45;&gt;isCharKey</title>
+<path style="fill:none;stroke:black;" d="M277,-1086C269,-1073 257,-1056 246,-1040"/>
+<polygon style="fill:black;stroke:black;" points="248.459,-1037.38 240,-1031 242.635,-1041.26 248.459,-1037.38"/>
+</g>
+<!-- keypress -->
+<g id="node2" class="node"><title>keypress</title>
+<polygon style="fill:none;stroke:black;" points="197,-886 133,-886 133,-850 197,-850 197,-886"/>
+<text text-anchor="middle" x="165" y="-864" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keypress</text>
+</g>
+<!-- isIME -->
+<g id="node8" class="node"><title>isIME</title>
+<polygon style="fill:none;stroke:black;" points="155,-802 112.858,-774 155,-746 197.142,-774 155,-802"/>
+<text text-anchor="middle" x="155" y="-770" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">IME?</text>
+</g>
+<!-- keypress&#45;&gt;isIME -->
+<g id="edge14" class="edge"><title>keypress&#45;&gt;isIME</title>
+<path style="fill:none;stroke:black;" d="M163,-850C161,-839 160,-824 159,-810"/>
+<polygon style="fill:black;stroke:black;" points="162.478,-809.602 158,-800 155.512,-810.299 162.478,-809.602"/>
+</g>
+<!-- input -->
+<g id="node3" class="node"><title>input</title>
+<polygon style="fill:none;stroke:black;" points="182,-690 128,-690 128,-654 182,-654 182,-690"/>
+<text text-anchor="middle" x="155" y="-668" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">input</text>
+</g>
+<!-- islongkeypress -->
+<g id="node15" class="node"><title>islongkeypress</title>
+<polygon style="fill:none;stroke:black;" points="220,-597.849 153,-516 220,-434.151 287,-516 220,-597.849"/>
+<text text-anchor="middle" x="220" y="-542" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">character</text>
+<text text-anchor="middle" x="220" y="-522" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">key</text>
+<text text-anchor="middle" x="220" y="-502" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">still</text>
+<text text-anchor="middle" x="220" y="-482" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">pressed?</text>
+</g>
+<!-- input&#45;&gt;islongkeypress -->
+<g id="edge32" class="edge"><title>input&#45;&gt;islongkeypress</title>
+<path style="fill:none;stroke:black;" d="M163,-654C170,-636 182,-607 193,-580"/>
+<polygon style="fill:black;stroke:black;" points="196.137,-581.56 197,-571 189.74,-578.717 196.137,-581.56"/>
+</g>
+<!-- keyup -->
+<g id="node4" class="node"><title>keyup</title>
+<polygon style="fill:none;stroke:black;" points="291,-378 237,-378 237,-342 291,-342 291,-378"/>
+<text text-anchor="middle" x="264" y="-356" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keyup</text>
+</g>
+<!-- severalkeyspressed -->
+<g id="node14" class="node"><title>severalkeyspressed</title>
+<polygon style="fill:none;stroke:black;" points="267,-303.536 204,-237 267,-170.464 330,-237 267,-303.536"/>
+<text text-anchor="middle" x="267" y="-253" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keys</text>
+<text text-anchor="middle" x="267" y="-233" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">still</text>
+<text text-anchor="middle" x="267" y="-213" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">pressed?</text>
+</g>
+<!-- keyup&#45;&gt;severalkeyspressed -->
+<g id="edge42" class="edge"><title>keyup&#45;&gt;severalkeyspressed</title>
+<path style="fill:none;stroke:black;" d="M264,-342C264,-333 265,-323 265,-312"/>
+<polygon style="fill:black;stroke:black;" points="268.5,-312 265,-302 261.5,-312 268.5,-312"/>
+</g>
+<!-- keyup2 -->
+<g id="node5" class="node"><title>keyup2</title>
+<polygon style="fill:none;stroke:black;" points="294,-114 240,-114 240,-78 294,-78 294,-114"/>
+<text text-anchor="middle" x="267" y="-92" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keyup</text>
+</g>
+<!-- keyup2&#45;&gt;severalkeyspressed -->
+<g id="edge46" class="edge"><title>keyup2&#45;&gt;severalkeyspressed</title>
+<path style="fill:none;stroke:black;" d="M265,-114C265,-120 264,-126 264,-132 264,-142 264,-153 264,-163"/>
+<polygon style="fill:black;stroke:black;" points="260.5,-163 264,-173 267.5,-163 260.5,-163"/>
+</g>
+<!-- isCharKey&#45;&gt;keypress -->
+<g id="edge12" class="edge"><title>isCharKey&#45;&gt;keypress</title>
+<path style="fill:none;stroke:green;" d="M203,-963C194,-942 184,-915 176,-895"/>
+<polygon style="fill:green;stroke:green;" points="179.26,-893.717 172,-886 172.863,-896.56 179.26,-893.717"/>
+<a xlink:title="yes">
+</a>
+<a xlink:title="yes">
+</a>
+<text text-anchor="middle" x="201" y="-920" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">yes</text>
+</g>
+<!-- moreevents -->
+<g id="node13" class="node"><title>moreevents</title>
+<polygon style="fill:none;stroke:black;" points="315,-896 271.234,-868 315,-840 358.766,-868 315,-896"/>
+<text text-anchor="middle" x="315" y="-864" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">more?</text>
+</g>
+<!-- isCharKey&#45;&gt;moreevents -->
+<g id="edge6" class="edge"><title>isCharKey&#45;&gt;moreevents</title>
+<path style="fill:none;stroke:red;" d="M240,-969C257,-947 279,-917 295,-895"/>
+<polygon style="fill:red;stroke:red;" points="297.8,-897.1 301,-887 292.2,-892.9 297.8,-897.1"/>
+<a xlink:title="no">
+</a>
+<a xlink:title="no">
+</a>
+<text text-anchor="middle" x="286" y="-920" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">no</text>
+</g>
+<!-- text -->
+<g id="node7" class="node"><title>text</title>
+<polygon style="fill:none;stroke:black;" points="79,-534 25,-534 25,-498 79,-498 79,-534"/>
+<text text-anchor="middle" x="52" y="-512" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">text</text>
+</g>
+<!-- text&#45;&gt;text -->
+<g id="edge20" class="edge"><title>text&#45;&gt;text</title>
+<path style="fill:none;stroke:black;" d="M58,-534C74,-570 97,-564 97,-516 97,-473 78,-463 63,-489"/>
+<polygon style="fill:black;stroke:black;" points="59.7969,-487.559 58,-498 65.916,-490.958 59.7969,-487.559"/>
+</g>
+<!-- compositioninput -->
+<g id="node11" class="node"><title>compositioninput</title>
+<polygon style="fill:none;stroke:black;" points="79,-378 25,-378 25,-342 79,-342 79,-378"/>
+<text text-anchor="middle" x="52" y="-356" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">input</text>
+</g>
+<!-- text&#45;&gt;compositioninput -->
+<g id="edge22" class="edge"><title>text&#45;&gt;compositioninput</title>
+<path style="fill:none;stroke:black;" d="M52,-498C52,-471 52,-420 52,-388"/>
+<polygon style="fill:black;stroke:black;" points="55.5001,-388 52,-378 48.5001,-388 55.5001,-388"/>
+</g>
+<!-- isIME&#45;&gt;input -->
+<g id="edge30" class="edge"><title>isIME&#45;&gt;input</title>
+<path style="fill:none;stroke:red;" d="M155,-746C155,-732 155,-715 155,-700"/>
+<polygon style="fill:red;stroke:red;" points="158.5,-700 155,-690 151.5,-700 158.5,-700"/>
+<a xlink:title="no">
+</a>
+<a xlink:title="no">
+</a>
+<text text-anchor="middle" x="162" y="-714" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">no</text>
+</g>
+<!-- compositionstart -->
+<g id="node9" class="node"><title>compositionstart</title>
+<polygon style="fill:none;stroke:black;" points="108,-690 4.9738e-14,-690 0,-654 108,-654 108,-690"/>
+<text text-anchor="middle" x="54" y="-668" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">compositionstart</text>
+</g>
+<!-- isIME&#45;&gt;compositionstart -->
+<g id="edge16" class="edge"><title>isIME&#45;&gt;compositionstart</title>
+<path style="fill:none;stroke:green;" d="M138,-757C122,-741 98,-716 79,-697"/>
+<polygon style="fill:green;stroke:green;" points="81.546,-694.596 72,-690 76.5962,-699.546 81.546,-694.596"/>
+<a xlink:title="yes">
+</a>
+<a xlink:title="yes">
+</a>
+<text text-anchor="middle" x="120" y="-714" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">yes</text>
+</g>
+<!-- compositionstart&#45;&gt;text -->
+<g id="edge18" class="edge"><title>compositionstart&#45;&gt;text</title>
+<path style="fill:none;stroke:black;" d="M54,-654C53,-627 53,-576 52,-544"/>
+<polygon style="fill:black;stroke:black;" points="55.5001,-544 52,-534 48.5001,-544 55.5001,-544"/>
+</g>
+<!-- compositionend -->
+<g id="node10" class="node"><title>compositionend</title>
+<polygon style="fill:none;stroke:black;" points="104,-255 4.9738e-14,-255 0,-219 104,-219 104,-255"/>
+<text text-anchor="middle" x="52" y="-233" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">compositionend</text>
+</g>
+<!-- compositionkeyup -->
+<g id="node12" class="node"><title>compositionkeyup</title>
+<polygon style="fill:none;stroke:black;" points="137,-114 83,-114 83,-78 137,-78 137,-114"/>
+<text text-anchor="middle" x="110" y="-92" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keyup</text>
+</g>
+<!-- compositionend&#45;&gt;compositionkeyup -->
+<g id="edge26" class="edge"><title>compositionend&#45;&gt;compositionkeyup</title>
+<path style="fill:none;stroke:black;" d="M59,-219C69,-195 87,-151 99,-123"/>
+<polygon style="fill:black;stroke:black;" points="102.137,-124.56 103,-114 95.7402,-121.717 102.137,-124.56"/>
+</g>
+<!-- compositioninput&#45;&gt;compositionend -->
+<g id="edge24" class="edge"><title>compositioninput&#45;&gt;compositionend</title>
+<path style="fill:none;stroke:black;" d="M52,-342C52,-322 52,-289 52,-265"/>
+<polygon style="fill:black;stroke:black;" points="55.5001,-265 52,-255 48.5001,-265 55.5001,-265"/>
+</g>
+<!-- end -->
+<g id="node33" class="node"><title>end</title>
+<ellipse style="fill:none;stroke:black;" cx="168" cy="-20" rx="27" ry="19.799"/>
+<text text-anchor="middle" x="168" y="-16" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">end</text>
+</g>
+<!-- compositionkeyup&#45;&gt;end -->
+<g id="edge28" class="edge"><title>compositionkeyup&#45;&gt;end</title>
+<path style="fill:none;stroke:black;" d="M124,-78C131,-69 141,-57 149,-46"/>
+<polygon style="fill:black;stroke:black;" points="151.8,-48.1 155,-38 146.2,-43.9 151.8,-48.1"/>
+</g>
+<!-- moreevents&#45;&gt;keydown -->
+<g id="edge8" class="edge"><title>moreevents&#45;&gt;keydown</title>
+<path style="fill:none;stroke:green;" d="M312,-894C307,-939 298,-1030 293,-1076"/>
+<polygon style="fill:green;stroke:green;" points="289.512,-1075.7 292,-1086 296.478,-1076.4 289.512,-1075.7"/>
+<a xlink:title="yes">
+</a>
+<a xlink:title="yes">
+</a>
+<text text-anchor="middle" x="314" y="-996" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">yes</text>
+</g>
+<!-- moreevents&#45;&gt;severalkeyspressed -->
+<g id="edge10" class="edge"><title>moreevents&#45;&gt;severalkeyspressed</title>
+<path style="fill:none;stroke:red;" d="M317,-841C318,-822 319,-796 319,-774 319,-774 319,-774 319,-360 319,-334 309,-307 298,-285"/>
+<polygon style="fill:red;stroke:red;" points="300.916,-283.042 293,-276 294.797,-286.441 300.916,-283.042"/>
+<a xlink:title="no">
+</a>
+<a xlink:title="no">
+</a>
+<text text-anchor="middle" x="326" y="-622" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">no</text>
+</g>
+<!-- severalkeyspressed&#45;&gt;keyup2 -->
+<g id="edge44" class="edge"><title>severalkeyspressed&#45;&gt;keyup2</title>
+<path style="fill:none;stroke:green;" d="M267,-170C267,-154 267,-138 267,-124"/>
+<polygon style="fill:green;stroke:green;" points="270.5,-124 267,-114 263.5,-124 270.5,-124"/>
+<a xlink:title="yes">
+</a>
+<a xlink:title="yes">
+</a>
+<text text-anchor="middle" x="276" y="-138" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">yes</text>
+</g>
+<!-- severalkeyspressed&#45;&gt;end -->
+<g id="edge48" class="edge"><title>severalkeyspressed&#45;&gt;end</title>
+<path style="fill:none;stroke:red;" d="M246,-192C227,-149 198,-85 181,-49"/>
+<polygon style="fill:red;stroke:red;" points="183.964,-46.9849 177,-39 177.464,-49.5847 183.964,-46.9849"/>
+<a xlink:title="no">
+</a>
+<a xlink:title="no">
+</a>
+<text text-anchor="middle" x="219" y="-92" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">no</text>
+</g>
+<!-- islongkeypress&#45;&gt;keyup -->
+<g id="edge40" class="edge"><title>islongkeypress&#45;&gt;keyup</title>
+<path style="fill:none;stroke:red;" d="M237,-455C244,-431 251,-406 256,-388"/>
+<polygon style="fill:red;stroke:red;" points="259.479,-388.584 259,-378 252.774,-386.573 259.479,-388.584"/>
+<a xlink:title="no">
+</a>
+<a xlink:title="no">
+</a>
+<text text-anchor="middle" x="261" y="-402" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">no</text>
+</g>
+<!-- repeatedkeydown -->
+<g id="node16" class="node"><title>repeatedkeydown</title>
+<polygon style="fill:none;stroke:black;" points="219,-378 153,-378 153,-342 219,-342 219,-378"/>
+<text text-anchor="middle" x="186" y="-356" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keydown</text>
+</g>
+<!-- islongkeypress&#45;&gt;repeatedkeydown -->
+<g id="edge34" class="edge"><title>islongkeypress&#45;&gt;repeatedkeydown</title>
+<path style="fill:none;stroke:green;" d="M206,-451C201,-429 196,-406 192,-388"/>
+<polygon style="fill:green;stroke:green;" points="195.393,-387.119 190,-378 188.529,-388.492 195.393,-387.119"/>
+<a xlink:title="yes">
+</a>
+<a xlink:title="yes">
+</a>
+<text text-anchor="middle" x="208" y="-402" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">yes</text>
+</g>
+<!-- repeatedkeypress -->
+<g id="node17" class="node"><title>repeatedkeypress</title>
+<polygon style="fill:none;stroke:black;" points="186,-255 122,-255 122,-219 186,-219 186,-255"/>
+<text text-anchor="middle" x="154" y="-233" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">keypress</text>
+</g>
+<!-- repeatedkeydown&#45;&gt;repeatedkeypress -->
+<g id="edge36" class="edge"><title>repeatedkeydown&#45;&gt;repeatedkeypress</title>
+<path style="fill:none;stroke:black;" d="M181,-342C176,-322 168,-289 162,-265"/>
+<polygon style="fill:black;stroke:black;" points="165.226,-263.573 159,-255 158.521,-265.584 165.226,-263.573"/>
+</g>
+<!-- repeatedkeypress&#45;&gt;input -->
+<g id="edge38" class="edge"><title>repeatedkeypress&#45;&gt;input</title>
+<path style="fill:none;stroke:black;" d="M152,-255C150,-276 146,-311 144,-342 139,-455 136,-484 144,-598 146,-613 148,-630 150,-644"/>
+<polygon style="fill:black;stroke:black;" points="146.607,-644.881 152,-654 153.471,-643.508 146.607,-644.881"/>
+</g>
+<!-- start -->
+<g id="node18" class="node"><title>start</title>
+<ellipse style="fill:none;stroke:black;" cx="290" cy="-1180" rx="27" ry="19.799"/>
+<text text-anchor="middle" x="290" y="-1176" style="font-family:Nimbus Roman No9 L;font-weight:regular;font-size:11.34pt;">start</text>
+</g>
+<!-- start&#45;&gt;keydown -->
+<g id="edge2" class="edge"><title>start&#45;&gt;keydown</title>
+<path style="fill:none;stroke:black;" d="M290,-1160C290,-1151 290,-1141 290,-1132"/>
+<polygon style="fill:black;stroke:black;" points="293.5,-1132 290,-1122 286.5,-1132 293.5,-1132"/>
+</g>
+</g>
+</svg>