xterm.h revision a1f3da82
1/* $XTermId: xterm.h,v 1.644 2011/02/20 00:49:16 tom Exp $ */ 2 3/************************************************************ 4 5Copyright 1999-2010,2011 by Thomas E. Dickey 6 7 All Rights Reserved 8 9Permission is hereby granted, free of charge, to any person obtaining a 10copy of this software and associated documentation files (the 11"Software"), to deal in the Software without restriction, including 12without limitation the rights to use, copy, modify, merge, publish, 13distribute, sublicense, and/or sell copies of the Software, and to 14permit persons to whom the Software is furnished to do so, subject to 15the following conditions: 16 17The above copyright notice and this permission notice shall be included 18in all copies or substantial portions of the Software. 19 20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 23IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 24CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 28Except as contained in this notice, the name(s) of the above copyright 29holders shall not be used in advertising or otherwise to promote the 30sale, use or other dealings in this Software without prior written 31authorization. 32 33********************************************************/ 34 35/* 36 * Common/useful definitions for XTERM application. 37 * 38 * This is also where we put the fallback definitions if we do not build using 39 * the configure script. 40 */ 41#ifndef included_xterm_h 42#define included_xterm_h 43/* *INDENT-OFF* */ 44 45#ifdef HAVE_CONFIG_H 46#include <xtermcfg.h> 47#endif 48 49#ifndef GCC_PRINTFLIKE 50#define GCC_PRINTFLIKE(f,n) /* nothing */ 51#endif 52 53#ifndef GCC_UNUSED 54#define GCC_UNUSED /* nothing */ 55#endif 56 57#ifndef GCC_NORETURN 58#define GCC_NORETURN /* nothing */ 59#endif 60 61#if defined(__GNUC__) && defined(_FORTIFY_SOURCE) 62#define USE_IGNORE_RC 63#define IGNORE_RC(func) ignore_unused = (int) func 64#else 65#define IGNORE_RC(func) (void) func 66#endif /* gcc workarounds */ 67 68#include <X11/Xos.h> 69 70#ifndef HAVE_CONFIG_H 71 72#define HAVE_LIB_XAW 1 73 74#ifdef CSRG_BASED 75/* Get definition of BSD */ 76#include <sys/param.h> 77#endif 78 79#ifndef DFT_TERMTYPE 80#define DFT_TERMTYPE "xterm" 81#endif 82 83#ifndef X_NOT_POSIX 84#define HAVE_WAITPID 1 85#define HAVE_SYS_WAIT_H 1 86#define HAVE_UNISTD_H 1 87#endif 88 89#define HAVE_STDLIB_H 1 90 91#if defined(sun) 92/* errno is declared in <errno.h> */ 93#else 94#define DECL_ERRNO 1 95#endif 96 97#undef DECL_PTSNAME /* ptsname() is normally in stdlib.h */ 98 99#ifndef NOPUTENV 100#define HAVE_PUTENV 1 101#endif 102 103#if defined(CSRG_BASED) || defined(__GNU__) 104#define USE_POSIX_TERMIOS 1 105#endif 106 107#ifdef __NetBSD__ 108#if __NetBSD_Version__ >= 106030000 /* 1.6C */ 109#define BSD_UTMPX 1 110#define ut_xtime ut_tv.tv_sec 111#endif 112#endif 113 114#if defined(hpux) && !defined(__hpux) 115#define __hpux 1 /* HPUX 11.0 does not define this */ 116#endif 117 118#if !defined(__SCO__) && (defined(SCO) || defined(sco) || defined(SCO325)) 119#define __SCO__ 1 120#endif 121 122#ifdef USE_POSIX_TERMIOS 123#define HAVE_TERMIOS_H 1 124#define HAVE_TCGETATTR 1 125#endif 126 127#if defined(__UNIXOS2__) || defined(__SCO__) || defined(__UNIXWARE__) 128#define USE_TERMCAP 1 129#endif 130 131#if defined(UTMP) 132#define HAVE_UTMP 1 133#endif 134 135#if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__) 136#define UTMPX_FOR_UTMP 1 137#endif 138 139#if !defined(ISC) && !defined(__QNX__) 140#define HAVE_UTMP_UT_HOST 1 141#endif 142 143#if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux)) 144#define HAVE_UTMP_UT_SESSION 1 145#endif 146 147#if !(defined(linux) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4) 148#define ut_xstatus ut_exit.e_exit 149#endif 150 151#if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))) 152#define HAVE_UTMP_UT_XTIME 1 153#endif 154 155#if defined(linux) || defined(__CYGWIN__) 156#define USE_LASTLOG 157#define HAVE_LASTLOG_H 158#define USE_STRUCT_LASTLOG 159#elif defined(BSD) && (BSD >= 199103) 160#ifdef BSD_UTMPX 161#define USE_LASTLOGX 162#else 163#define USE_LASTLOG 164#define USE_STRUCT_LASTLOG 165#endif 166#endif 167 168#if defined(__OpenBSD__) 169#define DEFDELETE_DEL True 170#define DEF_BACKARO_ERASE True 171#define DEF_INITIAL_ERASE True 172#endif 173 174#if defined(__SCO__) || defined(__UNIXWARE__) 175#define DEFDELETE_DEL True 176#define OPT_SCO_FUNC_KEYS 1 177#endif 178 179#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__) 180#define USE_POSIX_WAIT 181#endif 182 183#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(linux) || defined(macII) || defined(BSD_UTMPX) 184#define USE_SYSV_UTMP 185#endif 186 187#if defined(__GNU__) || defined(__MVS__) || defined(__osf__) 188#define USE_TTY_GROUP 189#endif 190 191#if defined(__CYGWIN__) 192#define HAVE_NCURSES_TERM_H 1 193#endif 194 195#ifdef __osf__ 196#define TTY_GROUP_NAME "terminal" 197#endif 198 199#if defined(__MVS__) 200#undef ut_xstatus 201#define ut_name ut_user 202#define ut_xstatus ut_exit.ut_e_exit 203#define ut_xtime ut_tv.tv_sec 204#endif 205 206#if defined(ut_xstatus) 207#define HAVE_UTMP_UT_XSTATUS 1 208#endif 209 210#if defined(XKB) 211#define HAVE_XKB_BELL_EXT 1 212#endif 213 214#if (defined(SVR4) && !defined(__CYGWIN__)) || defined(linux) || (defined(BSD) && (BSD >= 199103)) 215#define HAVE_POSIX_SAVED_IDS 216#endif 217 218#endif /* HAVE_CONFIG_H */ 219 220#ifndef HAVE_X11_DECKEYSYM_H 221#define HAVE_X11_DECKEYSYM_H 1 222#endif 223 224#ifndef HAVE_X11_SUNKEYSYM_H 225#define HAVE_X11_SUNKEYSYM_H 1 226#endif 227 228#ifndef HAVE_X11_XF86KEYSYM_H 229#define HAVE_X11_XF86KEYSYM_H 0 230#endif 231 232/***====================================================================***/ 233 234/* if compiling with gcc -ansi -pedantic, we must fix POSIX definitions */ 235#if defined(SVR4) && defined(sun) 236#ifndef __EXTENSIONS__ 237#define __EXTENSIONS__ 1 238#endif 239#ifndef _POSIX_C_SOURCE 240#define _POSIX_C_SOURCE 1 241#endif 242#endif 243 244/***====================================================================***/ 245 246#ifdef HAVE_STDLIB_H 247#include <stdlib.h> 248#else 249extern char *calloc(); 250extern char *getenv(); 251extern char *malloc(); 252extern char *realloc(); 253extern void exit(); 254extern void free(); 255#endif 256 257#ifdef HAVE_UNISTD_H 258#include <unistd.h> 259#endif 260 261#ifdef HAVE_SYS_WAIT_H 262#include <sys/wait.h> 263#endif 264 265#include <errno.h> 266#if defined(DECL_ERRNO) && !defined(errno) 267extern int errno; 268#endif 269 270/* 271 * FIXME: Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if 272 * we use 'waitpid()', while 'wait()' seems to work properly. 273 */ 274#ifdef linux 275#undef HAVE_WAITPID 276#endif 277 278#ifndef OPT_WIDE_CHARS 279#define OPT_WIDE_CHARS 0 280#endif 281 282#if OPT_WIDE_CHARS 283#define HIDDEN_CHAR 0xffff 284#endif 285 286/***====================================================================***/ 287 288#include <proto.h> 289#include <ptyx.h> 290 291#if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun) 292#include <X11/Xpoll.h> 293#define USE_XPOLL_H 1 294#else 295#define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t) 296#define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set)) 297#if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME) 298#define TIME_WITH_SYS_TIME 299#endif 300#endif 301 302#ifdef TIME_WITH_SYS_TIME 303# include <sys/time.h> 304# include <time.h> 305#else 306# ifdef HAVE_SYS_TIME_H 307# include <sys/time.h> 308# else 309# include <time.h> 310# endif 311#endif 312 313/* these may be needed for sig_atomic_t */ 314#include <sys/types.h> 315#include <signal.h> 316 317#ifdef USE_SYS_SELECT_H 318 319#if defined(USE_XPOLL_H) && defined(AIXV3) && defined(NFDBITS) 320#undef NFDBITS /* conflict between X11/Xpoll.h and sys/select.h */ 321#endif 322 323#include <sys/select.h> 324 325#endif /* USE_SYS_SELECT_H */ 326 327#include <setjmp.h> 328 329#if defined(__UNIXOS2__) && !defined(XTERM_MAIN) 330#define environ gblenvp /* circumvent a bug */ 331#endif 332 333#if !defined(VMS) && !(defined(linux) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__) 334extern char **environ; 335#endif 336 337#define XK_Fn(n) (XK_F1 + (n) - 1) 338 339#define Maybe 2 340 341/***====================================================================***/ 342 343#define XtNallowC1Printable "allowC1Printable" 344#define XtNallowColorOps "allowColorOps" 345#define XtNallowFontOps "allowFontOps" 346#define XtNallowScrollLock "allowScrollLock" 347#define XtNallowSendEvents "allowSendEvents" 348#define XtNallowTcapOps "allowTcapOps" 349#define XtNallowTitleOps "allowTitleOps" 350#define XtNallowWindowOps "allowWindowOps" 351#define XtNaltIsNotMeta "altIsNotMeta" 352#define XtNaltSendsEscape "altSendsEscape" 353#define XtNalwaysBoldMode "alwaysBoldMode" 354#define XtNalwaysHighlight "alwaysHighlight" 355#define XtNalwaysUseMods "alwaysUseMods" 356#define XtNanswerbackString "answerbackString" 357#define XtNappcursorDefault "appcursorDefault" 358#define XtNappkeypadDefault "appkeypadDefault" 359#define XtNautoWrap "autoWrap" 360#define XtNawaitInput "awaitInput" 361#define XtNbackarrowKey "backarrowKey" 362#define XtNbellIsUrgent "bellIsUrgent" 363#define XtNbellOnReset "bellOnReset" 364#define XtNbellSuppressTime "bellSuppressTime" 365#define XtNboldColors "boldColors" 366#define XtNboldFont "boldFont" 367#define XtNboldMode "boldMode" 368#define XtNbrokenLinuxOSC "brokenLinuxOSC" 369#define XtNbrokenSelections "brokenSelections" 370#define XtNbrokenStringTerm "brokenStringTerm" 371#define XtNc132 "c132" 372#define XtNcacheDoublesize "cacheDoublesize" 373#define XtNcharClass "charClass" 374#define XtNcjkWidth "cjkWidth" 375#define XtNcolorAttrMode "colorAttrMode" 376#define XtNcolorBDMode "colorBDMode" 377#define XtNcolorBLMode "colorBLMode" 378#define XtNcolorMode "colorMode" 379#define XtNcolorRVMode "colorRVMode" 380#define XtNcolorULMode "colorULMode" 381#define XtNcombiningChars "combiningChars" 382#define XtNctrlFKeys "ctrlFKeys" 383#define XtNcurses "curses" 384#define XtNcursorBlink "cursorBlink" 385#define XtNcursorColor "cursorColor" 386#define XtNcursorOffTime "cursorOffTime" 387#define XtNcursorOnTime "cursorOnTime" 388#define XtNcursorUnderline "cursorUnderLine" 389#define XtNcutNewline "cutNewline" 390#define XtNcutToBeginningOfLine "cutToBeginningOfLine" 391#define XtNdecTerminalID "decTerminalID" 392#define XtNdefaultString "defaultString" 393#define XtNdeleteIsDEL "deleteIsDEL" 394#define XtNdisallowedColorOps "disallowedColorOps" 395#define XtNdisallowedFontOps "disallowedFontOps" 396#define XtNdisallowedTcapOps "disallowedTcapOps" 397#define XtNdisallowedWindowOps "disallowedWindowOps" 398#define XtNdynamicColors "dynamicColors" 399#define XtNeightBitControl "eightBitControl" 400#define XtNeightBitInput "eightBitInput" 401#define XtNeightBitOutput "eightBitOutput" 402#define XtNeightBitSelectTypes "eightBitSelectTypes" 403#define XtNfaceName "faceName" 404#define XtNfaceNameDoublesize "faceNameDoublesize" 405#define XtNfaceSize "faceSize" 406#define XtNfastScroll "fastScroll" 407#define XtNfont1 "font1" 408#define XtNfont2 "font2" 409#define XtNfont3 "font3" 410#define XtNfont4 "font4" 411#define XtNfont5 "font5" 412#define XtNfont6 "font6" 413#define XtNfontDoublesize "fontDoublesize" 414#define XtNfontStyle "fontStyle" 415#define XtNfontWarnings "fontWarnings" 416#define XtNforceBoxChars "forceBoxChars" 417#define XtNforcePackedFont "forcePackedFont" 418#define XtNformatOtherKeys "formatOtherKeys" 419#define XtNfreeBoldBox "freeBoldBox" 420#define XtNfullscreen "fullscreen" 421#define XtNhighlightColor "highlightColor" 422#define XtNhighlightColorMode "highlightColorMode" 423#define XtNhighlightReverse "highlightReverse" 424#define XtNhighlightSelection "highlightSelection" 425#define XtNhighlightTextColor "highlightTextColor" 426#define XtNhpLowerleftBugCompat "hpLowerleftBugCompat" 427#define XtNi18nSelections "i18nSelections" 428#define XtNinitialFont "initialFont" 429#define XtNinternalBorder "internalBorder" 430#define XtNitalicULMode "italicULMode" 431#define XtNjumpScroll "jumpScroll" 432#define XtNkeepSelection "keepSelection" 433#define XtNkeyboardDialect "keyboardDialect" 434#define XtNlimitResize "limitResize" 435#define XtNlocale "locale" 436#define XtNlocaleFilter "localeFilter" 437#define XtNlogFile "logFile" 438#define XtNlogInhibit "logInhibit" 439#define XtNlogging "logging" 440#define XtNloginShell "loginShell" 441#define XtNmarginBell "marginBell" 442#define XtNmaximized "maximized" 443#define XtNmenuBar "menuBar" 444#define XtNmenuHeight "menuHeight" 445#define XtNmetaSendsEscape "metaSendsEscape" 446#define XtNmkSamplePass "mkSamplePass" 447#define XtNmkSampleSize "mkSampleSize" 448#define XtNmkWidth "mkWidth" 449#define XtNmodifyCursorKeys "modifyCursorKeys" 450#define XtNmodifyFunctionKeys "modifyFunctionKeys" 451#define XtNmodifyKeypadKeys "modifyKeypadKeys" 452#define XtNmodifyOtherKeys "modifyOtherKeys" 453#define XtNmodifyStringKeys "modifyStringKeys" 454#define XtNmultiClickTime "multiClickTime" 455#define XtNmultiScroll "multiScroll" 456#define XtNnMarginBell "nMarginBell" 457#define XtNnumLock "numLock" 458#define XtNoldXtermFKeys "oldXtermFKeys" 459#define XtNpointerColor "pointerColor" 460#define XtNpointerColorBackground "pointerColorBackground" 461#define XtNpointerMode "pointerMode" 462#define XtNpointerShape "pointerShape" 463#define XtNpopOnBell "popOnBell" 464#define XtNprintAttributes "printAttributes" 465#define XtNprinterAutoClose "printerAutoClose" 466#define XtNprinterCommand "printerCommand" 467#define XtNprinterControlMode "printerControlMode" 468#define XtNprinterExtent "printerExtent" 469#define XtNprinterFormFeed "printerFormFeed" 470#define XtNprinterNewLine "printerNewLine" 471#define XtNquietGrab "quietGrab" 472#define XtNrenderFont "renderFont" 473#define XtNresizeGravity "resizeGravity" 474#define XtNretryInputMethod "retryInputMethod" 475#define XtNreverseWrap "reverseWrap" 476#define XtNrightScrollBar "rightScrollBar" 477#define XtNsaveLines "saveLines" 478#define XtNscrollBar "scrollBar" 479#define XtNscrollBarBorder "scrollBarBorder" 480#define XtNscrollKey "scrollKey" 481#define XtNscrollLines "scrollLines" 482#define XtNscrollPos "scrollPos" 483#define XtNscrollTtyOutput "scrollTtyOutput" 484#define XtNselectToClipboard "selectToClipboard" 485#define XtNshiftFonts "shiftFonts" 486#define XtNshowBlinkAsBold "showBlinkAsBold" 487#define XtNshowMissingGlyphs "showMissingGlyphs" 488#define XtNshowWrapMarks "showWrapMarks" 489#define XtNsignalInhibit "signalInhibit" 490#define XtNtekGeometry "tekGeometry" 491#define XtNtekInhibit "tekInhibit" 492#define XtNtekSmall "tekSmall" 493#define XtNtekStartup "tekStartup" 494#define XtNtiXtraScroll "tiXtraScroll" 495#define XtNtiteInhibit "titeInhibit" 496#define XtNtitleModes "titleModes" 497#define XtNtoolBar "toolBar" 498#define XtNtrimSelection "trimSelection" 499#define XtNunderLine "underLine" 500#define XtNuseClipping "useClipping" 501#define XtNutf8 "utf8" 502#define XtNutf8Latin1 "utf8Latin1" 503#define XtNutf8SelectTypes "utf8SelectTypes" 504#define XtNutf8Title "utf8Title" 505#define XtNveryBoldColors "veryBoldColors" 506#define XtNvisualBell "visualBell" 507#define XtNvisualBellDelay "visualBellDelay" 508#define XtNvt100Graphics "vt100Graphics" 509#define XtNwideBoldFont "wideBoldFont" 510#define XtNwideChars "wideChars" 511#define XtNwideFont "wideFont" 512#define XtNximFont "ximFont" 513#define XtNxmcAttributes "xmcAttributes" 514#define XtNxmcGlitch "xmcGlitch" 515#define XtNxmcInline "xmcInline" 516#define XtNxmcMoveSGR "xmcMoveSGR" 517 518#define XtCAllowC1Printable "AllowC1Printable" 519#define XtCAllowColorOps "AllowColorOps" 520#define XtCAllowFontOps "AllowFontOps" 521#define XtCAllowScrollLock "AllowScrollLock" 522#define XtCAllowSendEvents "AllowSendEvents" 523#define XtCAllowTcapOps "AllowTcapOps" 524#define XtCAllowTitleOps "AllowTitleOps" 525#define XtCAllowWindowOps "AllowWindowOps" 526#define XtCAltIsNotMeta "AltIsNotMeta" 527#define XtCAltSendsEscape "AltSendsEscape" 528#define XtCAlwaysBoldMode "AlwaysBoldMode" 529#define XtCAlwaysHighlight "AlwaysHighlight" 530#define XtCAlwaysUseMods "AlwaysUseMods" 531#define XtCAnswerbackString "AnswerbackString" 532#define XtCAppcursorDefault "AppcursorDefault" 533#define XtCAppkeypadDefault "AppkeypadDefault" 534#define XtCAutoWrap "AutoWrap" 535#define XtCAwaitInput "AwaitInput" 536#define XtCBackarrowKey "BackarrowKey" 537#define XtCBellIsUrgent "BellIsUrgent" 538#define XtCBellOnReset "BellOnReset" 539#define XtCBellSuppressTime "BellSuppressTime" 540#define XtCBoldFont "BoldFont" 541#define XtCBoldMode "BoldMode" 542#define XtCBrokenLinuxOSC "BrokenLinuxOSC" 543#define XtCBrokenSelections "BrokenSelections" 544#define XtCBrokenStringTerm "BrokenStringTerm" 545#define XtCC132 "C132" 546#define XtCCacheDoublesize "CacheDoublesize" 547#define XtCCharClass "CharClass" 548#define XtCCjkWidth "CjkWidth" 549#define XtCColorAttrMode "ColorAttrMode" 550#define XtCColorMode "ColorMode" 551#define XtCColumn "Column" 552#define XtCCombiningChars "CombiningChars" 553#define XtCCtrlFKeys "CtrlFKeys" 554#define XtCCurses "Curses" 555#define XtCCursorBlink "CursorBlink" 556#define XtCCursorOffTime "CursorOffTime" 557#define XtCCursorOnTime "CursorOnTime" 558#define XtCCursorUnderline "CursorUnderLine" 559#define XtCCutNewline "CutNewline" 560#define XtCCutToBeginningOfLine "CutToBeginningOfLine" 561#define XtCDecTerminalID "DecTerminalID" 562#define XtCDefaultString "DefaultString" 563#define XtCDeleteIsDEL "DeleteIsDEL" 564#define XtCDisallowedColorOps "DisallowedColorOps" 565#define XtCDisallowedFontOps "DisallowedFontOps" 566#define XtCDisallowedTcapOps "DisallowedTcapOps" 567#define XtCDisallowedWindowOps "DisallowedWindowOps" 568#define XtCDynamicColors "DynamicColors" 569#define XtCEightBitControl "EightBitControl" 570#define XtCEightBitInput "EightBitInput" 571#define XtCEightBitOutput "EightBitOutput" 572#define XtCEightBitSelectTypes "EightBitSelectTypes" 573#define XtCFaceName "FaceName" 574#define XtCFaceNameDoublesize "FaceNameDoublesize" 575#define XtCFaceSize "FaceSize" 576#define XtCFastScroll "FastScroll" 577#define XtCFont1 "Font1" 578#define XtCFont2 "Font2" 579#define XtCFont3 "Font3" 580#define XtCFont4 "Font4" 581#define XtCFont5 "Font5" 582#define XtCFont6 "Font6" 583#define XtCFontDoublesize "FontDoublesize" 584#define XtCFontStyle "FontStyle" 585#define XtCFontWarnings "FontWarnings" 586#define XtCForceBoxChars "ForceBoxChars" 587#define XtCForcePackedFont "ForcePackedFont" 588#define XtCFormatOtherKeys "FormatOtherKeys" 589#define XtCFreeBoldBox "FreeBoldBox" 590#define XtCFullscreen "Fullscreen" 591#define XtCHighlightColorMode "HighlightColorMode" 592#define XtCHighlightReverse "HighlightReverse" 593#define XtCHighlightSelection "HighlightSelection" 594#define XtCHpLowerleftBugCompat "HpLowerleftBugCompat" 595#define XtCI18nSelections "I18nSelections" 596#define XtCInitialFont "InitialFont" 597#define XtCJumpScroll "JumpScroll" 598#define XtCKeepSelection "KeepSelection" 599#define XtCKeyboardDialect "KeyboardDialect" 600#define XtCLimitResize "LimitResize" 601#define XtCLocale "Locale" 602#define XtCLocaleFilter "LocaleFilter" 603#define XtCLogInhibit "LogInhibit" 604#define XtCLogfile "Logfile" 605#define XtCLogging "Logging" 606#define XtCLoginShell "LoginShell" 607#define XtCMarginBell "MarginBell" 608#define XtCMaximized "Maximized" 609#define XtCMenuBar "MenuBar" 610#define XtCMenuHeight "MenuHeight" 611#define XtCMetaSendsEscape "MetaSendsEscape" 612#define XtCMkSamplePass "MkSamplePass" 613#define XtCMkSampleSize "MkSampleSize" 614#define XtCMkWidth "MkWidth" 615#define XtCModifyCursorKeys "ModifyCursorKeys" 616#define XtCModifyFunctionKeys "ModifyFunctionKeys" 617#define XtCModifyKeypadKeys "ModifyKeypadKeys" 618#define XtCModifyOtherKeys "ModifyOtherKeys" 619#define XtCModifyStringKeys "ModifyStringKeys" 620#define XtCMultiClickTime "MultiClickTime" 621#define XtCMultiScroll "MultiScroll" 622#define XtCNumLock "NumLock" 623#define XtCOldXtermFKeys "OldXtermFKeys" 624#define XtCPointerMode "PointerMode" 625#define XtCPopOnBell "PopOnBell" 626#define XtCPrintAttributes "PrintAttributes" 627#define XtCPrinterAutoClose "PrinterAutoClose" 628#define XtCPrinterCommand "PrinterCommand" 629#define XtCPrinterControlMode "PrinterControlMode" 630#define XtCPrinterExtent "PrinterExtent" 631#define XtCPrinterFormFeed "PrinterFormFeed" 632#define XtCPrinterNewLine "PrinterNewLine" 633#define XtCQuietGrab "QuietGrab" 634#define XtCRenderFont "RenderFont" 635#define XtCResizeGravity "ResizeGravity" 636#define XtCRetryInputMethod "RetryInputMethod" 637#define XtCReverseWrap "ReverseWrap" 638#define XtCRightScrollBar "RightScrollBar" 639#define XtCSaveLines "SaveLines" 640#define XtCScrollBar "ScrollBar" 641#define XtCScrollBarBorder "ScrollBarBorder" 642#define XtCScrollCond "ScrollCond" 643#define XtCScrollLines "ScrollLines" 644#define XtCScrollPos "ScrollPos" 645#define XtCSelectToClipboard "SelectToClipboard" 646#define XtCShiftFonts "ShiftFonts" 647#define XtCShowBlinkAsBold "ShowBlinkAsBold" 648#define XtCShowMissingGlyphs "ShowMissingGlyphs" 649#define XtCShowWrapMarks "ShowWrapMarks" 650#define XtCSignalInhibit "SignalInhibit" 651#define XtCTekInhibit "TekInhibit" 652#define XtCTekSmall "TekSmall" 653#define XtCTekStartup "TekStartup" 654#define XtCTiXtraScroll "TiXtraScroll" 655#define XtCTiteInhibit "TiteInhibit" 656#define XtCTitleModes "TitleModes" 657#define XtCToolBar "ToolBar" 658#define XtCTrimSelection "TrimSelection" 659#define XtCUnderLine "UnderLine" 660#define XtCUseClipping "UseClipping" 661#define XtCUtf8 "Utf8" 662#define XtCUtf8Latin1 "Utf8Latin1" 663#define XtCUtf8SelectTypes "Utf8SelectTypes" 664#define XtCUtf8Title "Utf8Title" 665#define XtCVT100Graphics "VT100Graphics" 666#define XtCVeryBoldColors "VeryBoldColors" 667#define XtCVisualBell "VisualBell" 668#define XtCVisualBellDelay "VisualBellDelay" 669#define XtCWideBoldFont "WideBoldFont" 670#define XtCWideChars "WideChars" 671#define XtCWideFont "WideFont" 672#define XtCXimFont "XimFont" 673#define XtCXmcAttributes "XmcAttributes" 674#define XtCXmcGlitch "XmcGlitch" 675#define XtCXmcInline "XmcInline" 676#define XtCXmcMoveSGR "XmcMoveSGR" 677 678#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry) 679#define XtNgeometry "geometry" 680#define XtCGeometry "Geometry" 681#endif 682 683#if OPT_COLOR_CLASS 684#define XtCCursorColor "CursorColor" 685#define XtCPointerColor "PointerColor" 686#define XtCHighlightColor "HighlightColor" 687#define XtCHighlightTextColor "HighlightTextColor" 688#else 689#define XtCCursorColor XtCForeground 690#define XtCPointerColor XtCForeground 691#define XtCHighlightColor XtCForeground 692#define XtCHighlightTextColor XtCBackground 693#endif 694 695/***====================================================================***/ 696 697#ifdef __cplusplus 698extern "C" { 699#endif 700 701struct XTERM_RESOURCE; 702 703/* Tekproc.c */ 704#if OPT_TEK4014 705extern TekWidget getTekWidget(Widget /* w */); 706extern int TekGetFontSize (const char * /* param */); 707extern int TekInit (void); 708extern int TekPtyData(void); 709extern void ChangeTekColors (TekWidget /* tw */, TScreen * /* screen */, ScrnColors * /* pNew */); 710extern void HandleGINInput PROTO_XT_ACTIONS_ARGS; 711extern void TCursorToggle (TekWidget /* tw */, int /* toggle */); 712extern void TekCopy (TekWidget /* tw */); 713extern void TekEnqMouse (TekWidget /* tw */, int /* c */); 714extern void TekExpose (Widget /* w */, XEvent * /* event */, Region /* region */); 715extern void TekGINoff (TekWidget /* tw */); 716extern void TekRefresh (TekWidget /* tw */); 717extern void TekRepaint (TekWidget /* xw */); 718extern void TekReverseVideo (TekWidget /* tw */); 719extern void TekRun (void); 720extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int /* newitem */); 721extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */); 722#endif 723 724/* button.c */ 725#define MotionOff( s, t ) if (!(screen->hide_pointer)) { \ 726 (s)->event_mask |= ButtonMotionMask; \ 727 (s)->event_mask &= ~PointerMotionMask; \ 728 XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); } 729 730#define MotionOn( s, t ) { \ 731 (s)->event_mask &= ~ButtonMotionMask; \ 732 (s)->event_mask |= PointerMotionMask; \ 733 XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); } 734 735extern Bool SendMousePosition (XtermWidget /* w */, XEvent* /* event */); 736extern void DiredButton PROTO_XT_ACTIONS_ARGS; 737extern void DisownSelection (XtermWidget /* termw */); 738extern void UnhiliteSelection (XtermWidget /* termw */); 739extern void HandleCopySelection PROTO_XT_ACTIONS_ARGS; 740extern void HandleInsertSelection PROTO_XT_ACTIONS_ARGS; 741extern void HandleKeyboardSelectEnd PROTO_XT_ACTIONS_ARGS; 742extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS; 743extern void HandleKeyboardSelectStart PROTO_XT_ACTIONS_ARGS; 744extern void HandleKeyboardStartExtend PROTO_XT_ACTIONS_ARGS; 745extern void HandleSelectEnd PROTO_XT_ACTIONS_ARGS; 746extern void HandleSelectExtend PROTO_XT_ACTIONS_ARGS; 747extern void HandleSelectSet PROTO_XT_ACTIONS_ARGS; 748extern void HandleSelectStart PROTO_XT_ACTIONS_ARGS; 749extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS; 750extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */); 751extern void ScrollSelection (TScreen * /* screen */, int /* amount */, Bool /* always */); 752extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */); 753extern void ViButton PROTO_XT_ACTIONS_ARGS; 754 755extern int xtermUtf8ToTextList(XtermWidget /* xw */, XTextProperty * /* text_prop */, char *** /* text_list */, int * /* text_list_count */); 756 757#if OPT_DEC_LOCATOR 758extern void GetLocatorPosition (XtermWidget /* w */); 759extern void InitLocatorFilter (XtermWidget /* w */); 760#endif /* OPT_DEC_LOCATOR */ 761 762#if OPT_FOCUS_EVENT 763extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event */); 764#else 765#define SendFocusBotton(xw, event) /* nothing */ 766#endif 767 768#if OPT_PASTE64 769extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned /* c */); 770extern void ClearSelectionBuffer (TScreen * /* screen */); 771extern void CompleteSelection (XtermWidget /* xw */, String * /* args */, Cardinal /* len */); 772extern void xtermGetSelection (Widget /* w */, Time /* ev_time */, String * /* params */, Cardinal /* num_params */, Atom * /* targets */); 773#endif 774 775#if OPT_READLINE 776extern void ReadLineButton PROTO_XT_ACTIONS_ARGS; 777#endif 778 779#if OPT_WIDE_CHARS 780extern Bool iswide(int /* i */); 781#define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1) 782#define isWide(n) (((IChar)(n) >= first_widechar) && iswide(n)) 783#else 784#define WideCells(n) 1 785#endif 786 787/* cachedCgs.c */ 788extern CgsEnum getCgsId(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 789extern GC freeCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/); 790extern GC getCgsGC(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/); 791extern Pixel getCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 792extern Pixel getCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 793extern XTermFonts * getCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 794extern void clrCgsFonts(XtermWidget /*xw*/, VTwin * /*cgsWin*/, XTermFonts * /*font*/); 795extern void copyCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/); 796extern void redoCgs(XtermWidget /*xw*/, Pixel /*fg*/, Pixel /*bg*/, CgsEnum /*cgsId*/); 797extern void setCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*bg*/); 798extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, unsigned /*cset*/); 799extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/); 800extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/); 801extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/); 802 803#ifdef NO_LEAKS 804extern void noleaks_cachedCgs (XtermWidget /* xw */); 805#endif 806 807/* charproc.c */ 808extern Bool CheckBufPtrs (TScreen * /* screen */); 809extern Bool set_cursor_gcs (XtermWidget /* xw */); 810extern int VTInit (XtermWidget /* xw */); 811extern void FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */); 812extern void HideCursor (void); 813extern void RestartBlinking(TScreen * /* screen */); 814extern void ShowCursor (void); 815extern void SwitchBufPtrs (TScreen * /* screen */, int /* toBuf */); 816extern void ToggleAlternate (XtermWidget /* xw */); 817extern void VTInitTranslations (void); 818extern void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */); 819extern void VTRun (XtermWidget /* xw */); 820extern void dotext (XtermWidget /* xw */, int /* charset */, IChar * /* buf */, Cardinal /* len */); 821extern void releaseCursorGCs(XtermWidget /*xw*/); 822extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/); 823extern void resetCharsets (TScreen * /* screen */); 824extern void set_max_col(TScreen * /* screen */, int /* cols */); 825extern void set_max_row(TScreen * /* screen */, int /* rows */); 826extern void set_tb_margins (TScreen * /* screen */, int /* top */, int /* bottom */); 827extern void unparse_end (XtermWidget /* xw */); 828extern void unparseputc (XtermWidget /* xw */, int /* c */); 829extern void unparseputc1 (XtermWidget /* xw */, int /* c */); 830extern void unparseputn (XtermWidget /* xw */, unsigned /* n */); 831extern void unparseputs (XtermWidget /* xw */, const char * /* s */); 832extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */); 833extern void v_write (int /* f */, const Char * /* d */, unsigned /* len */); 834extern void xtermAddInput(Widget /* w */); 835 836#if OPT_BLINK_CURS 837extern void ToggleCursorBlink(TScreen * /* screen */); 838#endif 839 840#if OPT_ISO_COLORS 841extern void SGR_Background (XtermWidget /* xw */, int /* color */); 842extern void SGR_Foreground (XtermWidget /* xw */, int /* color */); 843#endif 844 845#ifdef NO_LEAKS 846extern void noleaks_charproc (void); 847#endif 848 849/* charsets.c */ 850extern unsigned xtermCharSetIn (unsigned /* code */, int /* charset */); 851extern int xtermCharSetOut (XtermWidget /* xw */, IChar * /* buf */, IChar * /* ptr */, int /* charset */); 852 853/* cursor.c */ 854extern void AdjustSavedCursor (XtermWidget /* xw */, int /* adjust */); 855extern void CarriageReturn (TScreen * /* screen */); 856extern void CursorBack (XtermWidget /* xw */, int /* n */); 857extern void CursorDown (TScreen * /* screen */, int /* n */); 858extern void CursorForward (TScreen * /* screen */, int /* n */); 859extern void CursorNextLine (TScreen * /* screen */, int /* count */); 860extern void CursorPrevLine (TScreen * /* screen */, int /* count */); 861extern void CursorRestore (XtermWidget /* xw */); 862extern void CursorSave (XtermWidget /* xw */); 863extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */); 864extern void CursorUp (TScreen * /* screen */, int /* n */); 865extern void RevIndex (XtermWidget /* xw */, int /* amount */); 866extern void xtermIndex (XtermWidget /* xw */, int /* amount */); 867 868#if OPT_TRACE 869extern int set_cur_col(TScreen * /* screen */, int /* value */); 870extern int set_cur_row(TScreen * /* screen */, int /* value */); 871#else 872#define set_cur_col(screen, value) screen->cur_col = value 873#define set_cur_row(screen, value) screen->cur_row = value 874#endif 875 876/* doublechr.c */ 877extern void xterm_DECDHL (XtermWidget /* xw */, Bool /* top */); 878extern void xterm_DECSWL (XtermWidget /* xw */); 879extern void xterm_DECDWL (XtermWidget /* xw */); 880#if OPT_DEC_CHRSET 881extern int xterm_Double_index(XtermWidget /* xw */, unsigned /* chrset */, unsigned /* flags */); 882extern GC xterm_DoubleGC(XtermWidget /* xw */, unsigned /* chrset */, unsigned /* flags */, GC /* old_gc */, int * /* inxp */); 883#endif 884 885/* input.c */ 886extern unsigned xtermParamToState (XtermWidget /* xw */, unsigned /* param */); 887extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */); 888extern Bool xtermDeleteIsDEL (XtermWidget /* xw */); 889extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */); 890extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t /* nbytes */); 891 892#if OPT_NUM_LOCK 893extern void VTInitModifiers(XtermWidget /* xw */); 894#endif 895 896/* linedata.c */ 897extern LineData *getLineData(TScreen * /* screen */, int /* row */); 898extern void copyLineData(LineData * /* dst */, LineData * /* src */); 899extern void initLineData(XtermWidget /* xw */); 900 901extern CellData *newCellData(XtermWidget /* xw */, Cardinal /* count */); 902extern void saveCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, int /* column */); 903extern void restoreCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, int /* column */); 904 905/* main.c */ 906#ifndef __UNIXOS2__ 907#define ENVP_ARG /**/ 908#else 909#define ENVP_ARG , char ** /* envp */ 910#endif 911 912extern int main (int /* argc */, char ** /* argv */ ENVP_ARG); 913extern int GetBytesAvailable (int /* fd */); 914extern int kill_process_group (int /* pid */, int /* sig */); 915extern int nonblocking_wait (void); 916 917#if OPT_PTY_HANDSHAKE 918extern void first_map_occurred (void); 919#else 920#define first_map_occurred() /* nothing */ 921#endif 922 923#ifdef SIGNAL_T 924extern SIGNAL_T Exit (int /* n */); 925#endif 926 927#ifndef SIG_ATOMIC_T 928#define SIG_ATOMIC_T int 929#endif 930 931#if OPT_WIDE_CHARS 932extern unsigned first_widechar; 933extern int (*my_wcwidth)(wchar_t); 934#endif 935 936/* menu.c */ 937extern void do_hangup PROTO_XT_CALLBACK_ARGS; 938extern void repairSizeHints (void); 939extern void show_8bit_control (Bool /* value */); 940 941/* misc.c */ 942extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool); 943extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */); 944extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal); 945extern Window WMFrameWindow(XtermWidget /* termw */); 946extern XrmOptionDescRec * sortedOptDescs(XrmOptionDescRec *, Cardinal); 947extern XtermWidget getXtermWidget(Widget /* w */); 948extern char *udk_lookup (int /* keycode */, int * /* len */); 949extern char *xtermEnvEncoding (void); 950extern char *xtermEnvLocale (void); 951extern char *xtermFindShell(char * /* leaf */, Bool /* warning */); 952extern char *xtermVersion(void); 953extern const char *SysErrorMsg (int /* n */); 954extern const char *SysReasonMsg (int /* n */); 955extern int ResetAnsiColorRequest(XtermWidget, char *, int); 956extern int XStrCmp (char * /* s1 */, char * /* s2 */); 957extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, int /* mode */); 958extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */); 959extern int xerror (Display * /* d */, XErrorEvent * /* ev */); 960extern int xioerror (Display * /* dpy */); 961extern int xtermResetIds(TScreen * /* screen */); 962extern void Bell (XtermWidget /* xw */, int /* which */, int /* percent */); 963extern void ChangeIconName (XtermWidget /* xw */, char * /* name */); 964extern void ChangeTitle (XtermWidget /* xw */, char * /* name */); 965extern void ChangeXprop (char * /* name */); 966extern void Cleanup (int /* code */); 967extern void HandleBellPropertyChange PROTO_XT_EV_HANDLER_ARGS; 968extern void HandleEightBitKeyPressed PROTO_XT_ACTIONS_ARGS; 969extern void HandleEnterWindow PROTO_XT_EV_HANDLER_ARGS; 970extern void HandleFocusChange PROTO_XT_EV_HANDLER_ARGS; 971extern void HandleInterpret PROTO_XT_ACTIONS_ARGS; 972extern void HandleKeyPressed PROTO_XT_ACTIONS_ARGS; 973extern void HandleLeaveWindow PROTO_XT_EV_HANDLER_ARGS; 974extern void HandleSpawnTerminal PROTO_XT_ACTIONS_ARGS; 975extern void HandleStringEvent PROTO_XT_ACTIONS_ARGS; 976extern void Panic (const char * /* s */, int /* a */); 977extern void Redraw (void); 978extern void ReverseOldColors (void); 979extern void SysError (int /* i */) GCC_NORETURN; 980extern void VisualBell (void); 981extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t /* len */); 982extern void do_decrpm (XtermWidget /* xw */, int /* nparam */, int * /* params */); 983extern void do_osc (XtermWidget /* xw */, Char * /* buf */, size_t /* len */, int /* final */); 984extern void do_rpm (XtermWidget /* xw */, int /* nparam */, int * /* params */); 985extern void do_xevents (void); 986extern void end_tek_mode (void); 987extern void end_vt_mode (void); 988extern void hide_tek_window (void); 989extern void hide_vt_window (void); 990extern void reset_decudk (void); 991extern void set_tek_visibility (Bool /* on */); 992extern void set_vt_visibility (Bool /* on */); 993extern void switch_modes (Bool /* tovt */); 994extern void timestamp_filename(char * /* dst */, const char * /* src */); 995extern void xevents (void); 996extern void xt_error (String /* message */); 997extern void xtermBell(XtermWidget /* xw */, int /* which */, int /* percent */); 998extern void xtermCopyEnv (char ** /* oldenv */); 999extern void xtermDisplayCursor (XtermWidget /* xw */); 1000extern void xtermSetenv (const char * /* var */, const char * /* value */); 1001extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */); 1002 1003#if OPT_DABBREV 1004extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS; 1005#endif 1006 1007#if OPT_MAXIMIZE 1008extern int QueryMaximize (XtermWidget /* termw */, unsigned * /* width */, unsigned * /* height */); 1009extern void HandleDeIconify PROTO_XT_ACTIONS_ARGS; 1010extern void HandleIconify PROTO_XT_ACTIONS_ARGS; 1011extern void HandleMaximize PROTO_XT_ACTIONS_ARGS; 1012extern void HandleRestoreSize PROTO_XT_ACTIONS_ARGS; 1013extern void RequestMaximize (XtermWidget /* termw */, int /* maximize */); 1014#endif 1015 1016#if OPT_SCROLL_LOCK 1017extern void GetScrollLock (TScreen * /* screen */); 1018extern void HandleScrollLock PROTO_XT_ACTIONS_ARGS; 1019extern void ShowScrollLock (TScreen * /* screen */, Bool /* enable */); 1020extern void SetScrollLock (TScreen * /* screen */, Bool /* enable */); 1021extern void xtermShowLED (TScreen * /* screen */, Cardinal /* led_number */, Bool /* enable */); 1022extern void xtermClearLEDs (TScreen * /* screen */); 1023#else 1024#define ShowScrollLock(screen, enable) /* nothing */ 1025#define SetScrollLock(screen, enable) /* nothing */ 1026#define GetScrollLock(screen) /* nothing */ 1027#endif 1028 1029#if OPT_WIDE_CHARS 1030extern Bool xtermEnvUTF8(void); 1031#else 1032#define xtermEnvUTF8() False 1033#endif 1034 1035#ifdef ALLOWLOGGING 1036extern void StartLog (XtermWidget /* xw */); 1037extern void CloseLog (XtermWidget /* xw */); 1038extern void FlushLog (XtermWidget /* xw */); 1039#else 1040#define FlushLog(xw) /*nothing*/ 1041#endif 1042 1043/* print.c */ 1044extern Bool xtermHasPrinter (XtermWidget /* xw */); 1045extern PrinterFlags *getPrinterFlags(XtermWidget /* xw */, String * /* params */, Cardinal * /* param_count */); 1046extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */); 1047extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */); 1048extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */); 1049extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */); 1050extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */); 1051extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */); 1052 1053/* ptydata.c */ 1054#ifdef VMS 1055#define PtySelect int 1056#else 1057#define PtySelect fd_set 1058#endif 1059 1060extern Bool decodeUtf8 (PtyData * /* data */); 1061extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */); 1062extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, int /* length */); 1063extern void initPtyData (PtyData ** /* data */); 1064extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */); 1065 1066#ifdef NO_LEAKS 1067extern void noleaks_ptydata ( void ); 1068#endif 1069 1070#if OPT_WIDE_CHARS 1071extern Char *convertToUTF8 (Char * /* lp */, unsigned /* c */); 1072extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */); 1073extern IChar skipPtyData (PtyData * /* data */); 1074extern PtyData * fakePtyData(PtyData * /* result */, Char * /* next */, Char * /* last */); 1075extern void switchPtyData (TScreen * /* screen */, int /* f */); 1076extern void writePtyData (int /* f */, IChar * /* d */, unsigned /* len */); 1077 1078#define morePtyData(screen,data) \ 1079 (((data)->last > (data)->next) \ 1080 ? (((screen)->utf8_inparse && !(data)->utf_size) \ 1081 ? decodeUtf8(data) \ 1082 : True) \ 1083 : False) 1084#else 1085#define morePtyData(screen, data) ((data)->last > (data)->next) 1086#define nextPtyData(screen, data) (IChar) (*((data)->next++) & \ 1087 (screen->output_eight_bits \ 1088 ? 0xff \ 1089 : 0x7f)) 1090#define writePtyData(f,d,len) v_write(f,d,len) 1091#endif 1092 1093/* screen.c */ 1094extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */); 1095extern Char * allocScrnData(TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */); 1096extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */); 1097extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */); 1098extern int ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */); 1099extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */); 1100extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */); 1101extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */); 1102extern void FullScreen(XtermWidget /* xw */, Bool /* enabled */); 1103extern void ScrnAllocBuf (XtermWidget /* xw */); 1104extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); 1105extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */); 1106extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* n */, int /* last */, unsigned /* where */); 1107extern void ScrnDisownSelection (XtermWidget /* xw */); 1108extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *, int , unsigned /* flags */, Bool /* keepColors */); 1109extern void ScrnInsertChar (XtermWidget /* xw */, unsigned /* n */); 1110extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* last */, int /* where */, unsigned /* n */); 1111extern void ScrnRefresh (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); 1112extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); 1113extern void ScrnWriteText (XtermWidget /* xw */, IChar * /* str */, unsigned /* flags */, unsigned /* cur_fg_bg */, unsigned /* length */); 1114extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, LineData * /* ld */); 1115extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */); 1116extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *); 1117 1118#if OPT_TRACE && OPT_TRACE_FLAGS 1119extern int LineTstFlag(LineData /* ld */, int /* flag */); 1120extern void LineClrFlag(LineData /* ld */, int /* flag */); 1121extern void LineSetFlag(LineData /* ld */, int /* flag */); 1122#else 1123 1124#define LineFlags(ld) GetLineFlags(ld) 1125 1126#define LineClrFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) & ~ (flag))) 1127#define LineSetFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) | (flag))) 1128#define LineTstFlag(ld, flag) ((GetLineFlags(ld) & flag) != 0) 1129 1130#endif /* OPT_TRACE && OPT_TRACE_FLAGS */ 1131 1132#define LineClrBlinked(ld) LineClrFlag(ld, LINEBLINKED) 1133#define LineSetBlinked(ld) LineSetFlag(ld, LINEBLINKED) 1134#define LineTstBlinked(ld) LineTstFlag(ld, LINEBLINKED) 1135 1136#define LineClrWrapped(ld) LineClrFlag(ld, LINEWRAPPED) 1137#define LineSetWrapped(ld) LineSetFlag(ld, LINEWRAPPED) 1138#define LineTstWrapped(ld) LineTstFlag(ld, LINEWRAPPED) 1139 1140#define ScrnHaveSelection(screen) \ 1141 ((screen)->startH.row != (screen)->endH.row \ 1142 || (screen)->startH.col != (screen)->endH.col) 1143 1144#define ScrnAreLinesInSelection(screen, first, last) \ 1145 ((last) >= (screen)->startH.row && (first) <= (screen)->endH.row) 1146 1147#define ScrnIsLineInSelection(screen, line) \ 1148 ((line) >= (screen)->startH.row && (line) <= (screen)->endH.row) 1149 1150#define ScrnHaveLineMargins(screen) \ 1151 ((screen)->top_marg != 0 \ 1152 || ((screen)->bot_marg != screen->max_row)) 1153 1154#define ScrnIsLineInMargins(screen, line) \ 1155 ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg) 1156 1157#if OPT_DEC_RECTOPS 1158extern void ScrnCopyRectangle (XtermWidget /* xw */, XTermRect *, int, int *); 1159extern void ScrnMarkRectangle (XtermWidget /* xw */, XTermRect *, Bool, int, int *); 1160extern void ScrnWipeRectangle (XtermWidget /* xw */, XTermRect *); 1161#endif 1162 1163#if OPT_WIDE_CHARS 1164extern void ChangeToWide(XtermWidget /* xw */); 1165#endif 1166 1167/* scrollback.c */ 1168extern LineData *getScrollback (TScreen * /* screen */, int /* row */); 1169extern LineData *addScrollback (TScreen * /* screen */); 1170extern void deleteScrollback (TScreen * /* screen */, int /* row */); 1171 1172/* scrollbar.c */ 1173extern void DoResizeScreen (XtermWidget /* xw */); 1174extern void HandleScrollBack PROTO_XT_ACTIONS_ARGS; 1175extern void HandleScrollForward PROTO_XT_ACTIONS_ARGS; 1176extern void ResizeScrollBar (XtermWidget /* xw */); 1177extern void ScrollBarDrawThumb (Widget /* scrollWidget */); 1178extern void ScrollBarOff (XtermWidget /* xw */); 1179extern void ScrollBarOn (XtermWidget /* xw */, Bool /* init */); 1180extern void ScrollBarReverseVideo (Widget /* scrollWidget */); 1181extern void ToggleScrollBar (XtermWidget /* xw */); 1182extern void WindowScroll (XtermWidget /* xw */, int /* top */, Bool /* always */); 1183 1184#ifdef SCROLLBAR_RIGHT 1185extern void updateRightScrollbar(XtermWidget /* xw */); 1186#else 1187#define updateRightScrollbar(xw) /* nothing */ 1188#endif 1189 1190/* tabs.c */ 1191extern Bool TabToNextStop (XtermWidget /* xw */); 1192extern Bool TabToPrevStop (XtermWidget /* xw */); 1193extern void TabClear (Tabs /* tabs */, int /* col */); 1194extern void TabReset (Tabs /* tabs */); 1195extern void TabSet (Tabs /* tabs */, int /* col */); 1196extern void TabZonk (Tabs /* tabs */); 1197 1198/* util.c */ 1199extern Boolean isDefaultBackground(const char * /* name */); 1200extern Boolean isDefaultForeground(const char * /* name */); 1201extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, unsigned /* fg_bg */, Bool /* hilite */); 1202extern int AddToRefresh (XtermWidget /* xw */); 1203extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); 1204extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */); 1205extern int drawXtermText (XtermWidget /* xw */, unsigned /* flags */, GC /* gc */, int /* x */, int /* y */, int /* chrset */, IChar * /* text */, Cardinal /* len */, int /* on_wide */); 1206extern int extendedBoolean(const char * /* value */, FlagList * /* table */, Cardinal /* limit */); 1207extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */); 1208extern void ClearRight (XtermWidget /* xw */, int /* n */); 1209extern void ClearScreen (XtermWidget /* xw */); 1210extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */); 1211extern void DeleteLine (XtermWidget /* xw */, int /* n */); 1212extern void FlushScroll (XtermWidget /* xw */); 1213extern void GetColors (XtermWidget /* xw */, ScrnColors * /* pColors */); 1214extern void InsertChar (XtermWidget /* xw */, unsigned /* n */); 1215extern void InsertLine (XtermWidget /* xw */, int /* n */); 1216extern void RevScroll (XtermWidget /* xw */, int /* amount */); 1217extern void ReverseVideo (XtermWidget /* termw */); 1218extern void WriteText (XtermWidget /* xw */, IChar * /* str */, Cardinal /* len */); 1219extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */); 1220extern void decode_wcwidth (XtermWidget /* xw */); 1221extern void do_erase_display (XtermWidget /* xw */, int /* param */, int /* mode */); 1222extern void do_erase_line (XtermWidget /* xw */, int /* param */, int /* mode */); 1223extern void getXtermSizeHints (XtermWidget /* xw */); 1224extern void init_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */); 1225extern void recolor_cursor (TScreen * /* screen */, Cursor /* cursor */, unsigned long /* fg */, unsigned long /* bg */); 1226extern void resetXtermGC (XtermWidget /* xw */, unsigned /* flags */, Bool /* hilite */); 1227extern void scrolling_copy_area (XtermWidget /* xw */, int /* firstline */, int /* nlines */, int /* amount */); 1228extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */); 1229extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */); 1230extern void update_keyboard_type (void); 1231extern void xtermClear (XtermWidget /* xw */); 1232extern void xtermRepaint (XtermWidget /* xw */); 1233extern void xtermScroll (XtermWidget /* xw */, int /* amount */); 1234extern void xtermSizeHints (XtermWidget /* xw */, int /* scrollbarWidth */); 1235 1236#if OPT_ISO_COLORS 1237 1238extern unsigned extract_fg (XtermWidget /* xw */, unsigned /* color */, unsigned /* flags */); 1239extern unsigned extract_bg (XtermWidget /* xw */, unsigned /* color */, unsigned /* flags */); 1240extern CellColor makeColorPair (int /* fg */, int /* bg */); 1241extern void ClearCurBackground (XtermWidget /* xw */, int /* top */, int /* left */, unsigned /* height */, unsigned /* width */); 1242 1243#define xtermColorPair(xw) makeColorPair(xw->sgr_foreground, xw->sgr_background) 1244 1245#define getXtermForeground(xw, flags, color) \ 1246 (((flags) & FG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \ 1247 ? GET_COLOR_RES(xw, TScreenOf(xw)->Acolors[color]) \ 1248 : T_COLOR(TScreenOf(xw), TEXT_FG)) 1249 1250#define getXtermBackground(xw, flags, color) \ 1251 (((flags) & BG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \ 1252 ? GET_COLOR_RES(xw, TScreenOf(xw)->Acolors[color]) \ 1253 : T_COLOR(TScreenOf(xw), TEXT_BG)) 1254 1255#if OPT_COLOR_RES 1256#define GET_COLOR_RES(xw, res) xtermGetColorRes(xw, &(res)) 1257#define SET_COLOR_RES(res,color) (res)->value = color 1258#define EQL_COLOR_RES(res,color) (res)->value == color 1259#define T_COLOR(v,n) (v)->Tcolors[n].value 1260extern Pixel xtermGetColorRes(XtermWidget /* xw */, ColorRes * /* res */); 1261#else 1262#define GET_COLOR_RES(xw, res) res 1263#define SET_COLOR_RES(res,color) *res = color 1264#define EQL_COLOR_RES(res,color) *res == color 1265#define T_COLOR(v,n) (v)->Tcolors[n] 1266#endif 1267 1268#define ExtractForeground(color) (unsigned) GetCellColorFG(color) 1269#define ExtractBackground(color) (unsigned) GetCellColorBG(color) 1270 1271#define MapToColorMode(fg, screen, flags) \ 1272 (((screen)->colorBLMode && ((flags) & BLINK)) \ 1273 ? COLOR_BL \ 1274 : (((screen)->colorBDMode && ((flags) & BOLD)) \ 1275 ? COLOR_BD \ 1276 : (((screen)->colorULMode && ((flags) & UNDERLINE)) \ 1277 ? COLOR_UL \ 1278 : fg))) 1279 1280#define checkVeryBoldAttr(flags, fg, code, attr) \ 1281 if ((flags & FG_COLOR) != 0 \ 1282 && (screen->veryBoldColors & attr) == 0 \ 1283 && (flags & attr) != 0 \ 1284 && (fg == code)) \ 1285 UIntClr(flags, attr) 1286 1287#define checkVeryBoldColors(flags, fg) \ 1288 checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \ 1289 checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \ 1290 checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \ 1291 checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK) 1292 1293#else /* !OPT_ISO_COLORS */ 1294 1295#define MapToColorMode(fg, screen, flags) fg 1296 1297#define ClearDFtBackground(xw, top, left, height, width) \ 1298 ClearCurBackground(xw, top, left, height, width) 1299 1300#define ClearCurBackground(xw, top, left, height, width) \ 1301 XClearArea (TScreenOf(xw)->display, VWindow(TScreenOf(xw)), \ 1302 left, top, width, height, False) 1303 1304#define extract_fg(xw, color, flags) (xw)->cur_foreground 1305#define extract_bg(xw, color, flags) (xw)->cur_background 1306 1307 /* FIXME: Reverse-Video? */ 1308#define T_COLOR(v,n) (v)->Tcolors[n] 1309#define getXtermBackground(xw, flags, color) T_COLOR(TScreenOf(xw), TEXT_BG) 1310#define getXtermForeground(xw, flags, color) T_COLOR(TScreenOf(xw), TEXT_FG) 1311#define makeColorPair(fg, bg) 0 1312#define xtermColorPair(xw) 0 1313 1314#define checkVeryBoldColors(flags, fg) /* nothing */ 1315 1316#endif /* OPT_ISO_COLORS */ 1317 1318#define XTERM_CELL(row,col) getXtermCell(screen, ROW2INX(screen, row), col) 1319 1320extern unsigned getXtermCell (TScreen * /* screen */, int /* row */, int /* col */); 1321extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */, int /* ch */); 1322 1323#if OPT_HIGHLIGHT_COLOR 1324#define isNotForeground(xw, fg, bg, sel) \ 1325 (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_FG) \ 1326 && (sel) != (fg) \ 1327 && (sel) != (bg) \ 1328 && (sel) != (xw)->dft_foreground) 1329#define isNotBackground(xw, fg, bg, sel) \ 1330 (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_BG) \ 1331 && (sel) != (fg) \ 1332 && (sel) != (bg) \ 1333 && (sel) != (xw)->dft_background) 1334#endif 1335 1336#if OPT_WIDE_CHARS 1337extern Boolean isWideControl(unsigned /* ch */); 1338extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */); 1339extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */); 1340extern unsigned AsciiEquivs(unsigned /* ch */); 1341extern void addXtermCombining (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* ch */); 1342extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */); 1343#endif 1344 1345#if OPT_XMC_GLITCH 1346extern void Mark_XMC (XtermWidget /* xw */, int /* param */); 1347extern void Jump_XMC (XtermWidget /* xw */); 1348extern void Resolve_XMC (XtermWidget /* xw */); 1349#endif 1350 1351#if OPT_WIDE_CHARS 1352unsigned visual_width(IChar * /* str */, Cardinal /* len */); 1353#else 1354#define visual_width(a, b) (b) 1355#endif 1356 1357#define BtoS(b) (((b) == Maybe) ? "maybe" : ((b) ? "on" : "off")) 1358#define NonNull(s) ((s) ? (s) : "<null>") 1359 1360#define UIntSet(dst,bits) dst = dst | (unsigned) (bits) 1361#define UIntClr(dst,bits) dst = dst & (unsigned) ~(bits) 1362 1363#ifdef __cplusplus 1364 } 1365#endif 1366/* *INDENT-ON* */ 1367 1368#endif /* included_xterm_h */ 1369