[comp.unix.aux] Problems w/curses and the arrow keys...

randy@tessa.iaf.uiowa.edu (randy frank) (02/21/91)

	I'm running A/UX 2.0, trying to port some curses code which runs
fine on Silicon Graphics boxes.  I've got some input problems...
	I'm using curses in raw mode with nodelay while trying to read the
arrow keys.  The arrow keys are handled but are not returned by getch()
until the next character is pressed (I'm guessing that curses is checking
for some other multi-character code which starts with the KEY_XXX codes? or
just making sure the sequence is correct.).  Anyway this is not the same
as several other curses libs do it.  Normally this code frag would display
the hex equiv of the arrow keys when pressed.  Instead, under A/UX 2.0, it
will not return KEY_XXX until another keystroke is obtained at which time
it returns the KEY_XXX followed immediately by the other keystroke.  My 
question: Is this a bug? or am I calling it wrong? or did I miss some 
initialization?  
	A further question relates to the function keys on the extended
keyboard.  How can these be intercepted?  

Here's the test program I was using:    
#include <stdio.h>
#include <curses.h>

main()
{
	int time;
	int mych;

	initscr();
	noecho();
	nonl();
	nodelay(stdscr,TRUE);
	raw();
	keypad(stdscr,TRUE);

	move(0,0);
	printw("Working...\n");
	refresh();
	time = 0;

top:
	mych = getch();
	if (mych == ERR)  {
		time = time + 1;
		goto top;
	}
	move(10,10);
	printw("Char: %.4X at %d\n",mych,time);
	refresh();
	time = 0;
	if (mych == KEY_UP) beep();
	if (mych != KEY_DOWN) goto top;

	noraw();
	nodelay(stdscr,FALSE);
	endwin();
	exit(0);
}

Any help at all would be appreciated...

Thanks,
--
rjf.
Randy Frank, Engineer                       |  (319) 335-6712       
University of Iowa, Image Analysis Facility |  73 EMRB              
randy@tessa.iaf.uiowa.edu                   |  Iowa City, IA 52242