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