Re: Right Arrow key Doesn't work in PROMPT FOR CHAR cmd
Posted in 1994
briang@access3.digex.net (Brian G.) writes: >Can someone please tell me how to get the right arrow key to work in >the below code sample. >I need to get this code to work in a window. The Up, Down, and Left >arrow keys and F-keys function properly but when the Right arrow key >is pressed the cursor moves one character to the right and doesn't >pass any key to the PROMPT statement. >I have tried this on the console and rlogin sessions with the same >results, and the arrow keys work fine in the r4gl application and >*.4ge compiled executables. > Thanks Muchly, > - Brian G. Looks like PROMPT has a problem with right arrow (duh!). Here's something I did that is slightly different, involving an INPUT instead of PROMPT, probably because I ran into the same problem (I don't remember why I abandoned PROMPT, but I remember I did try it and went with INPUT instead). The only drawback with INPUT is that a form is required. ================ Dennis J. Pimple Informix CSE / Denver 303-850-0210 -- fkeys.per CUT HERE ------------------------------------------------- DATABASE FORMONLY SCREEN { ======================================================================== TYPE A KEY:[a] [n] } ATTRIBUTES a = FORMONLY.ans TYPE CHAR, AUTONEXT, COMMENTS = "Type a key; INTERRUPT to quit"; n = FORMONLY.ne TYPE CHAR, NOENTRY; INSTRUCTIONS DELIMITERS " " END -- fkeys.4gl CUT HERE ------------------------------------------------- MAIN DEFINE f_inp RECORD ans CHAR(1), ne CHAR(1) END RECORD DEFINE lkey INTEGER DEFINE ckey CHAR(15) DEFER INTERRUPT OPTIONS ERROR LINE LAST OPTIONS FORM LINE FIRST OPTIONS INPUT WRAP CLEAR SCREEN OPEN WINDOW fkeys AT 3,3 WITH FORM "fkeys" ATTRIBUTE(BORDER) INITIALIZE f_inp.* TO NULL INPUT BY NAME f_inp.* WITHOUT DEFAULTS ON KEY (ESC) ERROR "ESCAPE" ON KEY (F1) ERROR "F1" ON KEY (F2) ERROR "F2" ON KEY (F3) ERROR "F3" ON KEY (F4) ERROR "F4" ON KEY (F5) ERROR "F5" ON KEY (F6) ERROR "F6" ON KEY (F7) ERROR "F7" ON KEY (F8) ERROR "F8" ON KEY (F9) ERROR "F9" ON KEY (F10) ERROR "F10" ON KEY (F11) ERROR "F11" ON KEY (F12) ERROR "F12" ON KEY (F13) ERROR "F13" ON KEY (F14) ERROR "F14" ON KEY (F15) ERROR "F15" ON KEY (F16) ERROR "F16" ON KEY (F17) ERROR "F17" ON KEY (F18) ERROR "F18" ON KEY (F19) ERROR "F19" ON KEY (F20) ERROR "F20" ON KEY (F21) ERROR "F21" ON KEY (F22) ERROR "F22" ON KEY (F23) ERROR "F23" ON KEY (F24) ERROR "F24" ON KEY (F25) ERROR "F25" ON KEY (F26) ERROR "F26" ON KEY (F27) ERROR "F27" ON KEY (F28) ERROR "F28" ON KEY (F29) ERROR "F29" ON KEY (F30) ERROR "F30" ON KEY (F31) ERROR "F31" ON KEY (F32) ERROR "F32" ON KEY (F33) ERROR "F33" ON KEY (F34) ERROR "F34" ON KEY (F35) ERROR "F35" ON KEY (F36) ERROR "F36" ON KEY (CONTROL-B) ERROR "CONTROL-B" ON KEY (CONTROL-C) ERROR "CONTROL-C" ON KEY (CONTROL-E) ERROR "CONTROL-E" ON KEY (CONTROL-F) ERROR "CONTROL-F" ON KEY (CONTROL-G) ERROR "CONTROL-G" ON KEY (CONTROL-N) ERROR "CONTROL-N" ON KEY (CONTROL-O) ERROR "CONTROL-O" ON KEY (CONTROL-P) ERROR "CONTROL-P" ON KEY (CONTROL-T) ERROR "CONTROL-T" ON KEY (CONTROL-U) ERROR "CONTROL-U" ON KEY (CONTROL-V) ERROR "CONTROL-V" ON KEY (CONTROL-W) ERROR "CONTROL-W" ON KEY (CONTROL-Y) ERROR "CONTROL-Y" ON KEY (CONTROL-Z) ERROR "CONTROL-Z" AFTER FIELD ans LET lkey = fgl_lastkey() LET ckey = what_key(lkey) IF LENGTH(ckey) = 0 THEN LET ckey = f_inp.ans END IF ERROR "fgl_lastkey = ", lkey USING "<<<<<<<<<&", "; key = ", ckey CLIPPED END INPUT IF int_flag THEN ERROR "INTERRUPT" ELSE ERROR "ESCAPE" END IF CLOSE WINDOW fkeys SLEEP 1 END MAIN FUNCTION what_key(lkey) DEFINE lkey INTEGER CASE WHEN lkey = fgl_keyval("accept") RETURN "ACCEPT" WHEN lkey = fgl_keyval("delete") RETURN "DELETE" WHEN lkey = fgl_keyval("down") RETURN "DOWN" WHEN lkey = fgl_keyval("escape") RETURN "ESCAPE" WHEN lkey = fgl_keyval("help") RETURN "HELP" WHEN lkey = fgl_keyval("insert") RETURN "INSERT" WHEN lkey = fgl_keyval("interrupt") RETURN "INTERRUPT" WHEN lkey = fgl_keyval("left") RETURN "LEFT" WHEN lkey = fgl_keyval("nextpage") RETURN "NEXTPAGE" WHEN lkey = fgl_keyval("prevpage") RETURN "PREVPAGE" WHEN lkey = fgl_keyval("return") RETURN "RETURN" WHEN lkey = fgl_keyval("right") RETURN "RIGHT" WHEN lkey = fgl_keyval("tab") RETURN "TAB" WHEN lkey = fgl_keyval("up") RETURN "UP" OTHERWISE RETURN "" END CASE END FUNCTION