/[LeafOK_CVS]/lbbs/include/io.h
ViewVC logotype

Contents of /lbbs/include/io.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.33 - (show annotations)
Sun Jan 4 13:22:58 2026 UTC (2 months, 1 week ago) by sysadm
Branch: MAIN
CVS Tags: HEAD
Changes since 1.32: +1 -0 lines
Content type: text/x-chdr
Mapping key Backspace (0x7f) to \b (0x8)

1 /* SPDX-License-Identifier: GPL-3.0-or-later */
2 /*
3 * io
4 * - basic terminal-based user input / output features
5 *
6 * Copyright (C) 2004-2026 Leaflet <leaflet@leafok.com>
7 */
8
9 #ifndef _IO_H_
10 #define _IO_H_
11
12 #include <iconv.h>
13 #include <stdio.h>
14
15 enum io_key_t
16 {
17 CR = '\r',
18 LF = '\n',
19 BACKSPACE = '\b',
20 BELL = '\7',
21 KEY_TAB = '\t',
22 KEY_ESC = '\033',
23 KEY_SPACE = '\040',
24
25 // Expand key
26 KEY_NULL = 0xffff,
27 KEY_TIMEOUT = 0xfffe,
28 KEY_CONTROL = 0xff,
29 KEY_BACKSPACE = 0x7f,
30 KEY_UP = 0x0101,
31 KEY_DOWN = 0x0102,
32 KEY_RIGHT = 0x0103,
33 KEY_LEFT = 0x0104,
34 KEY_CSI = 0x011b, // ESC ESC
35 KEY_HOME = 0x0201,
36 KEY_INS = 0x0202,
37 KEY_DEL = 0x0203,
38 KEY_END = 0x0204,
39 KEY_PGUP = 0x0205,
40 KEY_PGDN = 0x0206,
41
42 KEY_F1 = 0x0207,
43 KEY_F2 = 0x0208,
44 KEY_F3 = 0x0209,
45 KEY_F4 = 0x020a,
46 KEY_F5 = 0x020b,
47 KEY_F6 = 0x020c,
48 KEY_F7 = 0x020d,
49 KEY_F8 = 0x020e,
50 KEY_F9 = 0x020f,
51 KEY_F10 = 0x0210,
52 KEY_F11 = 0x0211,
53 KEY_F12 = 0x0212,
54
55 KEY_SHIFT_F1 = 0x0213,
56 KEY_SHIFT_F2 = 0x0214,
57 KEY_SHIFT_F3 = 0x0215,
58 KEY_SHIFT_F4 = 0x0216,
59 KEY_SHIFT_F5 = 0x0217,
60 KEY_SHIFT_F6 = 0x0218,
61 KEY_SHIFT_F7 = 0x0219,
62 KEY_SHIFT_F8 = 0x021a,
63 KEY_SHIFT_F9 = 0x021b,
64 KEY_SHIFT_F10 = 0x021c,
65 KEY_SHIFT_F11 = 0x021d,
66 KEY_SHIFT_F12 = 0x021e,
67
68 KEY_CTRL_F1 = 0x021f,
69 KEY_CTRL_F2 = 0x0220,
70 KEY_CTRL_F3 = 0x0221,
71 KEY_CTRL_F4 = 0x0222,
72 KEY_CTRL_F5 = 0x0223,
73 KEY_CTRL_F6 = 0x0224,
74 KEY_CTRL_F7 = 0x0225,
75 KEY_CTRL_F8 = 0x0226,
76 KEY_CTRL_F9 = 0x0227,
77 KEY_CTRL_F10 = 0x0228,
78 KEY_CTRL_F11 = 0x0229,
79 KEY_CTRL_F12 = 0x022a,
80
81 KEY_CTRL_UP = 0x0230,
82 KEY_CTRL_DOWN = 0x0231,
83 KEY_CTRL_RIGHT = 0x0232,
84 KEY_CTRL_LEFT = 0x0233,
85 KEY_CTRL_HOME = 0x0234,
86 KEY_CTRL_END = 0x0235,
87 };
88
89 #define Ctrl(C) ((C) - 'A' + 1)
90
91 enum io_echo_t
92 {
93 NOECHO = 0,
94 DOECHO = 1,
95 };
96
97 enum io_iconv_t
98 {
99 CHARSET_MAX_LEN = 20,
100 };
101
102 extern const char BBS_default_charset[CHARSET_MAX_LEN + 1];
103 extern char stdio_charset[CHARSET_MAX_LEN + 1];
104
105 extern int io_init(void);
106 extern void io_cleanup(void);
107
108 extern int prints(const char *format, ...);
109 extern int outc(char c);
110 extern int iflush(void);
111
112 extern int igetch(int timeout);
113 extern int igetch_t(int sec);
114 extern void igetch_reset(void);
115
116 extern int io_buf_conv(iconv_t cd, char *p_buf, int *p_buf_len, int *p_buf_offset, char *p_conv, size_t conv_size, int *p_conv_len);
117 extern int io_conv_init(const char *charset);
118 extern int io_conv_cleanup(void);
119
120 #endif //_IO_H_

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1