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