How do you read the arrow keys?
Michael Meissner
meissner at osf.org
Sat Dec 29 04:39:23 AEST 1990
I tried mailing to icsu7039 at nero.cs.montana.edu, but got a mail
bounce:
| From: icsu7039 at nero.cs.montana.edu (Spannring)
| Newsgroups: comp.unix.programmer
| Date: 27 Dec 90 19:20:24 GMT
| Organization: Montana State University, Dept. of Computer Science, Bozeman
|
|
| I am currently porting some menu routines from MS-DOG to Unix.
| What is the proper (terminal independent) way of reading the arrow
| and/or function keys?
If your vendor's curses package is based on System V.2 then that is
provided. If you have the old broken BSD curses, lots of luck -- you
can read what the function keys send with tgetstr and the capabilities
kd, ku, kl, and kr for the arrow keys -- you will have to do the
parsing yourself.
Quoting from the manual on curses:
int getch ( void );
Get a character from stdscr. May be used with mini-
curses. The following function keys might be returned
by the getch() function if keypad() has been enabled:
KEY_BREAK Break key (unreliable)
KEY_DOWN Down arrow key
KEY_UP Up arrow key
KEY_LEFT Left arrow key
KEY_RIGHT Right arrow key
KEY_HOME Home key
KEY_BACKSPACE
Backspace (unreliable)
KEY_F(n) Function key Fn, where n is an integer from 0
to 63
KEY_DL Delete line
KEY_IL Insert line
KEY_DC Delete character
KEY_IC Insert character or enter insert mode
KEY_EIC Exit insert character mode
KEY_CLEAR Clear screen
KEY_EOS Clear to end of screen
KEY_EOL Clear to end of line
KEY_SF Scroll one line forward
KEY_SR Scroll one line backwards (reverse)
KEY_NPAGE Next page
KEY_PPAGE Previous page
KEY_STAB Set tab
KEY_CTAB Clear tab
KEY_CATAB Clear all tabs
KEY_ENTER Enter or send (unreliable)
KEY_SRESET
Soft (partial) reset (unreliable)
KEY_RESET Reset or hard reset (unreliable)
KEY_PRINT Print or copy
KEY_LL Home down or bottom (lower left)
KEY_A1 Upper left key of keypad
KEY_A3 Upper right key of keypad
KEY_B2 Center key of keypad
KEY_C1 Lower left key of keypad
KEY_C3 Lower right key of keypad
Due to lack of definitions in terminfo, or due to the
terminal not transmitting a unique code when the key is
pressed, not all of these keys are supported.
...
int keypad( WINDOW *win, bool bool_flag );
Enable keypad input on window win if bool_flag is true.
--
Michael Meissner email: meissner at osf.org phone: 617-621-8861
Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142
Considering the flames and intolerance, shouldn't USENET be spelled ABUSENET?
More information about the Comp.unix.programmer
mailing list