/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getch.c,v 1.119 2010/05/22 20:00:35 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.124 2012/01/21 19:21:29 KO.Myung-Hun Exp $")
#include <fifo_defs.h>
int rc;
#ifdef USE_TERM_DRIVER
- rc = TCBOf(sp)->drv->testmouse(TCBOf(sp), delay);
+ rc = TCBOf(sp)->drv->testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl));
#else
#if USE_SYSMOUSE
if ((sp->_mouse_type == M_SYSMOUSE)
ch = KEY_MOUSE;
n = 1;
} else
+#endif
+#if USE_KLIBC_KBD
+ if (isatty(sp->_ifd) && sp->_cbreak) {
+ ch = _read_kbd(0, 1, !sp->_raw);
+ n = (ch == -1) ? -1 : 1;
+ sp->_extended_key = (ch == 0);
+ } else
#endif
{ /* Can block... */
#ifdef USE_TERM_DRIVER
# endif
_nc_globals.read_thread = pthread_self();
# endif
- n = read(sp->_ifd, &c2, 1);
+ n = (int) read(sp->_ifd, &c2, (size_t) 1);
#if USE_PTHREADS_EINTR
_nc_globals.read_thread = 0;
#endif
NCURSES_EXPORT(int)
_nc_wgetch(WINDOW *win,
- unsigned long *result,
+ int *result,
int use_meta
EVENTLIST_2nd(_nc_eventlist * evl))
{
*
* If carriage return is defined as a function key in the
* terminfo, e.g., kent, then Solaris may return either ^J (or ^M
- * if nonl() is set) or KEY_ENTER depending on the echo() mode.
+ * if nonl() is set) or KEY_ENTER depending on the echo() mode.
* We echo before translating carriage return based on nonl(),
* since the visual result simply moves the cursor to column 0.
*
* cursor to the left.
*/
if (sp->_echo && !(win->_flags & _ISPAD)) {
- chtype backup = (ch == KEY_BACKSPACE) ? '\b' : ch;
+ chtype backup = (chtype) ((ch == KEY_BACKSPACE) ? '\b' : ch);
if (backup < KEY_MIN)
wechochar(win, backup);
}
wgetch_events(WINDOW *win, _nc_eventlist * evl)
{
int code;
- unsigned long value;
+ int value;
T((T_CALLED("wgetch_events(%p,%p)"), win, evl));
code = _nc_wgetch(win,
wgetch(WINDOW *win)
{
int code;
- unsigned long value;
+ int value;
T((T_CALLED("wgetch(%p)"), (void *) win));
code = _nc_wgetch(win,