xref: /minix/lib/libterminfo/termcap_map.c (revision 58a2b000)
1 /* $NetBSD: termcap_map.c,v 1.3 2010/09/22 06:10:51 roy Exp $ */
2 
3 /*
4  * Copyright (c) 2009 The NetBSD Foundation, Inc.
5  *
6  * This code is derived from software contributed to The NetBSD Foundation
7  * by Roy Marples.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #include <sys/cdefs.h>
31 __RCSID("$NetBSD: termcap_map.c,v 1.3 2010/09/22 06:10:51 roy Exp $");
32 
33 typedef struct {
34 	const char id[3];
35 	int ti;
36 } TENTRY;
37 
38 static const TENTRY _ti_cap_flagids[] = {
39 	{ "bw", TICODE_bw },
40 	{ "am", TICODE_am },
41 	{ "ut", TICODE_bce },
42 	{ "cc", TICODE_ccc },
43 	{ "xs", TICODE_xhp },
44 	{ "YA", TICODE_xhpa },
45 	{ "YF", TICODE_cpix },
46 	{ "YB", TICODE_crxm },
47 	{ "xt", TICODE_xt },
48 	{ "xn", TICODE_xenl },
49 	{ "eo", TICODE_eo },
50 	{ "gn", TICODE_gn },
51 	{ "hc", TICODE_hc },
52 	{ "HC", TICODE_chts },
53 	{ "km", TICODE_km },
54 	{ "YC", TICODE_daisy },
55 	{ "hs", TICODE_hs },
56 	{ "hl", TICODE_hls },
57 	{ "in", TICODE_in },
58 	{ "YG", TICODE_lpix },
59 	{ "da", TICODE_da },
60 	{ "db", TICODE_db },
61 	{ "mi", TICODE_mir },
62 	{ "ms", TICODE_msgr },
63 	{ "nx", TICODE_nxon },
64 	{ "xb", TICODE_xsb },
65 	{ "NP", TICODE_npc },
66 	{ "ND", TICODE_ndscr },
67 	{ "NR", TICODE_nrrmc },
68 	{ "os", TICODE_os } ,
69 	{ "5i", TICODE_mc5i },
70 	{ "YD", TICODE_xvpa },
71 	{ "YE", TICODE_sam },
72 	{ "es", TICODE_eslok },
73 	{ "hz", TICODE_hz },
74 	{ "ul", TICODE_ul },
75 	{ "xo", TICODE_xon }
76 };
77 
78 static const TENTRY _ti_cap_numids[] = {
79 	{ "Yo", TICODE_bitwin },
80 	{ "Yp", TICODE_bitype },
81 	{ "Ya", TICODE_bufsz },
82 	{ "BT", TICODE_btns },
83 	{ "co", TICODE_cols },
84 	{ "Yc", TICODE_spinh },
85 	{ "Yb", TICODE_spinv },
86 	{ "it", TICODE_it },
87 	{ "lh", TICODE_lh },
88 	{ "lw", TICODE_lw },
89 	{ "li", TICODE_lines },
90 	{ "lm", TICODE_lm },
91 	{ "ma", TICODE_ma },
92 	{ "sg", TICODE_xmc },
93 	{ "Co", TICODE_colors },
94 	{ "Yd", TICODE_maddr },
95 	{ "Ye", TICODE_mjump },
96 	{ "pa", TICODE_pairs },
97 	{ "MW", TICODE_wnum },
98 	{ "Yf", TICODE_mcs },
99 	{ "Yg", TICODE_mls },
100 	{ "NC", TICODE_ncv },
101 	{ "Nl", TICODE_nlab },
102 	{ "Yh", TICODE_npins },
103 	{ "Yi", TICODE_orc },
104 	{ "Yj", TICODE_orl },
105 	{ "Yk", TICODE_orhi },
106 	{ "Yl", TICODE_orvi },
107 	{ "pb", TICODE_pb },
108 	{ "Ym", TICODE_cps },
109 	{ "vt", TICODE_vt },
110 	{ "Yn", TICODE_widcs },
111 	{ "ws", TICODE_wsl }
112 };
113 
114 static const TENTRY _ti_cap_strids[] = {
115 	{ "ac", TICODE_acsc },
116 	{ "S8", TICODE_scesa },
117 	{ "bt", TICODE_cbt },
118 	{ "bl", TICODE_bel },
119 	{ "Yv", TICODE_bicr },
120 	{ "Zz", TICODE_binel },
121 	{ "Xy", TICODE_birep },
122 	{ "cr", TICODE_cr },
123 	{ "ZA", TICODE_cpi },
124 	{ "ZB", TICODE_lpi },
125 	{ "ZC", TICODE_chr },
126 	{ "ZD", TICODE_cvr },
127 	{ "cs", TICODE_csr },
128 	{ "rP", TICODE_rmp },
129 	{ "Zy", TICODE_csnm },
130 	{ "ct", TICODE_tbc },
131 	{ "MC", TICODE_mgc },
132 	{ "cl", TICODE_clear },
133 	{ "cb", TICODE_el1 },
134 	{ "ce", TICODE_el },
135 	{ "cd", TICODE_ed },
136 	{ "ci", TICODE_csin },
137 	{ "Yw", TICODE_colornm },
138 	{ "ch", TICODE_hpa },
139 	{ "CC", TICODE_cmdch },
140 	{ "cm", TICODE_cup },
141 	{ "do", TICODE_cud1 },
142 	{ "ho", TICODE_home },
143 	{ "vi", TICODE_civis },
144 	{ "le", TICODE_cub1 },
145 	{ "CM", TICODE_mrcup },
146 	{ "ve", TICODE_cnorm },
147 	{ "nd", TICODE_cuf1 },
148 	{ "ll", TICODE_ll },
149 	{ "up", TICODE_cuu1 },
150 	{ "vs", TICODE_cvvis },
151 	{ "Yx", TICODE_defbi },
152 	{ "ZE", TICODE_defc },
153 	{ "dc", TICODE_dch1 },
154 	{ "dl", TICODE_dl1 },
155 	{ "dv", TICODE_devt },
156 	{ "DI", TICODE_dial },
157 	{ "ds", TICODE_dsl },
158 	{ "DK", TICODE_dclk },
159 	{ "S1", TICODE_dispc },
160 	{ "hd", TICODE_hd },
161 	{ "eA", TICODE_enacs },
162 	{ "Yy", TICODE_endbi },
163 	{ "as", TICODE_smacs },
164 	{ "SA", TICODE_smam },
165 	{ "mb", TICODE_blink },
166 	{ "md", TICODE_bold },
167 	{ "ti", TICODE_smcup },
168 	{ "dm", TICODE_smdc },
169 	{ "mh", TICODE_dim },
170 	{ "ZF", TICODE_swidm },
171 	{ "ZG", TICODE_sdrfq },
172 	{ "Xh", TICODE_ehhlm },
173 	{ "im", TICODE_smir },
174 	{ "ZH", TICODE_sitm },
175 	{ "Xl", TICODE_elhlm },
176 	{ "ZI", TICODE_slm },
177 	{ "Xo", TICODE_elohlm },
178 	{ "ZJ", TICODE_smicm },
179 	{ "ZK", TICODE_snlq },
180 	{ "ZL", TICODE_snrmq },
181 	{ "S2", TICODE_smpch },
182 	{ "mp", TICODE_prot },
183 	{ "mr", TICODE_rev },
184 	{ "Xr", TICODE_erhlm },
185 	{ "S4", TICODE_smsc },
186 	{ "mk", TICODE_invis },
187 	{ "ZM", TICODE_sshm },
188 	{ "so", TICODE_smso },
189 	{ "ZN", TICODE_ssubm },
190 	{ "ZO", TICODE_ssupm },
191 	{ "Xt", TICODE_ethlm },
192 	{ "us", TICODE_smul },
193 	{ "ZP", TICODE_sum },
194 	{ "Xv", TICODE_evhlm },
195 	{ "SX", TICODE_smxon },
196 	{ "ec", TICODE_ech },
197 	{ "ae", TICODE_rmacs },
198 	{ "RA", TICODE_rmam },
199 	{ "me", TICODE_sgr0 },
200 	{ "te", TICODE_rmcup },
201 	{ "ed", TICODE_rmdc },
202 	{ "ZQ", TICODE_rwidm },
203 	{ "ei", TICODE_rmir },
204 	{ "ZR", TICODE_ritm },
205 	{ "ZS", TICODE_rlm },
206 	{ "ZT", TICODE_rmicm },
207 	{ "S3", TICODE_rmpch },
208 	{ "S5", TICODE_rmsc },
209 	{ "ZU", TICODE_rshm },
210 	{ "se", TICODE_rmso },
211 	{ "ZV", TICODE_rsubm },
212 	{ "ZW", TICODE_rsupm },
213 	{ "ue", TICODE_rmul },
214 	{ "ZX", TICODE_rum },
215 	{ "RX", TICODE_rmxon },
216 	{ "PA", TICODE_pause },
217 	{ "fh", TICODE_hook },
218 	{ "vb", TICODE_flash },
219 	{ "ff", TICODE_ff },
220 	{ "fs", TICODE_fsl },
221 	{ "Gm", TICODE_getm },
222 	{ "WG", TICODE_wingo },
223 	{ "HU", TICODE_hup },
224 	{ "i1", TICODE_is1 },
225 	{ "i2", TICODE_is2 },
226 	{ "i3", TICODE_is3 },
227 	{ "is", TICODE_is2 },
228 	{ "if", TICODE_if },
229 	{ "iP", TICODE_iprog },
230 	{ "Ic", TICODE_initc },
231 	{ "Ip", TICODE_initp },
232 	{ "ic", TICODE_ich1 },
233 	{ "al", TICODE_il1 },
234 	{ "ip", TICODE_ip },
235 	{ "K1", TICODE_ka1 },
236 	{ "K3", TICODE_ka3 },
237 	{ "K2", TICODE_kb2 },
238 	{ "kb", TICODE_kbs },
239 	{ "kB", TICODE_kcbt },
240 	{ "K4", TICODE_kc1 },
241 	{ "K5", TICODE_kc3 },
242 	{ "ka", TICODE_ktbc },
243 	{ "kC", TICODE_kclr },
244 	{ "kt", TICODE_kctab },
245 	{ "kD", TICODE_kdch1 },
246 	{ "kL", TICODE_kdl1 },
247 	{ "kd", TICODE_kcud1 },
248 	{ "kM", TICODE_krmir },
249 	{ "kE", TICODE_kel },
250 	{ "kS", TICODE_ked },
251 	{ "k0", TICODE_kf0 },
252 	{ "k1", TICODE_kf1 },
253 	{ "k2", TICODE_kf2 },
254 	{ "k3", TICODE_kf3 },
255 	{ "k4", TICODE_kf4 },
256 	{ "k5", TICODE_kf5 },
257 	{ "k6", TICODE_kf6 },
258 	{ "k7", TICODE_kf7 },
259 	{ "k8", TICODE_kf8 },
260 	{ "k9", TICODE_kf9 },
261 	{ "k;", TICODE_kf10 },
262 	{ "F1", TICODE_kf11 },
263 	{ "F2", TICODE_kf12 },
264 	{ "F3", TICODE_kf13 },
265 	{ "F4", TICODE_kf14 },
266 	{ "F5", TICODE_kf15 },
267 	{ "F6", TICODE_kf16 },
268 	{ "F7", TICODE_kf17 },
269 	{ "F8", TICODE_kf18 },
270 	{ "F9", TICODE_kf19 },
271 	{ "FA", TICODE_kf20 },
272 	{ "FB", TICODE_kf21 },
273 	{ "FC", TICODE_kf22 },
274 	{ "FD", TICODE_kf23 },
275 	{ "FE", TICODE_kf24 },
276 	{ "FF", TICODE_kf25 },
277 	{ "FG", TICODE_kf26 },
278 	{ "FH", TICODE_kf27 },
279 	{ "FI", TICODE_kf28 },
280 	{ "FJ", TICODE_kf29 },
281 	{ "FK", TICODE_kf30 },
282 	{ "FL", TICODE_kf31 },
283 	{ "FM", TICODE_kf32 },
284 	{ "FN", TICODE_kf33 },
285 	{ "FO", TICODE_kf34 },
286 	{ "FP", TICODE_kf35 },
287 	{ "FQ", TICODE_kf36 },
288 	{ "FR", TICODE_kf37 },
289 	{ "FS", TICODE_kf38 },
290 	{ "FT", TICODE_kf39 },
291 	{ "FU", TICODE_kf40 },
292 	{ "FV", TICODE_kf41 },
293 	{ "FW", TICODE_kf42 },
294 	{ "FX", TICODE_kf43 },
295 	{ "FY", TICODE_kf44 },
296 	{ "FZ", TICODE_kf45 },
297 	{ "Fa", TICODE_kf46 },
298 	{ "Fb", TICODE_kf47 },
299 	{ "Fc", TICODE_kf48 },
300 	{ "Fd", TICODE_kf49 },
301 	{ "Fe", TICODE_kf50 },
302 	{ "Ff", TICODE_kf51 },
303 	{ "Fg", TICODE_kf52 },
304 	{ "Fh", TICODE_kf53 },
305 	{ "Fi", TICODE_kf54 },
306 	{ "Fj", TICODE_kf55 },
307 	{ "Fk", TICODE_kf56 },
308 	{ "Fl", TICODE_kf57 },
309 	{ "Fm", TICODE_kf58 },
310 	{ "Fn", TICODE_kf59 },
311 	{ "Fo", TICODE_kf60 },
312 	{ "Fp", TICODE_kf61 },
313 	{ "Fq", TICODE_kf62 },
314 	{ "Fr", TICODE_kf63 },
315 	{ "%1", TICODE_khlp },
316 	{ "kh", TICODE_khome },
317 	{ "kI", TICODE_kich1 },
318 	{ "kA", TICODE_kil1 },
319 	{ "kl", TICODE_kcub1 },
320 	{ "kH", TICODE_kll },
321 	{ "%2", TICODE_kmrk },
322 	{ "%3", TICODE_kmsg },
323 	{ "Km", TICODE_kmous },
324 	{ "%4", TICODE_kmov },
325 	{ "%5", TICODE_knxt },
326 	{ "kN", TICODE_knp },
327 	{ "%6", TICODE_kopn },
328 	{ "%7", TICODE_kopt },
329 	{ "kP", TICODE_kpp },
330 	{ "%8", TICODE_kprv },
331 	{ "%9", TICODE_kprt },
332 	{ "%0", TICODE_krdo },
333 	{ "&1", TICODE_kref },
334 	{ "&2", TICODE_krfr },
335 	{ "&3", TICODE_krpl },
336 	{ "&4", TICODE_krst },
337 	{ "&5", TICODE_kres },
338 	{ "kr", TICODE_kcuf1 },
339 	{ "&6", TICODE_ksav },
340 	{ "&9", TICODE_kBEG },
341 	{ "&0", TICODE_kCAN },
342 	{ "*1", TICODE_kCMD },
343 	{ "*2", TICODE_kCPY },
344 	{ "*3", TICODE_kCRT },
345 	{ "*4", TICODE_kDC },
346 	{ "*5", TICODE_kDL },
347 	{ "*6", TICODE_kslt },
348 	{ "*7", TICODE_kEND },
349 	{ "*8", TICODE_kEOL },
350 	{ "*9", TICODE_kEXT },
351 	{ "kF", TICODE_kind },
352 	{ "*0", TICODE_kFND },
353 	{ "#1", TICODE_kHLP },
354 	{ "#2", TICODE_kHOM },
355 	{ "#3", TICODE_kIC },
356 	{ "#4", TICODE_kLFT },
357 	{ "%a", TICODE_kMSG },
358 	{ "%b", TICODE_kMOV },
359 	{ "%c", TICODE_kNXT },
360 	{ "%d", TICODE_kOPT },
361 	{ "%e", TICODE_kPRV },
362 	{ "%f", TICODE_kPRT },
363 	{ "kR", TICODE_kri },
364 	{ "%g", TICODE_kRDO },
365 	{ "%h", TICODE_kRPL },
366 	{ "%i", TICODE_kRIT },
367 	{ "%j", TICODE_kRES },
368 	{ "!1", TICODE_kSAV },
369 	{ "!2", TICODE_kSPD },
370 	{ "kT", TICODE_khts },
371 	{ "!3", TICODE_kUND },
372 	{ "&7", TICODE_kspd },
373 	{ "&8", TICODE_kund },
374 	{ "ku", TICODE_kcuu1 },
375 	{ "ke", TICODE_rmkx },
376 	{ "ks", TICODE_smkx },
377 	{ "l0", TICODE_lf0 },
378 	{ "l1", TICODE_lf1 },
379 	{ "l2", TICODE_lf2 },
380 	{ "l3", TICODE_lf3 },
381 	{ "l4", TICODE_lf4 },
382 	{ "l5", TICODE_lf5 },
383 	{ "l6", TICODE_lf6 },
384 	{ "l7", TICODE_lf7 },
385 	{ "l8", TICODE_lf8 },
386 	{ "l9", TICODE_lf9 },
387 	{ "la", TICODE_lf10 },
388 	{ "Lf", TICODE_fln },
389 	{ "LF", TICODE_rmln },
390 	{ "LO", TICODE_smln },
391 	{ "mo", TICODE_rmm },
392 	{ "mm", TICODE_smm },
393 	{ "ZY", TICODE_mhpa },
394 	{ "ZZ", TICODE_mcud1 },
395 	{ "Za", TICODE_mcub1 },
396 	{ "Zb", TICODE_mcuf1 },
397 	{ "Zc", TICODE_mvpa },
398 	{ "Zd", TICODE_mcuu1 },
399 	{ "Mi", TICODE_minfo },
400 	{ "nw", TICODE_nel },
401 	{ "Ze", TICODE_porder },
402 	{ "oc", TICODE_oc },
403 	{ "op", TICODE_op },
404 	{ "pc", TICODE_pad },
405 	{ "DC", TICODE_dch },
406 	{ "DL", TICODE_dl },
407 	{ "DO", TICODE_cud },
408 	{ "Zf", TICODE_mcud },
409 	{ "IC", TICODE_ich },
410 	{ "SF", TICODE_indn },
411 	{ "AL", TICODE_il },
412 	{ "LE", TICODE_cub },
413 	{ "Zg", TICODE_mcub },
414 	{ "RI", TICODE_cuf },
415 	{ "Zh", TICODE_mcuf },
416 	{ "SR", TICODE_rin },
417 	{ "UP", TICODE_cuu },
418 	{ "Zi", TICODE_mcuu },
419 	{ "S6", TICODE_pctrm },
420 	{ "pk", TICODE_pfkey },
421 	{ "pl", TICODE_pfloc },
422 	{ "xl", TICODE_pfxl },
423 	{ "px", TICODE_pfx },
424 	{ "pn", TICODE_pln },
425 	{ "ps", TICODE_mc0 },
426 	{ "pO", TICODE_mc5p },
427 	{ "pf", TICODE_mc4 },
428 	{ "po", TICODE_mc5 },
429 	{ "PU", TICODE_pulse },
430 	{ "QD", TICODE_qdial },
431 	{ "RC", TICODE_rmclk },
432 	{ "rp", TICODE_rep },
433 	{ "RF", TICODE_rfi },
434 	{ "RQ", TICODE_reqmp },
435 	{ "r1", TICODE_rs1 },
436 	{ "r2", TICODE_rs2 },
437 	{ "r3", TICODE_rs3 },
438 	{ "rf", TICODE_rf },
439 	{ "rc", TICODE_rc },
440 	{ "cv", TICODE_vpa },
441 	{ "sc", TICODE_sc },
442 	{ "S7", TICODE_scesc },
443 	{ "sf", TICODE_ind },
444 	{ "sr", TICODE_ri },
445 	{ "Zj", TICODE_scs },
446 	{ "s0", TICODE_s0ds },
447 	{ "s1", TICODE_s1ds },
448 	{ "s2", TICODE_s2ds },
449 	{ "s3", TICODE_s3ds },
450 	{ "sA", TICODE_sgr1 },
451 	{ "AB", TICODE_setab },
452 	{ "AF", TICODE_setaf },
453 	{ "sa", TICODE_sgr },
454 	{ "Sb", TICODE_setb },
455 	{ "Zk", TICODE_smgb },
456 	{ "Zl", TICODE_smgbp },
457 	{ "SC", TICODE_sclk },
458 	{ "Yz", TICODE_slines },
459 	{ "sL", TICODE_slength },
460 	{ "sp", TICODE_scp },
461 	{ "Sf", TICODE_setf },
462 	{ "ML", TICODE_smgl }, /* We should fallback to TICODE_smglr */
463 	{ "Zm", TICODE_smglp },
464 	{ "YZ", TICODE_slines },
465 	{ "YI", TICODE_slength },
466 	{ "MR", TICODE_smgr },
467 	{ "Zn", TICODE_smgrp },
468 	{ "st", TICODE_hts },
469 	{ "MT", TICODE_smgtb },
470 	{ "Zo", TICODE_smgt },
471 	{ "Zp", TICODE_smgtp },
472 	{ "wi", TICODE_wind },
473 	{ "Zq", TICODE_sbim },
474 	{ "Zr", TICODE_scsd },
475 	{ "Zs", TICODE_rbim },
476 	{ "Zt", TICODE_rcsd },
477 	{ "Zu", TICODE_subcs },
478 	{ "Zv", TICODE_supcs },
479 	{ "ta", TICODE_ht },
480 	{ "Zw", TICODE_docr },
481 	{ "ts", TICODE_tsl },
482 	{ "TO", TICODE_tone },
483 	{ "u0", TICODE_u0 },
484 	{ "u1", TICODE_u1 },
485 	{ "u2", TICODE_u2 },
486 	{ "u3", TICODE_u3 },
487 	{ "u4", TICODE_u4 },
488 	{ "u5", TICODE_u5 },
489 	{ "u6", TICODE_u6 },
490 	{ "u7", TICODE_u7 },
491 	{ "u8", TICODE_u8 },
492 	{ "u9", TICODE_u9 },
493 	{ "uc", TICODE_uc },
494 	{ "hu", TICODE_hu },
495 	{ "WA", TICODE_wait },
496 	{ "XF", TICODE_xoffc },
497 	{ "XN", TICODE_xonc },
498 	{ "Zx", TICODE_zerom },
499 
500 	/* NetBSD extensions */
501 	{ "@0", TICODE_kfnd },
502 	{ "@1", TICODE_kbeg },
503 	{ "@2", TICODE_kcan },
504 	{ "@3", TICODE_kclo },
505 	{ "@4", TICODE_kcmd },
506 	{ "@5", TICODE_kcpy },
507 	{ "@6", TICODE_kcrt },
508 	{ "@7", TICODE_kend },
509 	{ "@8", TICODE_kent },
510 	{ "@9", TICODE_kext },
511 };
512