Changeset 623 for WorldVistAEHR/trunk/r/KERNEL-XU-A4A7-USC-XG-XLF-XNOA-XPD-XQ-XVIR-ZI-ZOSF-ZOSV-ZT-ZU-%Z-XIP--XQAB--XUC--XUR--ZIN--ZTED/XGKB.m
- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/KERNEL-XU-A4A7-USC-XG-XLF-XNOA-XPD-XQ-XVIR-ZI-ZOSF-ZOSV-ZT-ZU-%Z-XIP--XQAB--XUC--XUR--ZIN--ZTED/XGKB.m
r613 r623 1 XGKB ;SFISC/VYD - Read with Escape Processing ;10/23/20062 ;;8.0;KERNEL;**34,244,365**;Jul 10, 1995;Build53 4 5 INIT(XGTRM) 6 7 8 9 10 I %OS["OpenM" U $I:(:"CT") D:'$D(^XUTL("XGKB")) DTM^XGKB1 S:$G(XGTRM)="*" XGTRM="" 11 12 13 14 15 16 17 18 EXIT 19 20 21 22 23 24 25 26 27 28 29 ACTION(XGKEY,XGACTION) 30 31 32 33 34 35 36 37 38 READ(XGCHARS,XGTO) 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 TEST 64 1 XGKB ;SFISC/VYD - Read with Escape Processing ;07/10/2002 10:58 2 ;;8.0;KERNEL;**34,244**;Jul 10, 1995 3 ;;Special thanks to MELDRUM.KEVIN@ISC-SLC.VA.GOV 4 ; 5 INIT(XGTRM) ;turn escape processing on and passed terminator string if any 6 N %,%OS S %OS=^%ZOSF("OS") 7 I %OS["VAX DSM" U $I:(NOLINE:ESCAPE) D:'$D(^XUTL("XGKB")) VAXDSM^XGKB1 8 I %OS["MSM" U $I:(0::::64) D:'$D(^XUTL("XGKB")) MSM^XGKB1 9 I %OS["DTM" U $I:(VT=1:ESCAPE=1) D:'$D(^XUTL("XGKB")) DTM^XGKB1 10 I %OS["OpenM" U $I:(:"CT") D:'$D(^XUTL("XGKB")) DTM^XGKB1 11 I %OS["GT.M" U $I:(ESCAPE) D:'$D(^XUTL("XGKB")) GTM^XGKB1 12 I $G(XGTRM)="*" X ^%ZOSF("TRMON") I 1 ;turn all on 13 E I $L($G(XGTRM)) S %=$$SETTRM^%ZOSV(XGTRM) ;turn on passed terminators 14 S XGRT="" 15 Q 16 ; 17 ; 18 EXIT ; Reset device (disable escape processing, turn terminators off) 19 N %OS S %OS=^%ZOSF("OS") 20 I %OS["VAX DSM" U $I:(LINE:NOESCAPE) 21 I %OS["MSM" U $I:(0:::::64) 22 I %OS["DTM" U $I:(ESCAPE=0) 23 I %OS["GT.M" U $I:(NOESCAPE) 24 X ^%ZOSF("TRMOFF") 25 K XGRT 26 Q 27 ; 28 ; 29 ACTION(XGKEY,XGACTION) ;add or remove key-action 30 ;XGKEY:key mnemonic ("F10","NEXT",etc.) 31 ;XGACTION:M executable string 32 ;if action is passed ADD mode is assumed otherwise REMOVE 33 I $D(XGACTION) S ^TMP("XGKEY",$J,XGKEY)=XGACTION 34 E K ^TMP("XGKEY",$J,XGKEY) 35 Q 36 ; 37 ; 38 READ(XGCHARS,XGTO) ; read XGCHARS using escape processing. XGTO timeout (optional). Result returned. 39 ; Char that terminated the read will be in XGRT 40 N S,XGW1,XGT1,XGSEQ ;string,window,timer,timer sequence 41 K DTOUT 42 S XGRT="" 43 D:$G(XGTO)="" ;set timeout value if one wasn't passed 44 . I $D(XGT) D Q ;if timers are defined 45 . . S XGTO=$O(XGT(0,"")) ;get shortest time left of all timers 46 . . S XGW1=$P(XGT(0,XGTO,$O(XGT(0,XGTO,"")),"ID"),U,1) ;get timer's window 47 . . S XGT1=$P(XGT(0,XGTO,$O(XGT(0,XGTO,"")),"ID"),U,3) ;get timer's name 48 . I $D(XGW) S XGTO=99999999 Q ;in emulation read forever 49 . S XGTO=$G(DTIME,600) 50 ; 51 I $G(XGCHARS)>0 R S#XGCHARS:XGTO S:'$T DTOUT=1 I 1 ;fixed length read 52 E R S:XGTO S:'$T DTOUT=1 I 1 ;read as many as possible 53 S:$G(DTOUT)&('$D(XGT1)) S=U ;stuff ^ 54 ; 55 S:$L($ZB) XGRT=$G(^XUTL("XGKB",$ZB)) ;get terminator if any 56 I $G(DTOUT),$D(XGT1),$D(^TMP("XGW",$J,XGW1,"T",XGT1,"EVENT","TIMER")) D I 1 ;if timed out 57 . D E^XGEVNT1(XGW1,"T",XGT1,"","TIMER") 58 E I $L(XGRT),$D(^TMP("XGKEY",$J,XGRT)) X ^(XGRT) ;do some action 59 ; this really should be handled by keyboard mapping -- later 60 Q S 61 ; 62 ; 63 TEST F S X=$$READ Q:X["^" W ?20,X,?40,XGRT,?60,$ZB,! 64 Q
Note:
See TracChangeset
for help on using the changeset viewer.