Fill in the lost unref call. Thanks Sadrul.
[screen-lua.git] / src / term.c
blob8cf27294a2577bd1743c5a0febeea830e5bc7381
1 /* Copyright (c) 2008, 2009
2 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
3 * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
4 * Micah Cowan (micah@cowan.name)
5 * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
6 * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
7 * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
8 * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
9 * Copyright (c) 1987 Oliver Laumann
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 3, or (at your option)
14 * any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program (see the file COPYING); if not, see
23 * http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26 ****************************************************************
29 #include "term.h"
31 #define KMAPDEF(s)
32 #define KMAPADEF(s)
33 #define KMAPMDEF(s)
35 struct term term[T_N] =
37 /* display size */
38 { "li", T_NUM },
39 { "co", T_NUM },
41 /* terminal types*/
42 { "hc", T_FLG },
43 { "os", T_FLG },
44 { "ns", T_FLG },
45 /* cursor movement */
46 { "cm", T_STR },
47 { "ho", T_STR },
48 { "cr", T_STR },
49 { "up", T_STR },
50 { "UP", T_STR },
51 { "do", T_STR },
52 { "DO", T_STR },
53 { "bs", T_FLG },
54 { "bc", T_STR },
55 { "le", T_STR },
56 { "LE", T_STR },
57 { "nd", T_STR },
58 { "RI", T_STR },
60 /* scroll */
61 { "cs", T_STR },
62 { "nl", T_STR },
63 { "sf", T_STR },
64 { "sr", T_STR },
65 { "al", T_STR },
66 { "AL", T_STR },
67 { "dl", T_STR },
68 { "DL", T_STR },
70 /* insert/delete */
71 { "in", T_FLG },
72 { "im", T_STR },
73 { "ei", T_STR },
74 { "ic", T_STR },
75 { "IC", T_STR },
76 { "dc", T_STR },
77 { "DC", T_STR },
79 /* erase */
80 { "ut", T_FLG },
81 { "cl", T_STR },
82 { "cd", T_STR },
83 { "CD", T_STR },
84 { "ce", T_STR },
85 { "cb", T_STR },
87 /* initialise */
88 { "is", T_STR },
89 { "ti", T_STR },
90 { "te", T_STR },
92 /* bell */
93 { "bl", T_STR },
94 { "vb", T_STR },
96 /* resizing */
97 { "WS", T_STR },
98 { "Z0", T_STR },
99 { "Z1", T_STR },
101 /* attributes */
102 /* define T_ATTR */
103 { "mh", T_STR },
104 { "us", T_STR },
105 { "md", T_STR },
106 { "mr", T_STR },
107 { "so", T_STR },
108 { "mb", T_STR },
109 { "ue", T_STR },
110 { "se", T_STR },
111 { "me", T_STR },
112 { "ms", T_FLG },
113 { "sg", T_NUM },
114 { "ug", T_NUM },
115 { "sa", T_STR },
117 /* color */
118 { "AF", T_STR },
119 { "AB", T_STR },
120 { "Sf", T_STR },
121 { "Sb", T_STR },
122 { "op", T_STR },
123 { "Co", T_NUM },
124 { "be", T_FLG },
125 { "AX", T_FLG },
126 { "C8", T_FLG },
128 /* keypad/cursorkeys */
129 { "ks", T_STR },
130 { "ke", T_STR },
131 { "CS", T_STR },
132 { "CE", T_STR },
134 /* printer */
135 { "po", T_STR },
136 { "pf", T_STR },
138 /* status line */
139 { "hs", T_FLG },
140 { "ws", T_NUM },
141 { "ts", T_STR },
142 { "fs", T_STR },
143 { "ds", T_STR },
145 /* cursor visibility */
146 { "vi", T_STR },
147 { "vs", T_STR },
148 { "ve", T_STR },
150 /* margin handling */
151 { "am", T_FLG },
152 { "xv", T_FLG },
153 { "xn", T_FLG },
154 { "OP", T_FLG },
155 { "LP", T_FLG },
157 /* special settings */
158 { "NF", T_FLG },
159 { "nx", T_FLG },
160 { "AN", T_FLG },
161 { "OL", T_NUM },
162 { "KJ", T_STR },
163 { "VR", T_STR },
164 { "VN", T_STR },
165 { "TF", T_FLG },
166 { "XT", T_FLG },
168 /* d_font setting */
169 { "G0", T_FLG },
170 { "S0", T_STR },
171 { "E0", T_STR },
172 { "C0", T_STR },
173 { "as", T_STR },
174 { "ae", T_STR },
175 { "ac", T_STR },
176 { "eA", T_STR },
177 { "XC", T_STR },
179 /* keycaps */
180 /* define T_CAPS */
181 /* nolist */
182 { "k0", T_STR }, KMAPDEF("\033[10~")
183 { "k1", T_STR }, KMAPDEF("\033OP")
184 { "k2", T_STR }, KMAPDEF("\033OQ")
185 { "k3", T_STR }, KMAPDEF("\033OR")
186 { "k4", T_STR }, KMAPDEF("\033OS")
187 { "k5", T_STR }, KMAPDEF("\033[15~")
188 { "k6", T_STR }, KMAPDEF("\033[17~")
189 { "k7", T_STR }, KMAPDEF("\033[18~")
190 { "k8", T_STR }, KMAPDEF("\033[19~")
191 { "k9", T_STR }, KMAPDEF("\033[20~")
192 { "k;", T_STR }, KMAPDEF("\033[21~")
193 { "F1", T_STR }, KMAPDEF("\033[23~")
194 { "F2", T_STR }, KMAPDEF("\033[24~")
195 /* extra keys for vt220 (David.Leonard@it.uq.edu.au) */
196 { "F3", T_STR },
197 { "F4", T_STR },
198 { "F5", T_STR },
199 { "F6", T_STR },
200 { "F7", T_STR },
201 { "F8", T_STR },
202 { "F9", T_STR },
203 { "FA", T_STR },
205 { "kb", T_STR },
206 { "K1", T_STR },
207 { "K2", T_STR },
208 { "K3", T_STR },
209 { "K4", T_STR },
210 { "K5", T_STR },
211 /* more keys for Andrew A. Chernov (ache@astral.msk.su) */
212 { "kA", T_STR },
213 { "ka", T_STR },
214 /* define T_BACKTAB */
215 { "kB", T_STR },
216 { "kC", T_STR },
217 { "kE", T_STR },
218 { "kF", T_STR }, KMAPMDEF("\004")
219 { "kL", T_STR },
220 { "kM", T_STR },
221 { "kR", T_STR }, KMAPMDEF("\025")
222 { "kS", T_STR },
223 { "kT", T_STR },
224 { "kt", T_STR },
225 { "*4", T_STR }, /* kDC */
226 { "*7", T_STR }, /* kEND */
227 { "#2", T_STR }, /* kHOM */
228 { "#3", T_STR }, /* kIC */
229 { "#4", T_STR }, /* kLFT */
230 { "%c", T_STR }, /* kNXT */
231 { "%e", T_STR }, /* kPRV */
232 { "%i", T_STR }, /* kRIT */
234 /* keys above the cursor */
235 /* define T_NAVIGATE */
236 { "kh", T_STR }, KMAPDEF("\033[1~") KMAPMDEF("\201")
237 { "@1", T_STR },
238 { "kH", T_STR }, KMAPDEF("\033[4~") KMAPMDEF("\205")
239 { "@7", T_STR },
240 { "kN", T_STR }, KMAPDEF("\033[6~") KMAPMDEF("\006")
241 { "kP", T_STR }, KMAPDEF("\033[5~") KMAPMDEF("\002")
242 { "kI", T_STR }, KMAPDEF("\033[2~")
243 /* define T_NAVIGATE_DELETE */
244 { "kD", T_STR }, KMAPDEF("\033[3~")
246 /* keys that can have two bindings */
247 /* define T_CURSOR */
248 { "ku", T_STR }, KMAPDEF("\033[A") KMAPADEF("\033OA") KMAPMDEF("\220")
249 { "kd", T_STR }, KMAPDEF("\033[B") KMAPADEF("\033OB") KMAPMDEF("\216")
250 { "kr", T_STR }, KMAPDEF("\033[C") KMAPADEF("\033OC") KMAPMDEF("\206")
251 { "kl", T_STR }, KMAPDEF("\033[D") KMAPADEF("\033OD") KMAPMDEF("\202")
252 /* define T_KEYPAD */
253 { "f0", T_STR }, KMAPDEF("0") KMAPADEF("\033Op")
254 { "f1", T_STR }, KMAPDEF("1") KMAPADEF("\033Oq")
255 { "f2", T_STR }, KMAPDEF("2") KMAPADEF("\033Or")
256 { "f3", T_STR }, KMAPDEF("3") KMAPADEF("\033Os")
257 { "f4", T_STR }, KMAPDEF("4") KMAPADEF("\033Ot")
258 { "f5", T_STR }, KMAPDEF("5") KMAPADEF("\033Ou")
259 { "f6", T_STR }, KMAPDEF("6") KMAPADEF("\033Ov")
260 { "f7", T_STR }, KMAPDEF("7") KMAPADEF("\033Ow")
261 { "f8", T_STR }, KMAPDEF("8") KMAPADEF("\033Ox")
262 { "f9", T_STR }, KMAPDEF("9") KMAPADEF("\033Oy")
263 { "f+", T_STR }, KMAPDEF("+") KMAPADEF("\033Ok")
264 { "f-", T_STR }, KMAPDEF("-") KMAPADEF("\033Om")
265 { "f*", T_STR }, KMAPDEF("*") KMAPADEF("\033Oj")
266 { "f/", T_STR }, KMAPDEF("/") KMAPADEF("\033Oo")
267 { "fq", T_STR }, KMAPDEF("=") KMAPADEF("\033OX")
268 { "f.", T_STR }, KMAPDEF(".") KMAPADEF("\033On")
269 { "f,", T_STR }, KMAPDEF(",") KMAPADEF("\033Ol")
270 { "fe", T_STR }, KMAPDEF("\015") KMAPADEF("\033OM")
271 /* other things related to keycaps */
272 /* define T_OCAPS */
273 { "km", T_FLG },
274 { "ko", T_STR },
275 { "l0", T_STR },
276 { "l1", T_STR },
277 { "l2", T_STR },
278 { "l3", T_STR },
279 { "l4", T_STR },
280 { "l5", T_STR },
281 { "l6", T_STR },
282 { "l7", T_STR },
283 { "l8", T_STR },
284 { "l9", T_STR },
285 { "la", T_STR },
286 /* list */
287 /* define T_ECAPS */
288 /* define T_N */