- Refactored site specific stuff into a site module - PSI specific stuff is now in the PSI directory. - The old version has been tagged with pre-ansto
53 lines
1.1 KiB
Fortran
53 lines
1.1 KiB
Fortran
!!-----------------------------------------------------------------------------
|
|
!!
|
|
subroutine SYS_GET_KEY(KEY, TMO) !!
|
|
!!
|
|
!! read for keyboard with timeout, without echo
|
|
!!
|
|
character KEY*1 !!
|
|
integer TMO !! timeout in seconds (<100)
|
|
|
|
character esc*1, csi*1, ss3*1
|
|
|
|
esc=char(27)
|
|
csi=char(155)
|
|
ss3=char(143)
|
|
|
|
call sys_get_raw_key(key, tmo)
|
|
1 if (key .eq. esc) then
|
|
call sys_get_raw_key(key, tmo)
|
|
if (key .eq. 'O') then
|
|
key=ss3
|
|
goto 1
|
|
elseif (key .eq. '[') then
|
|
key=csi
|
|
goto 1
|
|
endif
|
|
elseif (key .eq. csi) then
|
|
call sys_get_raw_key(key, tmo)
|
|
do while (key .ge. '0' .and. key .le. '9')
|
|
call sys_get_raw_key(key, tmo)
|
|
enddo
|
|
key=' '
|
|
elseif (key .eq. ss3) then
|
|
call sys_get_raw_key(key, tmo)
|
|
if (key .eq. 'm') then
|
|
key='-'
|
|
elseif (key .eq. 'l') then
|
|
key='+'
|
|
elseif (key .eq. 'n') then
|
|
key='.'
|
|
elseif (key .eq. 'M') then
|
|
key=char(13)
|
|
elseif (key .eq. 'S') then
|
|
key='*'
|
|
elseif (key .eq. 'R') then
|
|
key='/'
|
|
elseif (key .eq. 'Q') then
|
|
key='='
|
|
else
|
|
key=' '
|
|
endif
|
|
endif
|
|
end
|