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