NetBSD/lib/libterminfo/termcap_map.c
2010-09-22 06:10:51 +00:00

512 lines
13 KiB
C

/* $NetBSD: termcap_map.c,v 1.3 2010/09/22 06:10:51 roy Exp $ */
/*
* Copyright (c) 2009 The NetBSD Foundation, Inc.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Roy Marples.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__RCSID("$NetBSD: termcap_map.c,v 1.3 2010/09/22 06:10:51 roy Exp $");
typedef struct {
const char id[3];
int ti;
} TENTRY;
static const TENTRY _ti_cap_flagids[] = {
{ "bw", TICODE_bw },
{ "am", TICODE_am },
{ "ut", TICODE_bce },
{ "cc", TICODE_ccc },
{ "xs", TICODE_xhp },
{ "YA", TICODE_xhpa },
{ "YF", TICODE_cpix },
{ "YB", TICODE_crxm },
{ "xt", TICODE_xt },
{ "xn", TICODE_xenl },
{ "eo", TICODE_eo },
{ "gn", TICODE_gn },
{ "hc", TICODE_hc },
{ "HC", TICODE_chts },
{ "km", TICODE_km },
{ "YC", TICODE_daisy },
{ "hs", TICODE_hs },
{ "hl", TICODE_hls },
{ "in", TICODE_in },
{ "YG", TICODE_lpix },
{ "da", TICODE_da },
{ "db", TICODE_db },
{ "mi", TICODE_mir },
{ "ms", TICODE_msgr },
{ "nx", TICODE_nxon },
{ "xb", TICODE_xsb },
{ "NP", TICODE_npc },
{ "ND", TICODE_ndscr },
{ "NR", TICODE_nrrmc },
{ "os", TICODE_os } ,
{ "5i", TICODE_mc5i },
{ "YD", TICODE_xvpa },
{ "YE", TICODE_sam },
{ "es", TICODE_eslok },
{ "hz", TICODE_hz },
{ "ul", TICODE_ul },
{ "xo", TICODE_xon }
};
static const TENTRY _ti_cap_numids[] = {
{ "Yo", TICODE_bitwin },
{ "Yp", TICODE_bitype },
{ "Ya", TICODE_bufsz },
{ "BT", TICODE_btns },
{ "co", TICODE_cols },
{ "Yc", TICODE_spinh },
{ "Yb", TICODE_spinv },
{ "it", TICODE_it },
{ "lh", TICODE_lh },
{ "lw", TICODE_lw },
{ "li", TICODE_lines },
{ "lm", TICODE_lm },
{ "ma", TICODE_ma },
{ "sg", TICODE_xmc },
{ "Co", TICODE_colors },
{ "Yd", TICODE_maddr },
{ "Ye", TICODE_mjump },
{ "pa", TICODE_pairs },
{ "MW", TICODE_wnum },
{ "Yf", TICODE_mcs },
{ "Yg", TICODE_mls },
{ "NC", TICODE_ncv },
{ "Nl", TICODE_nlab },
{ "Yh", TICODE_npins },
{ "Yi", TICODE_orc },
{ "Yj", TICODE_orl },
{ "Yk", TICODE_orhi },
{ "Yl", TICODE_orvi },
{ "pb", TICODE_pb },
{ "Ym", TICODE_cps },
{ "vt", TICODE_vt },
{ "Yn", TICODE_widcs },
{ "ws", TICODE_wsl }
};
static const TENTRY _ti_cap_strids[] = {
{ "ac", TICODE_acsc },
{ "S8", TICODE_scesa },
{ "bt", TICODE_cbt },
{ "bl", TICODE_bel },
{ "Yv", TICODE_bicr },
{ "Zz", TICODE_binel },
{ "Xy", TICODE_birep },
{ "cr", TICODE_cr },
{ "ZA", TICODE_cpi },
{ "ZB", TICODE_lpi },
{ "ZC", TICODE_chr },
{ "ZD", TICODE_cvr },
{ "cs", TICODE_csr },
{ "rP", TICODE_rmp },
{ "Zy", TICODE_csnm },
{ "ct", TICODE_tbc },
{ "MC", TICODE_mgc },
{ "cl", TICODE_clear },
{ "cb", TICODE_el1 },
{ "ce", TICODE_el },
{ "cd", TICODE_ed },
{ "ci", TICODE_csin },
{ "Yw", TICODE_colornm },
{ "ch", TICODE_hpa },
{ "CC", TICODE_cmdch },
{ "cm", TICODE_cup },
{ "do", TICODE_cud1 },
{ "ho", TICODE_home },
{ "vi", TICODE_civis },
{ "le", TICODE_cub1 },
{ "CM", TICODE_mrcup },
{ "ve", TICODE_cnorm },
{ "nd", TICODE_cuf1 },
{ "ll", TICODE_ll },
{ "up", TICODE_cuu1 },
{ "vs", TICODE_cvvis },
{ "Yx", TICODE_defbi },
{ "ZE", TICODE_defc },
{ "dc", TICODE_dch1 },
{ "dl", TICODE_dl1 },
{ "dv", TICODE_devt },
{ "DI", TICODE_dial },
{ "ds", TICODE_dsl },
{ "DK", TICODE_dclk },
{ "S1", TICODE_dispc },
{ "hd", TICODE_hd },
{ "eA", TICODE_enacs },
{ "Yy", TICODE_endbi },
{ "as", TICODE_smacs },
{ "SA", TICODE_smam },
{ "mb", TICODE_blink },
{ "md", TICODE_bold },
{ "ti", TICODE_smcup },
{ "dm", TICODE_smdc },
{ "mh", TICODE_dim },
{ "ZF", TICODE_swidm },
{ "ZG", TICODE_sdrfq },
{ "Xh", TICODE_ehhlm },
{ "im", TICODE_smir },
{ "ZH", TICODE_sitm },
{ "Xl", TICODE_elhlm },
{ "ZI", TICODE_slm },
{ "Xo", TICODE_elohlm },
{ "ZJ", TICODE_smicm },
{ "ZK", TICODE_snlq },
{ "ZL", TICODE_snrmq },
{ "S2", TICODE_smpch },
{ "mp", TICODE_prot },
{ "mr", TICODE_rev },
{ "Xr", TICODE_erhlm },
{ "S4", TICODE_smsc },
{ "mk", TICODE_invis },
{ "ZM", TICODE_sshm },
{ "so", TICODE_smso },
{ "ZN", TICODE_ssubm },
{ "ZO", TICODE_ssupm },
{ "Xt", TICODE_ethlm },
{ "us", TICODE_smul },
{ "ZP", TICODE_sum },
{ "Xv", TICODE_evhlm },
{ "SX", TICODE_smxon },
{ "ec", TICODE_ech },
{ "ae", TICODE_rmacs },
{ "RA", TICODE_rmam },
{ "me", TICODE_sgr0 },
{ "te", TICODE_rmcup },
{ "ed", TICODE_rmdc },
{ "ZQ", TICODE_rwidm },
{ "ei", TICODE_rmir },
{ "ZR", TICODE_ritm },
{ "ZS", TICODE_rlm },
{ "ZT", TICODE_rmicm },
{ "S3", TICODE_rmpch },
{ "S5", TICODE_rmsc },
{ "ZU", TICODE_rshm },
{ "se", TICODE_rmso },
{ "ZV", TICODE_rsubm },
{ "ZW", TICODE_rsupm },
{ "ue", TICODE_rmul },
{ "ZX", TICODE_rum },
{ "RX", TICODE_rmxon },
{ "PA", TICODE_pause },
{ "fh", TICODE_hook },
{ "vb", TICODE_flash },
{ "ff", TICODE_ff },
{ "fs", TICODE_fsl },
{ "Gm", TICODE_getm },
{ "WG", TICODE_wingo },
{ "HU", TICODE_hup },
{ "i1", TICODE_is1 },
{ "i2", TICODE_is2 },
{ "i3", TICODE_is3 },
{ "is", TICODE_is2 },
{ "if", TICODE_if },
{ "iP", TICODE_iprog },
{ "Ic", TICODE_initc },
{ "Ip", TICODE_initp },
{ "ic", TICODE_ich1 },
{ "al", TICODE_il1 },
{ "ip", TICODE_ip },
{ "K1", TICODE_ka1 },
{ "K3", TICODE_ka3 },
{ "K2", TICODE_kb2 },
{ "kb", TICODE_kbs },
{ "kB", TICODE_kcbt },
{ "K4", TICODE_kc1 },
{ "K5", TICODE_kc3 },
{ "ka", TICODE_ktbc },
{ "kC", TICODE_kclr },
{ "kt", TICODE_kctab },
{ "kD", TICODE_kdch1 },
{ "kL", TICODE_kdl1 },
{ "kd", TICODE_kcud1 },
{ "kM", TICODE_krmir },
{ "kE", TICODE_kel },
{ "kS", TICODE_ked },
{ "k0", TICODE_kf0 },
{ "k1", TICODE_kf1 },
{ "k2", TICODE_kf2 },
{ "k3", TICODE_kf3 },
{ "k4", TICODE_kf4 },
{ "k5", TICODE_kf5 },
{ "k6", TICODE_kf6 },
{ "k7", TICODE_kf7 },
{ "k8", TICODE_kf8 },
{ "k9", TICODE_kf9 },
{ "k;", TICODE_kf10 },
{ "F1", TICODE_kf11 },
{ "F2", TICODE_kf12 },
{ "F3", TICODE_kf13 },
{ "F4", TICODE_kf14 },
{ "F5", TICODE_kf15 },
{ "F6", TICODE_kf16 },
{ "F7", TICODE_kf17 },
{ "F8", TICODE_kf18 },
{ "F9", TICODE_kf19 },
{ "FA", TICODE_kf20 },
{ "FB", TICODE_kf21 },
{ "FC", TICODE_kf22 },
{ "FD", TICODE_kf23 },
{ "FE", TICODE_kf24 },
{ "FF", TICODE_kf25 },
{ "FG", TICODE_kf26 },
{ "FH", TICODE_kf27 },
{ "FI", TICODE_kf28 },
{ "FJ", TICODE_kf29 },
{ "FK", TICODE_kf30 },
{ "FL", TICODE_kf31 },
{ "FM", TICODE_kf32 },
{ "FN", TICODE_kf33 },
{ "FO", TICODE_kf34 },
{ "FP", TICODE_kf35 },
{ "FQ", TICODE_kf36 },
{ "FR", TICODE_kf37 },
{ "FS", TICODE_kf38 },
{ "FT", TICODE_kf39 },
{ "FU", TICODE_kf40 },
{ "FV", TICODE_kf41 },
{ "FW", TICODE_kf42 },
{ "FX", TICODE_kf43 },
{ "FY", TICODE_kf44 },
{ "FZ", TICODE_kf45 },
{ "Fa", TICODE_kf46 },
{ "Fb", TICODE_kf47 },
{ "Fc", TICODE_kf48 },
{ "Fd", TICODE_kf49 },
{ "Fe", TICODE_kf50 },
{ "Ff", TICODE_kf51 },
{ "Fg", TICODE_kf52 },
{ "Fh", TICODE_kf53 },
{ "Fi", TICODE_kf54 },
{ "Fj", TICODE_kf55 },
{ "Fk", TICODE_kf56 },
{ "Fl", TICODE_kf57 },
{ "Fm", TICODE_kf58 },
{ "Fn", TICODE_kf59 },
{ "Fo", TICODE_kf60 },
{ "Fp", TICODE_kf61 },
{ "Fq", TICODE_kf62 },
{ "Fr", TICODE_kf63 },
{ "%1", TICODE_khlp },
{ "kh", TICODE_khome },
{ "kI", TICODE_kich1 },
{ "kA", TICODE_kil1 },
{ "kl", TICODE_kcub1 },
{ "kH", TICODE_kll },
{ "%2", TICODE_kmrk },
{ "%3", TICODE_kmsg },
{ "Km", TICODE_kmous },
{ "%4", TICODE_kmov },
{ "%5", TICODE_knxt },
{ "kN", TICODE_knp },
{ "%6", TICODE_kopn },
{ "%7", TICODE_kopt },
{ "kP", TICODE_kpp },
{ "%8", TICODE_kprv },
{ "%9", TICODE_kprt },
{ "%0", TICODE_krdo },
{ "&1", TICODE_kref },
{ "&2", TICODE_krfr },
{ "&3", TICODE_krpl },
{ "&4", TICODE_krst },
{ "&5", TICODE_kres },
{ "kr", TICODE_kcuf1 },
{ "&6", TICODE_ksav },
{ "&9", TICODE_kBEG },
{ "&0", TICODE_kCAN },
{ "*1", TICODE_kCMD },
{ "*2", TICODE_kCPY },
{ "*3", TICODE_kCRT },
{ "*4", TICODE_kDC },
{ "*5", TICODE_kDL },
{ "*6", TICODE_kslt },
{ "*7", TICODE_kEND },
{ "*8", TICODE_kEOL },
{ "*9", TICODE_kEXT },
{ "kF", TICODE_kind },
{ "*0", TICODE_kFND },
{ "#1", TICODE_kHLP },
{ "#2", TICODE_kHOM },
{ "#3", TICODE_kIC },
{ "#4", TICODE_kLFT },
{ "%a", TICODE_kMSG },
{ "%b", TICODE_kMOV },
{ "%c", TICODE_kNXT },
{ "%d", TICODE_kOPT },
{ "%e", TICODE_kPRV },
{ "%f", TICODE_kPRT },
{ "kR", TICODE_kri },
{ "%g", TICODE_kRDO },
{ "%h", TICODE_kRPL },
{ "%i", TICODE_kRIT },
{ "%j", TICODE_kRES },
{ "!1", TICODE_kSAV },
{ "!2", TICODE_kSPD },
{ "kT", TICODE_khts },
{ "!3", TICODE_kUND },
{ "&7", TICODE_kspd },
{ "&8", TICODE_kund },
{ "ku", TICODE_kcuu1 },
{ "ke", TICODE_rmkx },
{ "ks", TICODE_smkx },
{ "l0", TICODE_lf0 },
{ "l1", TICODE_lf1 },
{ "l2", TICODE_lf2 },
{ "l3", TICODE_lf3 },
{ "l4", TICODE_lf4 },
{ "l5", TICODE_lf5 },
{ "l6", TICODE_lf6 },
{ "l7", TICODE_lf7 },
{ "l8", TICODE_lf8 },
{ "l9", TICODE_lf9 },
{ "la", TICODE_lf10 },
{ "Lf", TICODE_fln },
{ "LF", TICODE_rmln },
{ "LO", TICODE_smln },
{ "mo", TICODE_rmm },
{ "mm", TICODE_smm },
{ "ZY", TICODE_mhpa },
{ "ZZ", TICODE_mcud1 },
{ "Za", TICODE_mcub1 },
{ "Zb", TICODE_mcuf1 },
{ "Zc", TICODE_mvpa },
{ "Zd", TICODE_mcuu1 },
{ "Mi", TICODE_minfo },
{ "nw", TICODE_nel },
{ "Ze", TICODE_porder },
{ "oc", TICODE_oc },
{ "op", TICODE_op },
{ "pc", TICODE_pad },
{ "DC", TICODE_dch },
{ "DL", TICODE_dl },
{ "DO", TICODE_cud },
{ "Zf", TICODE_mcud },
{ "IC", TICODE_ich },
{ "SF", TICODE_indn },
{ "AL", TICODE_il },
{ "LE", TICODE_cub },
{ "Zg", TICODE_mcub },
{ "RI", TICODE_cuf },
{ "Zh", TICODE_mcuf },
{ "SR", TICODE_rin },
{ "UP", TICODE_cuu },
{ "Zi", TICODE_mcuu },
{ "S6", TICODE_pctrm },
{ "pk", TICODE_pfkey },
{ "pl", TICODE_pfloc },
{ "xl", TICODE_pfxl },
{ "px", TICODE_pfx },
{ "pn", TICODE_pln },
{ "ps", TICODE_mc0 },
{ "pO", TICODE_mc5p },
{ "pf", TICODE_mc4 },
{ "po", TICODE_mc5 },
{ "PU", TICODE_pulse },
{ "QD", TICODE_qdial },
{ "RC", TICODE_rmclk },
{ "rp", TICODE_rep },
{ "RF", TICODE_rfi },
{ "RQ", TICODE_reqmp },
{ "r1", TICODE_rs1 },
{ "r2", TICODE_rs2 },
{ "r3", TICODE_rs3 },
{ "rf", TICODE_rf },
{ "rc", TICODE_rc },
{ "cv", TICODE_vpa },
{ "sc", TICODE_sc },
{ "S7", TICODE_scesc },
{ "sf", TICODE_ind },
{ "sr", TICODE_ri },
{ "Zj", TICODE_scs },
{ "s0", TICODE_s0ds },
{ "s1", TICODE_s1ds },
{ "s2", TICODE_s2ds },
{ "s3", TICODE_s3ds },
{ "sA", TICODE_sgr1 },
{ "AB", TICODE_setab },
{ "AF", TICODE_setaf },
{ "sa", TICODE_sgr },
{ "Sb", TICODE_setb },
{ "Zk", TICODE_smgb },
{ "Zl", TICODE_smgbp },
{ "SC", TICODE_sclk },
{ "Yz", TICODE_slines },
{ "sL", TICODE_slength },
{ "sp", TICODE_scp },
{ "Sf", TICODE_setf },
{ "ML", TICODE_smgl }, /* We should fallback to TICODE_smglr */
{ "Zm", TICODE_smglp },
{ "YZ", TICODE_slines },
{ "YI", TICODE_slength },
{ "MR", TICODE_smgr },
{ "Zn", TICODE_smgrp },
{ "st", TICODE_hts },
{ "MT", TICODE_smgtb },
{ "Zo", TICODE_smgt },
{ "Zp", TICODE_smgtp },
{ "wi", TICODE_wind },
{ "Zq", TICODE_sbim },
{ "Zr", TICODE_scsd },
{ "Zs", TICODE_rbim },
{ "Zt", TICODE_rcsd },
{ "Zu", TICODE_subcs },
{ "Zv", TICODE_supcs },
{ "ta", TICODE_ht },
{ "Zw", TICODE_docr },
{ "ts", TICODE_tsl },
{ "TO", TICODE_tone },
{ "u0", TICODE_u0 },
{ "u1", TICODE_u1 },
{ "u2", TICODE_u2 },
{ "u3", TICODE_u3 },
{ "u4", TICODE_u4 },
{ "u5", TICODE_u5 },
{ "u6", TICODE_u6 },
{ "u7", TICODE_u7 },
{ "u8", TICODE_u8 },
{ "u9", TICODE_u9 },
{ "uc", TICODE_uc },
{ "hu", TICODE_hu },
{ "WA", TICODE_wait },
{ "XF", TICODE_xoffc },
{ "XN", TICODE_xonc },
{ "Zx", TICODE_zerom },
/* NetBSD extensions */
{ "@0", TICODE_kfnd },
{ "@1", TICODE_kbeg },
{ "@2", TICODE_kcan },
{ "@3", TICODE_kclo },
{ "@4", TICODE_kcmd },
{ "@5", TICODE_kcpy },
{ "@6", TICODE_kcrt },
{ "@7", TICODE_kend },
{ "@8", TICODE_kent },
{ "@9", TICODE_kext },
};