From: hall@bcstec.ca.boeing.com (Robert J. Hall)
Newsgroups: comp.sys.apollo
Subject: User keyboard activity timeout
Date: 13 Oct 92 17:22:09 GMT
Organization: Boeing Computer Services, Seattle


  Thanks to the assistance of some good people on this group, I was able to
put together a successful screen lock program for the HP/Apollo that
incorporated the various features required by my group. I had a request to
post the final code. Unfortunately, due to company restrictions, I'm only
able to post the portion of code responsible for activating the screen lock.
It is listed below in uuencoded format.

  The program is executed as a background process at login. The code polls
for mouse/keyboard events. If no such events are seen within a time interval,
the process activates a procedure (passed as arguements) and waits for it to
terminate. The procedure can be, for example, a screen lock program or a
command to log out the user.

  I'm sure this code can be improved, and I welcome any constructive comments
(via e-mail.) However, I don't plan to provide continual support and updates.

  Thanks,

 Bob Hall,                 | "If at first you don't succeed, try, try again.
 Workstation Peripheral    | Then give up. No use being a damn fool about it."
 Boeing Computer Services  |                                     -Groucho Marx
------------------------------------------------------------------------------
begin 740 timeout.c
M(VUO9'5L92!T:6UE;W5T"B\J+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T*"@E0
M4D]'4D%-.B!T:6UE;W5T+F,*"@E.3U1)0T4Z(%1H:7,@8V]D92!I<R!#;W!Y
M<FEG:'0@,3DY,B!B>2!T:&4@0F]E:6YG($-O;7!A;GDN"@D)06QL(')I9VAT
M<R!R97-E<G9E9"X*"@E055)03U-%.B!4:&4@5$E-14]55"!P<F]G<F%M(&ES
M(&1E<VEG;F5D('1O(&QO;VL@9F]R(&5V96YT<PH)"69R;VT@=&AE(&UO=7-E
M(&]R(&ME>6)O87)D+B!)9B!N;R!E=F5N=',@87)E('1R86-K960@9'5R:6YG
M"@D)=&AE('1I;65O=70@:6YT97)V86PL('1H92!P<F]C961U<F4@*'!A<W-E
M9"!A<R!A<F=U96UE;G1S"@D)=&\@=&AE('!R;V=R86TI('=I;&P@8F4@97AE
M8W5T960@87,@82!C:&EL9"!P<F]C97-S+B!4:&4*"0EP87)E;G0@=VEL;"!W
M86ET('5N=&EL('1H92!C:&EL9"!E>&ET<RP@=&AE;B!B96=I;B!T<F%C:VEN
M9PH)"6UO=7-E+VME>6)O87)D(&5V96YT<R!O;F-E(&UO<F4N"@H)3D]415,Z
M($YO;BUP;W)T86)L92!P<F]G<F%M('=R:71T96X@9F]R('1H92!(4"]!<&]L
M;&\@<&QA=&9O<FTN"@D)5&AE('!R;V=R86T@=7-E<R!T:&4@54Y)6"!A;&%R
M;2!C86QL('1O('-E;F0@82!324=!3%)-"@D)<VEG;F%L('1O(&ET<V5L9B!A
M9G1E<B!T:&4@<W!E8VEF:65D(&EN=&5R=F%L(&AA<R!P87-S960N"@D)5VAE
M;B!A($UO=7-E+TME>6)O87)D(&5V96YT(&ES('1R86-K960L(&]R(&EF('1H
M92!A8W1I=F4*"0EP<F]C961U<F4@=&5R;6EN871E<RP@=&AE(&%L87)M(&ES
M(')E<V5T+@H*"55304=%.B!T:6UE;W5T(%L@+6D@;6EN=71E<R!=('!R;V-E
M9'5R92!;(&%R9W5E;65N=',N+BX@70H*"0E7:&5R92!T:&4@;W!T:6]N("<M
M:2<@:7,@=7-E9"!T;R!S<&5C:69Y(&$@;F]N+61E9F%U;'0*"0ET:6UE;W5T
M(&EN=&5R=F%L(&EN(&UI;G5T97,N("A$969A=6QT(&EN=&5R=F%L(&ES(#$U
M;2XI"@D)5&AE('!R;V-E9'5R92!M=7-T(&)E(&$@=F%L:60@97AE8W5T86)L
M92!P<F]G<F%M(&]R('-C<FEP="X*"0E!;&P@=')A:6QI;F<@87)G=65M96YT
M<R!A<F4@<&%S<V5D('1O('1H92!P<F]C961U<F4@=VAE;B!I=`H)"6ES(&-A
M;&QE9"X*"@E)3E-404Q,051)3TXZ($-O;7!I;&4@=&AE('!R;V=R86T@=7-I
M;F<@=&AE(%5.25@@8R!C;VUP:6QE<@H)"6%S(&9O;&QO=W,Z"@H)"0DE(&-C
M("UO('1I;65O=70@=&EM96]U="YC"@D)"24@8VAM;V0@-3$Q('1I;65O=70*
M"@D)5&AE('!R;V=R86T@<VAO=6QD(&)E(&EN<W1A;&QE9"!U;F1E<B`O<WES
M+V1M(&]N(&5A8V@@:&]S=`H)"7=H97)E(&ET('=I;&P@8F4@97AE8W5T960N
M(%1H92!T:6UE;W5T(&-A;&P@<VAO=6QD(&)E"@D)97AE8W5T960@870@;&]G
M:6X@=&\@=&AE(&1I<W!L87D@8GD@<&QA8VEN9R!A(&-P;R!C86QL(&EN"@D)
M=&AE("<O<WES+V1M+W-T87)T=7!?;&]G:6XN/RHG(&]R("=^+W5S97)?9&%T
M82]S=&%R='5P7V1M+C\J)PH)"69I;&5S(&%P<')O<')I871E('1O('1H92!H
M87)D=V%R92X*"@E%6$%-4$Q%.B!4:&4@=&EM96]U="!C86QL(&-A;B!B92!U
M<V5D('1O(&5X96-U=&4@82!S8W)E96X@;&]C:PH)"7!R;V=R86T@9F]R(&$@
M<&%R=&EC=6QA<B!U<V5R(&)Y('!L86-I;F<@=&AE(&9O;&QO=VEN9R!C86QL
M"@D):6X@=&AE("=U<V5R7V1A=&$O<W1A<G1U<%]D;2X_*B<@9FEL97,Z"@H)
M"0EC<&\@+6X@=&EM96]U="`O<WES+V1M+W1I;65O=70@+6D@,S`@+W-I=&4O
M8FEN+W-C<F5E;FQO8VL*"@E!551(3U(Z(%)O8F5R="!*+B!(86QL"@H)1$%4
M13H@3V-T;V)E<B`W+"`Q.3DR"@HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2HO
M"@H*+RHM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2T*"0D)"4AE861E<B!F:6QE<PHM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TJ+PH*(VEN8VQU9&4@/'-T9&EO+F@^
M"B-I;F-L=61E(#QS>7,O<VEG;F%L+F@^"B-I;F-L=61E(#QA<&]L;&\O8F%S
M92YH/@HC:6YC;'5D92`\87!O;&QO+V5R<F]R+F@^"B-I;F-L=61E(#QA<&]L
M;&\O96,R+F@^"B-I;F-L=61E(#QA<&]L;&\O<VUD=2YH/@H*+RH@(%)E<75I
M<F5D(&9O<B!#*RL@5C(N,"`@*B\*(VEF9&5F("!?7V-P;'5S<&QU<PH@("`@
M97AT97)N(")#(B!["B-E;F1I9@H*+RH@3F]T(&1E9FEN960@:6X@;7D@/&%P
M;VQL;R]S;61U+F@^("HO"@IE>'1E<FX@=F]I9"!S;61?)'-E=%]D:7-P7W5N
M:70*("`@("@@<VAO<G0@:6YT("`@("`@("`@("`@("`@)B!U;FET"B`@("`L
M('-T871U<U\D="`@("`@("`@("`@("`@("H@<W1A='5S"B`@("`I.PH*(VEF
M9&5F("!?7V-P;'5S<&QU<PH@("`@?0HC96YD:68*"@HO*BTM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0H)"0E#;VYS=&%N
M="!D969I;FET:6]N<PHM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TJ+PH*(V1E9FEN90E31$U?14,)"0DH,"D)"0DO*B!3
M8W)E96X@1&ES<&QA>2!-86YA9V5R($5V96YT($-O=6YT($E$("HO"B-D969I
M;F4@1$5&055,5%]$14Q!60DH,35,*C8P3"D)+RH@1&5F875L="!T:6UE;W5T
M(&EN=&5R=F%L(&EN('-E8V]N9',@*B\*"B-D969I;F4)15)23U()"0DH+3$I
M"0DO*B!4>7!I8V%L(%5.25@@97)R;W(@<F5T=7)N(&-O9&4@*B\*"B-D969I
M;F4)55-!1T4)"0DH(G5S86=E.B`E<R!;("UI(&UI;G5T97,@72!P<F]C961U
M<F4@6R!A<F=S+BXN(%U<;B(I"@H*+RHM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T*"0D)4W1A=&EC(&=L;V)A;"!V87)I
M86)L97,*+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM*B\*"G-T871I8R!L;VYG"7-E8V]N9',["0D)"0DO*B!396-O;F1S
M('5N=&EL(&%C=&EV871I;VX@*B\*<W1A=&EC(&-H87(@*G!R;V=R86T["0D)
M"0DO*B!0;VEN=&5R('1O('!R;V=R86T@;F%M92!S=')I;F<@*B\*<W1A=&EC
M(&-H87(@*G!R;V-E9'5R93L)"0D)"2\J(%!O:6YT97(@=&\@<')O8V5D=7)E
M(&9I;&4@;F%M92`J+PIS=&%T:6,@8VAA<B`J*F%R9W,["0D)"0D)+RH@4&]I
M;G1E<B!T;R!A<G)A>2!O9B!A<F=S("HO"@H*+RHM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T*"4-H
M96-K(&9O<B!S=&%T=7,@97)R;W(*"@ES=&%T=7,@+2!I;G!U="`M($%P;VQL
M;R!E<G)O<B!S=&%T=7,@8V]D90HM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TJ+PH*=F]I9"!C:&5C
M:U]S=&%T=7,H('-T871U<U\D="`F<W1A='5S("D*>PH):68H<W1A='5S+F%L
M;"`A/2!S=&%T=7-?)&]K*0H)"65R<F]R7R1P<FEN="AS=&%T=7,I.PI]"@H*
M+RHM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2T*"5!R;V-E<W,@:6YP=70@87)G=65M96YT<PH*"6%R
M9V,@+2!)3E!55"`M(&YU;6)E<B!O9B!A<F=U96UE;G1S"@EA<F=V("T@24Y0
M550@+2!A<G)A>2!O9B!A<F=U96UE;G0@8VAA<F%C=&5R('-T<FEN9W,*+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM*B\*"G9O:60@:6YI=%]A<F=S*"!I;G0@87)G8RP@8VAA<B`J
M87)G=EM=("D*>PH)<W1A=&EC(&-H87(@*FED96YT(#T@(D`H(RE424U%3U54
M("`@("!697)S:6]N.B!!,#`@(#$P+S`R+SDR("!"14-43#H@3F]N92(["@EE
M>'1E<FX@8VAA<B`J;W!T87)G.PH)97AT97)N(&EN="!O<'1I;F0["@EL;VYG
M(&UI;G5T97,["@EC:&%R(&5R<F]R.PH):6YT(&,["@H)+RH@26YI=&EA;&EZ
M871I;VX@*B\*"7!R;V=R86T@/2!A<F=V6S!=.PH)97)R;W(@/2!F86QS93L*
M"@DO*B!0<F]C97-S('1H92!A<F=U96UE;G1S("HO"@EW:&EL92`H*&,@/2!G
M971O<'0H87)G8RP@87)G=BP@(FDZ=B(I*2`A/2!%3T8@*2!["@H)"7-W:71C
M:"`H*&-H87(I8RD@>PH*"0D)8V%S92`G:2<Z"@D)"0DO*B!'970@=&AE('-E
M8V]N9',@=6YT:6P@86-T:79A=&EO;B`J+PH)"0D):68@*'-S8V%N9B@@;W!T
M87)G+"`B)6QD(BP@)FUI;G5T97,@*2`]/2`Q*0H)"0D)"7-E8V]N9',@/2`H
M-C!,*2`J(&UI;G5T97,["@D)"0EB<F5A:SL*"@D)"6-A<V4@)W8G.@H)"0D)
M+RH@4')I;G0@=&AE('9E<G-I;VX@:6YF;W)M871I;VX@*B\*"0D)"7!R:6YT
M9B@@(B5S7&XB+"`F:61E;G1;-%T@*3L*"0D)"65X:70H(#`@*3L*"0D)"6)R
M96%K.PH*"0D)8V%S92`G/R<Z"@D)"0EE<G)O<B`]('1R=64["@D)"0EB<F5A
M:SL*"@D)?0H*"7T*"@DO*B!0<F]C97-S(')E;6%I;FEN9R!A<F=U96UE;G1S
M("HO"@EI9B`H(&]P=&EN9"`\(&%R9V,@*0E["@H)"2\J($=E="!T:&4@<')O
M8V5D=7)E('-T<FEN9R`J+PH)"7!R;V-E9'5R92`](&%R9W9;;W!T:6YD73L*
M"0EA<F=S(#T@)F%R9W9;;W!T:6YD73L*"@E]"65L<V4)>PH*"0EF<')I;G1F
M*"!S=&1E<G(L("(E<SH@;6ES<VEN9R!P<F]C961U<F5<;B(L('!R;V=R86T@
M*3L*"0EE<G)O<B`]('1R=64["@H)?0H*"2\J($-H96-K(&9O<B!E<G)O<B`J
M+PH):68@*&5R<F]R(#T]('1R=64I"7L*"@D)9G!R:6YT9B@@<W1D97)R+"!5
M4T%'12P@<')O9W)A;2`I.PH)"65X:70H(#(@*3L*"@E]"GT*"@HO*BTM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+0H)26YI=&EA;&EZ871I;VX@<F]U=&EN90H*"6%R9V,@+2!)3E!5
M5"`M(&YU;6)E<B!O9B!A<F=U96UE;G1S"@EA<F=V("T@24Y0550@+2!A<G)A
M>2!O9B!A<F=U96UE;G0@8VAA<F%C=&5R('-T<FEN9W,*+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M*B\*"G9O:60@:6YI="@@:6YT(&%R9V,L(&-H87(@*F%R9W9;72`I"GL*"2\J
M($EN:71I86QI>F4@9VQO8F%L<R`J+PH)<V5C;VYD<R`]($1%1D%53%1?1$5,
M05D["@EP<F]G<F%M(#T@3E5,3#L*"7!R;V-E9'5R92`]($Y53$P["@EA<F=S
M(#T@3E5,3#L*"@DO*B!);FET:6%L:7IE(&%R9W5E;65N=',@*B\*"6EN:71?
M87)G<R@@87)G8RP@87)G=B`I.PI]"@H*+RHM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T*"4%L87)M
M('1I;65O=70@<VEG;F%L(&-A=&-H97(*"@ER971U<FX@+3$@;VX@97)R;W(*
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM*B\*"FEN="!T:6UE;W5T*"!V;VED("D*>PH):6YT('!I
M9"P@<W1A='5S.PH*"2\J($9O<FL@82!C:&EL9"!T;R!E>&5C=71E('1H92!P
M<F]C961U<F4@*B\*"6EF("@H<&ED(#T@9F]R:R@@*2D@/3T@15)23U(I"7L*
M"@D)+RH@56YS=6-C97-S9G5L(&9O<FL@*B\*"0EP97)R;W(H('!R;V=R86T@
M*3L*"0EE>&ET*"`Q("D["@H)?0EE;'-E(&EF("AP:60@(3T@,"D)>PH*"0DO
M*B!786ET(&9O<B!C:&EL9"!T;R!E>&ET("HO"@D):68@*'=A:70H("9S=&%T
M=7,@*2`]/2!%4E)/4BD)>PH)"0EP97)R;W(H('!R;V=R86T@*3L*"0D)97AI
M="@@,2`I.PH)"7T*"@E]"65L<V4)>PH*"0DO*B!%>&5C=71E('1H92!P<F]C
M961U<F4@*B\*"0EI9B`H(&5X96-V<"@@<')O8V5D=7)E+"!A<F=S("D@/3T@
M15)23U(@*0E["@D)"7!E<G)O<B@@<')O8V5D=7)E("D["@D)"65X:70H(#$@
M*3L*"0E]"@H)"2\J(%-H;W5L9"!N979E<B!R96%C:"!H97)E("T@2&%H(2`J
M+PH)"65X:70H(#,@*3L*"@E]"@H)+RH@4F5S970@=&AE(&%L87)M('1O(&-A
M;&P@=&EM96]U="`J+PH)<VEG;F%L*"!324=!3%)-+"!T:6UE;W5T("D["@EA
M;&%R;2@@<V5C;VYD<R`I.PH*"2\J($YO<FUA;"!R971U<FX@=&\@<')O9W)A
M;2`J+PH)<F5T=7)N(#`["GT*"@HO*BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+0H)5V%I="!F;W(@
M:V5Y8F]A<F0O;6]U<V4@979E;G1S"BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2HO"@IV;VED(&5V
M96YT7V-H96-K97(H('9O:60@*0I["@ES;61?)&5C7VME>5]T(&ME>2`]('-M
M9%\D:6YP=71?96,["@ES=&%T=7-?)'0@<W1A='5S.PH)96,R7R1P=')?="!E
M8W!;,5T["@ES:&]R="!W:&EC:#L*"6QO;F<@=F%L6S%=.PH*"2\J(%-E="!T
M:&4@9&ES<&QA>2!U;FET("HO"@ES;61?)'-E=%]D:7-P7W5N:70H("AS:&]R
M="DQ+"`F<W1A='5S*3L*"6-H96-K7W-T871U<R@@<W1A='5S("D["@H)+RH@
M1V5T(&1I<W!L87D@979E;G1S("HO"@ES;61?)&=E=%]E8R@@:V5Y+"`F96-P
M6U-$35]%0UTL("9S=&%T=7,@*3L*"6-H96-K7W-T871U<R@@<W1A='5S("D[
M"@H)+RH@1V5T(&5V96YT(&-O=6YT('1R:6=G97(@*B\*"79A;%M31$U?14-=
M(#T@96,R7R1R96%D*"`J96-P6U-$35]%0UT@*2`K(#$["@H)+RH@4&5R;6%N
M96YT(&5V96YT(&QO;W`@*B\*"7=H:6QE("AT<G5E*0E["@H)"2\J(%-E="!T
M:&4@86QA<FT@=&\@8V%L;"!T:6UE;W5T("HO"@D)<VEG;F%L*"!324=!3%)-
M+"!T:6UE;W5T("D["@D)86QA<FTH('-E8V]N9',@*3L*"@D)+RH@4&]L;"!E
M=F5N="!C;W5N="`J+PH)"7=H:6-H(#T@96,R7R1W86ET*"!E8W`L('9A;"P@
M*'-H;W)T*3$L("9S=&%T=7,@*3L*"0EC:&5C:U]S=&%T=7,H('-T871U<R`I
M.PH*"0DO*B!5<&1A=&4@=&AE('1R:6=G97(@*B\*"0EV86Q;4T1-7T5#72`]
M(&5C,E\D<F5A9"@@*F5C<%M31$U?14-=("D@*R`Q.PH*"7T*?0H*"B\J+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM"@E-86EN(')O=71I;F4*"@EA<F=C("T@24Y0550@+2!N=6UB
M97(@;V8@87)G=65M96YT<PH)87)G=B`M($E.4%54("T@87)R87D@;V8@87)G
M=65M96YT(&-H87)A8W1E<B!S=')I;F=S"BTM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2HO"@IV;VED
M(&UA:6X@*"!I;G0@87)G8RP@8VAA<B`J87)G=EM=("D*>PH)+RH@26YI=&EA
M;&EZ871I;VX@*B\*"6EN:70H(&%R9V,L(&%R9W8@*3L*"@DO*B!#:&5C:R!F
K;W(@9&ES<&QA>2!E=F5N=',@*B\*"65V96YT7V-H96-K97(H("D["GT*"B!F
`
end
-- 
 Bob Hall,                 | "If at first you don't succeed, try, try again.
 Workstation Peripheral    | Then give up. No use being a damn fool about it."
 Boeing Computer Services  |                                     -Groucho Marx