#include "local.h"
+static int _halfdelay = 0;
+
/* ============== Serial ==================== */
/* FIXME: Cook the serial correctly */
return cook_serial(c);
}
- if (!delay)
+ if (delay == 0)
break;
+
+ if (delay > 0) {
+ mdelay(100);
+ delay--;
+ }
}
c = inb(0x60);
int wgetch(WINDOW *win)
{
- return curses_getchar(win->_delay);
+ int delay = -1;
+
+ if (_halfdelay || win->_delay)
+ delay = win->_delay ? 0 : _halfdelay;
+
+ return curses_getchar(delay);
}
int nodelay(WINDOW *win, NCURSES_BOOL flag)
{
- win->_delay = flag ? 0 : -1;
+ win->_delay = flag ? 1 : 0;
+ return 0;
+}
+
+int halfdelay(int tenths)
+{
+ if (tenths > 255)
+ return ERR;
+
+ _halfdelay = tenths;
+ return 0;
+}
+
+int nocbreak(void)
+{
+ /* Remove half delay timeout. */
+ _halfdelay = 0;
return 0;
}
return win;
}
/* D */ int nl(void) { SP->_nl = TRUE; return OK; }
-int nocbreak(void) { /* TODO */ return(*(int *)0); }
/* D */ int noecho(void) { SP->_echo = FALSE; return OK; }
/* D */ int nonl(void) { SP->_nl = FALSE; return OK; }
// void noqiflush (void) {}