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