1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642
|
/*
* term.h: header file for term.c
*
* Copyright 1990 Michael Sandrof
* Copyright 1997 EPIC Software Labs
* Copyright 1998 J. Kean Johnston
* See the COPYRIGHT file, or do a HELP IRCII COPYRIGHT
*/
#ifndef __term_h__
#define __term_h__
/* To get declaration of "output_screen" */
#include "screen.h"
extern volatile sig_atomic_t need_redraw;
extern int meta_mode;
/*
* This puts a character to the current target, whatever it is.
* All output everywhere should go through this.
* This does not mangle its output, so its suitable for outputting
* escape sequences.
*/
#if !defined(WTERM_C) && !defined(WSERV_C)
#define current_ftarget (output_screen >= 0 && get_screen_fpout(output_screen) ? get_screen_fpout(output_screen) : stdout)
# ifdef __need_putchar_x__
__inline__ static int putchar_x (int c) {
return fputc((int) c, current_ftarget );
}
# endif
# ifdef __need_term_flush__
__inline__ static void term_flush (void) {
fflush( current_ftarget );
}
# endif
#endif
#define TERM_SGR_BOLD_ON 1
#define TERM_SGR_BOLD_OFF 2
#define TERM_SGR_BLINK_ON 3
#define TERM_SGR_BLINK_OFF 4
#define TERM_SGR_UNDL_ON 5
#define TERM_SGR_UNDL_OFF 6
#define TERM_SGR_REV_ON 7
#define TERM_SGR_REV_OFF 8
#define TERM_SGR_NORMAL 9
#define TERM_SGR_RESET 10
#define TERM_SGR_FOREGROUND 11
#define TERM_SGR_BACKGROUND 12
#define TERM_SGR_GCHAR 13
#define TERM_SGR_ALTCHAR_ON 14
#define TERM_SGR_ALTCHAR_OFF 15
#define TERM_SGR_ITALIC_ON 16
#define TERM_SGR_ITALIC_OFF 17
#define TERM_SGR_MAXVAL 18
#define TERM_CAN_CUP (1 << 0)
#define TERM_CAN_CLEAR (1 << 1)
#define TERM_CAN_CLREOL (1 << 2)
#define TERM_CAN_RIGHT (1 << 3)
#define TERM_CAN_LEFT (1 << 4)
#define TERM_CAN_SCROLL (1 << 5)
#define TERM_CAN_DELETE (1 << 6)
#define TERM_CAN_INSERT (1 << 7)
#define TERM_CAN_DELLINES (1 << 8)
#define TERM_CAN_INSLINES (1 << 9)
#define TERM_CAN_REPEAT (1 << 10)
#define TERM_CAN_BOLD (1 << 11)
#define TERM_CAN_BLINK (1 << 12)
#define TERM_CAN_UNDL (1 << 13)
#define TERM_CAN_REVERSE (1 << 14)
#define TERM_CAN_COLOR (1 << 15)
#define TERM_CAN_GCHAR (1 << 16)
extern int termfeatures;
extern struct my_term *current_term;
/* Our variable name Cap / Info Description */
struct my_term {
int TI_bw; /* bw / bw cub1 wraps from column 0 to last column */
int TI_am; /* am / am terminal has automatic margins */
int TI_xsb; /* xb / xsb beehive (f1=escape, f2=ctrl C) */
int TI_xhp; /* xs / xhp standout not erased by overwriting (hp) */
int TI_xenl; /* xn / xenl newline ignored after 80 cols (concept) */
int TI_eo; /* eo / eo can erase overstrikes with a blank */
int TI_gn; /* gn / gn generic line type */
int TI_hc; /* hc / hc hardcopy terminal */
int TI_km; /* km / km Has a meta key (shift, sets parity bit) */
int TI_hs; /* hs / hs has extra status line */
int TI_in; /* in / in insert mode distinguishes nulls */
int TI_da; /* da / da display may be retained above the screen */
int TI_db; /* db / db display may be retained below the screen */
int TI_mir; /* mi / mir safe to move while in insert mode */
int TI_msgr; /* ms / msgr safe to move while in standout mode */
int TI_os; /* os / os terminal can overstrike */
int TI_eslok; /* es / eslok escape can be used on the status line */
int TI_xt; /* xt / xt tabs destructive, magic so char (t1061) */
int TI_hz; /* hz / hz can't print ~'s (hazeltine) */
int TI_ul; /* ul / ul underline character overstrikes */
int TI_xon; /* xo / xon terminal uses xon/xoff handshaking */
int TI_nxon; /* nx / nxon padding won't work, xon/xoff required */
int TI_mc5i; /* 5i / mc5i printer won't echo on screen */
int TI_chts; /* HC / chts cursor is hard to see */
int TI_nrrmc; /* NR / nrrmc smcup does not reverse rmcup */
int TI_npc; /* NP / npc pad character does not exist */
int TI_ndscr; /* ND / ndscr scrolling region is non-destructive */
int TI_ccc; /* cc / ccc terminal can re-define existing colors */
int TI_bce; /* ut / bce screen erased with background color */
int TI_hls; /* hl / hls terminal uses only HLS color notation (Tektronix) */
int TI_xhpa; /* YA / xhpa only positive motion for hpa/mhpa caps */
int TI_crxm; /* YB / crxm using cr turns off micro mode */
int TI_daisy; /* YC / daisy printer needs operator to change character set */
int TI_xvpa; /* YD / xvpa only positive motion for vpa/mvpa caps */
int TI_sam; /* YE / sam printing in last column causes cr */
int TI_cpix; /* YF / cpix changing character pitch changes resolution */
int TI_lpix; /* YG / lpix changing line pitch changes resolution */
int TI_cols; /* co / cols number of columns in a line */
int TI_it; /* it / it tabs initially every # spaces */
int TI_lines; /* li / lines number of lines on screen or page */
int TI_lm; /* lm / lm lines of memory if > line. 0 means varies */
int TI_xmc; /* sg / xmc number of blank characters left by smso or rmso */
int TI_pb; /* pb / pb lowest baud rate where padding needed */
int TI_vt; /* vt / vt virtual terminal number (CB/unix) */
int TI_wsl; /* ws / wsl number of columns in status line */
int TI_nlab; /* Nl / nlab number of labels on screen */
int TI_lh; /* lh / lh rows in each label */
int TI_lw; /* lw / lw columns in each label */
int TI_ma; /* ma / ma maximum combined attributes terminal can handle */
int TI_wnum; /* MW / wnum maximum number of defineable windows */
int TI_colors; /* Co / colors maximum number of colors on screen */
int TI_pairs; /* pa / pairs maximum number of color-pairs on the screen */
int TI_ncv; /* NC / ncv video attributes that can't be used with colors */
int TI_bufsz; /* Ya / bufsz numbers of bytes buffered before printing */
int TI_spinv; /* Yb / spinv spacing of pins vertically in pins per inch */
int TI_spinh; /* Yc / spinh spacing of dots horizontally in dots per inch */
int TI_maddr; /* Yd / maddr maximum value in micro_..._address */
int TI_mjump; /* Ye / mjump maximum value in parm_..._micro */
int TI_mcs; /* Yf / mcs character step size when in micro mode */
int TI_mls; /* Yg / mls line step size when in micro mode */
int TI_npins; /* Yh / npins numbers of pins in print-head */
int TI_orc; /* Yi / orc horizontal resolution in units per line */
int TI_orl; /* Yj / orl vertical resolution in units per line */
int TI_orhi; /* Yk / orhi horizontal resolution in units per inch */
int TI_orvi; /* Yl / orvi vertical resolution in units per inch */
int TI_cps; /* Ym / cps print rate in characters per second */
int TI_widcs; /* Yn / widcs character step size when in double wide mode */
int TI_btns; /* BT / btns number of buttons on mouse */
int TI_bitwin; /* Yo / bitwin number of passes for each bit-image row */
int TI_bitype; /* Yp / bitype type of bit-image device */
const char *TI_cbt; /* bt / cbt back tab (P) */
const char *TI_bel; /* bl / bel audible signal (bell) (P) */
const char *TI_cr; /* cr / cr carriage return (P*) (P*) */
const char *TI_csr; /* cs / csr change region to line #1 to line #2 (P) */
const char *TI_tbc; /* ct / tbc clear all tab stops (P) */
const char *TI_clear; /* cl / clear clear screen and home cursor (P*) */
const char *TI_el; /* ce / el clear to end of line (P) */
const char *TI_ed; /* cd / ed clear to end of screen (P*) */
const char *TI_hpa; /* ch / hpa horizontal position #1, absolute (P) */
const char *TI_cmdch; /* CC / cmdch terminal settable cmd character in prototype !? */
const char *TI_cup; /* cm / cup move to row #1 columns #2 */
const char *TI_cud1; /* do / cud1 down one line */
const char *TI_home; /* ho / home home cursor (if no cup) */
const char *TI_civis; /* vi / civis make cursor invisible */
const char *TI_cub1; /* le / cub1 move left one space */
const char *TI_mrcup; /* CM / mrcup memory relative cursor addressing */
const char *TI_cnorm; /* ve / cnorm make cursor appear normal (undo civis/cvvis) */
const char *TI_cuf1; /* nd / cuf1 non-destructive space (move right one space) */
const char *TI_ll; /* ll / ll last line, first column (if no cup) */
const char *TI_cuu1; /* up / cuu1 up one line */
const char *TI_cvvis; /* vs / cvvis make cursor very visible */
const char *TI_dch1; /* dc / dch1 delete character (P*) */
const char *TI_dl1; /* dl / dl1 delete line (P*) */
const char *TI_dsl; /* ds / dsl disable status line */
const char *TI_hd; /* hd / hd half a line down */
const char *TI_smacs; /* as / smacs start alternate character set (P) */
const char *TI_blink; /* mb / blink turn on blinking */
const char *TI_bold; /* md / bold turn on bold (extra bright) mode */
const char *TI_smcup; /* ti / smcup string to start programs using cup */
const char *TI_smdc; /* dm / smdc enter delete mode */
const char *TI_dim; /* mh / dim turn on half-bright mode */
const char *TI_smir; /* im / smir enter insert mode */
const char *TI_invis; /* mk / invis turn on blank mode (characters invisible) */
const char *TI_prot; /* mp / prot turn on protected mode */
const char *TI_rev; /* mr / rev turn on reverse video mode */
const char *TI_smso; /* so / smso begin standout mode */
const char *TI_smul; /* us / smul begin underline mode */
const char *TI_ech; /* ec / ech erase #1 characters (P) */
const char *TI_rmacs; /* ae / rmacs end alternate character set (P) */
const char *TI_sgr0; /* me / sgr0 turn off all attributes */
const char *TI_rmcup; /* te / rmcup strings to end programs using cup */
const char *TI_rmdc; /* ed / rmdc end delete mode */
const char *TI_rmir; /* ei / rmir exit insert mode */
const char *TI_rmso; /* se / rmso exit standout mode */
const char *TI_rmul; /* ue / rmul exit underline mode */
const char *TI_flash; /* vb / flash visible bell (may not move cursor) */
const char *TI_ff; /* ff / ff hardcopy terminal page eject (P*) */
const char *TI_fsl; /* fs / fsl return from status line */
const char *TI_is1; /* i1 / is1 initialization string */
const char *TI_is2; /* is / is2 initialization string */
const char *TI_is3; /* i3 / is3 initialization string */
const char *TI_if; /* if / if name of initialization file */
const char *TI_ich1; /* ic / ich1 insert character (P) */
const char *TI_il1; /* al / il1 insert line (P*) */
const char *TI_ip; /* ip / ip insert padding after inserted character */
const char *TI_kbs; /* kb / kbs backspace key */
const char *TI_ktbc; /* ka / ktbc clear-all-tabs key */
const char *TI_kclr; /* kC / kclr clear-screen or erase key */
const char *TI_kctab; /* kt / kctab clear-tab key */
const char *TI_kdch1; /* kD / kdch1 delete-character key */
const char *TI_kdl1; /* kL / kdl1 delete-line key */
const char *TI_kcud1; /* kd / kcud1 down-arrow key */
const char *TI_krmir; /* kM / krmir sent by rmir or smir in insert mode */
const char *TI_kel; /* kE / kel clear-to-end-of-line key */
const char *TI_ked; /* kS / ked clear-to-end-of-screen key */
const char *TI_kf0; /* k0 / kf0 F0 function key */
const char *TI_kf1; /* k1 / kf1 F1 function key */
const char *TI_kf10; /* k; / kf10 F10 function key */
const char *TI_kf2; /* k2 / kf2 F2 function key */
const char *TI_kf3; /* k3 / kf3 F3 function key */
const char *TI_kf4; /* k4 / kf4 F4 function key */
const char *TI_kf5; /* k5 / kf5 F5 function key */
const char *TI_kf6; /* k6 / kf6 F6 function key */
const char *TI_kf7; /* k7 / kf7 F7 function key */
const char *TI_kf8; /* k8 / kf8 F8 function key */
const char *TI_kf9; /* k9 / kf9 F9 function key */
const char *TI_khome; /* kh / khome home key */
const char *TI_kich1; /* kI / kich1 insert-character key */
const char *TI_kil1; /* kA / kil1 insert-line key */
const char *TI_kcub1; /* kl / kcub1 left-arrow key */
const char *TI_kll; /* kH / kll lower-left key (home down) */
const char *TI_knp; /* kN / knp next-page key */
const char *TI_kpp; /* kP / kpp previous-page key */
const char *TI_kcuf1; /* kr / kcuf1 right-arrow key */
const char *TI_kind; /* kF / kind scroll-forward key */
const char *TI_kri; /* kR / kri scroll-backward key */
const char *TI_khts; /* kT / khts set-tab key */
const char *TI_kcuu1; /* ku / kcuu1 up-arrow key */
const char *TI_rmkx; /* ke / rmkx leave 'keyboard_transmit' mode */
const char *TI_smkx; /* ks / smkx enter 'keyboard_transmit' mode */
const char *TI_lf0; /* l0 / lf0 label on function key f0 if not f0 */
const char *TI_lf1; /* l1 / lf1 label on function key f1 if not f1 */
const char *TI_lf10; /* la / lf10 label on function key f10 if not f10 */
const char *TI_lf2; /* l2 / lf2 label on function key f2 if not f2 */
const char *TI_lf3; /* l3 / lf3 label on function key f3 if not f3 */
const char *TI_lf4; /* l4 / lf4 label on function key f4 if not f4 */
const char *TI_lf5; /* l5 / lf5 label on function key f5 if not f5 */
const char *TI_lf6; /* l6 / lf6 label on function key f6 if not f6 */
const char *TI_lf7; /* l7 / lf7 label on function key f7 if not f7 */
const char *TI_lf8; /* l8 / lf8 label on function key f8 if not f8 */
const char *TI_lf9; /* l9 / lf9 label on function key f9 if not f9 */
const char *TI_rmm; /* mo / rmm turn off meta mode */
const char *TI_smm; /* mm / smm turn on meta mode (8th-bit on) */
const char *TI_nel; /* nw / nel newline (behave like cr followed by lf) */
const char *TI_pad; /* pc / pad padding char (instead of null) */
const char *TI_dch; /* DC / dch delete #1 characters (P*) */
const char *TI_dl; /* DL / dl delete #1 lines (P*) */
const char *TI_cud; /* DO / cud down #1 lines (P*) */
const char *TI_ich; /* IC / ich insert #1 characters (P*) */
const char *TI_indn; /* SF / indn scroll forward #1 lines (P) */
const char *TI_il; /* AL / il insert #1 lines (P*) */
const char *TI_cub; /* LE / cub move #1 characters to the left (P) */
const char *TI_cuf; /* RI / cuf move #1 characters to the right (P*) */
const char *TI_rin; /* SR / rin scroll back #1 lines (P) */
const char *TI_cuu; /* UP / cuu up #1 lines (P*) */
const char *TI_pfkey; /* pk / pfkey program function key #1 to type string #2 */
const char *TI_pfloc; /* pl / pfloc program function key #1 to execute string #2 */
const char *TI_pfx; /* px / pfx program function key #1 to transmit string #2 */
const char *TI_mc0; /* ps / mc0 print contents of screen */
const char *TI_mc4; /* pf / mc4 turn off printer */
const char *TI_mc5; /* po / mc5 turn on printer */
const char *TI_rep; /* rp / rep repeat char #1 #2 times (P*) */
const char *TI_rs1; /* r1 / rs1 reset string */
const char *TI_rs2; /* r2 / rs2 reset string */
const char *TI_rs3; /* r3 / rs3 reset string */
const char *TI_rf; /* rf / rf name of reset file */
const char *TI_rc; /* rc / rc restore cursor to position of last save_cursor */
const char *TI_vpa; /* cv / vpa vertical position #1 absolute (P) */
const char *TI_sc; /* sc / sc save current cursor position (P) */
const char *TI_ind; /* sf / ind scroll text up (P) */
const char *TI_ri; /* sr / ri scroll text down (P) */
const char *TI_sgr; /* sa / sgr define video attributes #1-#9 (PG9) */
const char *TI_hts; /* st / hts set a tab in every row, current columns */
const char *TI_wind; /* wi / wind current window is lines #1-#2 cols #3-#4 */
const char *TI_ht; /* ta / ht tab to next 8-space hardware tab stop */
const char *TI_tsl; /* ts / tsl move to status line */
const char *TI_uc; /* uc / uc underline char and move past it */
const char *TI_hu; /* hu / hu half a line up */
const char *TI_iprog; /* iP / iprog path name of program for initialization */
const char *TI_ka1; /* K1 / ka1 upper left of keypad */
const char *TI_ka3; /* K3 / ka3 upper right of keypad */
const char *TI_kb2; /* K2 / kb2 center of keypad */
const char *TI_kc1; /* K4 / kc1 lower left of keypad */
const char *TI_kc3; /* K5 / kc3 lower right of keypad */
const char *TI_mc5p; /* pO / mc5p turn on printer for #1 bytes */
const char *TI_rmp; /* rP / rmp like ip but when in insert mode */
const char *TI_acsc; /* ac / acsc graphics charset pairs, based on vt100 */
const char *TI_pln; /* pn / pln program label #1 to show string #2 */
const char *TI_kcbt; /* kB / kcbt back-tab key */
const char *TI_smxon; /* SX / smxon turn on xon/xoff handshaking */
const char *TI_rmxon; /* RX / rmxon turn off xon/xoff handshaking */
const char *TI_smam; /* SA / smam turn on automatic margins */
const char *TI_rmam; /* RA / rmam turn off automatic margins */
const char *TI_xonc; /* XN / xonc XON character */
const char *TI_xoffc; /* XF / xoffc XOFF character */
const char *TI_enacs; /* eA / enacs enable alternate char set */
const char *TI_smln; /* LO / smln turn on soft labels */
const char *TI_rmln; /* LF / rmln turn off soft labels */
const char *TI_kbeg; /* @1 / kbeg begin key */
const char *TI_kcan; /* @2 / kcan cancel key */
const char *TI_kclo; /* @3 / kclo close key */
const char *TI_kcmd; /* @4 / kcmd command key */
const char *TI_kcpy; /* @5 / kcpy copy key */
const char *TI_kcrt; /* @6 / kcrt create key */
const char *TI_kend; /* @7 / kend end key */
const char *TI_kent; /* @8 / kent enter/send key */
const char *TI_kext; /* @9 / kext exit key */
const char *TI_kfnd; /* @0 / kfnd find key */
const char *TI_khlp; /* %1 / khlp help key */
const char *TI_kmrk; /* %2 / kmrk mark key */
const char *TI_kmsg; /* %3 / kmsg message key */
const char *TI_kmov; /* %4 / kmov move key */
const char *TI_knxt; /* %5 / knxt next key */
const char *TI_kopn; /* %6 / kopn open key */
const char *TI_kopt; /* %7 / kopt options key */
const char *TI_kprv; /* %8 / kprv previous key */
const char *TI_kprt; /* %9 / kprt print key */
const char *TI_krdo; /* %0 / krdo redo key */
const char *TI_kref; /* &1 / kref reference key */
const char *TI_krfr; /* &2 / krfr refresh key */
const char *TI_krpl; /* &3 / krpl replace key */
const char *TI_krst; /* &4 / krst restart key */
const char *TI_kres; /* &5 / kres resume key */
const char *TI_ksav; /* &6 / ksav save key */
const char *TI_kspd; /* &7 / kspd suspend key */
const char *TI_kund; /* &8 / kund undo key */
const char *TI_kBEG; /* &9 / kBEG shifted begin key */
const char *TI_kCAN; /* &0 / kCAN shifted cancel key */
const char *TI_kCMD; /* *1 / kCMD shifted command key */
const char *TI_kCPY; /* *2 / kCPY shifted copy key */
const char *TI_kCRT; /* *3 / kCRT shifted create key */
const char *TI_kDC; /* *4 / kDC shifted delete-character key */
const char *TI_kDL; /* *5 / kDL shifted delete-line key */
const char *TI_kslt; /* *6 / kslt select key */
const char *TI_kEND; /* *7 / kEND shifted end key */
const char *TI_kEOL; /* *8 / kEOL shifted clear-to-end-of-line key */
const char *TI_kEXT; /* *9 / kEXT shifted exit key */
const char *TI_kFND; /* *0 / kFND shifted find key */
const char *TI_kHLP; /* #1 / kHLP shifted help key */
const char *TI_kHOM; /* #2 / kHOM shifted home key */
const char *TI_kIC; /* #3 / kIC shifted insert-character key */
const char *TI_kLFT; /* #4 / kLFT shifted left-arrow key */
const char *TI_kMSG; /* %a / kMSG shifted message key */
const char *TI_kMOV; /* %b / kMOV shifted move key */
const char *TI_kNXT; /* %c / kNXT shifted next key */
const char *TI_kOPT; /* %d / kOPT shifted options key */
const char *TI_kPRV; /* %e / kPRV shifted previous key */
const char *TI_kPRT; /* %f / kPRT shifted print key */
const char *TI_kRDO; /* %g / kRDO shifted redo key */
const char *TI_kRPL; /* %h / kRPL shifted replace key */
const char *TI_kRIT; /* %i / kRIT shifted right-arrow key */
const char *TI_kRES; /* %j / kRES shifted resume key */
const char *TI_kSAV; /* !1 / kSAV shifted save key */
const char *TI_kSPD; /* !2 / kSPD shifted suspend key */
const char *TI_kUND; /* !3 / kUND shifted undo key */
const char *TI_rfi; /* RF / rfi send next input char (for ptys) */
const char *TI_kf11; /* F1 / kf11 F11 function key */
const char *TI_kf12; /* F2 / kf12 F12 function key */
const char *TI_kf13; /* F3 / kf13 F13 function key */
const char *TI_kf14; /* F4 / kf14 F14 function key */
const char *TI_kf15; /* F5 / kf15 F15 function key */
const char *TI_kf16; /* F6 / kf16 F16 function key */
const char *TI_kf17; /* F7 / kf17 F17 function key */
const char *TI_kf18; /* F8 / kf18 F18 function key */
const char *TI_kf19; /* F9 / kf19 F19 function key */
const char *TI_kf20; /* FA / kf20 F20 function key */
const char *TI_kf21; /* FB / kf21 F21 function key */
const char *TI_kf22; /* FC / kf22 F22 function key */
const char *TI_kf23; /* FD / kf23 F23 function key */
const char *TI_kf24; /* FE / kf24 F24 function key */
const char *TI_kf25; /* FF / kf25 F25 function key */
const char *TI_kf26; /* FG / kf26 F26 function key */
const char *TI_kf27; /* FH / kf27 F27 function key */
const char *TI_kf28; /* FI / kf28 F28 function key */
const char *TI_kf29; /* FJ / kf29 F29 function key */
const char *TI_kf30; /* FK / kf30 F30 function key */
const char *TI_kf31; /* FL / kf31 F31 function key */
const char *TI_kf32; /* FM / kf32 F32 function key */
const char *TI_kf33; /* FN / kf33 F33 function key */
const char *TI_kf34; /* FO / kf34 F34 function key */
const char *TI_kf35; /* FP / kf35 F35 function key */
const char *TI_kf36; /* FQ / kf36 F36 function key */
const char *TI_kf37; /* FR / kf37 F37 function key */
const char *TI_kf38; /* FS / kf38 F38 function key */
const char *TI_kf39; /* FT / kf39 F39 function key */
const char *TI_kf40; /* FU / kf40 F40 function key */
const char *TI_kf41; /* FV / kf41 F41 function key */
const char *TI_kf42; /* FW / kf42 F42 function key */
const char *TI_kf43; /* FX / kf43 F43 function key */
const char *TI_kf44; /* FY / kf44 F44 function key */
const char *TI_kf45; /* FZ / kf45 F45 function key */
const char *TI_kf46; /* Fa / kf46 F46 function key */
const char *TI_kf47; /* Fb / kf47 F47 function key */
const char *TI_kf48; /* Fc / kf48 F48 function key */
const char *TI_kf49; /* Fd / kf49 F49 function key */
const char *TI_kf50; /* Fe / kf50 F50 function key */
const char *TI_kf51; /* Ff / kf51 F51 function key */
const char *TI_kf52; /* Fg / kf52 F52 function key */
const char *TI_kf53; /* Fh / kf53 F53 function key */
const char *TI_kf54; /* Fi / kf54 F54 function key */
const char *TI_kf55; /* Fj / kf55 F55 function key */
const char *TI_kf56; /* Fk / kf56 F56 function key */
const char *TI_kf57; /* Fl / kf57 F57 function key */
const char *TI_kf58; /* Fm / kf58 F58 function key */
const char *TI_kf59; /* Fn / kf59 F59 function key */
const char *TI_kf60; /* Fo / kf60 F60 function key */
const char *TI_kf61; /* Fp / kf61 F61 function key */
const char *TI_kf62; /* Fq / kf62 F62 function key */
const char *TI_kf63; /* Fr / kf63 F63 function key */
const char *TI_el1; /* cb / el1 Clear to beginning of line */
const char *TI_mgc; /* MC / mgc clear right and left soft margins */
const char *TI_smgl; /* ML / smgl set left soft margin at current column */
const char *TI_smgr; /* MR / smgr set right soft margin at current column */
const char *TI_fln; /* Lf / fln label format */
const char *TI_sclk; /* SC / sclk set clock, #1 hrs #2 mins #3 secs */
const char *TI_dclk; /* DK / dclk display clock at (#1,#2) */
const char *TI_rmclk; /* RC / rmclk remove clock */
const char *TI_cwin; /* CW / cwin define a window #1 from #2,#3 to #4,#5 */
const char *TI_wingo; /* WG / wingo go to window #1 */
const char *TI_hup; /* HU / hup hang-up phone */
const char *TI_dial; /* DI / dial dial number #1 */
const char *TI_qdial; /* QD / qdial dial number #1 without checking */
const char *TI_tone; /* TO / tone select touch tone dialing */
const char *TI_pulse; /* PU / pulse select pulse dialing */
const char *TI_hook; /* fh / hook flash switch hook */
const char *TI_pause; /* PA / pause pause for 2-3 seconds */
const char *TI_wait; /* WA / wait wait for dial-tone */
const char *TI_u0; /* u0 / u0 User string #0 */
const char *TI_u1; /* u1 / u1 User string #1 */
const char *TI_u2; /* u2 / u2 User string #2 */
const char *TI_u3; /* u3 / u3 User string #3 */
const char *TI_u4; /* u4 / u4 User string #4 */
const char *TI_u5; /* u5 / u5 User string #5 */
const char *TI_u6; /* u6 / u6 User string #6 */
const char *TI_u7; /* u7 / u7 User string #7 */
const char *TI_u8; /* u8 / u8 User string #8 */
const char *TI_u9; /* u9 / u9 User string #9 */
const char *TI_op; /* op / op Set default pair to its original value */
const char *TI_oc; /* oc / oc Set all color pairs to the original ones */
const char *TI_initc; /* Ic / initc initialize color #1 to (#2,#3,#4) */
const char *TI_initp; /* Ip / initp Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7) */
const char *TI_scp; /* sp / scp Set current color pair to #1 */
const char *TI_setf; /* Sf / setf Set foreground color #1 */
const char *TI_setb; /* Sb / setb Set background color #1 */
const char *TI_cpi; /* ZA / cpi Change number of characters per inch */
const char *TI_lpi; /* ZB / lpi Change number of lines per inch */
const char *TI_chr; /* ZC / chr Change horizontal resolution */
const char *TI_cvr; /* ZD / cvr Change vertical resolution */
const char *TI_defc; /* ZE / defc Define a character */
const char *TI_swidm; /* ZF / swidm Enter double-wide mode */
const char *TI_sdrfq; /* ZG / sdrfq Enter draft-quality mode */
const char *TI_sitm; /* ZH / sitm Enter italic mode */
const char *TI_slm; /* ZI / slm Start leftward carriage motion */
const char *TI_smicm; /* ZJ / smicm Start micro-motion mode */
const char *TI_snlq; /* ZK / snlq Enter NLQ mode */
const char *TI_snrmq; /* ZL / snrmq Enter normal-quality mode */
const char *TI_sshm; /* ZM / sshm Enter shadow-print mode */
const char *TI_ssubm; /* ZN / ssubm Enter subscript mode */
const char *TI_ssupm; /* ZO / ssupm Enter superscript mode */
const char *TI_sum; /* ZP / sum Start upward carriage motion */
const char *TI_rwidm; /* ZQ / rwidm End double-wide mode */
const char *TI_ritm; /* ZR / ritm End italic mode */
const char *TI_rlm; /* ZS / rlm End left-motion mode */
const char *TI_rmicm; /* ZT / rmicm End micro-motion mode */
const char *TI_rshm; /* ZU / rshm End shadow-print mode */
const char *TI_rsubm; /* ZV / rsubm End subscript mode */
const char *TI_rsupm; /* ZW / rsupm End superscript mode */
const char *TI_rum; /* ZX / rum End reverse character motion */
const char *TI_mhpa; /* ZY / mhpa Like column_address in micro mode */
const char *TI_mcud1; /* ZZ / mcud1 Like cursor_down in micro mode */
const char *TI_mcub1; /* Za / mcub1 Like cursor_left in micro mode */
const char *TI_mcuf1; /* Zb / mcuf1 Like cursor_right in micro mode */
const char *TI_mvpa; /* Zc / mvpa Like row_address in micro mode */
const char *TI_mcuu1; /* Zd / mcuu1 Like cursor_up in micro mode */
const char *TI_porder; /* Ze / porder Match software bits to print-head pins */
const char *TI_mcud; /* Zf / mcud Like parm_down_cursor in micro mode */
const char *TI_mcub; /* Zg / mcub Like parm_left_cursor in micro mode */
const char *TI_mcuf; /* Zh / mcuf Like parm_right_cursor in micro mode */
const char *TI_mcuu; /* Zi / mcuu Like parm_up_cursor in micro mode */
const char *TI_scs; /* Zj / scs Select character set */
const char *TI_smgb; /* Zk / smgb Set bottom margin at current line */
const char *TI_smgbp; /* Zl / smgbp Set bottom margin at line #1 or #2 lines from bottom */
const char *TI_smglp; /* Zm / smglp Set left (right) margin at column #1 (#2) */
const char *TI_smgrp; /* Zn / smgrp Set right margin at column #1 */
const char *TI_smgt; /* Zo / smgt Set top margin at current line */
const char *TI_smgtp; /* Zp / smgtp Set top (bottom) margin at row #1 (#2) */
const char *TI_sbim; /* Zq / sbim Start printing bit image graphics */
const char *TI_scsd; /* Zr / scsd Start character set definition */
const char *TI_rbim; /* Zs / rbim Stop printing bit image graphics */
const char *TI_rcsd; /* Zt / rcsd End definition of character set */
const char *TI_subcs; /* Zu / subcs List of subscriptable characters */
const char *TI_supcs; /* Zv / supcs List of superscriptable characters */
const char *TI_docr; /* Zw / docr Printing any of these characters causes CR */
const char *TI_zerom; /* Zx / zerom No motion for subsequent character */
const char *TI_csnm; /* Zy / csnm List of character set names */
const char *TI_kmous; /* Km / kmous Mouse event has occurred */
const char *TI_minfo; /* Mi / minfo Mouse status information */
const char *TI_reqmp; /* RQ / reqmp Request mouse position */
const char *TI_getm; /* Gm / getm Curses should get button events */
const char *TI_setaf; /* AF / setaf Set foreground color using ANSI escape */
const char *TI_setab; /* AB / setab Set background color using ANSI escape */
const char *TI_pfxl; /* xl / pfxl Program function key #1 to type string #2 and show string #3 */
const char *TI_devt; /* dv / devt Indicate language/codeset support */
const char *TI_csin; /* ci / csin Init sequence for multiple codesets */
const char *TI_s0ds; /* s0 / s0ds Shift to code set 0 (EUC set 0, ASCII) */
const char *TI_s1ds; /* s1 / s1ds Shift to code set 1 */
const char *TI_s2ds; /* s2 / s2ds Shift to code set 2 */
const char *TI_s3ds; /* s3 / s3ds Shift to code set 3 */
const char *TI_smglr; /* ML / smglr Set both left and right margins to #1, #2 */
const char *TI_smgtb; /* MT / smgtb Sets both top and bottom margins to #1, #2 */
const char *TI_birep; /* Xy / birep Repeat bit image cell #1 #2 times */
const char *TI_binel; /* Zz / binel Move to next row of the bit image */
const char *TI_bicr; /* Yv / bicr Move to beginning of same row */
const char *TI_colornm; /* Yw / colornm Give name for color #1 */
const char *TI_defbi; /* Yx / defbi Define rectangualar bit image region */
const char *TI_endbi; /* Yy / endbi End a bit-image region */
const char *TI_setcolor; /* Yz / setcolor Change to ribbon color #1 */
const char *TI_slines; /* YZ / slines Set page length to #1 lines */
const char *TI_dispc; /* S1 / dispc Display PC character */
const char *TI_smpch; /* S2 / smpch Enter PC character display mode */
const char *TI_rmpch; /* S3 / rmpch Exit PC character display mode */
const char *TI_smsc; /* S4 / smsc Enter PC scancode mode */
const char *TI_rmsc; /* S5 / rmsc Exit PC scancode mode */
const char *TI_pctrm; /* S6 / pctrm PC terminal options */
const char *TI_scesc; /* S7 / scesc Escape for scancode emulation */
const char *TI_scesa; /* S8 / scesa Alternate escape for scancode emulation */
const char *TI_ehhlm; /* Xh / ehhlm Enter horizontal highlight mode */
const char *TI_elhlm; /* Xl / elhlm Enter left highlight mode */
const char *TI_elohlm; /* Xo / elohlm Enter low highlight mode */
const char *TI_erhlm; /* Xr / erhlm Enter right highlight mode */
const char *TI_ethlm; /* Xt / ethlm Enter top highlight mode */
const char *TI_evhlm; /* Xv / evhlm Enter vertical highlight mode */
const char *TI_sgr1; /* sA / sgr1 Define second set of video attributes #1-#6 */
const char *TI_slength; /* sL / slength YI Set page length to #1 hundredth of an inch */
const char *TI_OTi2; /* i2 / OTi2 secondary initialization string */
const char *TI_OTrs; /* rs / OTrs terminal reset string */
int TI_OTug; /* ug / OTug number of blanks left by ul */
int TI_OTbs; /* bs / OTbs uses ^H to move left */
int TI_OTns; /* ns / OTns crt cannot scroll */
int TI_OTnc; /* nc / OTnc no way to go to start of line */
int TI_OTdC; /* dC / OTdC pad needed for CR */
int TI_OTdN; /* dN / OTdN pad needed for LF */
const char *TI_OTnl; /* nl / OTnl use to move down */
const char *TI_OTbc; /* bc / OTbc move left, if not ^H */
int TI_OTMT; /* MT / OTMT has meta key */
int TI_OTNL; /* NL / OTNL move down with \n */
int TI_OTdB; /* dB / OTdB padding required for ^H */
int TI_OTdT; /* dT / OTdT padding required for ^I */
int TI_OTkn; /* kn / OTkn count of function keys */
const char *TI_OTko; /* ko / OTko list of self-mapped keycaps */
const char *TI_OTma; /* ma / OTma map arrow keys rogue(1) motion keys */
int TI_OTpt; /* pt / OTpt has 8-const char tabs invoked with ^I */
int TI_OTxr; /* xr / OTxr return clears the line */
const char *TI_OTG2; /* G2 / OTG2 single upper left */
const char *TI_OTG3; /* G3 / OTG3 single lower left */
const char *TI_OTG1; /* G1 / OTG1 single upper right */
const char *TI_OTG4; /* G4 / OTG4 single lower right */
const char *TI_OTGR; /* GR / OTGR tee pointing right */
const char *TI_OTGL; /* GL / OTGL tee pointing left */
const char *TI_OTGU; /* GU / OTGU tee pointing up */
const char *TI_OTGD; /* GD / OTGD tee pointing down */
const char *TI_OTGH; /* GH / OTGH single horizontal line */
const char *TI_OTGV; /* GV / OTGV single vertical line */
const char *TI_OTGC; /* GC / OTGC single intersection */
const char *TI_meml; /* ml / meml memory lock above */
const char *TI_memu; /* mu / memu memory unlock */
const char *TI_box1; /* bx / box1 box characters primary set */
/* non termcap/terminfo terminal info (generated by epic) */
char TI_normal[256];
const char *TI_sgrstrs[TERM_SGR_MAXVAL];
const char *TI_forecolors[256];
const char *TI_backcolors[256];
const char *TI_bold_forecolors[8];
const char *TI_bold_backcolors[8];
int TI_meta_mode;
/* int TI_need_redraw ; */
};
#define term_has(x) (termfeatures & (x))
#define capstr(x) (current_term->TI_sgrstrs[(TERM_SGR_ ## x)-1])
#define outcap(x) (tputs_x(capstr(x)))
#ifndef TERM_DEBUG
#define tputs_x(s) (tputs(s, 0, putchar_x))
#else
int tputs_x(char *);
#endif
#define term_underline_on() outcap(UNDL_ON)
#define term_underline_off() outcap(UNDL_OFF)
#define term_standout_on() outcap(REV_ON)
#define term_standout_off() outcap(REV_OFF)
#define term_blink_on() outcap(BLINK_ON)
#define term_blink_off() outcap(BLINK_OFF)
#define term_bold_on() outcap(BOLD_ON)
#define term_bold_off() outcap(BOLD_OFF)
#define term_altcharset_on() outcap(ALTCHAR_ON)
#define term_altcharset_off() outcap(ALTCHAR_OFF)
#define term_italics_on() outcap(ITALIC_ON)
#define term_italics_off() outcap(ITALIC_OFF)
#define term_set_foreground(x) tputs_x(current_term->TI_forecolors[(x) & 0xff])
#define term_set_background(x) tputs_x(current_term->TI_backcolors[(x) & 0xff])
#define term_set_bold_foreground(x) tputs_x(current_term->TI_bold_forecolors[(x) & 0x07])
#define term_set_bold_background(x) tputs_x(current_term->TI_bold_backcolors[(x) & 0x07])
#define term_clear_screen() term_clrscr()
#define term_move_cursor(c, r) term_gotoxy((c),(r))
#define term_cr() tputs_x(current_term->TI_cr)
#define term_newline() tputs_x(current_term->TI_nel)
#define term_cursor_right() term_right(1)
#define term_clear_to_eol() term_clreol()
#define term_all_off() tputs_x(current_term->TI_normal);
void term_cont (int);
void term_beep (void);
int term_echo (int);
int term_init (void);
int term_resize (void);
BUILT_IN_KEYBINDING(term_pause);
void term_inputline_putchar (unsigned char);
void term_scroll (int, int, int);
void term_right (int);
void term_clreol (void);
void term_clrscr (void);
void term_gotoxy (int, int);
void term_reset (void);
void set_automargin_override (void *);
const char * term_getsgr (int, int, int);
const char * get_term_capability (const char *, int, int);
#endif /* _TERM_H_ */
|