xterm.h revision 980988ae
1/* $XTermId: xterm.h,v 1.947 2024/05/21 23:33:24 tom Exp $ */
2
3/*
4 * Copyright 1999-2023,2024 by Thomas E. Dickey
5 *
6 *                         All Rights Reserved
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
23 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 *
27 * Except as contained in this notice, the name(s) of the above copyright
28 * holders shall not be used in advertising or otherwise to promote the
29 * sale, use or other dealings in this Software without prior written
30 * authorization.
31 */
32
33/*
34 * Common/useful definitions for XTERM application.
35 *
36 * This is also where we put the fallback definitions if we do not build using
37 * the configure script.
38 */
39#ifndef included_xterm_h
40#define included_xterm_h
41/* *INDENT-OFF* */
42
43#ifdef HAVE_CONFIG_H
44#include <xtermcfg.h>
45#endif
46
47#undef bcopy
48#include <X11/Xos.h>
49
50#ifndef HAVE_CONFIG_H
51
52#define HAVE_LIB_XAW 1
53
54#ifdef CSRG_BASED
55/* Get definition of BSD */
56#include <sys/param.h>
57#endif
58
59#ifndef DFT_TERMTYPE
60#define DFT_TERMTYPE "xterm"
61#endif
62
63#ifndef X_NOT_POSIX
64#define HAVE_WAITPID 1
65#define HAVE_SYS_WAIT_H 1
66#define HAVE_UNISTD_H 1
67#endif
68
69#define HAVE_STDLIB_H 1
70
71#if defined(sun)
72/* errno is declared in <errno.h> */
73#else
74#define DECL_ERRNO 1
75#endif
76
77#undef DECL_PTSNAME		/* ptsname() is normally in stdlib.h */
78
79#ifndef NOPUTENV
80#define HAVE_PUTENV 1
81#endif
82
83#if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix)
84#define USE_POSIX_TERMIOS 1
85#endif
86
87#ifdef __FreeBSD__
88#if __FreeBSD_version >= 900000
89#define USE_SYSV_UTMP 1
90#define UTMPX_FOR_UTMP 1
91#define HAVE_UTMP_UT_HOST 1
92#define HAVE_UTMP_UT_XTIME 1
93#define ut_name ut_user
94#define ut_xtime ut_tv.tv_sec
95#endif
96#endif
97
98#ifdef __NetBSD__
99#if __NetBSD_Version__ >= 106030000	/* 1.6C */
100#define BSD_UTMPX 1
101#define ut_xtime ut_tv.tv_sec
102#endif
103#endif
104
105#if defined(hpux) && !defined(__hpux)
106#define __hpux 1		/* HPUX 11.0 does not define this */
107#endif
108
109#if !defined(__SCO__) && (defined(SCO) || defined(sco) || defined(SCO325))
110#define __SCO__ 1
111#endif
112
113#ifdef USE_POSIX_TERMIOS
114#define HAVE_TERMIOS_H 1
115#define HAVE_TCGETATTR 1
116#endif
117
118#if defined(__SCO__) || defined(__UNIXWARE__) || defined(__minix)
119#define USE_TERMCAP 1
120#endif
121
122#if defined(UTMP)
123#define HAVE_UTMP 1
124#endif
125
126#if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__)
127#define UTMPX_FOR_UTMP 1
128#endif
129
130#if !defined(ISC) && !defined(__QNX__)
131#define HAVE_UTMP_UT_HOST 1
132#endif
133
134#if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux) || defined(__FreeBSD__))
135#define HAVE_UTMP_UT_SESSION 1
136#endif
137
138#if !(defined(__linux__) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4) && !defined(__FreeBSD__)
139#define ut_xstatus ut_exit.e_exit
140#endif
141
142#if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(__linux__) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
143#define HAVE_UTMP_UT_XTIME 1
144#endif
145
146#if defined(__linux__) || defined(__CYGWIN__)
147#define USE_LASTLOG
148#define HAVE_LASTLOG_H
149#define USE_STRUCT_LASTLOG
150#elif defined(BSD) && (BSD >= 199103)
151#ifdef BSD_UTMPX
152#define USE_LASTLOGX
153#elif defined(USE_SYSV_UTMP)
154#else
155#define USE_LASTLOG
156#define USE_STRUCT_LASTLOG
157#endif
158#endif
159
160#if defined(__OpenBSD__)
161#define DEFDELETE_DEL True
162#define DEF_BACKARO_ERASE True
163#define DEF_INITIAL_ERASE True
164#endif
165
166#if defined(__SCO__) || defined(__UNIXWARE__)
167#define DEFDELETE_DEL True
168#define OPT_SCO_FUNC_KEYS 1
169#endif
170
171#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_VERSION) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__)
172#define USE_POSIX_WAIT
173#endif
174
175#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)
176#define USE_SYSV_UTMP
177#endif
178
179#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
180#define USE_TTY_GROUP
181#endif
182
183#if defined(__CYGWIN__)
184#define HAVE_NCURSES_TERM_H 1
185#endif
186
187#ifdef __osf__
188#define TTY_GROUP_NAME "terminal"
189#endif
190
191#if defined(__MVS__)
192#undef ut_xstatus
193#define ut_name ut_user
194#define ut_xstatus ut_exit.ut_e_exit
195#define ut_xtime ut_tv.tv_sec
196#endif
197
198#if defined(ut_xstatus)
199#define HAVE_UTMP_UT_XSTATUS 1
200#endif
201
202#if defined(XKB)
203#define HAVE_XKB_BELL_EXT 1
204#endif
205
206#if (defined(SVR4) && !defined(__CYGWIN__)) || defined(__linux__) || (defined(BSD) && (BSD >= 199103))
207#define HAVE_POSIX_SAVED_IDS
208#endif
209
210#if defined(__linux__) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(VMS) || defined(__INTERIX))
211#define HAVE_INITGROUPS
212#endif
213
214#if defined(__linux__)
215#define HAVE_PTY_H
216#endif
217
218#if !defined(USG) && !defined(__minix)
219#define HAVE_SETITIMER 1
220#else
221#define HAVE_SETITIMER 0
222#endif
223
224#if defined(_POSIX_VERSION) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
225#define HAVE_SETSID 1
226#endif
227
228#endif /* HAVE_CONFIG_H */
229
230#ifndef HAVE_X11_DECKEYSYM_H
231#define HAVE_X11_DECKEYSYM_H 1
232#endif
233
234#ifndef HAVE_X11_SUNKEYSYM_H
235#define HAVE_X11_SUNKEYSYM_H 1
236#endif
237
238#ifndef HAVE_X11_XF86KEYSYM_H
239#define HAVE_X11_XF86KEYSYM_H 0
240#endif
241
242#if defined(HAVE_X11_EXTENSIONS_XDBE_H) && defined(HAVE_XDBESWAPBUFFERS)
243#define USE_DOUBLE_BUFFER 1
244#else
245#define USE_DOUBLE_BUFFER 0
246#endif
247
248/***====================================================================***/
249
250/* if compiling with gcc -ansi -pedantic, we must fix POSIX definitions */
251#if defined(SVR4) && defined(sun)
252#ifndef __EXTENSIONS__
253#define __EXTENSIONS__ 1
254#endif
255#ifndef _POSIX_C_SOURCE
256#define _POSIX_C_SOURCE 1
257#endif
258#endif
259
260/***====================================================================***/
261
262#ifdef HAVE_STDLIB_H
263#include <stdlib.h>
264#else
265extern char *calloc();
266extern char *getenv();
267extern char *malloc();
268extern char *realloc();
269extern void exit();
270extern void free();
271#endif
272
273#ifdef HAVE_UNISTD_H
274#include <unistd.h>
275#endif
276
277#ifdef HAVE_SYS_WAIT_H
278#include <sys/wait.h>
279#endif
280
281#include <errno.h>
282#if defined(DECL_ERRNO) && !defined(errno)
283extern int errno;
284#endif
285
286#include <X11/Xlocale.h>
287
288#ifdef HAVE_STDNORETURN_H
289#include <stdnoreturn.h>
290#undef GCC_NORETURN
291#define GCC_NORETURN STDC_NORETURN
292#endif
293
294/*
295 * FIXME:  Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if
296 * we use 'waitpid()', while 'wait()' seems to work properly.
297 */
298#ifdef __linux__
299#undef HAVE_WAITPID
300#endif
301
302#ifndef OPT_WIDE_CHARS
303#define OPT_WIDE_CHARS 0
304#endif
305
306#if OPT_WIDE_CHARS
307#define HIDDEN_CHAR 0xffff
308#endif
309
310/***====================================================================***/
311
312#define PROTO_XT_ACTIONS_ARGS \
313	(Widget w, XEvent *event, String *params, Cardinal *num_params)
314
315#define PROTO_XT_CALLBACK_ARGS \
316	(Widget gw, XtPointer closure, XtPointer data)
317
318#define PROTO_XT_CVT_SELECT_ARGS \
319	(Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format)
320
321#define PROTO_XT_EV_HANDLER_ARGS \
322	(Widget w, XtPointer closure, XEvent *event, Boolean *cont)
323
324#define PROTO_XT_SEL_CB_ARGS \
325	(Widget w, XtPointer client_data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format)
326
327#include <ptyx.h>
328
329/***====================================================================***/
330
331#ifndef GCC_PRINTFLIKE
332#ifdef _X_ATTRIBUTE_PRINTF
333#define GCC_PRINTFLIKE(f,n)	_X_ATTRIBUTE_PRINTF(f,n)
334#else
335#define GCC_PRINTFLIKE(f,n)	/* nothing */
336#endif
337#endif
338
339#ifndef GCC_UNUSED
340#ifdef _X_UNUSED
341#define GCC_UNUSED		_X_UNUSED
342#else
343#define GCC_UNUSED		/* nothing */
344#endif
345#endif
346
347#ifndef GCC_NORETURN
348#ifdef _X_NORETURN
349#define GCC_NORETURN		_X_NORETURN
350#else
351#define GCC_NORETURN		/* nothing */
352#endif
353#endif
354
355/***====================================================================***/
356
357#if defined(__GNUC__) && defined(_FORTIFY_SOURCE)
358#define USE_IGNORE_RC
359#define IGNORE_RC(func) ignore_unused = (int) func
360#else
361#define IGNORE_RC(func) (void) func
362#endif /* gcc workarounds */
363#if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun)
364#include <X11/Xpoll.h>
365#define USE_XPOLL_H 1
366#else
367#define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
368#define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set))
369#if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME)
370#define TIME_WITH_SYS_TIME
371#endif
372#endif
373
374#ifdef TIME_WITH_SYS_TIME
375# include <sys/time.h>
376# include <time.h>
377#else
378# ifdef HAVE_SYS_TIME_H
379#  include <sys/time.h>
380# else
381#  include <time.h>
382# endif
383#endif
384
385/* these may be needed for sig_atomic_t */
386#include <sys/types.h>
387#include <signal.h>
388
389#ifdef USE_SYS_SELECT_H
390
391#if defined(USE_XPOLL_H) && defined(AIXV3) && defined(NFDBITS)
392#undef NFDBITS			/* conflict between X11/Xpoll.h and sys/select.h */
393#endif
394
395#include <sys/select.h>
396
397#endif /* USE_SYS_SELECT_H */
398
399#include <setjmp.h>
400
401#if !defined(VMS) && !(defined(__linux__) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
402extern char **environ;
403#endif
404
405#ifndef _Xconst
406#define _Xconst const		/* Solaris 7 workaround */
407#endif /* _Xconst */
408
409#define XK_Fn(n)	(XK_F1 + (n) - 1)
410
411#define Maybe		2
412
413#define ALLOC_STRING(name) \
414	if (name != 0) \
415	    name = x_strdup(name)
416#define FREE_STRING(name) \
417	    free_string(name)
418
419/* strftime format and length of the result */
420#define FMT_TIMESTAMP ".%Y.%m.%d.%H.%M.%S"
421#define LEN_TIMESTAMP sizeof(".YYYY.MM.DD.hh.mm.ss")
422
423/***====================================================================***/
424
425#if OPT_TRACE
426#undef NDEBUG			/* turn on assert's */
427#else
428#ifndef NDEBUG
429#define NDEBUG			/* not debugging, don't do assert's */
430#endif
431#endif
432
433#include <trace.h>
434
435#if OPT_TRACE && !defined(DEBUG)
436#define DEBUG 1
437#endif
438
439#ifdef DEBUG
440#define if_DEBUG(code) if(debug) code
441#else
442#define if_DEBUG(code) /*nothing*/
443#endif
444
445#define DEBUG_MSG(text) if_DEBUG({ IGNORE_RC(write(2, text, sizeof(text) - 1)); })
446
447/***====================================================================***/
448
449#define XtNactiveIcon		"activeIcon"
450#define XtNallowBoldFonts	"allowBoldFonts"
451#define XtNallowC1Printable	"allowC1Printable"
452#define XtNallowColorOps	"allowColorOps"
453#define XtNallowFontOps		"allowFontOps"
454#define XtNallowMouseOps	"allowMouseOps"
455#define XtNallowPasteControls	"allowPasteControls"
456#define XtNallowScrollLock	"allowScrollLock"
457#define XtNallowSendEvents	"allowSendEvents"
458#define XtNallowTcapOps		"allowTcapOps"
459#define XtNallowTitleOps	"allowTitleOps"
460#define XtNallowWindowOps	"allowWindowOps"
461#define XtNaltIsNotMeta		"altIsNotMeta"
462#define XtNaltSendsEscape	"altSendsEscape"
463#define XtNalternateScroll	"alternateScroll"
464#define XtNalwaysBoldMode	"alwaysBoldMode"
465#define XtNalwaysHighlight	"alwaysHighlight"
466#define XtNalwaysUseMods	"alwaysUseMods"
467#define XtNanswerbackString	"answerbackString"
468#define XtNappcursorDefault	"appcursorDefault"
469#define XtNappkeypadDefault	"appkeypadDefault"
470#define XtNassumeAllChars	"assumeAllChars"
471#define XtNautoScrollLock	"autoScrollLock"
472#define XtNautoWrap		"autoWrap"
473#define XtNawaitInput		"awaitInput"
474#define XtNbackarrowKey		"backarrowKey"
475#define XtNbackarrowKeyIsErase	"backarrowKeyIsErase"
476#define XtNbellIsUrgent		"bellIsUrgent"
477#define XtNbellOnReset		"bellOnReset"
478#define XtNbellSuppressTime	"bellSuppressTime"
479#define XtNboldColors		"boldColors"
480#define XtNboldFont		"boldFont"
481#define XtNboldMode		"boldMode"
482#define XtNbrokenLinuxOSC	"brokenLinuxOSC"
483#define XtNbrokenSelections	"brokenSelections"
484#define XtNbrokenStringTerm	"brokenStringTerm"
485#define XtNbuffered		"buffered"
486#define XtNbufferedFPS		"bufferedFPS"
487#define XtNc132			"c132"
488#define XtNcacheDoublesize	"cacheDoublesize"
489#define XtNcdXtraScroll		"cdXtraScroll"
490#define XtNcharClass		"charClass"
491#define XtNchecksumExtension	"checksumExtension"
492#define XtNcjkWidth		"cjkWidth"
493#define XtNcolorAttrMode	"colorAttrMode"
494#define XtNcolorBDMode		"colorBDMode"
495#define XtNcolorBLMode		"colorBLMode"
496#define XtNcolorITMode		"colorITMode"
497#define XtNcolorInnerBorder	"colorInnerBorder"
498#define XtNcolorMode		"colorMode"
499#define XtNcolorRVMode		"colorRVMode"
500#define XtNcolorULMode		"colorULMode"
501#define XtNcombiningChars	"combiningChars"
502#define XtNctrlFKeys		"ctrlFKeys"
503#define XtNcurses		"curses"
504#define XtNcursorBar		"cursorBar"
505#define XtNcursorBlink		"cursorBlink"
506#define XtNcursorBlinkXOR	"cursorBlinkXOR"
507#define XtNcursorColor		"cursorColor"
508#define XtNcursorOffTime	"cursorOffTime"
509#define XtNcursorOnTime		"cursorOnTime"
510#define XtNcursorTheme		"cursorTheme"
511#define XtNcursorUnderLine	"cursorUnderLine"
512#define XtNcutNewline		"cutNewline"
513#define XtNcutToBeginningOfLine	"cutToBeginningOfLine"
514#define XtNdecGraphicsID	"decGraphicsID"
515#define XtNdecTerminalID	"decTerminalID"
516#define XtNdefaultString	"defaultString"
517#define XtNdeleteIsDEL		"deleteIsDEL"
518#define XtNdirectColor		"directColor"
519#define XtNdisallowedColorOps	"disallowedColorOps"
520#define XtNdisallowedFontOps	"disallowedFontOps"
521#define XtNdisallowedMouseOps	"disallowedMouseOps"
522#define XtNdisallowedPasteControls "disallowedPasteControls"
523#define XtNdisallowedTcapOps	"disallowedTcapOps"
524#define XtNdisallowedWindowOps	"disallowedWindowOps"
525#define XtNdynamicColors	"dynamicColors"
526#define XtNeightBitControl	"eightBitControl"
527#define XtNeightBitInput	"eightBitInput"
528#define XtNeightBitMeta		"eightBitMeta"
529#define XtNeightBitOutput	"eightBitOutput"
530#define XtNeightBitSelectTypes	"eightBitSelectTypes"
531#define XtNeraseSavedLines	"eraseSavedLines"
532#define XtNfaceName		"faceName"
533#define XtNfaceNameDoublesize	"faceNameDoublesize"
534#define XtNfaceSize		"faceSize"
535#define XtNfaintIsRelative	"faintIsRelative"
536#define XtNfastScroll		"fastScroll"
537#define XtNfont1		"font1"
538#define XtNfont2		"font2"
539#define XtNfont3		"font3"
540#define XtNfont4		"font4"
541#define XtNfont5		"font5"
542#define XtNfont6		"font6"
543#define XtNfont7		"font7"
544#define XtNfontDoublesize	"fontDoublesize"
545#define XtNfontWarnings		"fontWarnings"
546#define XtNforceBoxChars	"forceBoxChars"
547#define XtNforcePackedFont	"forcePackedFont"
548#define XtNforceXftHeight	"forceXftHeight"
549#define XtNformatOtherKeys	"formatOtherKeys"
550#define XtNfreeBoldBox		"freeBoldBox"
551#define XtNfullscreen		"fullscreen"
552#define XtNhighlightColor	"highlightColor"
553#define XtNhighlightColorMode	"highlightColorMode"
554#define XtNhighlightReverse	"highlightReverse"
555#define XtNhighlightSelection	"highlightSelection"
556#define XtNhighlightTextColor	"highlightTextColor"
557#define XtNhold			"hold"
558#define XtNhpFunctionKeys	"hpFunctionKeys"
559#define XtNhpLowerleftBugCompat	"hpLowerleftBugCompat"
560#define XtNi18nSelections	"i18nSelections"
561#define XtNiconBorderColor	"iconBorderColor"
562#define XtNiconBorderWidth	"iconBorderWidth"
563#define XtNiconFont		"iconFont"
564#define XtNiconGeometry		"iconGeometry"
565#define XtNiconHint		"iconHint"
566#define XtNincrementalGraphics  "incrementalGraphics"
567#define XtNindicatorFormat	"indicatorFormat"
568#define XtNinitialFont		"initialFont"
569#define XtNinternalBorder	"internalBorder"
570#define XtNitalicULMode		"italicULMode"
571#define XtNjumpScroll		"jumpScroll"
572#define XtNkeepClipboard	"keepClipboard"
573#define XtNkeepSelection	"keepSelection"
574#define XtNkeyboardDialect	"keyboardDialect"
575#define XtNkeyboardType		"keyboardType"
576#define XtNlimitFontHeight	"limitFontHeight"
577#define XtNlimitFontWidth	"limitFontWidth"
578#define XtNlimitFontsets	"limitFontsets"
579#define XtNlimitResize		"limitResize"
580#define XtNlimitResponse	"limitResponse"
581#define XtNlocale		"locale"
582#define XtNlocaleFilter		"localeFilter"
583#define XtNlogFile		"logFile"
584#define XtNlogInhibit		"logInhibit"
585#define XtNlogging		"logging"
586#define XtNloginShell		"loginShell"
587#define XtNmarginBell		"marginBell"
588#define XtNmaxBufSize		"maxBufSize"
589#define XtNmaxGraphicSize	"maxGraphicSize"
590#define XtNmaxStringParse	"maxStringParse"
591#define XtNmaximized		"maximized"
592#define XtNmenuBar		"menuBar"	/* internal */
593#define XtNmenuHeight		"menuHeight"
594#define XtNmenuLocale		"menuLocale"
595#define XtNmessages		"messages"
596#define XtNmetaSendsEscape	"metaSendsEscape"
597#define XtNminBufSize		"minBufSize"
598#define XtNmkSamplePass		"mkSamplePass"
599#define XtNmkSampleSize		"mkSampleSize"
600#define XtNmkWidth		"mkWidth"
601#define XtNmodifyCursorKeys	"modifyCursorKeys"
602#define XtNmodifyFunctionKeys	"modifyFunctionKeys"
603#define XtNmodifyKeyboard	"modifyKeyboard"
604#define XtNmodifyKeypadKeys	"modifyKeypadKeys"
605#define XtNmodifyOtherKeys	"modifyOtherKeys"
606#define XtNmodifyStringKeys	"modifyStringKeys"
607#define XtNmultiClickTime	"multiClickTime"
608#define XtNmultiScroll		"multiScroll"
609#define XtNnMarginBell		"nMarginBell"
610#define XtNnextEventDelay	"nextEventDelay"
611#define XtNnumColorRegisters	"numColorRegisters"
612#define XtNnumLock		"numLock"
613#define XtNoldXtermFKeys	"oldXtermFKeys"
614#define XtNomitTranslation	"omitTranslation"
615#define XtNpointerColor		"pointerColor"
616#define XtNpointerColorBackground "pointerColorBackground"
617#define XtNpointerFont		"pointerFont"
618#define XtNpointerMode		"pointerMode"
619#define XtNpointerShape		"pointerShape"
620#define XtNpopOnBell		"popOnBell"
621#define XtNprecompose		"precompose"
622#define XtNpreferLatin1		"preferLatin1"
623#define XtNprintAttributes	"printAttributes"
624#define XtNprintFileImmediate	"printFileImmediate"
625#define XtNprintFileOnXError	"printFileOnXError"
626#define XtNprintModeImmediate	"printModeImmediate"
627#define XtNprintModeOnXError	"printModeOnXError"
628#define XtNprintOptsImmediate	"printOptsImmediate"
629#define XtNprintOptsOnXError	"printOptsOnXError"
630#define XtNprinterAutoClose	"printerAutoClose"
631#define XtNprinterCommand	"printerCommand"
632#define XtNprinterControlMode	"printerControlMode"
633#define XtNprinterExtent	"printerExtent"
634#define XtNprinterFormFeed	"printerFormFeed"
635#define XtNprinterNewLine	"printerNewLine"
636#define XtNprivateColorRegisters "privateColorRegisters"
637#define XtNptyHandshake		"ptyHandshake"
638#define XtNptyInitialErase	"ptyInitialErase"
639#define XtNptySttySize		"ptySttySize"
640#define XtNquietGrab		"quietGrab"
641#define XtNregisDefaultFont	"regisDefaultFont"
642#define XtNregisScreenSize	"regisScreenSize"
643#define XtNrenderFont		"renderFont"
644#define XtNreportCClass		"reportCClass"
645#define XtNreportColors		"reportColors"
646#define XtNreportFonts		"reportFonts"
647#define XtNreportIcons		"reportIcons"
648#define XtNreportXRes		"reportXRes"
649#define XtNresizeByPixel	"resizeByPixel"
650#define XtNresizeGravity	"resizeGravity"
651#define XtNretryInputMethod	"retryInputMethod"
652#define XtNreverseWrap		"reverseWrap"
653#define XtNrightScrollBar	"rightScrollBar"
654#define XtNsameName		"sameName"
655#define XtNsaveLines		"saveLines"
656#define XtNscaleHeight		"scaleHeight"
657#define XtNscoFunctionKeys	"scoFunctionKeys"
658#define XtNscrollBar		"scrollBar"
659#define XtNscrollBarBorder	"scrollBarBorder"
660#define XtNscrollKey		"scrollKey"
661#define XtNscrollLines		"scrollLines"
662#define XtNscrollTtyOutput	"scrollTtyOutput"
663#define XtNselectToClipboard	"selectToClipboard"
664#define XtNsessionMgt		"sessionMgt"
665#define XtNshiftEscape		"shiftEscape"
666#define XtNshiftFonts		"shiftFonts"
667#define XtNshowBlinkAsBold	"showBlinkAsBold"
668#define XtNshowMissingGlyphs	"showMissingGlyphs"
669#define XtNshowWrapMarks	"showWrapMarks"
670#define XtNsignalInhibit	"signalInhibit"
671#define XtNsixelScrolling	"sixelScrolling"
672#define XtNsixelScrollsRight	"sixelScrollsRight"
673#define XtNsunFunctionKeys	"sunFunctionKeys"
674#define XtNsunKeyboard		"sunKeyboard"
675#define XtNtcapFunctionKeys	"tcapFunctionKeys"
676#define XtNtekGeometry		"tekGeometry"
677#define XtNtekInhibit		"tekInhibit"
678#define XtNtekSmall		"tekSmall"
679#define XtNtekStartup		"tekStartup"
680#define XtNtermName		"termName"
681#define XtNtiXtraScroll		"tiXtraScroll"
682#define XtNtiteInhibit		"titeInhibit"
683#define XtNtitleModes		"titleModes"
684#define XtNtoolBar		"toolBar"
685#define XtNtrimSelection	"trimSelection"
686#define XtNttyModes		"ttyModes"
687#define XtNunderLine		"underLine"
688#define XtNuseBorderClipping	"useBorderClipping"
689#define XtNuseClipping		"useClipping"
690#define XtNuseInsertMode	"useInsertMode"
691#define XtNutf8			"utf8"
692#define XtNutf8Fonts		"utf8Fonts"
693#define XtNutf8Latin1		"utf8Latin1"
694#define XtNutf8SelectTypes	"utf8SelectTypes"
695#define XtNutf8Title		"utf8Title"
696#define XtNutf8Weblike		"utf8Weblike"
697#define XtNutmpDisplayId	"utmpDisplayId"
698#define XtNutmpInhibit		"utmpInhibit"
699#define XtNvalidShells		"validShells"
700#define XtNveryBoldColors	"veryBoldColors"
701#define XtNvisualBell		"visualBell"
702#define XtNvisualBellDelay	"visualBellDelay"
703#define XtNvisualBellLine	"visualBellLine"
704#define XtNvt100Graphics	"vt100Graphics"
705#define XtNwaitForMap		"waitForMap"
706#define XtNwideBoldFont		"wideBoldFont"
707#define XtNwideChars		"wideChars"
708#define XtNwideFont		"wideFont"
709#define XtNxftMaxGlyphMemory	"xftMaxGlyphMemory"
710#define XtNxftMaxUnrefFonts	"xftMaxUnrefFonts"
711#define XtNxftTrackMemUsage	"xftTrackMemUsage"
712#define XtNximFont		"ximFont"
713#define XtNxmcAttributes	"xmcAttributes"	/* ncurses-testing */
714#define XtNxmcGlitch		"xmcGlitch"	/* ncurses-testing */
715#define XtNxmcInline		"xmcInline"	/* ncurses-testing */
716#define XtNxmcMoveSGR		"xmcMoveSGR"	/* ncurses-testing */
717#define XtNzIconBeep		"zIconBeep"
718#define XtNzIconTitleFormat	"zIconTitleFormat"
719
720#define XtCActiveIcon		"ActiveIcon"
721#define XtCAllowBoldFonts	"AllowBoldFonts"
722#define XtCAllowC1Printable	"AllowC1Printable"
723#define XtCAllowColorOps	"AllowColorOps"
724#define XtCAllowFontOps		"AllowFontOps"
725#define XtCAllowMouseOps	"AllowMouseOps"
726#define XtCAllowPasteControls	"AllowPasteControls"
727#define XtCAllowScrollLock	"AllowScrollLock"
728#define XtCAllowSendEvents	"AllowSendEvents"
729#define XtCAllowTcapOps		"AllowTcapOps"
730#define XtCAllowTitleOps	"AllowTitleOps"
731#define XtCAllowWindowOps	"AllowWindowOps"
732#define XtCAltIsNotMeta		"AltIsNotMeta"
733#define XtCAltSendsEscape	"AltSendsEscape"
734#define XtCAlwaysBoldMode	"AlwaysBoldMode"
735#define XtCAlwaysHighlight	"AlwaysHighlight"
736#define XtCAlwaysUseMods	"AlwaysUseMods"
737#define XtCAnswerbackString	"AnswerbackString"
738#define XtCAppcursorDefault	"AppcursorDefault"
739#define XtCAppkeypadDefault	"AppkeypadDefault"
740#define XtCAssumeAllChars	"AssumeAllChars"
741#define XtCAutoScrollLock	"AutoScrollLock"
742#define XtCAutoWrap		"AutoWrap"
743#define XtCAwaitInput		"AwaitInput"
744#define XtCBackarrowKey		"BackarrowKey"
745#define XtCBackarrowKeyIsErase	"BackarrowKeyIsErase"
746#define XtCBellIsUrgent		"BellIsUrgent"
747#define XtCBellOnReset		"BellOnReset"
748#define XtCBellSuppressTime	"BellSuppressTime"
749#define XtCBoldFont		"BoldFont"
750#define XtCBoldMode		"BoldMode"
751#define XtCBrokenLinuxOSC	"BrokenLinuxOSC"
752#define XtCBrokenSelections	"BrokenSelections"
753#define XtCBrokenStringTerm	"BrokenStringTerm"
754#define XtCBuffered		"Buffered"
755#define XtCBufferedFPS		"BufferedFPS"
756#define XtCC132			"C132"
757#define XtCCacheDoublesize	"CacheDoublesize"
758#define XtCCdXtraScroll		"CdXtraScroll"
759#define XtCCharClass		"CharClass"
760#define XtCChecksumExtension	"ChecksumExtension"
761#define XtCCjkWidth		"CjkWidth"
762#define XtCColorAttrMode	"ColorAttrMode"
763#define XtCColorInnerBorder	"ColorInnerBorder"
764#define XtCColorMode		"ColorMode"
765#define XtCColumn		"Column"
766#define XtCCombiningChars	"CombiningChars"
767#define XtCCtrlFKeys		"CtrlFKeys"
768#define XtCCurses		"Curses"
769#define XtCCursorBar		"CursorBar"
770#define XtCCursorBlink		"CursorBlink"
771#define XtCCursorBlinkXOR	"CursorBlinkXOR"
772#define XtCCursorOffTime	"CursorOffTime"
773#define XtCCursorOnTime		"CursorOnTime"
774#define XtCCursorTheme		"CursorTheme"
775#define XtCCursorUnderLine	"CursorUnderLine"
776#define XtCCutNewline		"CutNewline"
777#define XtCCutToBeginningOfLine	"CutToBeginningOfLine"
778#define XtCDecGraphicsID	"DecGraphicsID"
779#define XtCDecTerminalID	"DecTerminalID"
780#define XtCDefaultString	"DefaultString"
781#define XtCDeleteIsDEL		"DeleteIsDEL"
782#define XtCDirectColor		"DirectColor"
783#define XtCDisallowedColorOps	"DisallowedColorOps"
784#define XtCDisallowedFontOps	"DisallowedFontOps"
785#define XtCDisallowedMouseOps	"DisallowedMouseOps"
786#define XtCDisallowedPasteControls "DisallowedPasteControls"
787#define XtCDisallowedTcapOps	"DisallowedTcapOps"
788#define XtCDisallowedWindowOps	"DisallowedWindowOps"
789#define XtCDynamicColors	"DynamicColors"
790#define XtCEightBitControl	"EightBitControl"
791#define XtCEightBitInput	"EightBitInput"
792#define XtCEightBitMeta		"EightBitMeta"
793#define XtCEightBitOutput	"EightBitOutput"
794#define XtCEightBitSelectTypes	"EightBitSelectTypes"
795#define XtCEraseSavedLines	"EraseSavedLines"
796#define XtCFaceName		"FaceName"
797#define XtCFaceNameDoublesize	"FaceNameDoublesize"
798#define XtCFaceSize		"FaceSize"
799#define XtCFaintIsRelative	"FaintIsRelative"
800#define XtCFastScroll		"FastScroll"
801#define XtCFont1		"Font1"
802#define XtCFont2		"Font2"
803#define XtCFont3		"Font3"
804#define XtCFont4		"Font4"
805#define XtCFont5		"Font5"
806#define XtCFont6		"Font6"
807#define XtCFont7		"Font7"
808#define XtCFontDoublesize	"FontDoublesize"
809#define XtCFontWarnings		"FontWarnings"
810#define XtCForceBoxChars	"ForceBoxChars"
811#define XtCForcePackedFont	"ForcePackedFont"
812#define XtCForceXftHeight	"ForceXftHeight"
813#define XtCFormatOtherKeys	"FormatOtherKeys"
814#define XtCFreeBoldBox		"FreeBoldBox"
815#define XtCFullscreen		"Fullscreen"
816#define XtCHighlightColorMode	"HighlightColorMode"
817#define XtCHighlightReverse	"HighlightReverse"
818#define XtCHighlightSelection	"HighlightSelection"
819#define XtCHold			"Hold"
820#define XtCHpFunctionKeys	"HpFunctionKeys"
821#define XtCHpLowerleftBugCompat	"HpLowerleftBugCompat"
822#define XtCI18nSelections	"I18nSelections"
823#define XtCIconFont		"IconFont"
824#define XtCIconGeometry		"IconGeometry"
825#define XtCIconHint		"IconHint"
826#define XtCIncrementalGraphics  "IncrementalGraphics"
827#define XtCIndicatorFormat	"IndicatorFormat"
828#define XtCInitialFont		"InitialFont"
829#define XtCInternalBorder	"InternalBorder"
830#define XtCJumpScroll		"JumpScroll"
831#define XtCKeepClipboard	"KeepClipboard"
832#define XtCKeepSelection	"KeepSelection"
833#define XtCKeyboardDialect	"KeyboardDialect"
834#define XtCKeyboardType		"KeyboardType"
835#define XtCLimitFontHeight	"LimitFontHeight"
836#define XtCLimitFontWidth	"LimitFontWidth"
837#define XtCLimitFontsets	"LimitFontsets"
838#define XtCLimitResize		"LimitResize"
839#define XtCLimitResponse	"LimitResponse"
840#define XtCLocale		"Locale"
841#define XtCLocaleFilter		"LocaleFilter"
842#define XtCLogInhibit		"LogInhibit"
843#define XtCLogfile		"Logfile"
844#define XtCLogging		"Logging"
845#define XtCLoginShell		"LoginShell"
846#define XtCMarginBell		"MarginBell"
847#define XtCMaxBufSize		"MaxBufSize"
848#define XtCMaxGraphicSize	"MaxGraphicSize"
849#define XtCMaxStringParse	"MaxStringParse"
850#define XtCMaximized		"Maximized"
851#define XtCMenuBar		"MenuBar"	/* internal */
852#define XtCMenuHeight		"MenuHeight"
853#define XtCMenuLocale		"MenuLocale"
854#define XtCMessages		"Messages"
855#define XtCMetaSendsEscape	"MetaSendsEscape"
856#define XtCMinBufSize		"MinBufSize"
857#define XtCMkSamplePass		"MkSamplePass"
858#define XtCMkSampleSize		"MkSampleSize"
859#define XtCMkWidth		"MkWidth"
860#define XtCModifyCursorKeys	"ModifyCursorKeys"
861#define XtCModifyFunctionKeys	"ModifyFunctionKeys"
862#define XtCModifyKeyboard	"ModifyKeyboard"
863#define XtCModifyKeypadKeys	"ModifyKeypadKeys"
864#define XtCModifyOtherKeys	"ModifyOtherKeys"
865#define XtCModifyStringKeys	"ModifyStringKeys"
866#define XtCMultiClickTime	"MultiClickTime"
867#define XtCMultiScroll		"MultiScroll"
868#define XtCNextEventDelay	"NextEventDelay"
869#define XtCNumColorRegisters	"NumColorRegisters"
870#define XtCNumLock		"NumLock"
871#define XtCOldXtermFKeys	"OldXtermFKeys"
872#define XtCOmitTranslation	"OmitTranslation"
873#define XtCPointerFont		"PointerFont"
874#define XtCPointerMode		"PointerMode"
875#define XtCPopOnBell		"PopOnBell"
876#define XtCPrecompose		"Precompose"
877#define XtCPreferLatin1		"PreferLatin1"
878#define XtCPrintAttributes	"PrintAttributes"
879#define XtCPrintFileImmediate	"PrintFileImmediate"
880#define XtCPrintFileOnXError	"PrintFileOnXError"
881#define XtCPrintModeImmediate	"PrintModeImmediate"
882#define XtCPrintModeOnXError	"PrintModeOnXError"
883#define XtCPrintOptsImmediate	"PrintOptsImmediate"
884#define XtCPrintOptsOnXError	"PrintOptsOnXError"
885#define XtCPrinterAutoClose	"PrinterAutoClose"
886#define XtCPrinterCommand	"PrinterCommand"
887#define XtCPrinterControlMode	"PrinterControlMode"
888#define XtCPrinterExtent	"PrinterExtent"
889#define XtCPrinterFormFeed	"PrinterFormFeed"
890#define XtCPrinterNewLine	"PrinterNewLine"
891#define XtCPrivateColorRegisters "PrivateColorRegisters"
892#define XtCPtyHandshake		"PtyHandshake"
893#define XtCPtyInitialErase	"PtyInitialErase"
894#define XtCPtySttySize		"PtySttySize"
895#define XtCQuietGrab		"QuietGrab"
896#define XtCRegisDefaultFont	"RegisDefaultFont"
897#define XtCRegisScreenSize	"RegisScreenSize"
898#define XtCRenderFont		"RenderFont"
899#define XtCReportCClass		"ReportCClass"
900#define XtCReportColors		"ReportColors"
901#define XtCReportFonts		"ReportFonts"
902#define XtCReportIcons		"ReportIcons"
903#define XtCReportXRes		"ReportXRes"
904#define XtCResizeByPixel	"ResizeByPixel"
905#define XtCResizeGravity	"ResizeGravity"
906#define XtCRetryInputMethod	"RetryInputMethod"
907#define XtCReverseWrap		"ReverseWrap"
908#define XtCRightScrollBar	"RightScrollBar"
909#define XtCSameName		"SameName"
910#define XtCSaveLines		"SaveLines"
911#define XtCScaleHeight		"ScaleHeight"
912#define XtCScoFunctionKeys	"ScoFunctionKeys"
913#define XtCScrollBar		"ScrollBar"
914#define XtCScrollBarBorder	"ScrollBarBorder"
915#define XtCScrollCond		"ScrollCond"
916#define XtCScrollLines		"ScrollLines"
917#define XtCSelectToClipboard	"SelectToClipboard"
918#define XtCSessionMgt		"SessionMgt"
919#define XtCShiftEscape		"ShiftEscape"
920#define XtCShiftFonts		"ShiftFonts"
921#define XtCShowBlinkAsBold	"ShowBlinkAsBold"
922#define XtCShowMissingGlyphs	"ShowMissingGlyphs"
923#define XtCShowWrapMarks	"ShowWrapMarks"
924#define XtCSignalInhibit	"SignalInhibit"
925#define XtCSixelScrolling	"SixelScrolling"
926#define XtCSixelScrollsRight	"SixelScrollsRight"
927#define XtCSunFunctionKeys	"SunFunctionKeys"
928#define XtCSunKeyboard		"SunKeyboard"
929#define XtCTcapFunctionKeys	"TcapFunctionKeys"
930#define XtCTekInhibit		"TekInhibit"
931#define XtCTekSmall		"TekSmall"
932#define XtCTekStartup		"TekStartup"
933#define XtCTermName		"TermName"
934#define XtCTiXtraScroll		"TiXtraScroll"
935#define XtCTiteInhibit		"TiteInhibit"
936#define XtCTitleModes		"TitleModes"
937#define XtCToolBar		"ToolBar"
938#define XtCTrimSelection	"TrimSelection"
939#define XtCTtyModes		"TtyModes"
940#define XtCUnderLine		"UnderLine"
941#define XtCUseBorderClipping	"UseBorderClipping"
942#define XtCUseClipping		"UseClipping"
943#define XtCUseInsertMode	"UseInsertMode"
944#define XtCUtf8			"Utf8"
945#define XtCUtf8Fonts		"Utf8Fonts"
946#define XtCUtf8Latin1		"Utf8Latin1"
947#define XtCUtf8SelectTypes	"Utf8SelectTypes"
948#define XtCUtf8Title		"Utf8Title"
949#define XtCUtf8Weblike		"Utf8Weblike"
950#define XtCUtmpDisplayId	"UtmpDisplayId"
951#define XtCUtmpInhibit		"UtmpInhibit"
952#define XtCVT100Graphics	"VT100Graphics"
953#define XtCValidShells		"ValidShells"
954#define XtCVeryBoldColors	"VeryBoldColors"
955#define XtCVisualBell		"VisualBell"
956#define XtCVisualBellDelay	"VisualBellDelay"
957#define XtCVisualBellLine	"VisualBellLine"
958#define XtCWaitForMap		"WaitForMap"
959#define XtCWideBoldFont		"WideBoldFont"
960#define XtCWideChars		"WideChars"
961#define XtCWideFont		"WideFont"
962#define XtCXftMaxGlyphMemory	"XftMaxGlyphMemory"
963#define XtCXftMaxUnrefFonts	"XftMaxUnrefFonts"
964#define XtCXftTrackMemUsage	"XftTrackMemUsage"
965#define XtCXimFont		"XimFont"
966#define XtCXmcAttributes	"XmcAttributes"	/* ncurses-testing */
967#define XtCXmcGlitch		"XmcGlitch"	/* ncurses-testing */
968#define XtCXmcInline		"XmcInline"	/* ncurses-testing */
969#define XtCXmcMoveSGR		"XmcMoveSGR"	/* ncurses-testing */
970#define XtCZIconBeep		"ZIconBeep"
971#define XtCZIconTitleFormat	"ZIconTitleFormat"
972
973#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry)
974#define XtNgeometry		"geometry"
975#define XtCGeometry		"Geometry"
976#endif
977
978#if OPT_COLOR_CLASS
979#define XtCCursorColor		"CursorColor"
980#define XtCPointerColor		"PointerColor"
981#define XtCHighlightColor	"HighlightColor"
982#define XtCHighlightTextColor	"HighlightTextColor"
983#else
984#define XtCCursorColor		XtCForeground
985#define XtCPointerColor		XtCForeground
986#define XtCHighlightColor	XtCForeground
987#define XtCHighlightTextColor	XtCBackground
988#endif
989
990/***====================================================================***/
991
992#ifdef __cplusplus
993extern "C" {
994#endif
995
996struct XTERM_RESOURCE;
997
998/* Tekproc.c */
999#if OPT_TEK4014
1000extern TekWidget getTekWidget(Widget /* w */);
1001extern int TekGetFontSize (const char * /* param */);
1002extern int TekInit (void);
1003extern void ChangeTekColors (TekWidget /* tw */, TScreen * /* screen */, ScrnColors * /* pNew */);
1004extern void HandleGINInput             PROTO_XT_ACTIONS_ARGS;
1005extern void TCursorToggle (TekWidget /* tw */, int /* toggle */);
1006extern void TekCopy (TekWidget /* tw */);
1007extern void TekEnqMouse (TekWidget /* tw */, int /* c */);
1008extern void TekExpose (Widget /* w */, XEvent * /* event */, Region /* region */);
1009extern void TekGINoff (TekWidget /* tw */);
1010extern void TekRefresh (TekWidget /* tw */);
1011extern void TekRepaint (TekWidget /* xw */);
1012extern void TekReverseVideo (XtermWidget /* xw */, TekWidget /* tw */);
1013extern void TekRun (void);
1014extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int /* newitem */);
1015extern void TekSetWinSize (TekWidget /* tw */);
1016extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */);
1017#endif
1018
1019/* button.c */
1020#define	MotionOff( s, t ) if (!(screen->hide_pointer)) {		\
1021	    (s)->event_mask |= ButtonMotionMask;			\
1022	    (s)->event_mask &= ~PointerMotionMask;			\
1023	    XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
1024
1025#define	MotionOn( s, t ) {						\
1026	    (s)->event_mask &= ~ButtonMotionMask;			\
1027	    (s)->event_mask |= PointerMotionMask;			\
1028	    XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
1029
1030extern Bool SendMousePosition (XtermWidget /* w */, XEvent* /* event */);
1031extern XtermMouseModes okSendMousePos(XtermWidget /* xw */);
1032extern void DiredButton                PROTO_XT_ACTIONS_ARGS;
1033extern void DisownSelection (XtermWidget /* xw */);
1034extern void UnhiliteSelection (XtermWidget /* xw */);
1035extern void HandleCopySelection        PROTO_XT_ACTIONS_ARGS;
1036extern void HandleInsertSelection      PROTO_XT_ACTIONS_ARGS;
1037extern void HandleKeyboardSelectEnd    PROTO_XT_ACTIONS_ARGS;
1038extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS;
1039extern void HandleKeyboardSelectStart  PROTO_XT_ACTIONS_ARGS;
1040extern void HandleKeyboardStartExtend  PROTO_XT_ACTIONS_ARGS;
1041extern void HandlePointerMotion        PROTO_XT_ACTIONS_ARGS;
1042extern void HandlePointerButton        PROTO_XT_ACTIONS_ARGS;
1043extern void HandleSelectEnd            PROTO_XT_ACTIONS_ARGS;
1044extern void HandleSelectExtend         PROTO_XT_ACTIONS_ARGS;
1045extern void HandleSelectSet            PROTO_XT_ACTIONS_ARGS;
1046extern void HandleSelectStart          PROTO_XT_ACTIONS_ARGS;
1047extern void HandleStartExtend          PROTO_XT_ACTIONS_ARGS;
1048extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */);
1049extern void ScrollSelection (TScreen * /* screen */, int /* amount */,  Bool /* always */);
1050extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */);
1051extern void ViButton                   PROTO_XT_ACTIONS_ARGS;
1052
1053extern void UnmapSelections (XtermWidget /* xw */);
1054extern int xtermUtf8ToTextList (XtermWidget /* xw */, XTextProperty * /* text_prop */, char *** /* text_list */, int * /* text_list_count */);
1055extern void xtermButtonInit (XtermWidget /* xw */);
1056
1057#if OPT_DEC_LOCATOR
1058extern void GetLocatorPosition (XtermWidget /* w */);
1059extern void InitLocatorFilter (XtermWidget /* w */);
1060#endif	/* OPT_DEC_LOCATOR */
1061
1062#if OPT_FOCUS_EVENT
1063extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event */);
1064#else
1065#define SendFocusBotton(xw, event) /* nothing */
1066#endif
1067
1068#if OPT_PASTE64
1069extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned /* c */, String /* selection */);
1070extern void ClearSelectionBuffer (TScreen * /* screen */, String /* selection */);
1071extern void CompleteSelection (XtermWidget /* xw */, String * /* args */, Cardinal /* len */);
1072extern void xtermGetSelection (Widget /* w */, Time /* ev_time */, String * /* params */, Cardinal /* num_params */, Atom * /* targets */);
1073#endif
1074
1075#if OPT_READLINE
1076extern void ReadLineButton             PROTO_XT_ACTIONS_ARGS;
1077#endif
1078
1079#if OPT_REPORT_CCLASS
1080extern void report_char_class(XtermWidget);
1081#endif
1082
1083#define IsAscii1(n)  (((n) >= 32 && (n) <= 126))
1084
1085#if OPT_WIDE_CHARS
1086#define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1)
1087#define isWideFrg(n) (((n) == HIDDEN_CHAR) || (WideCells((n)) == 2))
1088#define isWide(n)    (((IChar)(n) >= first_widechar) && isWideFrg(n))
1089#define CharWidth(screen, n) (((n) < 256) \
1090			      ? (IsLatin1(n) ? 1 : 0) \
1091			      : my_wcwidth((wchar_t) (n)))
1092#define IsLatin1(n)  (IsAscii1(n) || ((n) >= 160 && (n) <= 255))
1093#else
1094#define WideCells(n) 1
1095#define CharWidth(screen, n) (IsLatin1(n) ? 1 : 0)
1096#define IsLatin1(n)  (IsAscii1(n) || ((n) >= 160))
1097#endif
1098
1099/* cachedCgs.c */
1100extern CgsEnum getCgsId(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
1101extern GC freeCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/);
1102extern GC getCgsGC(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/);
1103extern Pixel getCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
1104extern Pixel getCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
1105extern XTermFonts * getCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
1106extern void clrCgsFonts(XtermWidget /*xw*/, VTwin * /*cgsWin*/, XTermFonts * /*font*/);
1107extern void copyCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
1108extern void redoCgs(XtermWidget /*xw*/, Pixel /*fg*/, Pixel /*bg*/, CgsEnum /*cgsId*/);
1109extern void setCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*bg*/);
1110extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, unsigned /*cset*/);
1111extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/);
1112extern void setCgsFont2(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/, unsigned /*which*/);
1113extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
1114extern void setCgsLine(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
1115extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
1116
1117#ifdef NO_LEAKS
1118extern void noleaks_cachedCgs (XtermWidget /* xw */);
1119#endif
1120
1121/* charproc.c */
1122extern Bool CheckBufPtrs (TScreen * /* screen */);
1123extern Bool set_cursor_gcs (XtermWidget /* xw */);
1124extern char * vt100ResourceToString (XtermWidget /* xw */, const char * /* name */);
1125extern int VTInit (XtermWidget /* xw */);
1126extern Bool FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */);
1127extern void HideCursor (XtermWidget /* xw */);
1128extern void RestartBlinking(XtermWidget /* xw */);
1129extern void ShowCursor (XtermWidget /* xw */);
1130extern void SwitchBufPtrs (XtermWidget /* xw */, int /* toBuf */);
1131extern void ToggleAlternate (XtermWidget /* xw */);
1132extern void VTInitTranslations (void);
1133extern GCC_NORETURN void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */);
1134extern void VTRun (XtermWidget /* xw */);
1135extern void dotext (XtermWidget /* xw */, DECNRCM_codes /* charset */, IChar * /* buf */, Cardinal /* len */);
1136extern void getKeymapResources(Widget /* w */, const char * /*mapName */, const char * /* mapClass */, const char * /* type */, void * /* result */, size_t /* size */);
1137extern void initBorderGC (XtermWidget /* xw */, VTwin * /* win */);
1138extern void lookupSelectUnit(XtermWidget /* xw */, Cardinal /* item */, String /* value */);
1139extern void releaseCursorGCs(XtermWidget /*xw*/);
1140extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/);
1141extern void resetCharsets (TScreen * /* screen */);
1142extern void resetMargins (XtermWidget /* xw */);
1143extern void restoreCharsets (TScreen * /* screen */, DECNRCM_codes * /* source */);
1144extern void saveCharsets (TScreen * /* screen */, DECNRCM_codes * /* target */);
1145extern void set_max_col(TScreen * /* screen */, int /* cols */);
1146extern void set_max_row(TScreen * /* screen */, int /* rows */);
1147extern void unparse_disallowed_ops (XtermWidget /* xw */, char * /* value */);
1148extern void unparse_end (XtermWidget /* xw */);
1149extern void unparseputc (XtermWidget /* xw */, int /* c */);
1150extern void unparseputc1 (XtermWidget /* xw */, int /* c */);
1151extern void unparseputn (XtermWidget /* xw */, unsigned /* n */);
1152extern void unparseputs (XtermWidget /* xw */, const char * /* s */);
1153extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */);
1154extern void v_write (int /* f */, const Char * /* d */, size_t /* len */);
1155extern void xtermAddInput (Widget /* w */);
1156extern void xtermDecodeSCS (XtermWidget /* xw */, int /* which */, int /* sgroup */, int /* prefix */, int /* suffix */);
1157
1158#if OPT_BLINK_CURS
1159extern void ToggleCursorBlink(XtermWidget /* xw */);
1160#endif
1161
1162#if OPT_BLINK_TEXT
1163extern Bool LineHasBlinking(TScreen * /* screen */, CLineData * /* ld */);
1164#endif
1165
1166#if OPT_INPUT_METHOD
1167extern TInput *lookupTInput (XtermWidget /* xw */, Widget /* w */);
1168#endif
1169
1170#if OPT_ISO_COLORS
1171extern void SGR_Background (XtermWidget /* xw */, int /* color */);
1172extern void SGR_Foreground (XtermWidget /* xw */, int /* color */);
1173extern void setExtendedColors (XtermWidget /* xw */);
1174#endif
1175
1176#ifdef NO_LEAKS
1177extern void noleaks_charproc (void);
1178#endif
1179
1180/* charsets.c */
1181extern unsigned xtermCharSetIn (XtermWidget /* xw */, unsigned /* code */, DECNRCM_codes /* charset */);
1182extern Cardinal xtermCharSetOut (XtermWidget /* xw */, Cardinal /* length */, DECNRCM_codes /* charset */);
1183extern int xtermCharSetDec (XtermWidget /* xw */, IChar /* ch */, DECNRCM_codes /* cs */);
1184
1185/* cursor.c */
1186extern int CursorCol (XtermWidget /* xw */);
1187extern int CursorRow (XtermWidget /* xw */);
1188extern void AdjustSavedCursor (XtermWidget /* xw */, int /* adjust */);
1189extern void CarriageReturn (XtermWidget /* xw */);
1190extern void CursorBack (XtermWidget /* xw */, int /* n */);
1191extern void CursorDown (TScreen * /* screen */, int /* n */);
1192extern void CursorForward (XtermWidget /* xw */, int /* n */);
1193extern void CursorNextLine (XtermWidget /* xw */, int /* count */);
1194extern void CursorPrevLine (XtermWidget /* xw */, int /* count */);
1195extern void CursorRestore2 (XtermWidget /* xw */, SavedCursor * /* sc */);
1196extern void CursorRestore (XtermWidget /* xw */);
1197extern void CursorSave2 (XtermWidget /* xw */, SavedCursor * /* sc */);
1198extern void CursorSave (XtermWidget /* xw */);
1199extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */);
1200extern void CursorUp (TScreen * /* screen */, int /* n */);
1201extern void RevIndex (XtermWidget /* xw */, int /* amount */);
1202extern void xtermIndex (XtermWidget /* xw */, int /* amount */);
1203
1204#if OPT_TRACE
1205extern int set_cur_col(TScreen * /* screen */, int /* value */);
1206extern int set_cur_row(TScreen * /* screen */, int /* value */);
1207#else
1208#define set_cur_col(screen, value) screen->cur_col = value
1209#define set_cur_row(screen, value) \
1210	do { \
1211	    int row_value = value; \
1212	    if_STATUS_LINE(screen, { \
1213		row_value = LastRowNumber(screen); \
1214	    }); \
1215	    screen->cur_row = row_value; \
1216	} while (0)
1217#endif
1218
1219/* cursorfont.c */
1220extern Cursor CreateAlternateCursorFontCursor(Display * /* dpy */, char const * /* cursorfont */, unsigned int /* which */);
1221extern int CursorFontIndexFromShapeName(char const * /* shapename */);
1222
1223/* doublechr.c */
1224extern void xterm_DECDHL (XtermWidget /* xw */, Bool /* top */);
1225extern void xterm_DECSWL (XtermWidget /* xw */);
1226extern void xterm_DECDWL (XtermWidget /* xw */);
1227extern void xterm_ResetDouble(XtermWidget /* xw */);
1228#if OPT_DEC_CHRSET
1229extern GC xterm_DoubleGC(XTermDraw * /* params */, GC /* old_gc */, int * /* inxp */);
1230#if OPT_RENDERFONT
1231extern XTermXftFonts * xterm_DoubleFT(XTermDraw * /* params */, unsigned /* chrset */, unsigned /* attr_flags */);
1232extern void freeall_DoubleFT(XtermWidget /* xw */);
1233#endif
1234#endif
1235
1236/* input.c */
1237extern unsigned xtermParamToState (XtermWidget /* xw */, unsigned /* param */);
1238extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */);
1239extern Bool xtermDeleteIsDEL (XtermWidget /* xw */);
1240extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */);
1241extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t /* nbytes */);
1242
1243#if OPT_NUM_LOCK
1244extern void VTInitModifiers(XtermWidget /* xw */);
1245#else
1246#define VTInitModifiers(xw) /* nothing */
1247#endif
1248
1249/* linedata.c */
1250extern LineData *getLineData(TScreen * /* screen */, int /* row */);
1251extern void copyLineData(LineData * /* dst */, CLineData * /* src */);
1252extern void initLineData(XtermWidget /* xw */);
1253
1254extern CellData *newCellData(XtermWidget /* xw */, Cardinal /* count */);
1255extern void saveCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, CLineData * /* ld */, XTermRect * /* limits */, int /* column */);
1256extern void restoreCellData(TScreen * /* screen */, const CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, XTermRect * /* limits */, int /* column */);
1257
1258/* main.c */
1259#define ENVP_ARG /**/
1260
1261extern int main (int /* argc */, char ** /* argv */ ENVP_ARG);
1262extern int xtermDisabledChar(void);
1263extern int GetBytesAvailable (Display * /* dpy */);
1264extern int kill_process_group (int /* pid */, int /* sig */);
1265extern int nonblocking_wait (void);
1266extern Atom CachedInternAtom(Display * /* display */, const char * /* name */);
1267
1268extern int get_tty_erase(int /* fd */, int /* default_erase */, const char * /* tag */);
1269extern int get_tty_lnext(int /* fd */, int /* default_lnext */, const char * /* tag */);
1270
1271#if (defined(VMS) || defined(__VMS))
1272#define GetBytesAvailable(dpy) ((dpy)->qlen > 0)
1273#endif
1274
1275#if OPT_PTY_HANDSHAKE
1276extern void first_map_occurred (void);
1277#else
1278#define first_map_occurred() /* nothing */
1279#endif
1280
1281extern GCC_NORETURN void Exit (int /* n */);
1282
1283#ifndef SIG_ATOMIC_T
1284#define SIG_ATOMIC_T int
1285#endif
1286
1287#if OPT_WIDE_CHARS
1288extern unsigned first_widechar;
1289extern int (*my_wcwidth)(wchar_t);
1290#endif
1291
1292/* menu.c */
1293extern void do_hangup          PROTO_XT_CALLBACK_ARGS;
1294extern void repairSizeHints    (void);
1295extern void show_8bit_control  (Bool /* value */);
1296
1297/* misc.c */
1298
1299#define TIMESTAMP_LEN 20	/* length of TIMESTAMP_FMT */
1300
1301extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool);
1302extern Boolean allocateBestRGB(XtermWidget /* xw */, XColor * /* def */);
1303extern Boolean validProgram(const char * /* pathname */);
1304extern Boolean xtermGetWinAttrs(Display * /* dpy */, Window /* win */, XWindowAttributes * /* attrs */);
1305extern Boolean xtermGetWinProp(Display * /* dpy */, Window /* win */, Atom /* property */, long /* long_offset */, long /* long_length */, Atom /* req_type */, Atom * /* actual_type_return */, int * /* actual_format_return */, unsigned long * /* nitems_return */, unsigned long * /* bytes_after_return */, unsigned char ** /* prop_return */);
1306extern Boolean xtermIsIconified (XtermWidget /* xw */);
1307extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */);
1308extern FILE * create_printfile(XtermWidget /* xw */, const char * /* suffix */);
1309extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal);
1310extern String xtermEnvLocale (void);
1311extern Widget xtermOpenApplication (XtAppContext * /* app_context_return */, String /* application_class */, XrmOptionDescRec */* options */, Cardinal /* num_options */, int * /* argc_in_out */, char **/* argv_in_out */, String * /* fallback_resources */, WidgetClass /* widget_class */, ArgList /* args */, Cardinal /* num_args */);
1312extern Window WMFrameWindow (XtermWidget /* xw */);
1313extern XtInputMask xtermAppPending (void);
1314extern XrmOptionDescRec * sortedOptDescs (XrmOptionDescRec *, Cardinal);
1315extern XtermWidget getXtermWidget (Widget /* w */);
1316extern XVisualInfo *getVisualInfo (XtermWidget /* xw */);
1317extern char *udk_lookup (XtermWidget /* xw */, int /* keycode */, int * /* len */);
1318extern char *xtermEnvEncoding (void);
1319extern char *xtermFindShell (char * /* leaf */, Bool /* warning */);
1320extern char *xtermFormatSGR (XtermWidget /* xw */, char * /* target */, unsigned /* attrs */, int /* fg */, int /* bg */);
1321extern const char *SysErrorMsg (int /* n */);
1322extern const char *SysReasonMsg (int /* n */);
1323extern int ResetAnsiColorRequest (XtermWidget, char *, int);
1324extern int XStrCmp (char * /* s1 */, char * /* s2 */);
1325extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, unsigned /* mode */);
1326extern int getVisualDepth (XtermWidget /* xw */);
1327extern int ignore_x11_error(Display * /* dpy */, XErrorEvent * /* event */);
1328extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */);
1329extern int update_winsize (TScreen * /* screen */, int /* rows */, int /* cols */, int /* height */, int /* width */);
1330extern int xerror (Display * /* d */, XErrorEvent * /* ev */);
1331extern int xioerror (Display * /* dpy */);
1332extern int xtermClosestColor (XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */);
1333extern int xtermResetIds (TScreen * /* screen */);
1334extern void Bell (XtermWidget /* xw */, int /* which */, int /* percent */);
1335extern void ChangeGroup(XtermWidget /* xw */, const char * /* attribute */, char * /* value */);
1336extern void ChangeIconName (XtermWidget /* xw */, char * /* name */);
1337extern void ChangeTitle (XtermWidget /* xw */, char * /* name */);
1338extern void ChangeXprop (char * /* name */);
1339extern GCC_NORETURN void Cleanup (int /* code */);
1340extern void HandleBellPropertyChange   PROTO_XT_EV_HANDLER_ARGS;
1341extern void HandleEightBitKeyPressed   PROTO_XT_ACTIONS_ARGS;
1342extern void HandleEnterWindow          PROTO_XT_EV_HANDLER_ARGS;
1343extern void HandleFocusChange          PROTO_XT_EV_HANDLER_ARGS;
1344extern void HandleInterpret            PROTO_XT_ACTIONS_ARGS;
1345extern void HandleKeyPressed           PROTO_XT_ACTIONS_ARGS;
1346extern void HandleLeaveWindow          PROTO_XT_EV_HANDLER_ARGS;
1347extern void HandleSpawnTerminal        PROTO_XT_ACTIONS_ARGS;
1348extern void HandleStringEvent          PROTO_XT_ACTIONS_ARGS;
1349extern void NormalExit (void);
1350extern void Panic (const char * /* s */, int /* a */);
1351extern void Redraw (void);
1352extern void ReverseOldColors (XtermWidget /* xw */);
1353extern GCC_NORETURN void SysError (int /* i */);
1354extern void VisualBell (void);
1355extern void cleanup_colored_cursor (void);
1356extern void do_ansi_rqm (XtermWidget /* xw */, int /* nparam */, int * /* params */);
1357extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t /* len */);
1358extern void do_dec_rqm (XtermWidget /* xw */, int /* nparam */, int * /* params */);
1359extern void do_osc (XtermWidget /* xw */, Char * /* buf */, size_t /* len */, int /* final */);
1360extern void do_xevents (XtermWidget /* xw */);
1361extern void end_tek_mode (void);
1362extern void end_vt_mode (void);
1363extern void free_string(String value);
1364extern void hide_tek_window (void);
1365extern void hide_vt_window (void);
1366extern GCC_NORETURN void ice_error (IceConn /* iceConn */);
1367extern void init_colored_cursor (Display * /* dpy */);
1368extern void reset_decudk (XtermWidget /* xw */);
1369extern void set_tek_visibility (Bool /* on */);
1370extern void set_vt_visibility (Bool /* on */);
1371extern void switch_modes (Bool /* tovt */);
1372extern void timestamp_filename(char * /* dst */, const char * /* src */);
1373extern void xevents (XtermWidget /* xw */);
1374extern GCC_NORETURN void xt_error (String /* message */);
1375extern void xtermBell(XtermWidget /* xw */, int /* which */, int /* percent */);
1376extern void xtermCopyEnv (char ** /* oldenv */);
1377extern void xtermDisplayPointer (XtermWidget /* xw */);
1378extern void xtermDeiconify (XtermWidget /* xw */);
1379extern void xtermEmbedWindow (Window /* winToEmbedInfo */);
1380extern void xtermIconify (XtermWidget /* xw */);
1381extern void xtermLoadIcon (XtermWidget /* xw */, const char * /* icon_hint */);
1382extern void xtermPerror (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2);
1383extern void xtermSetenv (const char * /* var */, const char * /* value */);
1384extern void xtermSetupPointer (XtermWidget /* xw */, const char * /* theShape */);
1385extern void xtermSetWinSize (XtermWidget /* xw */);
1386extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */);
1387extern void xtermUnsetenv (const char * /* var */);
1388extern void xtermWarning (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2);
1389
1390extern Boolean xtermPopTitle(TScreen * /* screen */, int /* which */, SaveTitle * /* item */);
1391extern void xtermPushTitle(TScreen * /* screen */, int /* which */, SaveTitle * /* item */);
1392extern void xtermFreeTitle(SaveTitle *item);
1393
1394#if OPT_DABBREV
1395extern void HandleDabbrevExpand        PROTO_XT_ACTIONS_ARGS;
1396#endif
1397
1398#if OPT_DIRECT_COLOR
1399extern int getDirectColor(XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */);
1400#endif /* OPT_DIRECT_COLOR */
1401
1402#if USE_DOUBLE_BUFFER
1403extern void xtermFlushDbe(XtermWidget /* xw */);
1404extern void xtermTimedDbe(XtermWidget /* xw */);
1405#define xtermNeedSwap(xw,why)	TScreenOf(xw)->needSwap |= (why)
1406#else
1407#define xtermFlushDbe(xw)	/* nothing */
1408#define xtermTimedDbe(xw)	/* nothing */
1409#define xtermNeedSwap(xw,why)	/* nothing */
1410#endif /* USE_DOUBLE_BUFFER */
1411
1412#if OPT_EXEC_XTERM
1413extern char *ProcGetCWD(pid_t /* pid */);
1414#else
1415#define ProcGetCWD(pid) NULL
1416#endif
1417
1418#if OPT_ISO_COLORS
1419extern Boolean AllocOneColor(XtermWidget /* xw */, XColor * /* def */);
1420extern Boolean QueryOneColor(XtermWidget /* xw */, XColor * /* def */);
1421#else
1422#define AllocOneColor(xw, def) ((def)->pixel = 0)
1423#define QueryOneColor(xw, def) ((def)->red = (def)->green = (def)->blue = 0)
1424#endif
1425
1426#if OPT_MAXIMIZE
1427extern int QueryMaximize (XtermWidget /* xw */, unsigned * /* width */, unsigned * /* height */);
1428extern void HandleDeIconify            PROTO_XT_ACTIONS_ARGS;
1429extern void HandleIconify              PROTO_XT_ACTIONS_ARGS;
1430extern void HandleMaximize             PROTO_XT_ACTIONS_ARGS;
1431extern void HandleRestoreSize          PROTO_XT_ACTIONS_ARGS;
1432extern void RequestMaximize (XtermWidget /* xw */, int /* maximize */);
1433#endif
1434
1435#if OPT_REPORT_ICONS
1436extern void report_icons(const char *fmt,...) GCC_PRINTFLIKE(1,2);
1437#define ReportIcons(params)	report_icons params
1438#else
1439#define ReportIcons(params)	TRACE(params)
1440#endif
1441
1442#if OPT_SCROLL_LOCK
1443extern void GetScrollLock (TScreen * /* screen */);
1444extern void HandleScrollLock           PROTO_XT_ACTIONS_ARGS;
1445extern void ShowScrollLock (TScreen * /* screen */, Bool /* enable */);
1446extern void SetScrollLock (TScreen * /* screen */, Bool /* enable */);
1447extern void xtermShowLED (TScreen * /* screen */, Cardinal /* led_number */, Bool /* enable */);
1448extern void xtermClearLEDs (TScreen * /* screen */);
1449#else
1450#define ShowScrollLock(screen, enable) /* nothing */
1451#define SetScrollLock(screen, enable) /* nothing */
1452#define GetScrollLock(screen) /* nothing */
1453#endif
1454
1455#if OPT_SELECTION_OPS
1456extern void HandleExecFormatted        PROTO_XT_ACTIONS_ARGS;
1457extern void HandleExecSelectable       PROTO_XT_ACTIONS_ARGS;
1458extern void HandleInsertFormatted      PROTO_XT_ACTIONS_ARGS;
1459extern void HandleInsertSelectable     PROTO_XT_ACTIONS_ARGS;
1460#endif
1461
1462#if OPT_SESSION_MGT
1463extern void xtermCloseSession (void);
1464extern void xtermOpenSession (void);
1465extern void xtermUpdateRestartCommand(XtermWidget /* xw */);
1466#else
1467#define xtermCloseSession() /* nothing */
1468#define xtermOpenSession() /* nothing */
1469#define xtermUpdateRestartCommand(xw) /* nothing */
1470#endif
1471
1472#if OPT_WIDE_CHARS
1473extern Bool xtermEnvUTF8(void);
1474#else
1475#define xtermEnvUTF8() False
1476#endif
1477
1478#if OPT_XTERM_SGR
1479extern void xtermPushSGR (XtermWidget /* xw */, int /* value */);
1480extern void xtermPopSGR (XtermWidget /* xw */);
1481extern void xtermReportSGR (XtermWidget /* xw */, XTermRect * /* value */);
1482extern void xtermPushColors (XtermWidget /* xw */, int /* value */);
1483extern void xtermPopColors (XtermWidget /* xw */, int /* value */);
1484extern void xtermReportColors (XtermWidget /* xw */);
1485#endif
1486
1487#ifdef ALLOWLOGGING
1488extern void StartLog (XtermWidget /* xw */);
1489extern void CloseLog (XtermWidget /* xw */);
1490extern void FlushLog (XtermWidget /* xw */);
1491#else
1492#define FlushLog(xw) /*nothing*/
1493#endif
1494
1495/* print.c */
1496extern Bool xtermHasPrinter (XtermWidget /* xw */);
1497extern PrinterFlags *getPrinterFlags (XtermWidget /* xw */, String * /* params */, Cardinal * /* param_count */);
1498extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */);
1499extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */);
1500extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */);
1501extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */);
1502extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */);
1503extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */);
1504extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */);
1505extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */);
1506
1507#if OPT_SCREEN_DUMPS
1508/* html.c */
1509extern void xtermDumpHtml (XtermWidget /* xw */);
1510extern char *PixelToCSSColor(XtermWidget /* xw */, Pixel /* p */);
1511/* svg.c */
1512extern void xtermDumpSvg (XtermWidget /* xw */);
1513#endif
1514
1515/* ptydata.c */
1516#ifdef VMS
1517#define PtySelect int
1518#else
1519#define PtySelect fd_set
1520#endif
1521
1522extern Bool decodeUtf8 (TScreen * /* screen */, PtyData * /* data */);
1523extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */);
1524extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, size_t /* length */);
1525extern void initPtyData (PtyData ** /* data */);
1526extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */);
1527
1528#ifdef NO_LEAKS
1529extern void noleaks_ptydata ( void );
1530#endif
1531
1532#if OPT_WIDE_CHARS
1533extern Boolean isValidUTF8 (Char * /* lp */);
1534extern Char *convertToUTF8 (Char * /* lp */, unsigned /* c */);
1535extern Char *convertFromUTF8 (Char * /* lp */, unsigned * /* cp */);
1536extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */);
1537extern PtyData * fakePtyData (PtyData * /* result */, Char * /* next */, Char * /* last */);
1538extern void switchPtyData (TScreen * /* screen */, int /* f */);
1539extern void writePtyData (int /* f */, IChar * /* d */, size_t /* len */);
1540
1541#define morePtyData(screen, data) \
1542	(((data)->last > (data)->next) \
1543	 ? (((screen)->utf8_inparse && !(data)->utf_size) \
1544	    ? decodeUtf8(screen, data) \
1545	    : True) \
1546	 : False)
1547
1548#define skipPtyData(data, result) \
1549	do { \
1550	    result = (data)->utf_data; \
1551	    (data)->next += (data)->utf_size; \
1552	    (data)->utf_size = 0; \
1553	} while (0)
1554#else
1555#define morePtyData(screen, data) ((data)->last > (data)->next)
1556#define nextPtyData(screen, data) (IChar) (*((data)->next++) & \
1557					   (screen->output_eight_bits \
1558					    ? 0xff \
1559					    : 0x7f))
1560#define writePtyData(f,d,len) v_write(f,d,len)
1561#endif
1562
1563/* screen.c */
1564
1565/*
1566 * See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
1567 */
1568#define _NET_WM_STATE_REMOVE	0	/* remove/unset property */
1569#define _NET_WM_STATE_ADD	1	/* add/set property */
1570#define _NET_WM_STATE_TOGGLE	2	/* toggle property */
1571
1572extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */);
1573extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
1574extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */);
1575extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */);
1576extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */);
1577extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */);
1578extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */);
1579extern void CopyCells (TScreen * /* screen */, LineData * /* src */, LineData * /* dst */, int /* col */, int /* len */, Bool /* down */);
1580extern void FullScreen (XtermWidget /* xw */, int /* mode */);
1581extern void FreeMarkGCs (XtermWidget /* xw */);
1582extern void ResetHiddenHint (XtermWidget /* xw */);
1583extern void ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */);
1584extern void ScrnAllocBuf (XtermWidget /* xw */);
1585extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
1586extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */);
1587extern void ScrnDeleteCol (XtermWidget /* xw */, unsigned /* n */);
1588extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* n */, int /* last */, unsigned /* where */);
1589extern void ScrnDisownSelection (XtermWidget /* xw */);
1590extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *,  int ,  unsigned /* flags */, Bool /* keepColors */);
1591extern void ScrnInsertChar (XtermWidget /* xw */, unsigned /* n */);
1592extern void ScrnInsertCol (XtermWidget /* xw */, unsigned /* n */);
1593extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* last */, int /* where */, unsigned /* n */);
1594extern void ScrnRefresh (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */);
1595extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */);
1596extern void ScrnWriteText (XtermWidget /* xw */, Cardinal /* offset */, Cardinal /* length */, unsigned /* flags */, CellColor /* cur_fg_bg */);
1597extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, CLineData * /* ld */);
1598extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
1599extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *);
1600
1601#if OPT_TRACE && OPT_TRACE_FLAGS
1602extern int  LineTstFlag(LineData /* ld */, int /* flag */);
1603extern void LineClrFlag(LineData /* ld */, int /* flag */);
1604extern void LineSetFlag(LineData /* ld */, int /* flag */);
1605#else
1606
1607#define LineFlags(ld)         GetLineFlags(ld)
1608
1609#define LineClrFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) & ~ (flag)))
1610#define LineSetFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) | (flag)))
1611#define LineTstFlag(ld, flag) ((GetLineFlags(ld) & flag) != 0)
1612
1613#endif /* OPT_TRACE && OPT_TRACE_FLAGS */
1614
1615#define LineClrBlinked(ld) LineClrFlag(ld, LINEBLINKED)
1616#define LineSetBlinked(ld) LineSetFlag(ld, LINEBLINKED)
1617#define LineTstBlinked(ld) LineTstFlag(ld, LINEBLINKED)
1618
1619#define LineClrWrapped(ld) LineClrFlag(ld, LINEWRAPPED)
1620#define LineSetWrapped(ld) LineSetFlag(ld, LINEWRAPPED)
1621#define LineTstWrapped(ld) LineTstFlag(ld, LINEWRAPPED)
1622
1623#define ScrnHaveSelection(screen) \
1624			((screen)->startH.row != (screen)->endH.row \
1625			|| (screen)->startH.col != (screen)->endH.col)
1626
1627#define ScrnAreRowsInSelection(screen, first, last) \
1628	((last) >= (screen)->startH.row && (first) <= (screen)->endH.row)
1629
1630#define ScrnIsRowInSelection(screen, line) \
1631	((line) >= (screen)->startH.row && (line) <= (screen)->endH.row)
1632
1633#define ScrnHaveRowMargins(screen) \
1634			((screen)->top_marg != 0 \
1635			|| ((screen)->bot_marg != screen->max_row))
1636
1637#define ScrnIsRowInMargins(screen, line) \
1638	((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg)
1639
1640#define ScrnHaveColMargins(screen) \
1641			((screen)->rgt_marg > (screen)->max_col)
1642
1643#define ScrnIsColInMargins(screen, col) \
1644	((col) >= (screen)->lft_marg && (col) <= (screen)->rgt_marg)
1645
1646/*
1647 * If the vertical scrolling margins are active, they will be something other
1648 * than the first/last row of the visible screen, as well as being distinct.
1649 */
1650#define IsTopBottomMode(xw)	(ScrnTopMargin(xw) < ScrnBottomMargin(xw))
1651#define ScrnTopMargin(xw)	TScreenOf(xw)->top_marg
1652#define ScrnBottomMargin(xw)	TScreenOf(xw)->bot_marg
1653
1654/*
1655 * Left/right horizontal scrolling margins are only active when DECLRMM is.
1656 */
1657#define IsLeftRightMode(xw) ((xw)->flags & LEFT_RIGHT)
1658#define ScrnLeftMargin(xw)  (IsLeftRightMode(xw) \
1659			     ? TScreenOf(xw)->lft_marg \
1660			     : 0)
1661#define ScrnRightMargin(xw) (IsLeftRightMode(xw) \
1662			     ? TScreenOf(xw)->rgt_marg \
1663			     : MaxCols(TScreenOf(xw)) - 1)
1664
1665#if OPT_DEC_RECTOPS
1666extern void ScrnCopyRectangle (XtermWidget /* xw */, XTermRect *, int, int *);
1667extern void ScrnMarkRectangle (XtermWidget /* xw */, XTermRect *, Bool, int, int *);
1668extern void ScrnWipeRectangle (XtermWidget /* xw */, XTermRect *);
1669extern void xtermCheckRect(XtermWidget /* xw */, int /* nparam */, int */* params */, int * /* result */);
1670#endif
1671
1672#if OPT_WIDE_CHARS
1673extern void ChangeToWide(XtermWidget /* xw */);
1674#endif
1675
1676/* scrollback.c */
1677extern LineData *getScrollback (TScreen * /* screen */, int /* row */);
1678extern LineData *addScrollback (TScreen * /* screen */);
1679extern void deleteScrollback (TScreen * /* screen */);
1680
1681/* scrollbar.c */
1682extern void DoResizeScreen (XtermWidget /* xw */);
1683extern void HandleScrollBack           PROTO_XT_ACTIONS_ARGS;
1684extern void HandleScrollForward        PROTO_XT_ACTIONS_ARGS;
1685extern void HandleScrollTo             PROTO_XT_ACTIONS_ARGS;
1686extern void ResizeScrollBar (XtermWidget /* xw */);
1687extern void ScrollBarDrawThumb (XtermWidget /* xw */, int /* mode */);
1688extern void ScrollBarOff (XtermWidget /* xw */);
1689extern void ScrollBarOn (XtermWidget /* xw */, Bool /* init */);
1690extern void ScrollBarReverseVideo (Widget /* scrollWidget */);
1691extern void ToggleScrollBar (XtermWidget /* xw */);
1692extern void WindowScroll (XtermWidget /* xw */, int /* top */, Bool /* always */);
1693
1694#ifdef SCROLLBAR_RIGHT
1695extern void updateRightScrollbar(XtermWidget /* xw */);
1696#else
1697#define updateRightScrollbar(xw) /* nothing */
1698#endif
1699
1700/* tabs.c */
1701extern Bool TabToNextStop (XtermWidget /* xw */);
1702extern Bool TabToPrevStop (XtermWidget /* xw */);
1703extern void TabClear (Tabs /* tabs */, int /* col */);
1704extern void TabReset (Tabs /* tabs */);
1705extern void TabSet (Tabs /* tabs */, int /* col */);
1706extern void TabZonk (Tabs /* tabs */);
1707extern Bool TabIsSet (Tabs /* tabs */, int /* col */);
1708
1709/* util.c */
1710extern Boolean AssignFgColor (XtermWidget /* xw */, Pixel /* bg */);
1711extern Boolean AssignBgColor (XtermWidget /* xw */, Pixel /* bg */);
1712extern Boolean isDefaultBackground (const char * /* name */);
1713extern Boolean isDefaultForeground (const char * /* name */);
1714extern CgsEnum whichXtermCgs (XtermWidget /* xw */, unsigned /* attr_flags */, Bool /* hilite */);
1715extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, CellColor /* fg_bg */, Bool /* hilite */);
1716extern Pixel getXtermBackground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
1717extern Pixel getXtermForeground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
1718extern char * xtermSetLocale (int /* category */, String /* after */);
1719extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
1720extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */);
1721extern int dimRound (double /* value */);
1722extern int drawXtermText (XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */);
1723extern int extendedBoolean (const char * /* value */, const FlagList * /* table */, Cardinal /* limit */);
1724extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */);
1725extern void ClearLine (XtermWidget /* xw */);
1726extern void ClearRight (XtermWidget /* xw */, int /* n */);
1727extern void ClearScreen (XtermWidget /* xw */);
1728extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */);
1729extern void DeleteLine (XtermWidget /* xw */, int /* n */, Bool /* canSave */);
1730extern void FlushScroll (XtermWidget /* xw */);
1731extern void GetColors (XtermWidget /* xw */, ScrnColors * /* pColors */);
1732extern void InsertChar (XtermWidget /* xw */, unsigned /* n */);
1733extern void InsertLine (XtermWidget /* xw */, int /* n */);
1734extern void RevScroll (XtermWidget /* xw */, int /* amount */);
1735extern void ReverseVideo (XtermWidget /* xw */);
1736extern void WriteText (XtermWidget /* xw */, Cardinal /* offset */, Cardinal /* len */);
1737extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */);
1738extern void decode_wcwidth (XtermWidget /* xw */);
1739extern void do_cd_xtra_scroll (XtermWidget /* xw */, int /* param */);
1740extern void do_erase_display (XtermWidget /* xw */, int /* param */, int /* mode */);
1741extern void do_erase_char (XtermWidget /* xw */, int /* param */, int /* mode */);
1742extern void do_erase_line (XtermWidget /* xw */, int /* param */, int /* mode */);
1743extern void do_ti_xtra_scroll (XtermWidget /* xw */);
1744extern void getXtermSizeHints (XtermWidget /* xw */);
1745extern void recolor_cursor (TScreen * /* screen */, Cursor /* cursor */, unsigned long /* fg */, unsigned long /* bg */);
1746extern void resetXtermGC (XtermWidget /* xw */, unsigned /* flags */, Bool /* hilite */);
1747extern void scrolling_copy_area (XtermWidget /* xw */, int /* firstline */, int /* nlines */, int /* amount */);
1748extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */);
1749extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */);
1750extern void update_keyboard_type (void);
1751extern void xtermClear (XtermWidget /* xw */);
1752extern void xtermClear2 (XtermWidget /* xw */, int /* x */, int /* y */, unsigned /* width */, unsigned /* height */);
1753extern void xtermColIndex (XtermWidget /* xw */, Bool /* toLeft */);
1754extern void xtermColScroll (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */, int /* at_col */);
1755extern void xtermRepaint (XtermWidget /* xw */);
1756extern void xtermResetLocale (int /* category */, char * /* before */);
1757extern void xtermScroll (XtermWidget /* xw */, int /* amount */);
1758extern void xtermScrollLR (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */);
1759extern void xtermSizeHints (XtermWidget /* xw */, int /* scrollbarWidth */);
1760
1761struct Xinerama_geometry {
1762    int x;
1763    int y;
1764    unsigned w;
1765    unsigned h;
1766    int scr_x;
1767    int scr_y;
1768    int scr_w;
1769    int scr_h;
1770};
1771extern int XParseXineramaGeometry(Display * /* display */, char * /* parsestring */, struct Xinerama_geometry * /* ret */);
1772
1773#if OPT_ISO_COLORS
1774
1775extern Pixel extract_fg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */);
1776extern Pixel extract_bg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */);
1777extern CellColor makeColorPair (XtermWidget /* xw */);
1778extern void ClearCurBackground (XtermWidget /* xw */, int /* top */, int /* left */, unsigned /* height */, unsigned /* width */, unsigned /* fw */);
1779
1780#define xtermColorPair(xw) makeColorPair(xw)
1781
1782#define GET_COLOR_RES(xw, res) xtermGetColorRes(xw, &(res))
1783#define SET_COLOR_RES(res,color) (res)->value = color
1784#define EQL_COLOR_RES(res,color) (res)->value == color
1785#define T_COLOR(v,n) (v)->Tcolors[n].value
1786extern Pixel xtermGetColorRes(XtermWidget /* xw */, ColorRes * /* res */);
1787
1788#define ExtractForeground(color) (unsigned) GetCellColorFG(color)
1789#define ExtractBackground(color) (unsigned) GetCellColorBG(color)
1790
1791#if OPT_RENDERFONT
1792extern void discardRenderDraw(TScreen * /* screen */);
1793#else
1794#define discardRenderDraw(screen) /* nothing */
1795#endif
1796
1797#if OPT_WIDE_ATTRS
1798#define MapToWideColorMode(fg, screen, flags) \
1799	(((screen)->colorITMode && ((flags) & ATR_ITALIC)) \
1800	 ? COLOR_IT \
1801	 : fg)
1802#else
1803#define MapToWideColorMode(fg, screen, flags) fg
1804#endif
1805
1806#define MapToColorMode(fg, screen, flags) \
1807	(((screen)->colorBLMode && ((flags) & BLINK)) \
1808	 ? COLOR_BL \
1809	 : (((screen)->colorBDMode && ((flags) & BOLD)) \
1810	    ? COLOR_BD \
1811	    : (((screen)->colorULMode && ((flags) & UNDERLINE)) \
1812	       ? COLOR_UL \
1813	       : MapToWideColorMode(fg, screen, flags))))
1814
1815#define checkVeryBoldAttr(flags, fg, code, attr) \
1816	if ((flags & FG_COLOR) != 0 \
1817	 && (screen->veryBoldColors & attr) == 0 \
1818	 && (flags & attr) != 0 \
1819	 && (fg == code)) \
1820		 UIntClr(flags, attr)
1821
1822#if OPT_WIDE_ATTRS
1823#define checkVeryBoldWideAttr(flags, fg, it, atr) \
1824	    checkVeryBoldAttr(flags, fg, it, atr)
1825#else
1826#define checkVeryBoldWideAttr(flags, fg, it, atr) (void) flags
1827#endif
1828
1829#define checkVeryBoldColors(flags, fg) \
1830	checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \
1831	checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \
1832	checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \
1833	checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK); \
1834	checkVeryBoldWideAttr(flags, fg, COLOR_IT, ATR_ITALIC)
1835
1836#else /* !OPT_ISO_COLORS */
1837
1838#define MapToColorMode(fg, screen, flags) fg
1839
1840#define ClearCurBackground(xw, top, left, height, width, fw) \
1841	XClearArea (TScreenOf(xw)->display, \
1842		    VDrawable(TScreenOf(xw)), \
1843		    CursorX2(TScreenOf(xw), left, fw), \
1844		    CursorY2(TScreenOf(xw), top), \
1845		    ((width) * (unsigned) fw), \
1846		    ((height) * (unsigned) FontHeight(TScreenOf(xw))), \
1847		    False)
1848
1849#define extract_fg(xw, color, flags) (unsigned) (xw)->cur_foreground
1850#define extract_bg(xw, color, flags) (unsigned) (xw)->cur_background
1851
1852		/* FIXME: Reverse-Video? */
1853#define T_COLOR(v,n) (v)->Tcolors[n].value
1854#define xtermColorPair(xw) 0
1855
1856#define checkVeryBoldColors(flags, fg) /* nothing */
1857#define discardRenderDraw(screen) /* nothing */
1858
1859#endif	/* OPT_ISO_COLORS */
1860
1861#define getXtermFG(xw, flags, color) getXtermForeground(xw, flags, color)
1862#define getXtermBG(xw, flags, color) getXtermBackground(xw, flags, color)
1863
1864#if OPT_ZICONBEEP
1865extern void initZIconBeep(void);
1866extern void resetZIconBeep(XtermWidget /* xw */);
1867extern Boolean showZIconBeep(XtermWidget /* xw */, const char * /* name */);
1868#else
1869#define initZIconBeep() /* nothing */
1870#define resetZIconBeep(xw) /* nothing */
1871#define showZIconBeep(xw, name) False
1872#endif
1873
1874#define XTERM_CELL(row,col)    getXtermCell(screen,     ROW2INX(screen, row), col)
1875
1876extern unsigned getXtermCell (TScreen * /* screen */, int /* row */, int /* col */);
1877extern unsigned getXtermCombining(TScreen * /* screen */, int /* row */, int /* col */, int /* off */);
1878extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */, int /* ch */);
1879
1880#define IsCellCombined(screen, row, col) (getXtermCombining(screen, row, col, 0) != 0)
1881
1882#if OPT_HIGHLIGHT_COLOR
1883#define isNotForeground(xw, fg, bg, sel) \
1884		(Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_FG) \
1885			   && (sel) != (fg) \
1886			   && (sel) != (bg) \
1887			   && (sel) != (xw)->dft_foreground)
1888#define isNotBackground(xw, fg, bg, sel) \
1889		(Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_BG) \
1890			   && (sel) != (fg) \
1891			   && (sel) != (bg) \
1892			   && (sel) != (xw)->dft_background)
1893#endif
1894
1895#define setXtermLineAttributes(dpy, gc, width, style) \
1896	XSetLineAttributes(dpy, gc, (unsigned) width, style, CapProjecting, JoinMiter);
1897
1898#define resetXtermLineAttributes(dpy, gc) \
1899	setXtermLineAttributes(dpy, gc, 0, LineSolid);
1900
1901#if OPT_WIDE_CHARS
1902extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */);
1903extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */);
1904extern unsigned AsciiEquivs(unsigned /* ch */);
1905extern void addXtermCombining (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* ch */);
1906extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */);
1907#endif
1908
1909#if OPT_XMC_GLITCH
1910extern void Mark_XMC (XtermWidget /* xw */, int /* param */);
1911extern void Jump_XMC (XtermWidget /* xw */);
1912extern void Resolve_XMC (XtermWidget /* xw */);
1913#endif
1914
1915#if OPT_WIDE_CHARS
1916unsigned visual_width(const IChar * /* str */, Cardinal /* len */);
1917#else
1918#define visual_width(a, b) (b)
1919#endif
1920
1921#define BtoS(b)    ((b) ? "on" : "off")
1922#define MtoS(b)    (((b) == Maybe) ? "maybe" : BtoS(b))
1923#define NonNull(s) ((s) ? (s) : "<null>")
1924
1925#define UIntSet(dst,bits) dst = dst | (unsigned) (bits)
1926#define UIntClr(dst,bits) dst = dst & (unsigned) ~(bits)
1927
1928#ifdef __cplusplus
1929	}
1930#endif
1931/* *INDENT-ON* */
1932
1933#endif /* included_xterm_h */
1934