xref: /freebsd/contrib/ncurses/include/ncurses_mingw.h (revision 06bfebdedb0d353f1771adb65731f64461d9bd01)
1*06bfebdeSXin LI /****************************************************************************
2*06bfebdeSXin LI  * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
3*06bfebdeSXin LI  *                                                                          *
4*06bfebdeSXin LI  * Permission is hereby granted, free of charge, to any person obtaining a  *
5*06bfebdeSXin LI  * copy of this software and associated documentation files (the            *
6*06bfebdeSXin LI  * "Software"), to deal in the Software without restriction, including      *
7*06bfebdeSXin LI  * without limitation the rights to use, copy, modify, merge, publish,      *
8*06bfebdeSXin LI  * distribute, distribute with modifications, sublicense, and/or sell       *
9*06bfebdeSXin LI  * copies of the Software, and to permit persons to whom the Software is    *
10*06bfebdeSXin LI  * furnished to do so, subject to the following conditions:                 *
11*06bfebdeSXin LI  *                                                                          *
12*06bfebdeSXin LI  * The above copyright notice and this permission notice shall be included  *
13*06bfebdeSXin LI  * in all copies or substantial portions of the Software.                   *
14*06bfebdeSXin LI  *                                                                          *
15*06bfebdeSXin LI  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16*06bfebdeSXin LI  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17*06bfebdeSXin LI  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18*06bfebdeSXin LI  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19*06bfebdeSXin LI  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20*06bfebdeSXin LI  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21*06bfebdeSXin LI  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22*06bfebdeSXin LI  *                                                                          *
23*06bfebdeSXin LI  * Except as contained in this notice, the name(s) of the above copyright   *
24*06bfebdeSXin LI  * holders shall not be used in advertising or otherwise to promote the     *
25*06bfebdeSXin LI  * sale, use or other dealings in this Software without prior written       *
26*06bfebdeSXin LI  * authorization.                                                           *
27*06bfebdeSXin LI  ****************************************************************************/
28*06bfebdeSXin LI 
29*06bfebdeSXin LI /****************************************************************************
30*06bfebdeSXin LI  * Author: Juergen Pfeifer, 2008-on                                         *
31*06bfebdeSXin LI  *                                                                          *
32*06bfebdeSXin LI  ****************************************************************************/
33*06bfebdeSXin LI 
34*06bfebdeSXin LI /* $Id: ncurses_mingw.h,v 1.1 2008/12/14 19:22:16 juergen Exp $ */
35*06bfebdeSXin LI 
36*06bfebdeSXin LI /*
37*06bfebdeSXin LI  * This is a placholder up to now and describes what needs to be implemented
38*06bfebdeSXin LI  * to support I/O to external terminals with ncurses on the Windows OS.
39*06bfebdeSXin LI  */
40*06bfebdeSXin LI 
41*06bfebdeSXin LI #if __MINGW32__
42*06bfebdeSXin LI #ifndef _NC_MINGWH
43*06bfebdeSXin LI #define _NC_MINGWH
44*06bfebdeSXin LI 
45*06bfebdeSXin LI #define USE_CONSOLE_DRIVER 1
46*06bfebdeSXin LI 
47*06bfebdeSXin LI #undef  TERMIOS
48*06bfebdeSXin LI #define TERMIOS 1
49*06bfebdeSXin LI 
50*06bfebdeSXin LI #define InvalidHandle ((TERM_HANDLE)-1)
51*06bfebdeSXin LI #define InvalidConsoleHandle(s) ((s)==InvalidHandle)
52*06bfebdeSXin LI 
53*06bfebdeSXin LI typedef unsigned char cc_t;
54*06bfebdeSXin LI typedef unsigned int  speed_t;
55*06bfebdeSXin LI typedef unsigned int  tcflag_t;
56*06bfebdeSXin LI 
57*06bfebdeSXin LI #define NCCS 32
58*06bfebdeSXin LI struct termios
59*06bfebdeSXin LI {
60*06bfebdeSXin LI   tcflag_t   c_iflag;     /* input mode         */
61*06bfebdeSXin LI   tcflag_t   c_oflag;     /* output mode        */
62*06bfebdeSXin LI   tcflag_t   c_cflag;     /* control mode       */
63*06bfebdeSXin LI   tcflag_t   c_lflag;     /* local mode         */
64*06bfebdeSXin LI   cc_t       c_line;      /* line discipline    */
65*06bfebdeSXin LI   cc_t       c_cc[NCCS];  /* control characters */
66*06bfebdeSXin LI   speed_t    c_ispeed;    /* input speed        */
67*06bfebdeSXin LI   speed_t    c_ospeed;    /* c_ospeed           */
68*06bfebdeSXin LI };
69*06bfebdeSXin LI 
70*06bfebdeSXin LI /* c_cc chars */
71*06bfebdeSXin LI #define VINTR     0
72*06bfebdeSXin LI #define VQUIT     1
73*06bfebdeSXin LI #define VERASE    2
74*06bfebdeSXin LI #define VKILL     3
75*06bfebdeSXin LI #define VEOF      4
76*06bfebdeSXin LI #define VTIME     5
77*06bfebdeSXin LI #define VMIN      6
78*06bfebdeSXin LI 
79*06bfebdeSXin LI /* c_iflag bits */
80*06bfebdeSXin LI #define ISTRIP	0000040
81*06bfebdeSXin LI #define INLCR	0000100
82*06bfebdeSXin LI #define IGNCR	0000200
83*06bfebdeSXin LI #define ICRNL	0000400
84*06bfebdeSXin LI #define BRKINT	0000002
85*06bfebdeSXin LI #define PARMRK	0000010
86*06bfebdeSXin LI #define IXON	0002000
87*06bfebdeSXin LI #define IGNBRK	0000001
88*06bfebdeSXin LI #define IGNPAR	0000004
89*06bfebdeSXin LI #define INPCK	0000020
90*06bfebdeSXin LI #define IXOFF	0010000
91*06bfebdeSXin LI 
92*06bfebdeSXin LI /* c_oflag bits */
93*06bfebdeSXin LI #define OPOST	0000001
94*06bfebdeSXin LI 
95*06bfebdeSXin LI /* c_cflag bit meaning */
96*06bfebdeSXin LI #define CBAUD	   0010017
97*06bfebdeSXin LI #define CSIZE	   0000060
98*06bfebdeSXin LI #define CS8	   0000060
99*06bfebdeSXin LI #define B0	   0000000
100*06bfebdeSXin LI #define B50	   0000001
101*06bfebdeSXin LI #define B75	   0000002
102*06bfebdeSXin LI #define B110	   0000003
103*06bfebdeSXin LI #define B134	   0000004
104*06bfebdeSXin LI #define B150	   0000005
105*06bfebdeSXin LI #define B200	   0000006
106*06bfebdeSXin LI #define B300	   0000007
107*06bfebdeSXin LI #define B600	   0000010
108*06bfebdeSXin LI #define B1200	   0000011
109*06bfebdeSXin LI #define B1800	   0000012
110*06bfebdeSXin LI #define B2400	   0000013
111*06bfebdeSXin LI #define B4800	   0000014
112*06bfebdeSXin LI #define B9600	   0000015
113*06bfebdeSXin LI #define CLOCAL	   0004000
114*06bfebdeSXin LI #define CREAD	   0000200
115*06bfebdeSXin LI #define CSTOPB	   0000100
116*06bfebdeSXin LI #define HUPCL	   0002000
117*06bfebdeSXin LI #define PARENB	   0000400
118*06bfebdeSXin LI #define PARODD	   0001000
119*06bfebdeSXin LI 
120*06bfebdeSXin LI /* c_lflag bits */
121*06bfebdeSXin LI #define ECHO	0000010
122*06bfebdeSXin LI #define ECHONL	0000100
123*06bfebdeSXin LI #define ISIG	0000001
124*06bfebdeSXin LI #define IEXTEN	0100000
125*06bfebdeSXin LI #define ICANON	0000002
126*06bfebdeSXin LI #define NOFLSH	0000200
127*06bfebdeSXin LI #define ECHOE	0000020
128*06bfebdeSXin LI #define ECHOK	0000040
129*06bfebdeSXin LI 
130*06bfebdeSXin LI /* tcflush() */
131*06bfebdeSXin LI #define	TCIFLUSH	0
132*06bfebdeSXin LI 
133*06bfebdeSXin LI /* tcsetattr uses these */
134*06bfebdeSXin LI #define	TCSADRAIN	1
135*06bfebdeSXin LI 
136*06bfebdeSXin LI /* ioctls */
137*06bfebdeSXin LI #define TCGETA		0x5405
138*06bfebdeSXin LI #define TCFLSH		0x540B
139*06bfebdeSXin LI #define TIOCGWINSZ	0x5413
140*06bfebdeSXin LI 
141*06bfebdeSXin LI extern int _nc_mingw_ioctl(int fd, long int request, struct termios* arg);
142*06bfebdeSXin LI extern void _nc_set_term_driver(void* term);
143*06bfebdeSXin LI 
144*06bfebdeSXin LI #ifndef cfgetospeed
145*06bfebdeSXin LI #define cfgetospeed(t) ((t)->c_cflag & CBAUD)
146*06bfebdeSXin LI #endif
147*06bfebdeSXin LI 
148*06bfebdeSXin LI #ifndef tcsetattr
149*06bfebdeSXin LI #define tcsetattr(fd, cmd, arg) _nc_mingw_ioctl(fd, cmd, arg)
150*06bfebdeSXin LI #endif
151*06bfebdeSXin LI 
152*06bfebdeSXin LI #ifndef tcgetattr
153*06bfebdeSXin LI #define tcgetattr(fd, arg) _nc_mingw_ioctl(fd, TCGETA, arg)
154*06bfebdeSXin LI #endif
155*06bfebdeSXin LI 
156*06bfebdeSXin LI #ifndef tcflush
157*06bfebdeSXin LI #define tcflush(fd, arg) _nc_mingw_ioctl(fd, TCFLSH, arg)
158*06bfebdeSXin LI #endif
159*06bfebdeSXin LI 
160*06bfebdeSXin LI #undef  ttyname
161*06bfebdeSXin LI #define ttyname(fd) NULL
162*06bfebdeSXin LI 
163*06bfebdeSXin LI #endif
164*06bfebdeSXin LI #endif
165