66H(@ <,`" & & ;w;w;w;wwX$߿N33$ ~!J߿$@ I& T{T{k, Inc. HelveticaCourierNew Century Schlbk Palatino GaramondTimesBookmanLubalin Souvenir BenguiatGlypha Fritz Quadrata Zapf ChanceryTrump MedievalMelior GalliarxHH03Ag{HH0d'h`LaserWriter II Helvetica Helvetica  -Blanc-Bleu-\ƈHƈCyan-*Jaune-&Magenta-Noirk-Repraget-Rouge-UUVertnt`` zNormal$` xQ`Titre1P:`&fStandard $@$$# V O!n 1n"n !Q$Bh,B.Jf`=@"n "(N^"_O NNV O!n =@"n2N^"_PN"_ _f`>NJxk"0<F"H0<Fg"_ _0/ ?@Nu o0<"H` 0<@S@BXQ2 x3| ( gBJ(, $$)nj(_L N^ _O Na"_NuNV/>. Gl n 0Z@=@ Gf n =h` n =h?.?.0??"HH$B @ $HH$E @"$$ȀDȕ" @xo\s}?}t@@@ @@@ @ D@@``0`` @@  @6q,G#,Dp@$$H 2L$@2Ĉ@ H "HȔ$@"D@$O "FH'T"D@$H "AH$T"D@$eX "IȒ$@("D@9ݲ'8qw}s(wp@@@@@@@ @@@  @ @@6G&yC6X@Șc Xj$Č e@H" DH@HHE@H" DȒA$HHE@H" DB$HHE@H" DHBeD E@8]wpyÏÆ8@@@@@@@@ @@ $ @D @@ $##&nc`y@@ $ḎddI $H"$@@ $D$!"" "$@@ $($"H! #@@D($$H " "@@$@$ "dJ"$@@s\s}cq @  @  @8@@@ @@@@@= pc6X@Fd @#R1Țk"e@$DA"E@$D A"E@$D@AE@DD@"IA E@9p;㻼 @B @B @<@@ @D @ @@ @_|"H @EE P@"$H@@"QD&(,Ȓ @;bb9qg9p @ @ @8@@@@@ @@@;yD;C @2"E,DLDbD@""EDDD"HH@""|D D"HH@""@$8 D "HH@""E$@D"D@wp9y;@@ @ @xp@@@@":B@fBDF"@ "@BB"@96G9r"8HB`@"EHDȘI&"HxD8@"EHAB"@Hx @>)"$PH1"0@H@ )"DPH B"@DB@""L HI""HBBb@6 8]swp\@@ @@ @@@@@@? @@ K @@@ A@Gf8AcF;@&HH"F@A@I2d@ C@$$@A@PA@ D0H$$@AP1d0drw2E 3 x E 3 E 3E 3E 3`````p08 8p`` ` ` ` ` ` ` `   ` ` ` ` ` p 0 0 0 0 8       80p`````````    8p          ddrw2D'`HNu <`I|$  d$ !@D  bE !DL  !qpo;7           D  @@   @ D  <̎̀DD&nc`  DEF&@D$H  DDD@DD""   DDD$@$D!   DDD$@$D"   DLTd@DD"dJ  <7.9c  DD  DD  @  "DD  0000 @ DD Xs8#͋"8 e$MEd&I QbDDD Dr$HE$J Q"D D'}#$L*"|DD E$A $J*"@ E2HE$dI "DDD 8;;8 DD  DD  DD D ` DD @ #t`<ǎl!DD dLd1bj,Q5bF@ $DD"B$G r$$@HDD $DD"CI $$@H $DDp"BQ!$$@HDD $DD"B$S!2D@ s;<ǍqDD    DD p DD   ?DD c0 `  A  @ DD xl#  2œ5$"F@DD  "D $$$@ "D #H$$@DD A"D H$$@ cB"D$*D@DD 8Gwyq? @DD @ DD  DD   0DD  q= pDD Fd @#R $DDD $D  $D@DD DD@" s9pDD  DD  DD   DDD `  @DD l,pA AD H|DD  AADHq@ bAEDHDQDDD ܜ㍸:slG DD  DD  DD  G 0 DDD  @ ;sf86q9DD I"EQD̢h( A"E@(DD 1>}$@/  APD@(DD IbEQLH@( ps8s7ÝwDD  DD  DD  DD  DD sp10q $HD&HH#R@DD !ȁD  BE  DD DE @ P"HPH"@DD bPp1ܸ1s  DD    DD  DD  @@DD @@  }D!DD B@* "D!  H20"DDD 0pt؀ BDD B <DD  DD p D DD D  s` 9rl:DD D D̃I1$2D D B"DDD D $Bb"D  D DB"8DD U L $"@ "sp7wx DD  DD 8x DD  DD    DD c;፝ I2d2FHDDD  A$H$ 1$H$DD  $H$ @IR$DJDDD `@p@ @DD @ DD  DD @@" 0fDD @" lǎD"0@A""$@DD ( D"@A""# hD"A""$DD 9t8qp;ww @DD @ DD  DD  ( @`(DD @ ( >d0drw2u_OUTUT u`Ou_Ou_Ou`O   Save screen space Eliminate button homing time Targets for marks can be larger than button targets Marking can convey more than just command verb Command expression by gesture results in fewer visual searches Example: ScrollBar vs. Scroll marOODu uD Du 0I:9"( #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreenE/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d1drw2il ddrw2:ddrw2:%d4drw2:d drw2:  d drw2:  d drw2:  d drw2:  ddrw2:d0drw2Ct - CtNtttUPp`p`0p20 ?` 0x0 p81` ?` 陙0 p y1?` 91p &1`?` 0p?`p`pp`p`p`p`p`0p0`0p#0~?`10c|x  p10xsy `  @`*? Ap  @p&0`c` `30 `cp  1> p40`c0 88pߏ~p< `40x`c808`0Ç8 8q 0p40`cp `801 `40`c01`801 p60 Ã`a0 !`00 p`60`a`a`00> 8p6|p|A `00 `& p00 p&88`08 01 `&l?xp 01 p%烏x9~?` p ` p ` p` p`p`p`p`p`p`p`` 1pa`0 q``0@ p0p`0 p0`ac0qpl1sp`?73$C`9adg 0f3 1Lct@@@p;`dc0f31O `:`8a0f3 1@@ pB`8d0f31 %p8x1̀;Gc l:1M3p`Baf`0 {1%p DE"H&bH2D X pB|d{% E!"$"C!"D DH `0%`$E!Q""D!"DDH p0%DEQ "H!"8DH `0%Ċ LE H$"I"@ DH(p0%68 <0A;wx `B pB `<pxp`p  @ t`! @ p!@`F 00 c3َlǎllxsw@! BCb/ȒD`Ka@c0=1@`D7X?&PD@H"( @! BB("DpK aǀ@{߀D&QLH@P@I0")b@ @$$B (H&D`6&8s7Ý8PoF@wvȜ p qwp0@`0@p `p`*@@p'$ @ `' @ p1&8x1Oَ6ٓ fM3pBD_$/D&H"@DH DpE `, 0`p&"$D BDP$(D!H"@DH DHq`I ` 0`@0& !"dH $DQD(DQ")Ȓ&PDH(DHpI ` 0`0&pݾw8F~g  :s`(`<01saばp(c f 02'n39Bp`'`3 F@063f1;6,p>p6&"eD 52XH"$d" 2H`6&ED!"9"HC"BD""Cp6&E|!>I"H "BD"" `1&"E@!"Hp "BD" p1&&ED !"H "$D  " `1&8Apo;w 8߻wpp!B`!Bp0<`p`= `@@ D0w p@  ` H""`?   @@@""pH`  &fNp6qǝ6X&Ǚc3Dsg6`Na <8 x sxxas&""Ĉ( ec,H4 LDA$D @pNrfc3 1 ـfdN&""D舁E"$H!  DDAD 9`M2 f 1̌c܀7,f&""D(E"$H!  DG( I@pM4 f p 1p c3&""D(E"$H!  DD$(B@`M f 818 lc1&"&Eh E"$I 2 DDA%B pM f 1LcӀ4&&p8qB8wwp` Ao;``9 fk1  3 cـfg! p9<1xxfÏ! `!p ` p0`@" `-00@`"`p-@@ " `/$f1saǀ@;89c`X"w#p/$"e3 H(A(@D)HH"@eA&"$@`/$"E 9(r(@D(@ Ep""$@p/$"E I/(@D0H E""'`/$"E A(@8H E""$p/$&E HA2(@@)H "@E0"*@@`>$p1o;w@xmp d``wsp@p$a2  `%`0 p%`0x`aw|<˞ pÀp f#`1f<d@`$acC0`1r a ,` Pp"`a0`088 a ÏP`!`a0`0 a Pp'`b0`1N a g#`'acY`1f 3g$Mdp'nx<=À H$"`H#>pH `$H$p8ow` p ` p`p`p``{pp8`1 8`p81pXX1`XX6< aǀ10pLNfyـ3l10<`L1рfn@10pM81Àfg10`G1̀fc1pG1ـfi1`B~f1۠c1l1 0p<2<{a{`,`:2p0`D00 H`0`D@p4%""68͎xl 㜛q`0%"#(E#&Q$Q"H F5$eID@p/$B($GBQ" B!EHD:`0%B/R%$IB*>HB EȈIp0%(RE$QB* HB $E@`0%("M"$S$"  B!%EJP@p0%w;'6~;tdqPo`!p!`8p0`0`p20`0@Pt`50ǀ>ys  P00p5Ȁ?flg"3031 @P`A07.@cc391#6qN19<wۃlalsgpA0l3c11#$DAQJQD%)(i45H`A0l1Às`01#D@BD r((A! !"9rp@@0l4>q2p'1"$B1DF/A! !>I`@π0fl@>7033"$BPDA("A! !p@<=ǀ~@"dAJQD%0(AAQ !2`1?"8qs:8؎w`po;pp`p| `p`#@pQp'  R6 `' @ Rp.#ËaX#<0qͻsɳ`.#i$1 eQMDI2@(D@&$E Ԑp.#B  Dr!Db(D:$BE9`B<80`B  D"HD/I BDIpB`Fdp#B E$HD(@ BD `B`F `0`#A$IE2$DI@(P@$$M ApB`F`0`#Ýs|:0dwPo7l`#`F. 7l= p#`Ga039~3 `"`Fc c1091gap`Fc c101ca``Fc c101capBpc c90'1@ca @ @@p`C9ac031b30@L ` @@pC<vx{;@D@ @@`-"fl=lX9ϸ< 6xm͏qap-""@FQ24eJ%D  &&H`-""@DQ" E@HD!А$$Hp-""@D_" E1"(HD P$H`-""@DP" E "(HDPB$Hp-"&PTQ" EJa@ DD "d$H`-" .wNpq@:8tq sp`p`p`+9  @Hp2 G 8`)`NCtCtCt4  HpB 00 `#6c.MCf93ݛr;sg9p lGyÏ80Xx <<#M$HDH(IDE  )pG|33F01`c0 ff`#(DHD(AD" `G21f00`c0 r`#H0DH|b/1$A@H&pG0q 00`c0 8`#H(DG@H( D@H!`G1 0`c0 `#$DHD4J(I@PHM HBipG31! 0`c0 N`#;|vo@wPs7 A`17u Dcg ffh@x1 D8;<<0@`"|` p0 `%00   p$ `/$V&à38c8p08p/$$Hc$A$̑L"$L$ Q""I$ME@`/$H"$A@@$H Q"BHDrp.#$H"$@@@$H*`"BH|l/$$G"#(@@#*"BHAp/$d"$$D "d$ & HHE2@`A <0$9o;w͹9<18`w- 0f3p8p@@B!`- pB!p80@@@B!x"- aXX0<b0aXXx.7<sp0aL2YN@y$F`B0aLc41\fF`1Lf |C0aMc@  $H3@!&p3$@@$D( @ $H !%`34$DDdD)b@" 1DJ 1!"Dp38$;9ݾvÀ|q pl p ` p`p% @" `"`  p"@ `8`r##ܛ"8!crl:1͙1|8a#$dH$"X&MbF@̢i&2D &HH`:`` # $H ȑ"@r$$A AB"D$Hp:` ``#$OPH"@$$A A"DH`@aa<p#$HPH"A$$A AB"8Hp@b&`fc"c3̉#$$H$ ȑ"E2D@A""@$IH`@aьf7 rcc>1`7X@c0`/<8f>{cq@ `-"xgx8,s8pbl: n~-"" E`j)ES2 E #)i2D$ do-"DtB(Dr"E("A"D$Dp-"DC|"c|(>A"D$Dj-"" EBA"@ ( A"8$DpP-"& E4 B)E2"E "(A"@eD`-"t9898w pwwx~ `n x`(j4x@0`  @pP7p80 $o(9@0`  @ ~G 0`0 $fَl lǙ́6s8!Xy;wxɳ`nI> cpx $"fQ2 3,H&$ME2bF@e#D"X̢d EFRQ$qxEsF  mark can be done without looking YQa j VQmore room for text t  $ZB %%%% d ,,,,,,,,,,,w33valuable screen consumed by scrollbar L0***   ?       ?            GQ5hM54  QfeMO)`regular field has a scrollbar$` more than just command verb Command expression by gesture results in fewer visual searches Example: ScrollBar vs. Scroll marksrks HyperMark allows hand-drawn symbol recognition in HyperCard Example: an electronic newspaper in HyperCardard The user makes a HyperMark by making a stroke with the mouse pressed. In this example an up arrow mark causes the text to scroll one page up.        ?       ?            ?               ?       d`drw2TTUTUT Z  Staia("3ddrw2Dt0w0y1{1|2345789:;<=@ABBC@ m&``Q;w;w;w;ww@$߿ m& @Qx';w;w;w;ww@$߿ m& @Q\;w;w;w;ww  ou4@2[s@B\6  The user makes a HyperMark by making a stroke with the mouse pressed. In this example an up arrow mark causes the text to scroll one page up. arrow mark causes the text to scroll one page up. 87TS  69XSWVdk Z  Du"cd`drw2 VgnXdaVgdqVgdaVgdice such as a mouse or a tablet. Rather than just using the start and end position of a mark made by the user, the shape of the stroke is interpreted as a command. This technique has for effect to broaden the communication bandwidth beetween the user and the system. Therefore the user can input more efficiently. The shape of recognized markings often talk by itself, such as text editing marks. Mark based interfaces can therefore be a natural and easy to learn interaction technique. Commercialized systems, such as the Go PenPoint system use mark recognition with stylus and tablet input. HyperMark works with Hypercard on Apple Macintosh , with a standard mouse. It adds the benefits of mark based interfaces to already existing systems, known and used b HyperMark allows the input of both a command and its parameters in a single action of the user  A single mark is used in GEdit to specify at once: a command, "duplicate" its target:the circle in which the mark started the location where y a wide variety of people. HyperMark addresses the problem of self-explanation of mark-based interfaces Mark-based interfaces face two problems: there is not always a "natural" mark to be associated to a command. the set of recognized markss is not explicitely shown on the screen. Special help has to be provided independantly by the interface designer. A Marking Menu in HyperMark aal help has to be provided independantly by the interface designer. A Marking Menu in HyperMark a/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d4drw23 i씎e A4! Hd1drw2 e `ddrw2:ddrw2:%d4drw2: l]@@7ddrw2: Tape Player .l]@@(TI) a[) p) em)  JR)P) l݊)aI) yK) e) rddrw2: ddrw2:d`drw2"DD_"DD_ Z "d`drw2`O ͸`O ͸ Z ` ###d0drw2?-j:s###1@ ##0 _cv begin stg end #8d0drw2<lNl0 1= 8d1drw2"pp `ddrw2:ddrw2:%d4drw2: `\M@@pd drw2: >>`\M@@(>';) >ddrw2: ddrw2: "###d0drw2((pb;.###1()q ##0 _cv begin stg end #8d0drw2$$l4w 1$%m 8d1drw2EO|P|P `ddrw2:ddrw2:%d4drw2: pc @@|Pd drw2: >pc @@++]>ddrw2: ddrw2: "O##d0drw2bKctXZ 8###1bL ##0 _cv begin stg end #8d0drw2]Gy1()jC 1>) 8 ###d0drw2 Zl԰Q6W_###Q Zm ##0 _cv begin stg end #X ###d0drw2f-:d###1f ##0 _cv begin stg end #8d0drw2c]l! 1c 8d1drw2pa:pa: `ddrw2:ddrw2:%d4drw2: `WU@@p:d drw2: <<`WU@@(<)<ddrw2: ddrw2:d`drw2bvLbvL Z b UUU##0 _cv begin stg end #dpdrw2 XG_XGXGaLLt{__ ##0 _cv begin stg end # UUU"#0 _cv begin stg end #q:  ##0 _cv begin stg end # "## ## # <s UUU "##########d0drw2:H]0= UUU##0.240 _cv begin stg end #d`drw2@,$ Z ##0.240 _cv begin stg end # av(" ddrw2D0.240 _cv begin stg end #d`drw2@,$ Z ##0.240 _cv begin stg end # av(" ddrw2Dthe command should take effect, the end of the stroke. HyperMark adds mark recognition techniques to traditional direct manipulation interfaces Mark recognition involve interpreting the dynamic aspect of the marks drawn with some positioning dppears automatically after a certain delay to show the inexperienced user the recognized marks and direct her/him.  g Menu n HyperMark appears automatically after a certain delay to show the inexperienced user the recognized marks and dire Why Use HyperMark ?|:6:7p:6:7xUUUUxPHH:7hJ< HT <.:7d:7 :6:6UUUUx What is HyperMark ?is-Sud Batiment 490, 91405 Orsay Cedex, France 33+ (1) 69 41 69 10, thomas@l manipulation interfaces Mark recognition involve interpreting the dynamic aspect of the marks drawn with some positioning dev  HQQ|QQܪUUUUxtHH  "d###d0drw2a  a aaa0000000000pp 80000000`0`0`0`0`0p000800000000p``e input of both a command and its parameters in a single action of the user. Pڔ Pڔ Pڔ,Pڔ"        HPڔ```                            ` ` ` p p 0 0 0 0 0 0 8       800000p`````  800000000000000p`                     800p``ddrw2D QLeft mark executes "print"nNHxBgN\J@g0-\` mڠHh?.N\;@\J@g0-\` mڠHh mڠHh?.NO ;@\J@g0-\` mڠHh?.N\;@\J@g0-\` ^HnHn mڠHh?.N϶O;@\J@g0-\` 2Nr mڠHh?.N2\;@\J@g0-\` mڠHh### ict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdDown mark executes "previous page"@6`/+:NRX'@6&k:`&k6RnJnmJnfB`J:g/ /+:NtP`)k66  f/ N X-@ n!L6`D-K'L6`:g4`./ NX/ /+:N*P n"l:#h6 n!l:`)K6&LHN:,gZ mڠp(@dJ0.Pڔ Future Work ][ aU*UU[ô[0o, gno, gno @ ggV _ _*UURight mark executes "edit"(@d4p,VDJ@RDHnS@=@ mڠ h0.HА @ .H?/ ?.N   > >  0I:9"d #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreen -/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d0drw2?   ? >? ? ? HHH%)Ë 6c3&) $ )(D$0qpc8fp9 (E 0$ @E eH"D H&/) $0B@1@E" H!() $0B T$E!"`$$I HBi(4e/B@ TD E!"DÝ Aw8`$ @(M E&Lss(7 6A  9 11c`@` -  8 A @ 00  `   @ l6($LE$&H5H2.9cY9͜E$H p"/I@ȤDfQDH " .A@HDQHD$H!!" .1HT| $_PHM%B$J!4B1"/ HT@"@$PP7Ap.wp$I@I(DB$&@$Q% sF@(9܁B @  @@ `@0' @@@ @- @ rqtl:`l, @@$2@(D@&2D50Xc1՜X}8MC͐(H"@(D:"D !1d&He(H$H&(H"@b/I"D !0E $HE(@BDH!$ (H"@(@r"8 !0E $H E0BDH!$0$"P(P@""@ !1E HEBDG!$ sw wPowx`p%D2JE H$DHR$ !%n` ! !x !:@8@Ā@0'` 0@@@D@@-p /3l1-`@D $5(H@D/apm 6x`@HH $!@HP/"& "@HH $ ρ@HP/ $a!А @HHD (@HP/ $y P @TI!(H@T/ $eP @# 81à#; "de "@@apx8t``````` $"`` *a㜆6seɰl6fpx)`4ID23("!0s1َl6 Ȑ$"9"(""0&1# HfQt"e$R H$"I"/"`"0 9 DG`"E$P@H$""(""0 I DI`"E$L@ʉD""(&!0  DQ`E$B@e;woww;p"Q" HDS` E$ lp1ۻs|`B `B `< `  `#$dR ccdqH$P @H'! (H$ s $$R @9s@ @ g8cs @  @ )`A&s<N9l6s( Q H QHD3($/q8sǃs6MpQHDQED"($0 D" (e$ gB|"/#0  (DE$ B@"( 0z $ SB/DE$`Q`J AHD"(,0 D R(DE$89ww; LA" " (DE%q6p!s8r 8   $0sm&Ǚ!2REdXc,H1/9ٜp8ccm67`EHH"$H/JHL4" e0EHH"$H/BA  "D BEHH"$H/1`A  "D RM$H"$I1HA  D ;6sww; JIDQ  D2  ;s8cq߻pB B <d K A$I`l㜆6Ac9&% 5ɉA@EDMc21Ms,p<;sdـ tA@EDQH""&1# 2bfP$ ""DP`#`@H ! &@@.0,p>۹8<0 8plsn38$2H iDR0Lp Q"2IH"@@P("CA$P0!@ Q"P@@@P0" @$L0!@*`"0@@P(!" @$B0!@*"""@@$1" @BD 0DĊ &" H&P@v@.wpA|8 9ws   :Dpt, @AD0-0DAH/ @ 1pBcgPfۜ0.AnscXH@B`"i"d)0#QAF(`@B P"A"D0:t$"@#@ @`B H"A>D(0( $" $@ @A D"A D(0( A$"(@H@AB&AbDh0"A"D")@81à@pc@q:os@ @ p  t ` %@6  )@,p 3>6p9w.,} 2H LQ"p P.$ dR@Q&d3QD(@" H @" P. $P@Q&Db(@"  @D*.$L@*>D P/"   @H*.$B@*,D P( " 4(DĊ /$ $P.DD (Pwp;9@%9#| @ !wP @ 8@0` 000@&  0  # `0 @*  0 f: qy0,1,p>L&á "DL)$"@D02H$ 24Hc$@P"D(H$ D0"$"4C"$@"D&(H$ D0"$"z"$@"8H!H$ D0"$"j!"#&@BHBi*@D0"H% " "$ y܃A9%70mrwp wwF @ @x @)p0 c+H ` A@.@ <ͳ\008cp<0ap b$DԢ#Q$H/I@LRDH ` !"BD"BP/@A HD @ !"BD>B`0@A (HD !"ABD !BP0@A (HD @ R"o$L;"R$H,H@D DDH <@#0p8`p:0cp  p   `$0@ 0#H@ )@@r<1͗&áٙ09c`l6\sfg&$d  &c$@̢d@0D$@3I2)"BD"$@D0 B@"P"(  "BD$"$@D0$ B@"`"& "BD$"#D@0D B@"P"! S*$D d"$D@0L$@"H"i8ݾ;wwo6\cwws@!@!  P PP sl8 1185H RHE ! @ Ec! 0 9| B@  H RHE  qq 3190  H$ 0  @ (<py;wxɳ089c9&sg8DQ $@#D"X̢d0" DEDMc2HD B@!DED0D EDQH""@D B@! |ED/=| )|!""0DP B@! @ED0"@ )@Q""D Q($@!D"ED0& DDH"":Îs8wx\88@c9wwsp@ @ @ @@@!G;3 lqͶ&àfL>   0 816؛ly0 IR 2&c$A"@0 %$QH&Hhe2ĉ HAP!"$"$@"@D0!Q@ D"D F1!""$@"@D0_0 D"D A !""#"@D0$P D"D II4R"$"$&PD0%$H"H(D"DAppۜ wq;w ùnp18wxl@!@@!@8 ?@  ,@$ $ rwl00&9c`8N9lS&$dQ1A,Q51QLDQHD3("BDQADQ @ DDQED"(d`drw2xru xru Z  > "wqd`drw2 ilzx ion xruxilzlxrqilzxxruxilzlxr  "xr###d`drw2dg dg Z  "cd`drw2 ^j ion dj^^dq^jdj^^d  "d###d`drw2 Z  "d`drw2  ion q  "###d`drw2snzqsnzq Z  "rmd`drw2 dhution snptdhuhsnqdhutsnptdhuhsn  "sn###ddrw2DZ  > "wqd`drw2 ilzx ion xruu"#$%&uN 1\ );&+ /5#'Programming Effort Mark set has to be designed Examples must be provided (multi-user mark recognition) Actions for markings must be coded Uses Hypercard message passing facility User Support Info on marking does what should be created Drawing Complex markings can be hard to make with a mouse Use of TrackBall is discouraged Application Good when "natural" shaped based marks for commands (e.g. "delete", "move") Can recognize about 30 types of markings per classifier Can use shape of the mark (such as extent, start point, end point) as parameters for the command, indicating for example scope, target P No mark set to design No examples needed Actions for marking must be coded Easy as a pop-up menu call Info on "what marking does what supplied automatically through menu Straight Strokes are easy to make with a mouse Trackball can be used with 6 or less marks Good when no "natural" shaped based mark for commands Works with up to 12 markings/menu items Don't use yet the shape of the gesture to extract parameters%`<br#30y 13;'  `Gaf635c1#c" x9c6<>ǀc71͑  8;LA %F2.9++)+++ pU 0I:9" #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreen Comparing HyperStrokes and Marking Menus @P`)"8<0lcfxa`)"e" H&LbH"4 DR`)EH"@""!  E `)EH"@ "! E `$"E"H"@"+vcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d0drw2pU pUpUpU  Marking Menus! DP0D(`/$  "(B! DP(D(`/$! ""("Q$@ " D$D`>$spwsw pnv@`#a2 @!`$`0-@ @@ `0 @"@&  f"0` @"@rp0c l8\r"9 #,(Q2eL&H &"D D̢H"$(!"Dp@ P ""H@H"$`%"Q!"D HyperStrokes"E @!3BD `-"D@HT"E @! BDpA `-"LDȑH("D@J $D@`-";6\9o0(w@8cFqc]`@`@`8```$B$B( ( ( 0I:9" #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentsc$reen/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d0drw2 '   '* ' ' '?   / | / f  faff / f`faff f`faff / fF`fafd  |<`>a//   ?        @F                                                                                                                                    @F       ? @ @ `@~ @A!>@>BB"@ "B&$@ B&"@ "^&!>@>B & @ & `@ & @/ @ @?d0drw2kY ( 1lZ 8d0drw2o^  o^*o^o^o^ ` `$gaff$  f`fafff`faff  f`fafd>a        A !  y A A A                                                                                                                            A A A y  ! A     @ @ @ (@y OO H  H H OO (@ @ @ @ @d0drw2$4  $4$4$4$4d0drw2$4 $4$4$4@`px|~|lFd0drw2:  :6:::@@``PHHDDDBBAAA@@@@@@ @ @0@@@@ @ @ @ @@@@`@@`@@ @ @@@@(@(@D D BBAA@@@@@@@ @ @@@ @@@@@@@     @ @ @@@@@@@@@@     @@@@@@@@@@@@@@@@    @                           @ @@ @  @ @@ @@ @ @            @@ @@ @@  @@    ddrw2DaばB@`'c f 02'n39BpB@`'`3 F@063f1>af`#f8ϊA 4 $ᓌ`3 ffaf`~&ffd $gA'1q `3 ffaf` ffp A 4 $9 `3 ff~ f8 f_'1 `3 ffa``f  f@ 4  `3 ffaf&dL L&f@'1"p 0>>a#8χ_   @         " A   " " " >      " " qsz>r ("(("   ("/""  h"(""  q'z">z  p    "  r zǀ   ",(   "蠊   "  r j       '    (  sLj!yp ("")"  (>"(p  ) "(  sƈ!g     ,  S# % , R" %" .!"py,!r!ppq q .! 2 Ȉ#""  . p" ">"   . " " "  "" .!b" `!px{x`     p   rǀs,  ((,  (/("  (("h"  z'sǢq                    "x(  &" (!  xxyǢ#      p    r!ǜ   ""(",   "'>("   " h"  r !q       '    (  sLj!yp ("")"  (>"(p  ) "(  sƈ!g      '   (   !yp  "")"  , >"(p    "(   !g     pp " ǜppq q (   "" qp("(">( " *  3&&("b h"(" ( "`*   3&!!ȼBxyǢ b*j        .%rȬʀz z r r   .% "/*@ @ @ % R  .% "(*pr " "  .% "(* @ @ @ e R  .%r sȠ"z"y"  )"""  )@   " " #,pszpr/ &"("((( $ "//(( #( "((hh #Ǡp'jxr'      p  0  p  """  "  "  x        "  rǀz/"*  (((  ((  ((  z'y"  p              p  /&rʬ""""  /& "*," Q@%" /& "*"" "" /& "*"" Q@e" /&r "P"    " (     (@@@@@@   "  "  %,pszpr* '"("((( % "//(( $( "((h( %Ǡp'jxr'      p@    p@  """@  "@  "@  x@          rǀz'*+,r  ((첊  (((   (((   z'{( q@  p          > " " "   A "     8DF 8 8DF (8 OUDF| U@LL UDF@,LU@LLOUDF|@L(8U @L8DF @L8 _8DF  ddrw2DFTFTIm mI Im 0I:9"> #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreen/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d0drw2Gk9 GkNkkk````0`20` 0x0`81`` 陙0` y1` 91` &1`` 0```````````````0`0`0` 0`+0c|0p`+0xsy ` 00`+? Ap  00`)0`c00`30 `c00|>``|`40`c<0`1 |0>`40x`cÆ ?c`0 `a `40`cp0qs`1 `c`40`c0013x1`c`40 Ã`a001?1`c`40`a`00|a`c`4|p|008`c`$00 `c`$00b@  p`$0p a0?a`$?>p|` ` 0 ` 0 ` 0 ` 0`p` ``````````````` 1`a`0 q``0@ p0``0 p0`ac0qpl1s``?73$C`<adg 0f3 1Lc>@@`;`dc0f31O@ #0`:`8a0f3 1@@!`C`8d0f31 &\6&ٜp0<6w8Gavg9 l`Caf`0 {1& &HHHbk"E ( ($A2H2`C|d{&PC""A"E H( ($A#!"`1&` D"A"b} F/ b/"$!"`1&PH!"AA A((""(!"`1&"HY" 1"A  I(h!I"`1&8F&p.<㻼8p;w` B ` B `p< ```&@p`&$ @ @ `&  @ `H 00" xxclx3s8 9wsglpÈ6`Ga p8c0" Dd2 $MH D"4 $I`Ib0c  "! DD"$H@ "!  Ȉ`Id 01  "! D "'0 $T! H`Ihr8.610]6 ="! D"$ DT! H`Ip7lD?3s͘3N" PD" ,HH!L(  $Ȋ`Jx3 c311 b1 # pt`P t p6(s pp};`'l3 c101 `q`&f3 c10p1p a`&c3 c10p18 c1 ``#a{ |c17Y 1cu~`#㷆8= {2`( @ @ `)`0 @` `)@  @ `0%Gf,s͓asl8p,q68`0%&H2&)$Q2 M4R2@(F@QL`0% C"9b$($Q"AP":($@G@`0% D"I$&'"A`"I$@I@`0% H"$$"A"@$@Q@`0%"IC$ ,Q" ER"@(D@SD`0%wl;w woq;]` ` `( 0`?` ap`30` `0#`< `0c`?acaq9v $ %`<br#30y 13;' {<._73/"Y4 --FMIQP Ep C 5 `Gaf635c1#c" x9c6<>ǀc71͑ `G`Ìf75c1c" @%RDFA(DL&h `G`͌f6c1 c"! @DD@r( $Ȋ$ `G`ٌg7cp1 `3s"!  D@( $H `Fa@c0=1@`D7X?!! DA( $H `G aǀ@{߀D" @% DA2(2DȊ$) `2" p 8Fw@`}9q` 0` 0` ```&   ` ``/$0'!6< c`&px9c``/$&IbbFA"$hec #2)D`/$ r"$$@"B@D " "E( `B  r`0$ "$$@"B@>D " "E&$ `C `, 0`p$ "$$@B@ D " "E!D `G ` 0`@0$"I2"D@  $@"D" ""E)L`G ` 0`0$0qqۻ9cwppwx~6\c`'`<01saばB@`'c f 02'n39BpB@`'`3 F@063f1$spwsw pnv@`#a2 @!`$`0@!`$`0 `aw|<˞ pÀ` f#`1f<d@`7acC0`1r a ,`@`:`a0`088 a Ï `9`a0`0 a @`D`b0`1N a "`89w1lxcm 9uc`DacY`1f 3g"1D LX"H2D@J $d@`Dnx<=À"@ȑ""E @!B BD `-"$@HT"E @!3BD `-"D@HT"E @! BDpA `-"LDȑH("D@J $D@`-";6\9o0(w@8cFqc]`@`@`8````# `(0 ```( `@`{$s;0a<03f9x }͏ns``@p8`1 8$$@̑$H "I dəD"(&Q"$`:p81#B$ "HD"!(Q$`:XX1#Bc$ "H|>!$Q$`@XX6< aǀ10#B@$ " H@ !$Q$`ALNfyـ3l10<#$@$H "H $Db dQ"e`BL1рfn@10$0a1߻ܜt s`M81Àfg10`G1̀fc1`G1ـfi10`B~f1۠c1l1 0`<2<{a{`-` > ( @`/` 0`( &`/`  ( "@`4%9ys 0 0`;Ȁ?flg"3031 @`C07.@cc391%<;snX&àqq q8w9c`C0l3c11%I$ec$@ "E$I#M"$h@`C0l1Às`01%A9D"$@ $%$"9B"B@@`C@0l4>q2p'1%1ID"$@D">I2B@`Bπ0fl@>7033$ $D"#D"  B@`C<=ǀ~@%I@%D"$A@$"@I"$@@`4?%9poww@qo@p `H`H`|````%@  @`$`   `$@  @`/$3lL.swq@9cbwX`/$2DS$D" d FHL@Q"e$H`/$"DP(D"D $HHQ"Dr$H`B<80`#"DP0(Dd$HȀ_D$E`B`Fdp#"DP((D$GPEE`B`F `0`#"D$D DHH@QE2`B`F`0`# nv  ]db`7`F. 7l=  `7`Ga039~3  `6`Fc c1091ga` ```Fc c101ca``Fc c101ca`:pc c90'1@ca@p`=9ac031b3 00 `;<vx{;@ `/$c6ǎ6s̀881X 9 s`/$$(J$HDD e J$@ D $X`/$! ($HDD E @@D !Ȁp`/$ (EGD|E 1"(BH`/$ (EDD@E "(DH`/$$2( „HLD E Jaȡ0`/$8`w\b7;8ppq|@` ` ` ```59 @  @`7 G 8@``0`9  @@  `NGkGkGkE 00 `&6bl}:X<0,p6C88l813m@JyÏ80Xx <<&2D(@Ee"I)2L 3(DH m@J|33F01`c0 ff`&"D(@DE""DH"#D xJ21f00`c0 r`&"D@D>E""DH"$|  `J0q 00`c0 8`&"D@8 E"!"C"(@ oJ1 0`c0 `&"L P@"E"I)D ")DH2 ` J31! 0`c0 N`&;w6N  y1wp8wv81p47u Dcg ffh @`4 D8;<<0 @tG'@xtL` `Q@`e`F@%erxc7p `"D2 t,E "@t E "ti"E "`F&D2"`$ <08`wp` 0f3p8pb( pB!p80@ce aXX0`0aXXx.7<s`0aL2YN@y$F`A0aLc41\fF`1Lf`0aMc0B!Gc38; 1Î&`0f3Bc11`1<AH" "$$A$H$E|n?aa<p" @@H" "$$ADH$E@a-?b&`fc"c3̉"S "B@"I2"DALdB"QDn?aьf7 rcc`2$L$Ϣ$@B0! >A(gaF0%B #D("$@B! @A(.1&$I"$ M(D@AH $BA2(@w@1&pwp7]p p8w@]| @` @o 9?dG`8p0`#00l*.x\8xaǘp0  f.|1D d@&c e?3 Ll`f4c"Ü96;2s1u9`?3 p o7"$j@D@"I$QHH@ $d@D@`?3 8l6cp""BD@A$QH@BDD@`?3 n 7c8">AT|1'ȄBDT|`>5| cX!@@T@ $BDp@T@d?8xc?1p"$B@(D@"II2,QHH@ $D@(D@j-"8(9Á;1À](9Àf ` v `hh&@ "0@0h( ` H@H`(@ @@@@hx1&fx<"rq˓ascnͳ|1&1"D&QD(d&&$d I1 BFR@@B$D@`1&"DQD(G""BD :  D$@9@B$D@` C<0&"D_D/I""BDI D$L@I@B$DB`Àp%"D$PD(Q""BD JD$B@@B$Dg2D`0@&&D$QD($"*$D IBDP@BeL@o.D`0&9:@w o| o7Ào.*`8x 7 p\ *`;D'ݢ"2`3< 8 l+`ƌccc40#8hh`c<0`t`lc``60 `#`sqq303 can#`|? >>1`7X@c @p#<8f>{cq@n61qg H$L@` DlQ$DR$D@` H"dT@a80!.sl @` @`n lrdx@0` p8b,@0` ` 0`0 ~*!> cpx n^ 13 s1g0`n a 6 l30 ` va 6 l30 abh a 6p l30 f`! a68l30 l`!131c4 Mr!`<#Ǽo=` h  o `3H  -CL&  &,AD2H "sG.#@}p͂ wl>r8<l.#@( FQX& (Q2F@#(`.#@( DQ$(Q"D@"#`l0%@@D_SHO"@"$xf.#A!@DPRHH"@"(x.#C TQ"$ HQ"@@*).# .! wFp@v8`b``zn`0`~&hx~Np(z ddrw2 v%w3w3vRv^xlxx{|w~k]QWco} Im qv3w3vBvIvOvTvXv^wewkxrxxy~z{{}|w}q}j~d~]WTSTW]ciovy~  "w3## ## # ###### # ### Im "w3######################################0 _cv begin stg end #d`drw2|k Z ##0 _cv begin stg end ###0 _cv begin stg end #q"ddrw2D              @@0 0 0 0I:9" #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreenE/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d0drw20 H(((000߰-08` 01 ` ` / x>`ͼg01 N31`2Fq ff`~ ̙fc.  31`0>a fffc01" 31`0fa gff~ |-f 31`0fa fff c01"fL31`2fa f&ff ̙&c/ Ì3x`>` c>> a0 00000 0P000 0 0 2*0  *`*0 2 *q"000000000000000 0 0</xB,x 0(( ʂ2 0(( " 0(h B" `0<h ""x 0 0 p000C E"@Q@ 0?  @Q@0 !0G/"p /ȜǞpq<Ȉr'<Ǟp "0G/ (%(""((("Ȍ( #"""0G/ ((""舊'("( ">0G/ ()""`h")!" 0IG@ƞxy<q<ƞx "!07(   05  @000000000000 @0 @0/   0/  02&Ǥpp,p #01% ("( *"   "01%fx"z'z @0  @0 <@00000  0  00  0 <00000  0  0 0  0 <00000  0  00  @0 <@00000  0  00""(" 0"(!0000000,x000"0x000000 0 2ǀȞr'*0  (((0 :(((0 ()(0 :'Ƽ{0000000000000000000P0 000b b"(00hHÈ000b b"(30PhHÈ20b!Tb")20hTHĈ20b!Tb")0hTHĈ20b!Tb")10PhTHÈ100b b"(10H(0(0(0hHÈ10b b"(00Ĉ0ddrw2D@            @@?pU pU pU 0I:9" #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreenpU pU pU 0I:9" #%%DSIDICT:_cv currentdict /bu known {bu}if userdict /_cv known not{userdict /_cv 30 dict put}if _cv begin /bdf{bind def}bind def currentscreen+/cs exch def/ca exch def/cf exch def systemdict/setcmykcolor known{/cvcmyk /setcmykcolor load def}{/cvcmyk{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll}repeat setrgbcolor pop}bdf}ifelse /ss{//cf //ca //cs setscreen}bdf /stg{ss setgray}bdf /strgb{ss setrgbcolor}bdf /stcmyk{ss cvcmyk}bdf /min1{dup 0 eq{pop 1}if}bdf end currentdict /bn known {bn}if d0drw2pU pUpUpU  @@? bL "D@@@6pl'88yyh 5"H"j FQFSE LI%@D !"@B DQ$PED$P@D !"0CD_$P|D$P@DPH !""BDP$P@ D$P@DPH)(!"&B TQDQE DDI%@D p p.9y88 ? @@ @@ `0 @"@&  f"0` @"@rp0c l8\r"9 #,(Q2eL&H &"D D̢H"$(!"Dp@ P ""H@H"$`%"Q!"D@ `B"H@$H"$%$Q!"E@ PB"H@DH*$"$"E0D"H"D LI~rsnw9ߜw]7 1@   `JC@ B@@s`f8,s`wf \,pF@ "iM2"B$I dR@9$@"AA""B!BQ$P@8 I$@# !B`$L@H $@# !!BP $B@ D@ ' $I $P o]@ #| h@ @ @ @@0@@0 @@  @| 0    68cɳ# (ME?̢$H #H!$H$$Q<Dž@n3 3 3 `3 `3 E`3 Dž` :| NW&U??@?@ ?@@@ A0  A gxyCugp}88 LI%A$D (H" H D$PrABD (@@D$PABD  0@"D$PABDq "@ DDI%2AQ$L( H& @ty86 8@@@@@@@ @ @ 0B`B l9c`q,M@9͑3($Y$FeR2HJfR"(I(A $ER"DHBP8"/$A d$E"DH2"($A $EB"DG @"(d $DERDHJ$R@ww cwNq8 @ @ @@@ @  0X@`3 @ 8 ,sE3  pB2h  WB"9 % TB"IE T~"M T~B) 6t}wl || |>|g3#33|f 333|@ f3?|fp30|@};r4f03 1~pXlp(I$ #(>~&e2 (A "( 0| Dr" 1B/ 0#| D" B( | E" Id(|"E2"Npw4|pwp | | |  1@@LLJ@$DB@r$l8cf8swfNX$ DE FQ5H$D $X@"BDdB EDQ!@! D $H@"BDBb DD_!0 |GȄ@b"BDDB D DP! @D@"BDD M TQ!H$DH@BPEDt7.pp8càP   `@ `0 @ l,q6x@q`8< q፛2 2(@$"D"FL$D""#@9!D:$$HBD""$@IDJ$$HBD""(@D$$HBD" ")r- g2^7T*c@$"DD"DH $Lwqvto`:Nmю6@X@! @@f9@xyp'mQ On6 O dQP L;n6 L; oQTn6T oQwn6w oQ,n6 oQPj! n6j!  oQu4@Q` [ [Q /[s [QQ( ?9  QL㣗@Ql66QT 4  # > QH +v ) Q4 Q 2Q 1 Q D>x# C Q D  Q ? ?] Q ! !?  Q< ? TKg&"j 3Q8 k9 UFRQISm6 x\ #  bQwo6DuQhQh Q<6U\ڵLj <s ފ ZQ  o6 wv?StaiVQm6K dFݻ Qm6 d  Qwm6 d @$߿ m& @Q$ ;w;w;w;wwFqJ-z*.3P867r @V W } .X j a j OC E \  n r?\ :/676P8P8Qh-z*m`-z*7n67q.3n6.3q @V @V W W } } .X㜁 .X a a OC㜁 OC E E n n r?\㜁 r?\ : : :n6 :q r?\n6 r?\q nn6 nq En6 Eq OCn6 OCq an6 aq .Xn6 .Xq }n6 }q Wn6 Wq @Vn6 @VqQx-z*n6-z*q \n6 \ d ^Vn6 ^V d Nn6 N d jn6 j dQjKEF?  Qh[ƾdthE4  Q   Q>=vr  Q7>u > Q|bn6b d!Q %m6 I{ dFݻ(Qn6 d  *Qw_ d ,Qwm6{rn  .Qdm<C( SQhC30btn}' qQTе:c dFݻ Qp7>dt "!  QPQY