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