1 2 /*-------------------------------------------------------------*/ 3 typedef enum { 4 NETWIB_PRIV_KBDTYPE_UNKNOWN = 0, 5 NETWIB_PRIV_KBDTYPE_CONSOLE, 6 NETWIB_PRIV_KBDTYPE_FILE, 7 NETWIB_PRIV_KBDTYPE_PIPE 8 } netwib_priv_kbdtype; 9 10 /*-------------------------------------------------------------*/ 11 typedef struct { 12 int fd; 13 NETWIBHANDLE h; 14 netwib_priv_kbdtype type; 15 netwib_bool consoleecho; 16 netwib_bool consolereadbyline; 17 netwib_bool availdata; 18 netwib_bool originalconsoleecho; 19 netwib_bool originalconsolereadbyline; 20 } netwib_priv_kbd; 21 22 /*-------------------------------------------------------------*/ 23 netwib_err netwib_priv_kbd_init_fd(int fd, 24 netwib_priv_kbd *pkbd); 25 netwib_err netwib_priv_kbd_init_handle(NETWIBHANDLE h, 26 netwib_priv_kbd *pkbd); 27 netwib_err netwib_priv_kbd_initdefault(netwib_priv_kbd *pkbd); 28 netwib_err netwib_priv_kbd_close(netwib_priv_kbd *pkbd); 29 30 /*-------------------------------------------------------------*/ 31 netwib_err netwib_priv_kbd_ctl_set_purge(netwib_priv_kbd *pkbd); 32 netwib_err netwib_priv_kbd_ctl_set_echoline(netwib_priv_kbd *pkbd, 33 netwib_bool consoleecho, 34 netwib_bool consolereadbyline); 35 /* no need for ctl_get_echoline, because they are stored in pkbd */ 36 37 /*-------------------------------------------------------------*/ 38 /* will internally change and restore echo/line */ 39 netwib_err netwib_priv_kbd_press(netwib_priv_kbd *pkbd, 40 netwib_char *pc); 41 42 /*-------------------------------------------------------------*/ 43 /* ctl_set_echoline(x,false) has to be called before (once) */ 44 netwib_err netwib_priv_kbd_read_key(netwib_priv_kbd *pkbd, 45 netwib_char *pc); 46 47 /*-------------------------------------------------------------*/ 48 /* ctl_set_echoline(x,true) has to be called before (once) */ 49 netwib_err netwib_priv_kbd_read_line(netwib_priv_kbd *pkbd, 50 netwib_buf *pbuf); 51 52 /*-------------------------------------------------------------*/ 53 netwib_err netwib_priv_kbd_wait(netwib_priv_kbd *pkbd, 54 netwib_consttime *pabstime, 55 netwib_bool *pevent); 56 netwib_err netwib_priv_kbd_read(netwib_priv_kbd *pkbd, 57 netwib_buf *pbuf); 58 59 /*-------------------------------------------------------------*/ 60 netwib_err netwib_priv_kbd_buf_append(netwib_constbuf *pmessage, 61 netwib_constbuf *pdefaulttext, 62 netwib_bool echokeys, 63 netwib_char prompt, 64 netwib_bool askifempty, 65 netwib_buf *pbuf); 66