xref: /freebsd/contrib/libedit/tty.h (revision 91f764172e197c82efa97a66cfbc13d2c744b02b)
1*91f76417SBaptiste Daroussin /*	$NetBSD: tty.h,v 1.24 2021/07/31 20:51:32 andvar Exp $	*/
2d0ef721eSBaptiste Daroussin 
3d0ef721eSBaptiste Daroussin /*-
4d0ef721eSBaptiste Daroussin  * Copyright (c) 1992, 1993
5d0ef721eSBaptiste Daroussin  *	The Regents of the University of California.  All rights reserved.
6d0ef721eSBaptiste Daroussin  *
7d0ef721eSBaptiste Daroussin  * This code is derived from software contributed to Berkeley by
8d0ef721eSBaptiste Daroussin  * Christos Zoulas of Cornell University.
9d0ef721eSBaptiste Daroussin  *
10d0ef721eSBaptiste Daroussin  * Redistribution and use in source and binary forms, with or without
11d0ef721eSBaptiste Daroussin  * modification, are permitted provided that the following conditions
12d0ef721eSBaptiste Daroussin  * are met:
13d0ef721eSBaptiste Daroussin  * 1. Redistributions of source code must retain the above copyright
14d0ef721eSBaptiste Daroussin  *    notice, this list of conditions and the following disclaimer.
15d0ef721eSBaptiste Daroussin  * 2. Redistributions in binary form must reproduce the above copyright
16d0ef721eSBaptiste Daroussin  *    notice, this list of conditions and the following disclaimer in the
17d0ef721eSBaptiste Daroussin  *    documentation and/or other materials provided with the distribution.
18d0ef721eSBaptiste Daroussin  * 3. Neither the name of the University nor the names of its contributors
19d0ef721eSBaptiste Daroussin  *    may be used to endorse or promote products derived from this software
20d0ef721eSBaptiste Daroussin  *    without specific prior written permission.
21d0ef721eSBaptiste Daroussin  *
22d0ef721eSBaptiste Daroussin  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23d0ef721eSBaptiste Daroussin  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24d0ef721eSBaptiste Daroussin  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25d0ef721eSBaptiste Daroussin  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26d0ef721eSBaptiste Daroussin  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27d0ef721eSBaptiste Daroussin  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28d0ef721eSBaptiste Daroussin  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29d0ef721eSBaptiste Daroussin  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30d0ef721eSBaptiste Daroussin  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31d0ef721eSBaptiste Daroussin  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32d0ef721eSBaptiste Daroussin  * SUCH DAMAGE.
33d0ef721eSBaptiste Daroussin  *
34d0ef721eSBaptiste Daroussin  *	@(#)tty.h	8.1 (Berkeley) 6/4/93
35d0ef721eSBaptiste Daroussin  */
36d0ef721eSBaptiste Daroussin 
37d0ef721eSBaptiste Daroussin /*
38d0ef721eSBaptiste Daroussin  * el.tty.h: Local terminal header
39d0ef721eSBaptiste Daroussin  */
40d0ef721eSBaptiste Daroussin #ifndef _h_el_tty
41d0ef721eSBaptiste Daroussin #define	_h_el_tty
42d0ef721eSBaptiste Daroussin 
43d0ef721eSBaptiste Daroussin #include <termios.h>
44d0ef721eSBaptiste Daroussin #include <unistd.h>
45d0ef721eSBaptiste Daroussin 
46d0ef721eSBaptiste Daroussin /* Define our own since everyone gets it wrong! */
47d0ef721eSBaptiste Daroussin #define	CONTROL(A)	((A) & 037)
48d0ef721eSBaptiste Daroussin 
49d0ef721eSBaptiste Daroussin /*
50d0ef721eSBaptiste Daroussin  * Aix compatible names
51d0ef721eSBaptiste Daroussin  */
52d0ef721eSBaptiste Daroussin # if defined(VWERSE) && !defined(VWERASE)
53d0ef721eSBaptiste Daroussin #  define VWERASE VWERSE
54d0ef721eSBaptiste Daroussin # endif /* VWERSE && !VWERASE */
55d0ef721eSBaptiste Daroussin 
56d0ef721eSBaptiste Daroussin # if defined(VDISCRD) && !defined(VDISCARD)
57d0ef721eSBaptiste Daroussin #  define VDISCARD VDISCRD
58d0ef721eSBaptiste Daroussin # endif /* VDISCRD && !VDISCARD */
59d0ef721eSBaptiste Daroussin 
60d0ef721eSBaptiste Daroussin # if defined(VFLUSHO) && !defined(VDISCARD)
61d0ef721eSBaptiste Daroussin #  define VDISCARD VFLUSHO
62d0ef721eSBaptiste Daroussin # endif  /* VFLUSHO && VDISCARD */
63d0ef721eSBaptiste Daroussin 
64d0ef721eSBaptiste Daroussin # if defined(VSTRT) && !defined(VSTART)
65d0ef721eSBaptiste Daroussin #  define VSTART VSTRT
66d0ef721eSBaptiste Daroussin # endif /* VSTRT && ! VSTART */
67d0ef721eSBaptiste Daroussin 
68d0ef721eSBaptiste Daroussin # if defined(VSTAT) && !defined(VSTATUS)
69d0ef721eSBaptiste Daroussin #  define VSTATUS VSTAT
70d0ef721eSBaptiste Daroussin # endif /* VSTAT && ! VSTATUS */
71d0ef721eSBaptiste Daroussin 
72d0ef721eSBaptiste Daroussin # ifndef ONLRET
73d0ef721eSBaptiste Daroussin #  define ONLRET 0
74d0ef721eSBaptiste Daroussin # endif /* ONLRET */
75d0ef721eSBaptiste Daroussin 
76d0ef721eSBaptiste Daroussin # ifndef TAB3
77d0ef721eSBaptiste Daroussin #  ifdef OXTABS
78d0ef721eSBaptiste Daroussin #   define TAB3 OXTABS
79d0ef721eSBaptiste Daroussin #  else
80d0ef721eSBaptiste Daroussin #   define TAB3 0
81d0ef721eSBaptiste Daroussin #  endif /* OXTABS */
82d0ef721eSBaptiste Daroussin # endif /* !TAB3 */
83d0ef721eSBaptiste Daroussin 
84d0ef721eSBaptiste Daroussin # if defined(OXTABS) && !defined(XTABS)
85d0ef721eSBaptiste Daroussin #  define XTABS OXTABS
86d0ef721eSBaptiste Daroussin # endif /* OXTABS && !XTABS */
87d0ef721eSBaptiste Daroussin 
88d0ef721eSBaptiste Daroussin # ifndef ONLCR
89d0ef721eSBaptiste Daroussin #  define ONLCR 0
90d0ef721eSBaptiste Daroussin # endif /* ONLCR */
91d0ef721eSBaptiste Daroussin 
92d0ef721eSBaptiste Daroussin # ifndef IEXTEN
93d0ef721eSBaptiste Daroussin #  define IEXTEN 0
94d0ef721eSBaptiste Daroussin # endif /* IEXTEN */
95d0ef721eSBaptiste Daroussin 
96d0ef721eSBaptiste Daroussin # ifndef ECHOCTL
97d0ef721eSBaptiste Daroussin #  define ECHOCTL 0
98d0ef721eSBaptiste Daroussin # endif /* ECHOCTL */
99d0ef721eSBaptiste Daroussin 
100d0ef721eSBaptiste Daroussin # ifndef PARENB
101d0ef721eSBaptiste Daroussin #  define PARENB 0
102d0ef721eSBaptiste Daroussin # endif /* PARENB */
103d0ef721eSBaptiste Daroussin 
104d0ef721eSBaptiste Daroussin # ifndef EXTPROC
105d0ef721eSBaptiste Daroussin #  define EXTPROC 0
106d0ef721eSBaptiste Daroussin # endif /* EXTPROC */
107d0ef721eSBaptiste Daroussin 
108d0ef721eSBaptiste Daroussin # ifndef FLUSHO
109d0ef721eSBaptiste Daroussin #  define FLUSHO  0
110d0ef721eSBaptiste Daroussin # endif /* FLUSHO */
111d0ef721eSBaptiste Daroussin 
112d0ef721eSBaptiste Daroussin 
113d0ef721eSBaptiste Daroussin # if defined(VDISABLE) && !defined(_POSIX_VDISABLE)
114d0ef721eSBaptiste Daroussin #  define _POSIX_VDISABLE VDISABLE
115d0ef721eSBaptiste Daroussin # endif /* VDISABLE && ! _POSIX_VDISABLE */
116d0ef721eSBaptiste Daroussin 
117d0ef721eSBaptiste Daroussin /*
118d0ef721eSBaptiste Daroussin  * Work around ISC's definition of IEXTEN which is
119d0ef721eSBaptiste Daroussin  * XCASE!
120d0ef721eSBaptiste Daroussin  */
121d0ef721eSBaptiste Daroussin # ifdef ISC
122d0ef721eSBaptiste Daroussin #  if defined(IEXTEN) && defined(XCASE)
123d0ef721eSBaptiste Daroussin #   if IEXTEN == XCASE
124d0ef721eSBaptiste Daroussin #    undef IEXTEN
125d0ef721eSBaptiste Daroussin #    define IEXTEN 0
126d0ef721eSBaptiste Daroussin #   endif /* IEXTEN == XCASE */
127d0ef721eSBaptiste Daroussin #  endif /* IEXTEN && XCASE */
128d0ef721eSBaptiste Daroussin #  if defined(IEXTEN) && !defined(XCASE)
129d0ef721eSBaptiste Daroussin #   define XCASE IEXTEN
130d0ef721eSBaptiste Daroussin #   undef IEXTEN
131d0ef721eSBaptiste Daroussin #   define IEXTEN 0
132d0ef721eSBaptiste Daroussin #  endif /* IEXTEN && !XCASE */
133d0ef721eSBaptiste Daroussin # endif /* ISC */
134d0ef721eSBaptiste Daroussin 
135d0ef721eSBaptiste Daroussin /*
136d0ef721eSBaptiste Daroussin  * Work around convex weirdness where turning off IEXTEN makes us
137d0ef721eSBaptiste Daroussin  * lose all postprocessing!
138d0ef721eSBaptiste Daroussin  */
139d0ef721eSBaptiste Daroussin #if defined(convex) || defined(__convex__)
140d0ef721eSBaptiste Daroussin # if defined(IEXTEN) && IEXTEN != 0
141d0ef721eSBaptiste Daroussin #  undef IEXTEN
142d0ef721eSBaptiste Daroussin #  define IEXTEN 0
143d0ef721eSBaptiste Daroussin # endif /* IEXTEN != 0 */
144d0ef721eSBaptiste Daroussin #endif /* convex || __convex__ */
145d0ef721eSBaptiste Daroussin 
146d0ef721eSBaptiste Daroussin /*
147d0ef721eSBaptiste Daroussin  * So that we don't lose job control.
148d0ef721eSBaptiste Daroussin  */
149d0ef721eSBaptiste Daroussin #ifdef __SVR4
150d0ef721eSBaptiste Daroussin # undef CSWTCH
151d0ef721eSBaptiste Daroussin #endif
152d0ef721eSBaptiste Daroussin 
153d0ef721eSBaptiste Daroussin #ifndef _POSIX_VDISABLE
154d0ef721eSBaptiste Daroussin # define _POSIX_VDISABLE ((unsigned char) -1)
155d0ef721eSBaptiste Daroussin #endif /* _POSIX_VDISABLE */
156d0ef721eSBaptiste Daroussin 
157d0ef721eSBaptiste Daroussin #if !defined(CREPRINT) && defined(CRPRNT)
158d0ef721eSBaptiste Daroussin # define CREPRINT CRPRNT
159d0ef721eSBaptiste Daroussin #endif /* !CREPRINT && CRPRNT */
160d0ef721eSBaptiste Daroussin #if !defined(CDISCARD) && defined(CFLUSH)
161d0ef721eSBaptiste Daroussin # define CDISCARD CFLUSH
162d0ef721eSBaptiste Daroussin #endif /* !CDISCARD && CFLUSH */
163d0ef721eSBaptiste Daroussin 
164d0ef721eSBaptiste Daroussin #ifndef CINTR
165d0ef721eSBaptiste Daroussin # define CINTR		CONTROL('c')
166d0ef721eSBaptiste Daroussin #endif /* CINTR */
167d0ef721eSBaptiste Daroussin #ifndef CQUIT
168d0ef721eSBaptiste Daroussin # define CQUIT		034	/* ^\ */
169d0ef721eSBaptiste Daroussin #endif /* CQUIT */
170d0ef721eSBaptiste Daroussin #ifndef CERASE
171d0ef721eSBaptiste Daroussin # define CERASE		0177	/* ^? */
172d0ef721eSBaptiste Daroussin #endif /* CERASE */
173d0ef721eSBaptiste Daroussin #ifndef CKILL
174d0ef721eSBaptiste Daroussin # define CKILL		CONTROL('u')
175d0ef721eSBaptiste Daroussin #endif /* CKILL */
176d0ef721eSBaptiste Daroussin #ifndef CEOF
177d0ef721eSBaptiste Daroussin # define CEOF		CONTROL('d')
178d0ef721eSBaptiste Daroussin #endif /* CEOF */
179d0ef721eSBaptiste Daroussin #ifndef CEOL
180d0ef721eSBaptiste Daroussin # define CEOL		_POSIX_VDISABLE
181d0ef721eSBaptiste Daroussin #endif /* CEOL */
182d0ef721eSBaptiste Daroussin #ifndef CEOL2
183d0ef721eSBaptiste Daroussin # define CEOL2		_POSIX_VDISABLE
184d0ef721eSBaptiste Daroussin #endif /* CEOL2 */
185d0ef721eSBaptiste Daroussin #ifndef CSWTCH
186d0ef721eSBaptiste Daroussin # define CSWTCH		_POSIX_VDISABLE
187d0ef721eSBaptiste Daroussin #endif /* CSWTCH */
188d0ef721eSBaptiste Daroussin #ifndef CDSWTCH
189d0ef721eSBaptiste Daroussin # define CDSWTCH	_POSIX_VDISABLE
190d0ef721eSBaptiste Daroussin #endif /* CDSWTCH */
191d0ef721eSBaptiste Daroussin #ifndef CERASE2
192d0ef721eSBaptiste Daroussin # define CERASE2	_POSIX_VDISABLE
193d0ef721eSBaptiste Daroussin #endif /* CERASE2 */
194d0ef721eSBaptiste Daroussin #ifndef CSTART
195d0ef721eSBaptiste Daroussin # define CSTART		CONTROL('q')
196d0ef721eSBaptiste Daroussin #endif /* CSTART */
197d0ef721eSBaptiste Daroussin #ifndef CSTOP
198d0ef721eSBaptiste Daroussin # define CSTOP		CONTROL('s')
199d0ef721eSBaptiste Daroussin #endif /* CSTOP */
200d0ef721eSBaptiste Daroussin #ifndef CSUSP
201d0ef721eSBaptiste Daroussin # define CSUSP		CONTROL('z')
202d0ef721eSBaptiste Daroussin #endif /* CSUSP */
203d0ef721eSBaptiste Daroussin #ifndef CDSUSP
204d0ef721eSBaptiste Daroussin # define CDSUSP		CONTROL('y')
205d0ef721eSBaptiste Daroussin #endif /* CDSUSP */
206d0ef721eSBaptiste Daroussin 
207d0ef721eSBaptiste Daroussin #ifdef hpux
208d0ef721eSBaptiste Daroussin 
209d0ef721eSBaptiste Daroussin # ifndef CREPRINT
210d0ef721eSBaptiste Daroussin #  define CREPRINT	_POSIX_VDISABLE
211d0ef721eSBaptiste Daroussin # endif /* CREPRINT */
212d0ef721eSBaptiste Daroussin # ifndef CDISCARD
213d0ef721eSBaptiste Daroussin #  define CDISCARD	_POSIX_VDISABLE
214d0ef721eSBaptiste Daroussin # endif /* CDISCARD */
215d0ef721eSBaptiste Daroussin # ifndef CLNEXT
216d0ef721eSBaptiste Daroussin #  define CLNEXT	_POSIX_VDISABLE
217d0ef721eSBaptiste Daroussin # endif /* CLNEXT */
218d0ef721eSBaptiste Daroussin # ifndef CWERASE
219d0ef721eSBaptiste Daroussin #  define CWERASE	_POSIX_VDISABLE
220d0ef721eSBaptiste Daroussin # endif /* CWERASE */
221d0ef721eSBaptiste Daroussin 
222d0ef721eSBaptiste Daroussin #else /* !hpux */
223d0ef721eSBaptiste Daroussin 
224d0ef721eSBaptiste Daroussin # ifndef CREPRINT
225d0ef721eSBaptiste Daroussin #  define CREPRINT	CONTROL('r')
226d0ef721eSBaptiste Daroussin # endif /* CREPRINT */
227d0ef721eSBaptiste Daroussin # ifndef CDISCARD
228d0ef721eSBaptiste Daroussin #  define CDISCARD	CONTROL('o')
229d0ef721eSBaptiste Daroussin # endif /* CDISCARD */
230d0ef721eSBaptiste Daroussin # ifndef CLNEXT
231d0ef721eSBaptiste Daroussin #  define CLNEXT	CONTROL('v')
232d0ef721eSBaptiste Daroussin # endif /* CLNEXT */
233d0ef721eSBaptiste Daroussin # ifndef CWERASE
234d0ef721eSBaptiste Daroussin #  define CWERASE	CONTROL('w')
235d0ef721eSBaptiste Daroussin # endif /* CWERASE */
236d0ef721eSBaptiste Daroussin 
237d0ef721eSBaptiste Daroussin #endif /* hpux */
238d0ef721eSBaptiste Daroussin 
239d0ef721eSBaptiste Daroussin #ifndef CSTATUS
240d0ef721eSBaptiste Daroussin # define CSTATUS	CONTROL('t')
241d0ef721eSBaptiste Daroussin #endif /* CSTATUS */
242d0ef721eSBaptiste Daroussin #ifndef CPAGE
243d0ef721eSBaptiste Daroussin # define CPAGE		' '
244d0ef721eSBaptiste Daroussin #endif /* CPAGE */
245d0ef721eSBaptiste Daroussin #ifndef CPGOFF
246d0ef721eSBaptiste Daroussin # define CPGOFF		CONTROL('m')
247d0ef721eSBaptiste Daroussin #endif /* CPGOFF */
248d0ef721eSBaptiste Daroussin #ifndef CKILL2
249d0ef721eSBaptiste Daroussin # define CKILL2		_POSIX_VDISABLE
250d0ef721eSBaptiste Daroussin #endif /* CKILL2 */
251d0ef721eSBaptiste Daroussin #ifndef CBRK
252d0ef721eSBaptiste Daroussin # ifndef masscomp
253d0ef721eSBaptiste Daroussin #  define CBRK		0377
254d0ef721eSBaptiste Daroussin # else
255d0ef721eSBaptiste Daroussin #  define CBRK		'\0'
256d0ef721eSBaptiste Daroussin # endif /* masscomp */
257d0ef721eSBaptiste Daroussin #endif /* CBRK */
258d0ef721eSBaptiste Daroussin #ifndef CMIN
259d0ef721eSBaptiste Daroussin # define CMIN		CEOF
260d0ef721eSBaptiste Daroussin #endif /* CMIN */
261d0ef721eSBaptiste Daroussin #ifndef CTIME
262d0ef721eSBaptiste Daroussin # define CTIME		CEOL
263d0ef721eSBaptiste Daroussin #endif /* CTIME */
264d0ef721eSBaptiste Daroussin 
265d0ef721eSBaptiste Daroussin /*
266d0ef721eSBaptiste Daroussin  * Fix for sun inconsistency. On termio VSUSP and the rest of the
267d0ef721eSBaptiste Daroussin  * ttychars > NCC are defined. So we undefine them.
268d0ef721eSBaptiste Daroussin  */
269d0ef721eSBaptiste Daroussin #if defined(TERMIO) || defined(POSIX)
270d0ef721eSBaptiste Daroussin # if defined(POSIX) && defined(NCCS)
271d0ef721eSBaptiste Daroussin #  define NUMCC		NCCS
272d0ef721eSBaptiste Daroussin # else
273d0ef721eSBaptiste Daroussin #  ifdef NCC
274d0ef721eSBaptiste Daroussin #   define NUMCC	NCC
275d0ef721eSBaptiste Daroussin #  endif /* NCC */
276d0ef721eSBaptiste Daroussin # endif /* POSIX && NCCS */
277d0ef721eSBaptiste Daroussin # ifdef NUMCC
278d0ef721eSBaptiste Daroussin #  ifdef VINTR
279d0ef721eSBaptiste Daroussin #   if NUMCC <= VINTR
280d0ef721eSBaptiste Daroussin #    undef VINTR
281d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VINTR */
282d0ef721eSBaptiste Daroussin #  endif /* VINTR */
283d0ef721eSBaptiste Daroussin #  ifdef VQUIT
284d0ef721eSBaptiste Daroussin #   if NUMCC <= VQUIT
285d0ef721eSBaptiste Daroussin #    undef VQUIT
286d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VQUIT */
287d0ef721eSBaptiste Daroussin #  endif /* VQUIT */
288d0ef721eSBaptiste Daroussin #  ifdef VERASE
289d0ef721eSBaptiste Daroussin #   if NUMCC <= VERASE
290d0ef721eSBaptiste Daroussin #    undef VERASE
291d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VERASE */
292d0ef721eSBaptiste Daroussin #  endif /* VERASE */
293d0ef721eSBaptiste Daroussin #  ifdef VKILL
294d0ef721eSBaptiste Daroussin #   if NUMCC <= VKILL
295d0ef721eSBaptiste Daroussin #    undef VKILL
296d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VKILL */
297d0ef721eSBaptiste Daroussin #  endif /* VKILL */
298d0ef721eSBaptiste Daroussin #  ifdef VEOF
299d0ef721eSBaptiste Daroussin #   if NUMCC <= VEOF
300d0ef721eSBaptiste Daroussin #    undef VEOF
301d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VEOF */
302d0ef721eSBaptiste Daroussin #  endif /* VEOF */
303d0ef721eSBaptiste Daroussin #  ifdef VEOL
304d0ef721eSBaptiste Daroussin #   if NUMCC <= VEOL
305d0ef721eSBaptiste Daroussin #    undef VEOL
306d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VEOL */
307d0ef721eSBaptiste Daroussin #  endif /* VEOL */
308d0ef721eSBaptiste Daroussin #  ifdef VEOL2
309d0ef721eSBaptiste Daroussin #   if NUMCC <= VEOL2
310d0ef721eSBaptiste Daroussin #    undef VEOL2
311d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VEOL2 */
312d0ef721eSBaptiste Daroussin #  endif /* VEOL2 */
313d0ef721eSBaptiste Daroussin #  ifdef VSWTCH
314d0ef721eSBaptiste Daroussin #   if NUMCC <= VSWTCH
315d0ef721eSBaptiste Daroussin #    undef VSWTCH
316d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VSWTCH */
317d0ef721eSBaptiste Daroussin #  endif /* VSWTCH */
318d0ef721eSBaptiste Daroussin #  ifdef VDSWTCH
319d0ef721eSBaptiste Daroussin #   if NUMCC <= VDSWTCH
320d0ef721eSBaptiste Daroussin #    undef VDSWTCH
321d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VDSWTCH */
322d0ef721eSBaptiste Daroussin #  endif /* VDSWTCH */
323d0ef721eSBaptiste Daroussin #  ifdef VERASE2
324d0ef721eSBaptiste Daroussin #   if NUMCC <= VERASE2
325d0ef721eSBaptiste Daroussin #    undef VERASE2
326d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VERASE2 */
327d0ef721eSBaptiste Daroussin #  endif /* VERASE2 */
328d0ef721eSBaptiste Daroussin #  ifdef VSTART
329d0ef721eSBaptiste Daroussin #   if NUMCC <= VSTART
330d0ef721eSBaptiste Daroussin #    undef VSTART
331d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VSTART */
332d0ef721eSBaptiste Daroussin #  endif /* VSTART */
333d0ef721eSBaptiste Daroussin #  ifdef VSTOP
334d0ef721eSBaptiste Daroussin #   if NUMCC <= VSTOP
335d0ef721eSBaptiste Daroussin #    undef VSTOP
336d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VSTOP */
337d0ef721eSBaptiste Daroussin #  endif /* VSTOP */
338d0ef721eSBaptiste Daroussin #  ifdef VWERASE
339d0ef721eSBaptiste Daroussin #   if NUMCC <= VWERASE
340d0ef721eSBaptiste Daroussin #    undef VWERASE
341d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VWERASE */
342d0ef721eSBaptiste Daroussin #  endif /* VWERASE */
343d0ef721eSBaptiste Daroussin #  ifdef VSUSP
344d0ef721eSBaptiste Daroussin #   if NUMCC <= VSUSP
345d0ef721eSBaptiste Daroussin #    undef VSUSP
346d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VSUSP */
347d0ef721eSBaptiste Daroussin #  endif /* VSUSP */
348d0ef721eSBaptiste Daroussin #  ifdef VDSUSP
349d0ef721eSBaptiste Daroussin #   if NUMCC <= VDSUSP
350d0ef721eSBaptiste Daroussin #    undef VDSUSP
351d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VDSUSP */
352d0ef721eSBaptiste Daroussin #  endif /* VDSUSP */
353d0ef721eSBaptiste Daroussin #  ifdef VREPRINT
354d0ef721eSBaptiste Daroussin #   if NUMCC <= VREPRINT
355d0ef721eSBaptiste Daroussin #    undef VREPRINT
356d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VREPRINT */
357d0ef721eSBaptiste Daroussin #  endif /* VREPRINT */
358d0ef721eSBaptiste Daroussin #  ifdef VDISCARD
359d0ef721eSBaptiste Daroussin #   if NUMCC <= VDISCARD
360d0ef721eSBaptiste Daroussin #    undef VDISCARD
361d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VDISCARD */
362d0ef721eSBaptiste Daroussin #  endif /* VDISCARD */
363d0ef721eSBaptiste Daroussin #  ifdef VLNEXT
364d0ef721eSBaptiste Daroussin #   if NUMCC <= VLNEXT
365d0ef721eSBaptiste Daroussin #    undef VLNEXT
366d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VLNEXT */
367d0ef721eSBaptiste Daroussin #  endif /* VLNEXT */
368d0ef721eSBaptiste Daroussin #  ifdef VSTATUS
369d0ef721eSBaptiste Daroussin #   if NUMCC <= VSTATUS
370d0ef721eSBaptiste Daroussin #    undef VSTATUS
371d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VSTATUS */
372d0ef721eSBaptiste Daroussin #  endif /* VSTATUS */
373d0ef721eSBaptiste Daroussin #  ifdef VPAGE
374d0ef721eSBaptiste Daroussin #   if NUMCC <= VPAGE
375d0ef721eSBaptiste Daroussin #    undef VPAGE
376d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VPAGE */
377d0ef721eSBaptiste Daroussin #  endif /* VPAGE */
378d0ef721eSBaptiste Daroussin #  ifdef VPGOFF
379d0ef721eSBaptiste Daroussin #   if NUMCC <= VPGOFF
380d0ef721eSBaptiste Daroussin #    undef VPGOFF
381d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VPGOFF */
382d0ef721eSBaptiste Daroussin #  endif /* VPGOFF */
383d0ef721eSBaptiste Daroussin #  ifdef VKILL2
384d0ef721eSBaptiste Daroussin #   if NUMCC <= VKILL2
385d0ef721eSBaptiste Daroussin #    undef VKILL2
386d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VKILL2 */
387d0ef721eSBaptiste Daroussin #  endif /* VKILL2 */
388d0ef721eSBaptiste Daroussin #  ifdef VBRK
389d0ef721eSBaptiste Daroussin #   if NUMCC <= VBRK
390d0ef721eSBaptiste Daroussin #    undef VBRK
391d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VBRK */
392d0ef721eSBaptiste Daroussin #  endif /* VBRK */
393d0ef721eSBaptiste Daroussin #  ifdef VMIN
394d0ef721eSBaptiste Daroussin #   if NUMCC <= VMIN
395d0ef721eSBaptiste Daroussin #    undef VMIN
396d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VMIN */
397d0ef721eSBaptiste Daroussin #  endif /* VMIN */
398d0ef721eSBaptiste Daroussin #  ifdef VTIME
399d0ef721eSBaptiste Daroussin #   if NUMCC <= VTIME
400d0ef721eSBaptiste Daroussin #    undef VTIME
401d0ef721eSBaptiste Daroussin #   endif /* NUMCC <= VTIME */
402d0ef721eSBaptiste Daroussin #  endif /* VTIME */
403d0ef721eSBaptiste Daroussin # endif /* NUMCC */
404d0ef721eSBaptiste Daroussin #endif /* !POSIX */
405d0ef721eSBaptiste Daroussin 
406d0ef721eSBaptiste Daroussin #define	C_INTR		 0
407d0ef721eSBaptiste Daroussin #define	C_QUIT		 1
408d0ef721eSBaptiste Daroussin #define	C_ERASE		 2
409d0ef721eSBaptiste Daroussin #define	C_KILL		 3
410d0ef721eSBaptiste Daroussin #define	C_EOF		 4
411d0ef721eSBaptiste Daroussin #define	C_EOL		 5
412d0ef721eSBaptiste Daroussin #define	C_EOL2		 6
413d0ef721eSBaptiste Daroussin #define	C_SWTCH		 7
414d0ef721eSBaptiste Daroussin #define	C_DSWTCH	 8
415d0ef721eSBaptiste Daroussin #define	C_ERASE2	 9
416d0ef721eSBaptiste Daroussin #define	C_START		10
417d0ef721eSBaptiste Daroussin #define	C_STOP		11
418d0ef721eSBaptiste Daroussin #define	C_WERASE	12
419d0ef721eSBaptiste Daroussin #define	C_SUSP		13
420d0ef721eSBaptiste Daroussin #define	C_DSUSP		14
421d0ef721eSBaptiste Daroussin #define	C_REPRINT	15
422d0ef721eSBaptiste Daroussin #define	C_DISCARD	16
423d0ef721eSBaptiste Daroussin #define	C_LNEXT		17
424d0ef721eSBaptiste Daroussin #define	C_STATUS	18
425d0ef721eSBaptiste Daroussin #define	C_PAGE		19
426d0ef721eSBaptiste Daroussin #define	C_PGOFF		20
427d0ef721eSBaptiste Daroussin #define	C_KILL2		21
428d0ef721eSBaptiste Daroussin #define	C_BRK		22
429d0ef721eSBaptiste Daroussin #define	C_MIN		23
430d0ef721eSBaptiste Daroussin #define	C_TIME		24
431d0ef721eSBaptiste Daroussin #define	C_NCC		25
432d0ef721eSBaptiste Daroussin #define	C_SH(A)		((unsigned int)(1 << (A)))
433d0ef721eSBaptiste Daroussin 
434d0ef721eSBaptiste Daroussin /*
435*91f76417SBaptiste Daroussin  * Terminal dependent data structures
436d0ef721eSBaptiste Daroussin  */
437d0ef721eSBaptiste Daroussin #define	EX_IO	0	/* while we are executing	*/
438d0ef721eSBaptiste Daroussin #define	ED_IO	1	/* while we are editing		*/
439d0ef721eSBaptiste Daroussin #define	TS_IO	2	/* new mode from terminal	*/
440d0ef721eSBaptiste Daroussin #define	QU_IO	2	/* used only for quoted chars	*/
441d0ef721eSBaptiste Daroussin #define	NN_IO	3	/* The number of entries	*/
442d0ef721eSBaptiste Daroussin 
443d0ef721eSBaptiste Daroussin /* Don't re-order */
444d0ef721eSBaptiste Daroussin #define	MD_INP	0
445d0ef721eSBaptiste Daroussin #define	MD_OUT	1
446d0ef721eSBaptiste Daroussin #define	MD_CTL	2
447d0ef721eSBaptiste Daroussin #define	MD_LIN	3
448d0ef721eSBaptiste Daroussin #define	MD_CHAR	4
449d0ef721eSBaptiste Daroussin #define	MD_NN	5
450d0ef721eSBaptiste Daroussin 
451d0ef721eSBaptiste Daroussin typedef struct {
452d0ef721eSBaptiste Daroussin 	const char	*t_name;
453d0ef721eSBaptiste Daroussin 	unsigned int	 t_setmask;
454d0ef721eSBaptiste Daroussin 	unsigned int	 t_clrmask;
455d0ef721eSBaptiste Daroussin } ttyperm_t[NN_IO][MD_NN];
456d0ef721eSBaptiste Daroussin 
457d0ef721eSBaptiste Daroussin typedef unsigned char ttychar_t[NN_IO][C_NCC];
458d0ef721eSBaptiste Daroussin 
459d0ef721eSBaptiste Daroussin libedit_private int	tty_init(EditLine *);
460d0ef721eSBaptiste Daroussin libedit_private void	tty_end(EditLine *, int);
461d0ef721eSBaptiste Daroussin libedit_private int	tty_stty(EditLine *, int, const wchar_t **);
462d0ef721eSBaptiste Daroussin libedit_private int	tty_rawmode(EditLine *);
463d0ef721eSBaptiste Daroussin libedit_private int	tty_cookedmode(EditLine *);
464d0ef721eSBaptiste Daroussin libedit_private int	tty_quotemode(EditLine *);
465d0ef721eSBaptiste Daroussin libedit_private int	tty_noquotemode(EditLine *);
466d0ef721eSBaptiste Daroussin libedit_private void	tty_bind_char(EditLine *, int);
467d0ef721eSBaptiste Daroussin libedit_private int	tty_get_signal_character(EditLine *, int);
468d0ef721eSBaptiste Daroussin 
469d0ef721eSBaptiste Daroussin typedef struct {
470d0ef721eSBaptiste Daroussin     ttyperm_t t_t;
471d0ef721eSBaptiste Daroussin     ttychar_t t_c;
472d0ef721eSBaptiste Daroussin     struct termios t_or, t_ex, t_ed, t_ts;
473d0ef721eSBaptiste Daroussin     int t_tabs;
474d0ef721eSBaptiste Daroussin     int t_eight;
475d0ef721eSBaptiste Daroussin     speed_t t_speed;
476d0ef721eSBaptiste Daroussin     unsigned char t_mode;
477d0ef721eSBaptiste Daroussin     unsigned char t_vdisable;
478d0ef721eSBaptiste Daroussin     unsigned char t_initialized;
479d0ef721eSBaptiste Daroussin } el_tty_t;
480d0ef721eSBaptiste Daroussin 
481d0ef721eSBaptiste Daroussin 
482d0ef721eSBaptiste Daroussin #endif /* _h_el_tty */
483