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