[comp.sys.mac.hypercard] Intercepting Keystrokes: The Solution

np@doc.ic.ac.uk (Nigel Perry) (02/25/89)

In various recent postings people have inquired about methods of
capturing keystrokes. An XCMD which may be called to get a key event
has been mentioned (InKey), but here is an XCMD which generates
HyperCard messages on keystrokes! If you use this you can arrange for
"controlKey <num>" messages to be sent on every keystroke, and its fast!
I'm posting this after (a) the interest, (b) somebodys suggestion that
as comp.sys.binaries.hypercard is dead, if items were small why not mail
them here and (c) noting then Dan Allen says key messages may be introduced
in a future HyperCard - good, but till then...
XCMD is copyright, you may use freely provided you don't make money from it.
Enjoy. Nigel.

--- cut here ---
(This file must be converted with BinHex 4.0)

:#NYPH8ecCbjcDA3!8dP8)90*9#%!N!31iJ#3"'Nd8dP8)3!"!!!1iR*-BA8"!*!
(!J)'5f9j6A0RC3!0Zd3!3*l8!!hTp!!+!!iP"J#3!`-!$LYk!!+G4!!0ZeS!"-a
X!!iP"J-'!3X!)3!"!*!$$EYd8e4"5eG*6%3"!+!ThX@J+H+9!!!#0J!!(m!!!!(
P!!!-GahGjQJ!N!BSY!!!"!JS%"p"J`&p!##La)JCJ3CH-(K"!"8X%&-JS!!3iB`
$"J(pN3QS3k+$)@rJj!(aaJb)*@Ab0*PcCSi!JP1S"&Pb*3N6)J5K"FbjXqI2S!$
i%&c+Y#QS&0k+"I`!,+!!'cpi!&L!LK-U8DJm5Ac"ijrCIUK51DR6d)`%("XCB%)
$!)%i*M!))#'#!m"D2(lVB0JB33U"-b#%R(Na!!PG"+KD+IP`4S,K-a"k+&8!`%,
$-`5NZ1Qm9M-!Ik6C1R34aK8U5kLd)CJ'i!"'ah8T@Q5-DKZU5`JQ%D3(aN&!,%1
D!!A*0)LqIqkFa*%1aUS6+`&"M%E!!)V!K`"`DDm,JUi!%&"Jm!!"!K!8"N$HZ!'
2#!3H!CSBS',cCX`D!!DF%4!1cJ%Jaa$k!'"#*-Q!J-!,!*6L!3JAZ)#)#%J85!%
S,S$`43MhD3+!!#%JJepe!#J""J*,mHII#`Rm!!!)H[`MMa13!-$`J3KIr!!%!)F
&K!)-%F!(`!"Y"15"N3@-eKN-+3$J!)YeJDF!!P8a--12$U`&"JEfiDHILrmCB'8
)k)b)(bJI11'&Kdqm!k36d$344"*1X-GH3!2aL4!!IbU8J!Em$1"G3"`!)-0ab3%
9%'I-04A3!LLj3BFFEl$"4(pV!*!$1!!`K8U3!#Ar%[ic"faHKB!!%!6m!#cJ3)J
B-3B)U1!-a)d!0Q!,L%"DaT-R#`5%J,+P4K'!!!5!+C2Qc*JZFqVFbE1Rcjp!J`S
G5V5SdD0)NbTGbV5TdkG3SdSpL6-L4%3!4!$!UK84)K%L[)*&T%U%+V*QQDQDS8S
Y@hHUGUQ#+pIGVPhZl1,pYqZI1ljq!5IXq`m3"!%J!L!!3N#KihpI)iF9%8%%%85
9,a-$a!$0%!%`6-5#-8!N-!D09!&3cAUVL#U6B51#A@Afkc[GF1[Z9K@MULUrJeF
C3!J*$!B#!J334#3(%8(+!b#L)#))SL!L+!!#&-3(!J38aSNJ`)L1L!ZB)2J#K!M
"1J5)!*9!*L-4'4*-*)RL&-5ALQ38V!-%+!%4S%"!J!!"!J!#%##4DM&K&90Kfe8
)#!)FL"!-)!%d5#%Jrhb(!$lQ(I()"5,%m3X![r`#biZ`r21(,ef)%N4-qY56)bK
3m$M9Md!'+H53!%3@DH545#ECdaYZJ$!''fr-8FB8G)3aaKS0M-%N(A+m`3B6Ee`
*JJK[Q'''#!f8i3BC6N)T*C9@BJP!(Jfdd%+G,B"!"4TTc!(#(&@+UD8E9DEKKTp
K0)Q&%8-i`B+HBE#aaU0hm$N''L!B5NFCFTKKC4Pqd[%'#%eBD5J9NDlK!TjkSP'
'Nfqdd8DLC2KT!JKQe1(''(5N`D5IBT3"j4fC%XUTTf1mHNFDG'$Dl+Z,0VUURDe
#bkJ6)03K*D)JR!'P'*'#B%FBFU34KKKX[(S#UT*5qBBFBCa4aJQ20[Y'(@GJbQb
QIPjDaT9PN!$"UKR[LKYT'Q3`Q`F)HGcl*aVhXX'Q'fr3!8+NQmU4+4eqMXY'(@9
-HbHe@6Jmkm*Qb&''X!YVqqUc)%5,,DdAcc&(Q1CZbLB5HF$"+EYVr$P'ZA"`c+U
K$0qVm4Yh0!PSR(-mfR!G)*`-JK028&(XNh@3!2'bUfd8qfHJDrKCD4UAXMVeRm+
b!8+HKR+GX"YRM$N('Z5@F8IH)VJ!3XP8@`e('$D$`#3)cIEjCjPdl+dbUk)DrU`
F852qKVb6Jl"XXaHlXA!BC#6Fkkp*"al'`V1Z8FDMF(4T"m)")iih(C!!ZfTiZ@F
B'Zl0GFL4E1GXDJP((VLMB6(&[IkH0`LYJmUT(3',c#S5B8#2Ukl*0-!UR'*+58F
GF'Krq"XqZm%pPYkq!DlE3,X,Vlb29L'P(&Ci@8FEC63!4ad@`e"Xj1d6eIYH4Dd
NR#"XFqMGUj,`X)L4`3dRX"MHV"Fj-S`UFC86!rqbabH[98e0G4!#ZI6(2a$8lf2
iBd)CS-F'&-`J"ImEPI`iGF,lj5m0CT!!hDZJ4cPI0BN())L"#f5J3cFd)&&cZ!1
RaV3Ra6e06(Xc@lRSX+NQDFY3GH1Ccq3`"(+a5BJb%)(QQ)8TB64!"%G)JrA!*mD
#LB!+FPMB[K+9KlhP!8dih"J)HM#Q0+i4$Q*m9T21-#U)i5p0DmU8'4$**[+TkAc
LDp+6SM3PXM8JIHX$`3cTClp$hSeT(h4$#%Hi2i[9-)8V&"B+0RR+-X"38k0L9J2
-B+JqS3&SM'`6*5(*+K(1!@hr1pDRB#8V@YRUHVXDhD'dPkYNqT!!H4"c3aR`ClC
he3S%f(aERJE&3ik"S!KdBi-Y%9F'2&J-PY"NdM4"e3#9I8m163)D#Q*!+@[1)3@
jK%-decN(CZU+9mpX(C2ZYDYAk91Gq"-RS,**,B&5l*qJ5UFdUGR1-V`cRUP#J3a
BYmq%pSN1-'4SRYcCZd1"i!42@--*EJF#6R9*Bp5F3lcbTbBf1C5J[mZQ6RI+8fe
HM(P4BTBDAqA5JSQb$F(5Q1,+C!E[XDT-KM066E(S*,c"LeG,4*UK5KR*2rNX$%'
6%U%5P91IcZ'V331RYmDj+A-qbS)444i)5!T2LI+6K"D6j``H*GBU&I59K)SPl@V
Ue6+!YDZdG)-YJDC6DNe55U3bP4XBL`*(5T00BH"IV-+3!,a)X5%2q#`PT#5&!KS
!0R+b*'aL&jXUIcVcF(H`*V`fT6NiK%fNE,2B(@cl+,UDG,F)Y'K&,cVD0D#J"T5
b,6i*'eXjN!"KY[QEj6q9+DihS+d-F'$@T8$J+MR333mLcC2hURYGjQNA$EfeD%R
pP&dkE0HT[LdZ#Qc`U1jqGlQ*Y)0eNpAHY$AJF&d53mA3TYrbBT0Di`h`J-G!hYq
*5TTiPHm06L[BA#SiH3919PIG`0RH45V$Vm,YH$RmcR#"f()3&UdmF8$KMH@5a"j
Q!iJEJ"3"!+!*35L)BiS##*-!J"!j#!Ja2*)4CX""56QCaNL3!-cN*M[jb9#1-T!
!!-'%*"5%*$k@#8Nd!J!L-!J!,"R!JJ+!JSrN*!&""SQ8Jb)4+!6K#%8)#*Ua(*!
!!HcK*#)"!`85m3jZF))1`F"',cV`&3cF)3P#3))G!(%)D2M$$Ij`4$kUi3GHM#)
2ShM!0QK3Q%UN!"BVL%3jUT%#AS"J"eH3!-B@E('23q'K$BEiKbZ-S3ChV2R@Z-k
eVRI0kellqYI!$VD`KdhXBK[lf-K1YV+AcHaQ1r[Cd!lf4S5`K#0i'3!G#3J$MR`
5N!"N'pXH)3!!$!!4@k"%+ahDL!F!3!B!e#!!MJ#!Z,Nm!)'!4!)C+E-!NJ1!6`#
J!`"J4`#qSH@6L$X"%'&!1F23"MLN#b0D'3#rVI"[!%!L!-dSH%EUID#!d"JM5KJ
h5$!JE`$-!!!M5%a!U%!-M6-!)K"`JYj!)!6q26JJKf[$[D48KI!4NVZaSQNLGHk
bRY1i#1EN&)IGPJ3h%#`Si"!#MU'JE@kE15-"X)+00D,eJ"a")2d'`"Gm`SN3$!!
F3`J!)!b!(,2$S!)''%"-"S!"H-!M([Yia#-i`!-qc$d$Q3Km-"KK$!DB`3k+S!%
'-!!%#N"J"''!``&'J!Gd(%!)+-J!)$"JJ,Q$`qla#-3M"X%)(TJK%4GJ!!%+mBY
!Y*i8J6!l2#L!!`*%B!!9`!!"&#'(!F4J(1l`!3$`-)!a#!!D9D!a,3BJ"(&)!aL
)-)!-`L%#B%b!0#))!!JS`)-"L1$i&'$!!13!$`&842N$5)3&B&#!3S`E!!H`bJ,
qm)q!&!!)3`L#&+iYNU$-'G`!8'rcPR8!S")"5!F"J'r+%4#aS(B!F!`"3!k!8'p
FTQd`4`66p!Bieb4%ah2KNdF`mdRH"3)FKMp4p8&l0#BBU(0S)NJ0-&i`8i+[!P8
Q'$NLi#j`!!)Vq!CS)PT[e$1[3NH*3cHP!`,LT$UXSbfBFJ)iU)-CZ&+4XeThJbD
$`L9H!LCL3LCZJ#E#)L8[D&%k4))-0i-j9)1MBKNC5)9EdL9I%LC"3bCQJLBGp#T
Y-!GRN!",1*4,(9J'4KF3%FG[rK!!Da!!84!!p["Pp)CY%2&a%+%9"-"[r5"b9+F
1L'KQ(,H)@)F&3p!%4!!#3l#'9qL'GGC%IU+*R!J#++!V+3!P9a)UYL-#9FL')+!
kGq3hHr)UXHJPXeJ'FZ3R62*CZ%*3MG3NdU4%'P-U$%D,!ZC&'94#'"3c66!%R3K
AIL*A+K-(GC!!"LUM3pXB1F(b8bS6,ZUd1(V8A'@$+iBbJdf#M#!!"4qc,5%!!PI
J+Nh#LUU$@CkcLhN!+&fL1Q2%16#M*F@85,5S59!`4QcJ0Q13!&Q3!"8'Bj+,E,!
%[%L#pb0'-696Mb+3!,0#N!#m##K[S$U)XSeBSc9K)&9B43BZ%"!#m)Q%`SCBq)C
-)NDiCBpK#*(kL)TjT#[f'$$ia**@f)CCb&3bk9-kkBBe#BTZ8j!!+*!!4cY*"[M
dAj+%P"+j-%I9!!H@*e1M-A-`0'P30)pb92`5KZai+H4L*4Q6@`Ec-Dp#-"S$-l5
B5a!jP3$`$rhJ"'NJ,fi$"5k9"bc3!"Ji10k&2i4bJTrBF2b$4AfC"!h(+HEL0Tq
BN!"P)#m0!#CVFMK6F!8hd!"Ua3DdNLDcNJCXS!-N#!G!8!HUBL8ZJ$BZB%&M-*I
mm)RC&6XT%bY-P#UF)NC2&$3PHCE5C$%*XjADmN[M)dQFG5P84B[mq*'JiMHTF$9
h+5cYZ*HXmbl+j#I0139jX*'E`Q"00`Cq!cK9FcVC!PR2D)UGL$4d0$Ca`MbZ!cY
XXMB@4))9`cB*q5J&8c(GY5b3!#8iA8*,&M1EBF-XIT-%1E3f4rJUqb*@E'+#$JN
(8H*HAK3#'`JV,HNP8dQ4E4"K)J#HG!#%E&+3!%H99'*N!VG5PB39Plb)%AS5"%R
!")ia!A[#@5H!+!NCM*)b"bk3!+0"`3!!!:
---
Nigel Perry                                  Department of Computing
                                             Imperial College
Janet: np@uk.ac.ic.doc                       London
DARPA: np%uk.ac.ic.doc@ucl-cs                SW7
Uucp:  np@icdoc.UUCP, ukc!icdoc!np           England