Curses and the arrow keys
Michael Meissner
meissner at osf.org
Mon Aug 27 07:32:07 AEST 1990
In article <1990Aug24.175453.4310 at irscscm.UUCP> mlake at irscscm.UUCP
(Marshall Lake) writes:
| I am writing a program which will be taking advantage of curses. I am
| trying to utilize the arrow keys and am confused (actually all of
| curses confuses me). I am doing a getch () and if I get an ESCAPE I do
| another getch (). If I addch () for each character I get (the ESCAPE
| and the next character) then the cursor moves around properly on the
| screen but the x/y coordinates in the window structure do not follow
| suit. Curses is recognizing the arrow keys simply as regular
| characters. Am I naive in thinking that curses is smart enough to
| handle the arrow keys specially? Should I be moving the cursor
| manually via the move function?
If your curses is based on the System V.2 curses, it will have a
'keypad' function which turns on recognizing any arrow keys or
function keys. Here is a copy of the documentation:
NAME
keypad - enable keypad
SYNTAX
keypad(win, bf)
WINDOW *win;
bool bf;
DESCRIPTION
This option enables the keypad of the user's terminal. If
the keypad is enabled, pressing a function key (such as an
arrow key) will return a single value representing the
function key. For example, pressing the left arrow key
results in the value KEY_LEFT being returned.. For more
information see the Guide to Curses Screen-Handling. The
routine is used to return the character. If the keypad is
disabled, does not treat function keys as special keys and
the program interprets the escape sequences itself. Keypad
layout is terminal dependent; some terminals do not even
have a keypad.
SEE ALSO
getch(3cur)
Guide to Curses Screen-Handling
Note that KEY_LEFT and friends will not fit in an ordinary character,
so make sure getch's result is stored in an int.
If your curses is still based on the Berkeley curses, you have my
sympathies. This is one area where System V is better than BSD.
--
Michael Meissner email: meissner at osf.org phone: 617-621-8861
Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142
Do apple growers tell their kids money doesn't grow on bushes?
More information about the Comp.unix.questions
mailing list