INTEGER FUNCTION IGTKEY C***************************************************************************** C C Description : Checks the terminal input buffer if a key has been pressed. C C Arguments : Function value C = 0 if no key is pressed, C = ASCII value of key pressed, C If KEYPAD key is pressed = C -1 = '1' , -7 = '7' , -13 = 'PF3' , -19 = '^' C -2 = '2' , -8 = '8' , -14 = 'PF4' , -20 = 'v' C -3 = '3' , -9 = '9' , -15 = '-' , -21 = '<' C -4 = '4' , -10 = '0' , -16 = ',' , -22 = '>' C -5 = '5' , -11 = 'PF1' , -17 = 'ENTER' C -6 = '6' , -12 = 'PF2' , -18 = '.' C NB. An escape can not be detected. C C Author : T.Pijl C AKZO PHARMA, Oss Holland C dept. SDA C C Version : V1.0 Date : 7-dec-82 C C Module name : IGTKEY.FTN C C Package : RSX-LIBRARY C C Compilation/Linking : FOR/F4P/TR:NONE IGTKEY C C Updates : name version C C description : C C***************************************************************************** C BYTE KEY C IGTKEY=0 KEY=IGTCHR() ! get 1st char from buffer IF( KEY .LT. 0 ) GOTO 90 C IF( KEY .EQ. 27 ) 11,20,20 ! is it ? C THEN 11 KEY=IGTCHR() ! get 2nd char from buffer IF( KEY .LT. 0 ) GOTO 90 IF( KEY .EQ. 'O' ) 12,25,25 ! is it O ? C THEN 12 KEY=IGTCHR() !get 3rd key from buffer IF( KEY .LT. 0 ) GOTO 90 IF( KEY .GE. 'P' .AND. KEY .LE. 'S') 13,14,14 C THEN 13 IGTKEY = 69 - KEY GOTO 90 C ELSE 14 IF( KEY .GE. 'q' .AND. KEY .LE. 'y') 15,16,16 C THEN 15 IGTKEY = 112 - KEY GOTO 90 C ELSE 16 IF( KEY .EQ. 'p' ) IGTKEY = -10 IF( KEY .EQ. 'n' ) IGTKEY = -18 IF( KEY .EQ. 'M' ) IGTKEY = -17 IF( KEY .EQ. 'l' ) IGTKEY = -16 IF( KEY .EQ. 'm' ) IGTKEY = -15 GOTO 90 C ENDIF C ENDIF C ELSE 25 IF( KEY .EQ. '[' ) 26,90,90 C THEN 26 KEY=IGTCHR() !get 3rd key from buffer IF( KEY .EQ. 'A' ) IGTKEY = -19 IF( KEY .EQ. 'B' ) IGTKEY = -20 IF( KEY .EQ. 'D' ) IGTKEY = -21 IF( KEY .EQ. 'C' ) IGTKEY = -22 GOTO 90 C ENDIF C ENDIF C ELSE 20 IGTKEY = KEY C ENDIF C 90 RETURN END