To use function keys without the REXXUTIL functions, redefine them with a trailing CR (see also ANSI ESC Sequences, Key codes for key redefinitions, and download RxLBox for a working example):
/* sample key redefinitons */
/* new definitons for the function keys */
keys.0 = 0
i = keys.0
i=i+1; keys.i.__org = '59'; keys.i.__new = 'F1'
i=i+1; keys.i.__org = '60'; keys.i.__new = 'F2'
i=i+1; keys.i.__org = '61'; keys.i.__new = 'F3'
i=i+1; keys.i.__org = '62'; keys.i.__new = 'F4'
i=i+1; keys.i.__org = '63'; keys.i.__new = 'F5'
i=i+1; keys.i.__org = '64'; keys.i.__new = 'F6'
i=i+1; keys.i.__org = '65'; keys.i.__new = 'F7'
i=i+1; keys.i.__org = '66'; keys.i.__new = 'F8'
i=i+1; keys.i.__org = '67'; keys.i.__new = 'F9'
i=i+1; keys.i.__org = '68'; keys.i.__new = 'F10'
keys.0 = i
/* ANSI esc sequence */
ansi.__ESC = '1B'x
/* special character to detect function keys */
specialChar = 'FE'x
/* install error handler for CTRL-BREAK */
signal on halt
/* redefine the function keys */
do i = 1 to keys.0
call CharOut , ansi.__ESC || '[0;' || keys.i.__org || ';' || ,
'"' || specialChar || keys.i.__New || specialChar || '"' || ,
';13p'
end /* do i = 1 to keys.0 */
/* test the new key definitons */
do forever
call LineOut, 'Test the function key redefinitions'
call CharOut, 'Enter a string (F10 to end): '
userInput = lineIn()
/* test for function keys */
parse var UserInput part1 (specialChar) fKey (specialChar) part2
UserInput = part1 || part2
say 'Userinput was: "' || UserInput || '"'
if fkey = '' then
say 'No function key pressed.'
else
say 'Function key "' || fkey || '" pressed.'
if fkey = 'F10' then
leave
end /* do forever */
ProgramEnd:
/* undo the key redefinitons */
do i = 1 to keys.0
call CharOut , ansi.__ESC || '[0;' || keys.i.__org || ';' || ,
'0;' || keys.i.__org || ';p'
end /* do i = 1 to keys.0 */
exit
/* error handler for CTRL-BREAK */
Halt:
say
say 'Program aborted by the user!'
signal ProgramEnd