xterm.h revision e39b573c
1/* $XTermId: xterm.h,v 1.654 2011/07/12 08:39:49 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 XtNallowBoldFonts "allowBoldFonts" 344#define XtNallowC1Printable "allowC1Printable" 345#define XtNallowColorOps "allowColorOps" 346#define XtNallowFontOps "allowFontOps" 347#define XtNallowScrollLock "allowScrollLock" 348#define XtNallowSendEvents "allowSendEvents" 349#define XtNallowTcapOps "allowTcapOps" 350#define XtNallowTitleOps "allowTitleOps" 351#define XtNallowWindowOps "allowWindowOps" 352#define XtNaltIsNotMeta "altIsNotMeta" 353#define XtNaltSendsEscape "altSendsEscape" 354#define XtNalwaysBoldMode "alwaysBoldMode" 355#define XtNalwaysHighlight "alwaysHighlight" 356#define XtNalwaysUseMods "alwaysUseMods" 357#define XtNanswerbackString "answerbackString" 358#define XtNappcursorDefault "appcursorDefault" 359#define XtNappkeypadDefault "appkeypadDefault" 360#define XtNautoWrap "autoWrap" 361#define XtNawaitInput "awaitInput" 362#define XtNbackarrowKey "backarrowKey" 363#define XtNbellIsUrgent "bellIsUrgent" 364#define XtNbellOnReset "bellOnReset" 365#define XtNbellSuppressTime "bellSuppressTime" 366#define XtNboldColors "boldColors" 367#define XtNboldFont "boldFont" 368#define XtNboldMode "boldMode" 369#define XtNbrokenLinuxOSC "brokenLinuxOSC" 370#define XtNbrokenSelections "brokenSelections" 371#define XtNbrokenStringTerm "brokenStringTerm" 372#define XtNc132 "c132" 373#define XtNcacheDoublesize "cacheDoublesize" 374#define XtNcharClass "charClass" 375#define XtNcjkWidth "cjkWidth" 376#define XtNcolorAttrMode "colorAttrMode" 377#define XtNcolorBDMode "colorBDMode" 378#define XtNcolorBLMode "colorBLMode" 379#define XtNcolorMode "colorMode" 380#define XtNcolorRVMode "colorRVMode" 381#define XtNcolorULMode "colorULMode" 382#define XtNcombiningChars "combiningChars" 383#define XtNctrlFKeys "ctrlFKeys" 384#define XtNcurses "curses" 385#define XtNcursorBlink "cursorBlink" 386#define XtNcursorColor "cursorColor" 387#define XtNcursorOffTime "cursorOffTime" 388#define XtNcursorOnTime "cursorOnTime" 389#define XtNcursorUnderline "cursorUnderLine" 390#define XtNcutNewline "cutNewline" 391#define XtNcutToBeginningOfLine "cutToBeginningOfLine" 392#define XtNdecTerminalID "decTerminalID" 393#define XtNdefaultString "defaultString" 394#define XtNdeleteIsDEL "deleteIsDEL" 395#define XtNdisallowedColorOps "disallowedColorOps" 396#define XtNdisallowedFontOps "disallowedFontOps" 397#define XtNdisallowedTcapOps "disallowedTcapOps" 398#define XtNdisallowedWindowOps "disallowedWindowOps" 399#define XtNdynamicColors "dynamicColors" 400#define XtNeightBitControl "eightBitControl" 401#define XtNeightBitInput "eightBitInput" 402#define XtNeightBitOutput "eightBitOutput" 403#define XtNeightBitSelectTypes "eightBitSelectTypes" 404#define XtNfaceName "faceName" 405#define XtNfaceNameDoublesize "faceNameDoublesize" 406#define XtNfaceSize "faceSize" 407#define XtNfastScroll "fastScroll" 408#define XtNfont1 "font1" 409#define XtNfont2 "font2" 410#define XtNfont3 "font3" 411#define XtNfont4 "font4" 412#define XtNfont5 "font5" 413#define XtNfont6 "font6" 414#define XtNfontDoublesize "fontDoublesize" 415#define XtNfontStyle "fontStyle" 416#define XtNfontWarnings "fontWarnings" 417#define XtNforceBoxChars "forceBoxChars" 418#define XtNforcePackedFont "forcePackedFont" 419#define XtNformatOtherKeys "formatOtherKeys" 420#define XtNfreeBoldBox "freeBoldBox" 421#define XtNfullscreen "fullscreen" 422#define XtNhighlightColor "highlightColor" 423#define XtNhighlightColorMode "highlightColorMode" 424#define XtNhighlightReverse "highlightReverse" 425#define XtNhighlightSelection "highlightSelection" 426#define XtNhighlightTextColor "highlightTextColor" 427#define XtNhpLowerleftBugCompat "hpLowerleftBugCompat" 428#define XtNi18nSelections "i18nSelections" 429#define XtNinitialFont "initialFont" 430#define XtNinternalBorder "internalBorder" 431#define XtNitalicULMode "italicULMode" 432#define XtNjumpScroll "jumpScroll" 433#define XtNkeepSelection "keepSelection" 434#define XtNkeyboardDialect "keyboardDialect" 435#define XtNlimitResize "limitResize" 436#define XtNlocale "locale" 437#define XtNlocaleFilter "localeFilter" 438#define XtNlogFile "logFile" 439#define XtNlogInhibit "logInhibit" 440#define XtNlogging "logging" 441#define XtNloginShell "loginShell" 442#define XtNmarginBell "marginBell" 443#define XtNmaximized "maximized" 444#define XtNmenuBar "menuBar" 445#define XtNmenuHeight "menuHeight" 446#define XtNmetaSendsEscape "metaSendsEscape" 447#define XtNmkSamplePass "mkSamplePass" 448#define XtNmkSampleSize "mkSampleSize" 449#define XtNmkWidth "mkWidth" 450#define XtNmodifyCursorKeys "modifyCursorKeys" 451#define XtNmodifyFunctionKeys "modifyFunctionKeys" 452#define XtNmodifyKeypadKeys "modifyKeypadKeys" 453#define XtNmodifyOtherKeys "modifyOtherKeys" 454#define XtNmodifyStringKeys "modifyStringKeys" 455#define XtNmultiClickTime "multiClickTime" 456#define XtNmultiScroll "multiScroll" 457#define XtNnMarginBell "nMarginBell" 458#define XtNnumLock "numLock" 459#define XtNoldXtermFKeys "oldXtermFKeys" 460#define XtNpointerColor "pointerColor" 461#define XtNpointerColorBackground "pointerColorBackground" 462#define XtNpointerMode "pointerMode" 463#define XtNpointerShape "pointerShape" 464#define XtNpopOnBell "popOnBell" 465#define XtNprintAttributes "printAttributes" 466#define XtNprinterAutoClose "printerAutoClose" 467#define XtNprinterCommand "printerCommand" 468#define XtNprinterControlMode "printerControlMode" 469#define XtNprinterExtent "printerExtent" 470#define XtNprinterFormFeed "printerFormFeed" 471#define XtNprinterNewLine "printerNewLine" 472#define XtNquietGrab "quietGrab" 473#define XtNrenderFont "renderFont" 474#define XtNresizeGravity "resizeGravity" 475#define XtNretryInputMethod "retryInputMethod" 476#define XtNreverseWrap "reverseWrap" 477#define XtNrightScrollBar "rightScrollBar" 478#define XtNsaveLines "saveLines" 479#define XtNscrollBar "scrollBar" 480#define XtNscrollBarBorder "scrollBarBorder" 481#define XtNscrollKey "scrollKey" 482#define XtNscrollLines "scrollLines" 483#define XtNscrollPos "scrollPos" 484#define XtNscrollTtyOutput "scrollTtyOutput" 485#define XtNselectToClipboard "selectToClipboard" 486#define XtNshiftFonts "shiftFonts" 487#define XtNshowBlinkAsBold "showBlinkAsBold" 488#define XtNshowMissingGlyphs "showMissingGlyphs" 489#define XtNshowWrapMarks "showWrapMarks" 490#define XtNsignalInhibit "signalInhibit" 491#define XtNtekGeometry "tekGeometry" 492#define XtNtekInhibit "tekInhibit" 493#define XtNtekSmall "tekSmall" 494#define XtNtekStartup "tekStartup" 495#define XtNtiXtraScroll "tiXtraScroll" 496#define XtNtiteInhibit "titeInhibit" 497#define XtNtitleModes "titleModes" 498#define XtNtoolBar "toolBar" 499#define XtNtrimSelection "trimSelection" 500#define XtNunderLine "underLine" 501#define XtNuseClipping "useClipping" 502#define XtNutf8 "utf8" 503#define XtNutf8Fonts "utf8Fonts" 504#define XtNutf8Latin1 "utf8Latin1" 505#define XtNutf8SelectTypes "utf8SelectTypes" 506#define XtNutf8Title "utf8Title" 507#define XtNveryBoldColors "veryBoldColors" 508#define XtNvisualBell "visualBell" 509#define XtNvisualBellDelay "visualBellDelay" 510#define XtNvt100Graphics "vt100Graphics" 511#define XtNwideBoldFont "wideBoldFont" 512#define XtNwideChars "wideChars" 513#define XtNwideFont "wideFont" 514#define XtNximFont "ximFont" 515#define XtNxmcAttributes "xmcAttributes" 516#define XtNxmcGlitch "xmcGlitch" 517#define XtNxmcInline "xmcInline" 518#define XtNxmcMoveSGR "xmcMoveSGR" 519 520#define XtCAllowBoldFonts "AllowBoldFonts" 521#define XtCAllowC1Printable "AllowC1Printable" 522#define XtCAllowColorOps "AllowColorOps" 523#define XtCAllowFontOps "AllowFontOps" 524#define XtCAllowScrollLock "AllowScrollLock" 525#define XtCAllowSendEvents "AllowSendEvents" 526#define XtCAllowTcapOps "AllowTcapOps" 527#define XtCAllowTitleOps "AllowTitleOps" 528#define XtCAllowWindowOps "AllowWindowOps" 529#define XtCAltIsNotMeta "AltIsNotMeta" 530#define XtCAltSendsEscape "AltSendsEscape" 531#define XtCAlwaysBoldMode "AlwaysBoldMode" 532#define XtCAlwaysHighlight "AlwaysHighlight" 533#define XtCAlwaysUseMods "AlwaysUseMods" 534#define XtCAnswerbackString "AnswerbackString" 535#define XtCAppcursorDefault "AppcursorDefault" 536#define XtCAppkeypadDefault "AppkeypadDefault" 537#define XtCAutoWrap "AutoWrap" 538#define XtCAwaitInput "AwaitInput" 539#define XtCBackarrowKey "BackarrowKey" 540#define XtCBellIsUrgent "BellIsUrgent" 541#define XtCBellOnReset "BellOnReset" 542#define XtCBellSuppressTime "BellSuppressTime" 543#define XtCBoldFont "BoldFont" 544#define XtCBoldMode "BoldMode" 545#define XtCBrokenLinuxOSC "BrokenLinuxOSC" 546#define XtCBrokenSelections "BrokenSelections" 547#define XtCBrokenStringTerm "BrokenStringTerm" 548#define XtCC132 "C132" 549#define XtCCacheDoublesize "CacheDoublesize" 550#define XtCCharClass "CharClass" 551#define XtCCjkWidth "CjkWidth" 552#define XtCColorAttrMode "ColorAttrMode" 553#define XtCColorMode "ColorMode" 554#define XtCColumn "Column" 555#define XtCCombiningChars "CombiningChars" 556#define XtCCtrlFKeys "CtrlFKeys" 557#define XtCCurses "Curses" 558#define XtCCursorBlink "CursorBlink" 559#define XtCCursorOffTime "CursorOffTime" 560#define XtCCursorOnTime "CursorOnTime" 561#define XtCCursorUnderline "CursorUnderLine" 562#define XtCCutNewline "CutNewline" 563#define XtCCutToBeginningOfLine "CutToBeginningOfLine" 564#define XtCDecTerminalID "DecTerminalID" 565#define XtCDefaultString "DefaultString" 566#define XtCDeleteIsDEL "DeleteIsDEL" 567#define XtCDisallowedColorOps "DisallowedColorOps" 568#define XtCDisallowedFontOps "DisallowedFontOps" 569#define XtCDisallowedTcapOps "DisallowedTcapOps" 570#define XtCDisallowedWindowOps "DisallowedWindowOps" 571#define XtCDynamicColors "DynamicColors" 572#define XtCEightBitControl "EightBitControl" 573#define XtCEightBitInput "EightBitInput" 574#define XtCEightBitOutput "EightBitOutput" 575#define XtCEightBitSelectTypes "EightBitSelectTypes" 576#define XtCFaceName "FaceName" 577#define XtCFaceNameDoublesize "FaceNameDoublesize" 578#define XtCFaceSize "FaceSize" 579#define XtCFastScroll "FastScroll" 580#define XtCFont1 "Font1" 581#define XtCFont2 "Font2" 582#define XtCFont3 "Font3" 583#define XtCFont4 "Font4" 584#define XtCFont5 "Font5" 585#define XtCFont6 "Font6" 586#define XtCFontDoublesize "FontDoublesize" 587#define XtCFontStyle "FontStyle" 588#define XtCFontWarnings "FontWarnings" 589#define XtCForceBoxChars "ForceBoxChars" 590#define XtCForcePackedFont "ForcePackedFont" 591#define XtCFormatOtherKeys "FormatOtherKeys" 592#define XtCFreeBoldBox "FreeBoldBox" 593#define XtCFullscreen "Fullscreen" 594#define XtCHighlightColorMode "HighlightColorMode" 595#define XtCHighlightReverse "HighlightReverse" 596#define XtCHighlightSelection "HighlightSelection" 597#define XtCHpLowerleftBugCompat "HpLowerleftBugCompat" 598#define XtCI18nSelections "I18nSelections" 599#define XtCInitialFont "InitialFont" 600#define XtCJumpScroll "JumpScroll" 601#define XtCKeepSelection "KeepSelection" 602#define XtCKeyboardDialect "KeyboardDialect" 603#define XtCLimitResize "LimitResize" 604#define XtCLocale "Locale" 605#define XtCLocaleFilter "LocaleFilter" 606#define XtCLogInhibit "LogInhibit" 607#define XtCLogfile "Logfile" 608#define XtCLogging "Logging" 609#define XtCLoginShell "LoginShell" 610#define XtCMarginBell "MarginBell" 611#define XtCMaximized "Maximized" 612#define XtCMenuBar "MenuBar" 613#define XtCMenuHeight "MenuHeight" 614#define XtCMetaSendsEscape "MetaSendsEscape" 615#define XtCMkSamplePass "MkSamplePass" 616#define XtCMkSampleSize "MkSampleSize" 617#define XtCMkWidth "MkWidth" 618#define XtCModifyCursorKeys "ModifyCursorKeys" 619#define XtCModifyFunctionKeys "ModifyFunctionKeys" 620#define XtCModifyKeypadKeys "ModifyKeypadKeys" 621#define XtCModifyOtherKeys "ModifyOtherKeys" 622#define XtCModifyStringKeys "ModifyStringKeys" 623#define XtCMultiClickTime "MultiClickTime" 624#define XtCMultiScroll "MultiScroll" 625#define XtCNumLock "NumLock" 626#define XtCOldXtermFKeys "OldXtermFKeys" 627#define XtCPointerMode "PointerMode" 628#define XtCPopOnBell "PopOnBell" 629#define XtCPrintAttributes "PrintAttributes" 630#define XtCPrinterAutoClose "PrinterAutoClose" 631#define XtCPrinterCommand "PrinterCommand" 632#define XtCPrinterControlMode "PrinterControlMode" 633#define XtCPrinterExtent "PrinterExtent" 634#define XtCPrinterFormFeed "PrinterFormFeed" 635#define XtCPrinterNewLine "PrinterNewLine" 636#define XtCQuietGrab "QuietGrab" 637#define XtCRenderFont "RenderFont" 638#define XtCResizeGravity "ResizeGravity" 639#define XtCRetryInputMethod "RetryInputMethod" 640#define XtCReverseWrap "ReverseWrap" 641#define XtCRightScrollBar "RightScrollBar" 642#define XtCSaveLines "SaveLines" 643#define XtCScrollBar "ScrollBar" 644#define XtCScrollBarBorder "ScrollBarBorder" 645#define XtCScrollCond "ScrollCond" 646#define XtCScrollLines "ScrollLines" 647#define XtCScrollPos "ScrollPos" 648#define XtCSelectToClipboard "SelectToClipboard" 649#define XtCShiftFonts "ShiftFonts" 650#define XtCShowBlinkAsBold "ShowBlinkAsBold" 651#define XtCShowMissingGlyphs "ShowMissingGlyphs" 652#define XtCShowWrapMarks "ShowWrapMarks" 653#define XtCSignalInhibit "SignalInhibit" 654#define XtCTekInhibit "TekInhibit" 655#define XtCTekSmall "TekSmall" 656#define XtCTekStartup "TekStartup" 657#define XtCTiXtraScroll "TiXtraScroll" 658#define XtCTiteInhibit "TiteInhibit" 659#define XtCTitleModes "TitleModes" 660#define XtCToolBar "ToolBar" 661#define XtCTrimSelection "TrimSelection" 662#define XtCUnderLine "UnderLine" 663#define XtCUseClipping "UseClipping" 664#define XtCUtf8 "Utf8" 665#define XtCUtf8Fonts "Utf8Fonts" 666#define XtCUtf8Latin1 "Utf8Latin1" 667#define XtCUtf8SelectTypes "Utf8SelectTypes" 668#define XtCUtf8Title "Utf8Title" 669#define XtCVT100Graphics "VT100Graphics" 670#define XtCVeryBoldColors "VeryBoldColors" 671#define XtCVisualBell "VisualBell" 672#define XtCVisualBellDelay "VisualBellDelay" 673#define XtCWideBoldFont "WideBoldFont" 674#define XtCWideChars "WideChars" 675#define XtCWideFont "WideFont" 676#define XtCXimFont "XimFont" 677#define XtCXmcAttributes "XmcAttributes" 678#define XtCXmcGlitch "XmcGlitch" 679#define XtCXmcInline "XmcInline" 680#define XtCXmcMoveSGR "XmcMoveSGR" 681 682#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry) 683#define XtNgeometry "geometry" 684#define XtCGeometry "Geometry" 685#endif 686 687#if OPT_COLOR_CLASS 688#define XtCCursorColor "CursorColor" 689#define XtCPointerColor "PointerColor" 690#define XtCHighlightColor "HighlightColor" 691#define XtCHighlightTextColor "HighlightTextColor" 692#else 693#define XtCCursorColor XtCForeground 694#define XtCPointerColor XtCForeground 695#define XtCHighlightColor XtCForeground 696#define XtCHighlightTextColor XtCBackground 697#endif 698 699/***====================================================================***/ 700 701#ifdef __cplusplus 702extern "C" { 703#endif 704 705struct XTERM_RESOURCE; 706 707/* Tekproc.c */ 708#if OPT_TEK4014 709extern TekWidget getTekWidget(Widget /* w */); 710extern int TekGetFontSize (const char * /* param */); 711extern int TekInit (void); 712extern int TekPtyData(void); 713extern void ChangeTekColors (TekWidget /* tw */, TScreen * /* screen */, ScrnColors * /* pNew */); 714extern void HandleGINInput PROTO_XT_ACTIONS_ARGS; 715extern void TCursorToggle (TekWidget /* tw */, int /* toggle */); 716extern void TekCopy (TekWidget /* tw */); 717extern void TekEnqMouse (TekWidget /* tw */, int /* c */); 718extern void TekExpose (Widget /* w */, XEvent * /* event */, Region /* region */); 719extern void TekGINoff (TekWidget /* tw */); 720extern void TekRefresh (TekWidget /* tw */); 721extern void TekRepaint (TekWidget /* xw */); 722extern void TekReverseVideo (TekWidget /* tw */); 723extern void TekRun (void); 724extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int /* newitem */); 725extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */); 726#endif 727 728/* button.c */ 729#define MotionOff( s, t ) if (!(screen->hide_pointer)) { \ 730 (s)->event_mask |= ButtonMotionMask; \ 731 (s)->event_mask &= ~PointerMotionMask; \ 732 XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); } 733 734#define MotionOn( s, t ) { \ 735 (s)->event_mask &= ~ButtonMotionMask; \ 736 (s)->event_mask |= PointerMotionMask; \ 737 XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); } 738 739extern Bool SendMousePosition (XtermWidget /* w */, XEvent* /* event */); 740extern void DiredButton PROTO_XT_ACTIONS_ARGS; 741extern void DisownSelection (XtermWidget /* termw */); 742extern void UnhiliteSelection (XtermWidget /* termw */); 743extern void HandleCopySelection PROTO_XT_ACTIONS_ARGS; 744extern void HandleInsertSelection PROTO_XT_ACTIONS_ARGS; 745extern void HandleKeyboardSelectEnd PROTO_XT_ACTIONS_ARGS; 746extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS; 747extern void HandleKeyboardSelectStart PROTO_XT_ACTIONS_ARGS; 748extern void HandleKeyboardStartExtend PROTO_XT_ACTIONS_ARGS; 749extern void HandleSelectEnd PROTO_XT_ACTIONS_ARGS; 750extern void HandleSelectExtend PROTO_XT_ACTIONS_ARGS; 751extern void HandleSelectSet PROTO_XT_ACTIONS_ARGS; 752extern void HandleSelectStart PROTO_XT_ACTIONS_ARGS; 753extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS; 754extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */); 755extern void ScrollSelection (TScreen * /* screen */, int /* amount */, Bool /* always */); 756extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */); 757extern void ViButton PROTO_XT_ACTIONS_ARGS; 758 759extern int xtermUtf8ToTextList(XtermWidget /* xw */, XTextProperty * /* text_prop */, char *** /* text_list */, int * /* text_list_count */); 760 761#if OPT_DEC_LOCATOR 762extern void GetLocatorPosition (XtermWidget /* w */); 763extern void InitLocatorFilter (XtermWidget /* w */); 764#endif /* OPT_DEC_LOCATOR */ 765 766#if OPT_FOCUS_EVENT 767extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event */); 768#else 769#define SendFocusBotton(xw, event) /* nothing */ 770#endif 771 772#if OPT_PASTE64 773extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned /* c */); 774extern void ClearSelectionBuffer (TScreen * /* screen */); 775extern void CompleteSelection (XtermWidget /* xw */, String * /* args */, Cardinal /* len */); 776extern void xtermGetSelection (Widget /* w */, Time /* ev_time */, String * /* params */, Cardinal /* num_params */, Atom * /* targets */); 777#endif 778 779#if OPT_READLINE 780extern void ReadLineButton PROTO_XT_ACTIONS_ARGS; 781#endif 782 783#if OPT_WIDE_CHARS 784extern Bool iswide(int /* i */); 785#define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1) 786#define isWide(n) (((IChar)(n) >= first_widechar) && iswide(n)) 787#else 788#define WideCells(n) 1 789#endif 790 791/* cachedCgs.c */ 792extern CgsEnum getCgsId(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 793extern GC freeCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/); 794extern GC getCgsGC(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/); 795extern Pixel getCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 796extern Pixel getCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 797extern XTermFonts * getCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 798extern void clrCgsFonts(XtermWidget /*xw*/, VTwin * /*cgsWin*/, XTermFonts * /*font*/); 799extern void copyCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/); 800extern void redoCgs(XtermWidget /*xw*/, Pixel /*fg*/, Pixel /*bg*/, CgsEnum /*cgsId*/); 801extern void setCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*bg*/); 802extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, unsigned /*cset*/); 803extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/); 804extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/); 805extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/); 806 807#ifdef NO_LEAKS 808extern void noleaks_cachedCgs (XtermWidget /* xw */); 809#endif 810 811/* charproc.c */ 812extern Bool CheckBufPtrs (TScreen * /* screen */); 813extern Bool set_cursor_gcs (XtermWidget /* xw */); 814extern int VTInit (XtermWidget /* xw */); 815extern void FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */); 816extern void HideCursor (void); 817extern void RestartBlinking(TScreen * /* screen */); 818extern void ShowCursor (void); 819extern void SwitchBufPtrs (TScreen * /* screen */, int /* toBuf */); 820extern void ToggleAlternate (XtermWidget /* xw */); 821extern void VTInitTranslations (void); 822extern void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */) GCC_NORETURN; 823extern void VTRun (XtermWidget /* xw */); 824extern void dotext (XtermWidget /* xw */, int /* charset */, IChar * /* buf */, Cardinal /* len */); 825extern void releaseCursorGCs(XtermWidget /*xw*/); 826extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/); 827extern void resetCharsets (TScreen * /* screen */); 828extern void set_max_col(TScreen * /* screen */, int /* cols */); 829extern void set_max_row(TScreen * /* screen */, int /* rows */); 830extern void set_tb_margins (TScreen * /* screen */, int /* top */, int /* bottom */); 831extern void unparse_end (XtermWidget /* xw */); 832extern void unparseputc (XtermWidget /* xw */, int /* c */); 833extern void unparseputc1 (XtermWidget /* xw */, int /* c */); 834extern void unparseputn (XtermWidget /* xw */, unsigned /* n */); 835extern void unparseputs (XtermWidget /* xw */, const char * /* s */); 836extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */); 837extern void v_write (int /* f */, const Char * /* d */, unsigned /* len */); 838extern void xtermAddInput(Widget /* w */); 839 840#if OPT_BLINK_CURS 841extern void ToggleCursorBlink(TScreen * /* screen */); 842#endif 843 844#if OPT_ISO_COLORS 845extern void SGR_Background (XtermWidget /* xw */, int /* color */); 846extern void SGR_Foreground (XtermWidget /* xw */, int /* color */); 847#endif 848 849#ifdef NO_LEAKS 850extern void noleaks_charproc (void); 851#endif 852 853/* charsets.c */ 854extern unsigned xtermCharSetIn (unsigned /* code */, int /* charset */); 855extern int xtermCharSetOut (XtermWidget /* xw */, IChar * /* buf */, IChar * /* ptr */, int /* charset */); 856 857/* cursor.c */ 858extern void AdjustSavedCursor (XtermWidget /* xw */, int /* adjust */); 859extern void CarriageReturn (TScreen * /* screen */); 860extern void CursorBack (XtermWidget /* xw */, int /* n */); 861extern void CursorDown (TScreen * /* screen */, int /* n */); 862extern void CursorForward (TScreen * /* screen */, int /* n */); 863extern void CursorNextLine (TScreen * /* screen */, int /* count */); 864extern void CursorPrevLine (TScreen * /* screen */, int /* count */); 865extern void CursorRestore (XtermWidget /* xw */); 866extern void CursorSave (XtermWidget /* xw */); 867extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */); 868extern void CursorUp (TScreen * /* screen */, int /* n */); 869extern void RevIndex (XtermWidget /* xw */, int /* amount */); 870extern void xtermIndex (XtermWidget /* xw */, int /* amount */); 871 872#if OPT_TRACE 873extern int set_cur_col(TScreen * /* screen */, int /* value */); 874extern int set_cur_row(TScreen * /* screen */, int /* value */); 875#else 876#define set_cur_col(screen, value) screen->cur_col = value 877#define set_cur_row(screen, value) screen->cur_row = value 878#endif 879 880/* doublechr.c */ 881extern void xterm_DECDHL (XtermWidget /* xw */, Bool /* top */); 882extern void xterm_DECSWL (XtermWidget /* xw */); 883extern void xterm_DECDWL (XtermWidget /* xw */); 884#if OPT_DEC_CHRSET 885extern int xterm_Double_index(XtermWidget /* xw */, unsigned /* chrset */, unsigned /* flags */); 886extern GC xterm_DoubleGC(XtermWidget /* xw */, unsigned /* chrset */, unsigned /* flags */, GC /* old_gc */, int * /* inxp */); 887#endif 888 889/* input.c */ 890extern unsigned xtermParamToState (XtermWidget /* xw */, unsigned /* param */); 891extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */); 892extern Bool xtermDeleteIsDEL (XtermWidget /* xw */); 893extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */); 894extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t /* nbytes */); 895 896#if OPT_NUM_LOCK 897extern void VTInitModifiers(XtermWidget /* xw */); 898#endif 899 900/* linedata.c */ 901extern LineData *getLineData(TScreen * /* screen */, int /* row */); 902extern void copyLineData(LineData * /* dst */, LineData * /* src */); 903extern void initLineData(XtermWidget /* xw */); 904 905extern CellData *newCellData(XtermWidget /* xw */, Cardinal /* count */); 906extern void saveCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, int /* column */); 907extern void restoreCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, int /* column */); 908 909/* main.c */ 910#ifndef __UNIXOS2__ 911#define ENVP_ARG /**/ 912#else 913#define ENVP_ARG , char ** /* envp */ 914#endif 915 916extern int main (int /* argc */, char ** /* argv */ ENVP_ARG); 917extern int GetBytesAvailable (int /* fd */); 918extern int kill_process_group (int /* pid */, int /* sig */); 919extern int nonblocking_wait (void); 920 921#if OPT_PTY_HANDSHAKE 922extern void first_map_occurred (void); 923#else 924#define first_map_occurred() /* nothing */ 925#endif 926 927#ifdef SIGNAL_T 928extern SIGNAL_T Exit (int /* n */) GCC_NORETURN; 929#endif 930 931#ifndef SIG_ATOMIC_T 932#define SIG_ATOMIC_T int 933#endif 934 935#if OPT_WIDE_CHARS 936extern unsigned first_widechar; 937extern int (*my_wcwidth)(wchar_t); 938#endif 939 940/* menu.c */ 941extern void do_hangup PROTO_XT_CALLBACK_ARGS; 942extern void repairSizeHints (void); 943extern void show_8bit_control (Bool /* value */); 944 945/* misc.c */ 946 947#define TIMESTAMP_LEN 20 /* length of TIMESTAMP_FMT */ 948 949extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool); 950extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */); 951extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal); 952extern Window WMFrameWindow(XtermWidget /* termw */); 953extern XrmOptionDescRec * sortedOptDescs(XrmOptionDescRec *, Cardinal); 954extern XtermWidget getXtermWidget(Widget /* w */); 955extern char *udk_lookup (int /* keycode */, int * /* len */); 956extern char *xtermEnvEncoding (void); 957extern char *xtermEnvLocale (void); 958extern char *xtermFindShell(char * /* leaf */, Bool /* warning */); 959extern char *xtermVersion(void); 960extern const char *SysErrorMsg (int /* n */); 961extern const char *SysReasonMsg (int /* n */); 962extern int ResetAnsiColorRequest(XtermWidget, char *, int); 963extern int XStrCmp (char * /* s1 */, char * /* s2 */); 964extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, unsigned /* mode */); 965extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */); 966extern int xerror (Display * /* d */, XErrorEvent * /* ev */); 967extern int xioerror (Display * /* dpy */); 968extern int xtermResetIds(TScreen * /* screen */); 969extern void Bell (XtermWidget /* xw */, int /* which */, int /* percent */); 970extern void ChangeIconName (XtermWidget /* xw */, char * /* name */); 971extern void ChangeTitle (XtermWidget /* xw */, char * /* name */); 972extern void ChangeXprop (char * /* name */); 973extern void Cleanup (int /* code */); 974extern void HandleBellPropertyChange PROTO_XT_EV_HANDLER_ARGS; 975extern void HandleEightBitKeyPressed PROTO_XT_ACTIONS_ARGS; 976extern void HandleEnterWindow PROTO_XT_EV_HANDLER_ARGS; 977extern void HandleFocusChange PROTO_XT_EV_HANDLER_ARGS; 978extern void HandleInterpret PROTO_XT_ACTIONS_ARGS; 979extern void HandleKeyPressed PROTO_XT_ACTIONS_ARGS; 980extern void HandleLeaveWindow PROTO_XT_EV_HANDLER_ARGS; 981extern void HandleSpawnTerminal PROTO_XT_ACTIONS_ARGS; 982extern void HandleStringEvent PROTO_XT_ACTIONS_ARGS; 983extern void Panic (const char * /* s */, int /* a */); 984extern void Redraw (void); 985extern void ice_error (IceConn /* iceConn */); 986extern void ReverseOldColors (void); 987extern void SysError (int /* i */) GCC_NORETURN; 988extern void VisualBell (void); 989extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t /* len */); 990extern void do_decrpm (XtermWidget /* xw */, int /* nparam */, int * /* params */); 991extern void do_osc (XtermWidget /* xw */, Char * /* buf */, size_t /* len */, int /* final */); 992extern void do_rpm (XtermWidget /* xw */, int /* nparam */, int * /* params */); 993extern void do_xevents (void); 994extern void end_tek_mode (void); 995extern void end_vt_mode (void); 996extern void hide_tek_window (void); 997extern void hide_vt_window (void); 998extern void reset_decudk (void); 999extern void set_tek_visibility (Bool /* on */); 1000extern void set_vt_visibility (Bool /* on */); 1001extern void switch_modes (Bool /* tovt */); 1002extern void timestamp_filename(char * /* dst */, const char * /* src */); 1003extern void xevents (void); 1004extern void xt_error (String /* message */); 1005extern void xtermBell(XtermWidget /* xw */, int /* which */, int /* percent */); 1006extern void xtermCopyEnv (char ** /* oldenv */); 1007extern void xtermDisplayCursor (XtermWidget /* xw */); 1008extern void xtermSetenv (const char * /* var */, const char * /* value */); 1009extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */); 1010 1011#if OPT_DABBREV 1012extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS; 1013#endif 1014 1015#if OPT_MAXIMIZE 1016extern int QueryMaximize (XtermWidget /* termw */, unsigned * /* width */, unsigned * /* height */); 1017extern void HandleDeIconify PROTO_XT_ACTIONS_ARGS; 1018extern void HandleIconify PROTO_XT_ACTIONS_ARGS; 1019extern void HandleMaximize PROTO_XT_ACTIONS_ARGS; 1020extern void HandleRestoreSize PROTO_XT_ACTIONS_ARGS; 1021extern void RequestMaximize (XtermWidget /* termw */, int /* maximize */); 1022#endif 1023 1024#if OPT_SCROLL_LOCK 1025extern void GetScrollLock (TScreen * /* screen */); 1026extern void HandleScrollLock PROTO_XT_ACTIONS_ARGS; 1027extern void ShowScrollLock (TScreen * /* screen */, Bool /* enable */); 1028extern void SetScrollLock (TScreen * /* screen */, Bool /* enable */); 1029extern void xtermShowLED (TScreen * /* screen */, Cardinal /* led_number */, Bool /* enable */); 1030extern void xtermClearLEDs (TScreen * /* screen */); 1031#else 1032#define ShowScrollLock(screen, enable) /* nothing */ 1033#define SetScrollLock(screen, enable) /* nothing */ 1034#define GetScrollLock(screen) /* nothing */ 1035#endif 1036 1037#if OPT_WIDE_CHARS 1038extern Bool xtermEnvUTF8(void); 1039#else 1040#define xtermEnvUTF8() False 1041#endif 1042 1043#ifdef ALLOWLOGGING 1044extern void StartLog (XtermWidget /* xw */); 1045extern void CloseLog (XtermWidget /* xw */); 1046extern void FlushLog (XtermWidget /* xw */); 1047#else 1048#define FlushLog(xw) /*nothing*/ 1049#endif 1050 1051/* print.c */ 1052extern Bool xtermHasPrinter (XtermWidget /* xw */); 1053extern PrinterFlags *getPrinterFlags (XtermWidget /* xw */, String * /* params */, Cardinal * /* param_count */); 1054extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */); 1055extern void closePrinter (XtermWidget /* xw */); 1056extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */); 1057extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */); 1058extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */); 1059extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */); 1060extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */); 1061extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */); 1062extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */); 1063 1064/* ptydata.c */ 1065#ifdef VMS 1066#define PtySelect int 1067#else 1068#define PtySelect fd_set 1069#endif 1070 1071extern Bool decodeUtf8 (PtyData * /* data */); 1072extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */); 1073extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, int /* length */); 1074extern void initPtyData (PtyData ** /* data */); 1075extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */); 1076 1077#ifdef NO_LEAKS 1078extern void noleaks_ptydata ( void ); 1079#endif 1080 1081#if OPT_WIDE_CHARS 1082extern Char *convertToUTF8 (Char * /* lp */, unsigned /* c */); 1083extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */); 1084extern IChar skipPtyData (PtyData * /* data */); 1085extern PtyData * fakePtyData(PtyData * /* result */, Char * /* next */, Char * /* last */); 1086extern void switchPtyData (TScreen * /* screen */, int /* f */); 1087extern void writePtyData (int /* f */, IChar * /* d */, unsigned /* len */); 1088 1089#define morePtyData(screen,data) \ 1090 (((data)->last > (data)->next) \ 1091 ? (((screen)->utf8_inparse && !(data)->utf_size) \ 1092 ? decodeUtf8(data) \ 1093 : True) \ 1094 : False) 1095#else 1096#define morePtyData(screen, data) ((data)->last > (data)->next) 1097#define nextPtyData(screen, data) (IChar) (*((data)->next++) & \ 1098 (screen->output_eight_bits \ 1099 ? 0xff \ 1100 : 0x7f)) 1101#define writePtyData(f,d,len) v_write(f,d,len) 1102#endif 1103 1104/* screen.c */ 1105extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */); 1106extern Char * allocScrnData(TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */); 1107extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */); 1108extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */); 1109extern int ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */); 1110extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */); 1111extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */); 1112extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */); 1113extern void FullScreen(XtermWidget /* xw */, Bool /* enabled */); 1114extern void ScrnAllocBuf (XtermWidget /* xw */); 1115extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); 1116extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */); 1117extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* n */, int /* last */, unsigned /* where */); 1118extern void ScrnDisownSelection (XtermWidget /* xw */); 1119extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *, int , unsigned /* flags */, Bool /* keepColors */); 1120extern void ScrnInsertChar (XtermWidget /* xw */, unsigned /* n */); 1121extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* last */, int /* where */, unsigned /* n */); 1122extern void ScrnRefresh (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); 1123extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); 1124extern void ScrnWriteText (XtermWidget /* xw */, IChar * /* str */, unsigned /* flags */, unsigned /* cur_fg_bg */, unsigned /* length */); 1125extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, LineData * /* ld */); 1126extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */); 1127extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *); 1128 1129#if OPT_TRACE && OPT_TRACE_FLAGS 1130extern int LineTstFlag(LineData /* ld */, int /* flag */); 1131extern void LineClrFlag(LineData /* ld */, int /* flag */); 1132extern void LineSetFlag(LineData /* ld */, int /* flag */); 1133#else 1134 1135#define LineFlags(ld) GetLineFlags(ld) 1136 1137#define LineClrFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) & ~ (flag))) 1138#define LineSetFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) | (flag))) 1139#define LineTstFlag(ld, flag) ((GetLineFlags(ld) & flag) != 0) 1140 1141#endif /* OPT_TRACE && OPT_TRACE_FLAGS */ 1142 1143#define LineClrBlinked(ld) LineClrFlag(ld, LINEBLINKED) 1144#define LineSetBlinked(ld) LineSetFlag(ld, LINEBLINKED) 1145#define LineTstBlinked(ld) LineTstFlag(ld, LINEBLINKED) 1146 1147#define LineClrWrapped(ld) LineClrFlag(ld, LINEWRAPPED) 1148#define LineSetWrapped(ld) LineSetFlag(ld, LINEWRAPPED) 1149#define LineTstWrapped(ld) LineTstFlag(ld, LINEWRAPPED) 1150 1151#define ScrnHaveSelection(screen) \ 1152 ((screen)->startH.row != (screen)->endH.row \ 1153 || (screen)->startH.col != (screen)->endH.col) 1154 1155#define ScrnAreLinesInSelection(screen, first, last) \ 1156 ((last) >= (screen)->startH.row && (first) <= (screen)->endH.row) 1157 1158#define ScrnIsLineInSelection(screen, line) \ 1159 ((line) >= (screen)->startH.row && (line) <= (screen)->endH.row) 1160 1161#define ScrnHaveLineMargins(screen) \ 1162 ((screen)->top_marg != 0 \ 1163 || ((screen)->bot_marg != screen->max_row)) 1164 1165#define ScrnIsLineInMargins(screen, line) \ 1166 ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg) 1167 1168#if OPT_DEC_RECTOPS 1169extern void ScrnCopyRectangle (XtermWidget /* xw */, XTermRect *, int, int *); 1170extern void ScrnMarkRectangle (XtermWidget /* xw */, XTermRect *, Bool, int, int *); 1171extern void ScrnWipeRectangle (XtermWidget /* xw */, XTermRect *); 1172#endif 1173 1174#if OPT_WIDE_CHARS 1175extern void ChangeToWide(XtermWidget /* xw */); 1176#endif 1177 1178/* scrollback.c */ 1179extern LineData *getScrollback (TScreen * /* screen */, int /* row */); 1180extern LineData *addScrollback (TScreen * /* screen */); 1181extern void deleteScrollback (TScreen * /* screen */, int /* row */); 1182 1183/* scrollbar.c */ 1184extern void DoResizeScreen (XtermWidget /* xw */); 1185extern void HandleScrollBack PROTO_XT_ACTIONS_ARGS; 1186extern void HandleScrollForward PROTO_XT_ACTIONS_ARGS; 1187extern void ResizeScrollBar (XtermWidget /* xw */); 1188extern void ScrollBarDrawThumb (Widget /* scrollWidget */); 1189extern void ScrollBarOff (XtermWidget /* xw */); 1190extern void ScrollBarOn (XtermWidget /* xw */, Bool /* init */); 1191extern void ScrollBarReverseVideo (Widget /* scrollWidget */); 1192extern void ToggleScrollBar (XtermWidget /* xw */); 1193extern void WindowScroll (XtermWidget /* xw */, int /* top */, Bool /* always */); 1194 1195#ifdef SCROLLBAR_RIGHT 1196extern void updateRightScrollbar(XtermWidget /* xw */); 1197#else 1198#define updateRightScrollbar(xw) /* nothing */ 1199#endif 1200 1201/* tabs.c */ 1202extern Bool TabToNextStop (XtermWidget /* xw */); 1203extern Bool TabToPrevStop (XtermWidget /* xw */); 1204extern void TabClear (Tabs /* tabs */, int /* col */); 1205extern void TabReset (Tabs /* tabs */); 1206extern void TabSet (Tabs /* tabs */, int /* col */); 1207extern void TabZonk (Tabs /* tabs */); 1208 1209/* util.c */ 1210extern Boolean isDefaultBackground(const char * /* name */); 1211extern Boolean isDefaultForeground(const char * /* name */); 1212extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, unsigned /* fg_bg */, Bool /* hilite */); 1213extern int AddToRefresh (XtermWidget /* xw */); 1214extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); 1215extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */); 1216extern int drawXtermText (XtermWidget /* xw */, unsigned /* flags */, GC /* gc */, int /* x */, int /* y */, int /* chrset */, IChar * /* text */, Cardinal /* len */, int /* on_wide */); 1217extern int extendedBoolean(const char * /* value */, FlagList * /* table */, Cardinal /* limit */); 1218extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */); 1219extern void ClearRight (XtermWidget /* xw */, int /* n */); 1220extern void ClearScreen (XtermWidget /* xw */); 1221extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */); 1222extern void DeleteLine (XtermWidget /* xw */, int /* n */); 1223extern void FlushScroll (XtermWidget /* xw */); 1224extern void GetColors (XtermWidget /* xw */, ScrnColors * /* pColors */); 1225extern void InsertChar (XtermWidget /* xw */, unsigned /* n */); 1226extern void InsertLine (XtermWidget /* xw */, int /* n */); 1227extern void RevScroll (XtermWidget /* xw */, int /* amount */); 1228extern void ReverseVideo (XtermWidget /* termw */); 1229extern void WriteText (XtermWidget /* xw */, IChar * /* str */, Cardinal /* len */); 1230extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */); 1231extern void decode_wcwidth (XtermWidget /* xw */); 1232extern void do_erase_display (XtermWidget /* xw */, int /* param */, int /* mode */); 1233extern void do_erase_line (XtermWidget /* xw */, int /* param */, int /* mode */); 1234extern void getXtermSizeHints (XtermWidget /* xw */); 1235extern void init_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */); 1236extern void recolor_cursor (TScreen * /* screen */, Cursor /* cursor */, unsigned long /* fg */, unsigned long /* bg */); 1237extern void resetXtermGC (XtermWidget /* xw */, unsigned /* flags */, Bool /* hilite */); 1238extern void scrolling_copy_area (XtermWidget /* xw */, int /* firstline */, int /* nlines */, int /* amount */); 1239extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */); 1240extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */); 1241extern void update_keyboard_type (void); 1242extern void xtermClear (XtermWidget /* xw */); 1243extern void xtermRepaint (XtermWidget /* xw */); 1244extern void xtermScroll (XtermWidget /* xw */, int /* amount */); 1245extern void xtermSizeHints (XtermWidget /* xw */, int /* scrollbarWidth */); 1246 1247#if OPT_ISO_COLORS 1248 1249extern unsigned extract_fg (XtermWidget /* xw */, unsigned /* color */, unsigned /* flags */); 1250extern unsigned extract_bg (XtermWidget /* xw */, unsigned /* color */, unsigned /* flags */); 1251extern CellColor makeColorPair (int /* fg */, int /* bg */); 1252extern void ClearCurBackground (XtermWidget /* xw */, int /* top */, int /* left */, unsigned /* height */, unsigned /* width */); 1253 1254#define xtermColorPair(xw) makeColorPair(xw->sgr_foreground, xw->sgr_background) 1255 1256#define getXtermForeground(xw, flags, color) \ 1257 (((flags) & FG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \ 1258 ? GET_COLOR_RES(xw, TScreenOf(xw)->Acolors[color]) \ 1259 : T_COLOR(TScreenOf(xw), TEXT_FG)) 1260 1261#define getXtermBackground(xw, flags, color) \ 1262 (((flags) & BG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \ 1263 ? GET_COLOR_RES(xw, TScreenOf(xw)->Acolors[color]) \ 1264 : T_COLOR(TScreenOf(xw), TEXT_BG)) 1265 1266#if OPT_COLOR_RES 1267#define GET_COLOR_RES(xw, res) xtermGetColorRes(xw, &(res)) 1268#define SET_COLOR_RES(res,color) (res)->value = color 1269#define EQL_COLOR_RES(res,color) (res)->value == color 1270#define T_COLOR(v,n) (v)->Tcolors[n].value 1271extern Pixel xtermGetColorRes(XtermWidget /* xw */, ColorRes * /* res */); 1272#else 1273#define GET_COLOR_RES(xw, res) res 1274#define SET_COLOR_RES(res,color) *res = color 1275#define EQL_COLOR_RES(res,color) *res == color 1276#define T_COLOR(v,n) (v)->Tcolors[n] 1277#endif 1278 1279#define ExtractForeground(color) (unsigned) GetCellColorFG(color) 1280#define ExtractBackground(color) (unsigned) GetCellColorBG(color) 1281 1282#define MapToColorMode(fg, screen, flags) \ 1283 (((screen)->colorBLMode && ((flags) & BLINK)) \ 1284 ? COLOR_BL \ 1285 : (((screen)->colorBDMode && ((flags) & BOLD)) \ 1286 ? COLOR_BD \ 1287 : (((screen)->colorULMode && ((flags) & UNDERLINE)) \ 1288 ? COLOR_UL \ 1289 : fg))) 1290 1291#define checkVeryBoldAttr(flags, fg, code, attr) \ 1292 if ((flags & FG_COLOR) != 0 \ 1293 && (screen->veryBoldColors & attr) == 0 \ 1294 && (flags & attr) != 0 \ 1295 && (fg == code)) \ 1296 UIntClr(flags, attr) 1297 1298#define checkVeryBoldColors(flags, fg) \ 1299 checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \ 1300 checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \ 1301 checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \ 1302 checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK) 1303 1304#else /* !OPT_ISO_COLORS */ 1305 1306#define MapToColorMode(fg, screen, flags) fg 1307 1308#define ClearDFtBackground(xw, top, left, height, width) \ 1309 ClearCurBackground(xw, top, left, height, width) 1310 1311#define ClearCurBackground(xw, top, left, height, width) \ 1312 XClearArea (TScreenOf(xw)->display, VWindow(TScreenOf(xw)), \ 1313 left, top, width, height, False) 1314 1315#define extract_fg(xw, color, flags) (xw)->cur_foreground 1316#define extract_bg(xw, color, flags) (xw)->cur_background 1317 1318 /* FIXME: Reverse-Video? */ 1319#define T_COLOR(v,n) (v)->Tcolors[n] 1320#define getXtermBackground(xw, flags, color) T_COLOR(TScreenOf(xw), TEXT_BG) 1321#define getXtermForeground(xw, flags, color) T_COLOR(TScreenOf(xw), TEXT_FG) 1322#define makeColorPair(fg, bg) 0 1323#define xtermColorPair(xw) 0 1324 1325#define checkVeryBoldColors(flags, fg) /* nothing */ 1326 1327#endif /* OPT_ISO_COLORS */ 1328 1329#define XTERM_CELL(row,col) getXtermCell(screen, ROW2INX(screen, row), col) 1330 1331extern unsigned getXtermCell (TScreen * /* screen */, int /* row */, int /* col */); 1332extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */, int /* ch */); 1333 1334#if OPT_HIGHLIGHT_COLOR 1335#define isNotForeground(xw, fg, bg, sel) \ 1336 (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_FG) \ 1337 && (sel) != (fg) \ 1338 && (sel) != (bg) \ 1339 && (sel) != (xw)->dft_foreground) 1340#define isNotBackground(xw, fg, bg, sel) \ 1341 (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_BG) \ 1342 && (sel) != (fg) \ 1343 && (sel) != (bg) \ 1344 && (sel) != (xw)->dft_background) 1345#endif 1346 1347#if OPT_WIDE_CHARS 1348extern Boolean isWideControl(unsigned /* ch */); 1349extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */); 1350extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */); 1351extern unsigned AsciiEquivs(unsigned /* ch */); 1352extern void addXtermCombining (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* ch */); 1353extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */); 1354#endif 1355 1356#if OPT_XMC_GLITCH 1357extern void Mark_XMC (XtermWidget /* xw */, int /* param */); 1358extern void Jump_XMC (XtermWidget /* xw */); 1359extern void Resolve_XMC (XtermWidget /* xw */); 1360#endif 1361 1362#if OPT_WIDE_CHARS 1363unsigned visual_width(IChar * /* str */, Cardinal /* len */); 1364#else 1365#define visual_width(a, b) (b) 1366#endif 1367 1368#define BtoS(b) (((b) == Maybe) ? "maybe" : ((b) ? "on" : "off")) 1369#define NonNull(s) ((s) ? (s) : "<null>") 1370 1371#define UIntSet(dst,bits) dst = dst | (unsigned) (bits) 1372#define UIntClr(dst,bits) dst = dst & (unsigned) ~(bits) 1373 1374#ifdef __cplusplus 1375 } 1376#endif 1377/* *INDENT-ON* */ 1378 1379#endif /* included_xterm_h */ 1380