📄 tty.h
字号:
/* $NetBSD: tty.h,v 1.9 2002/03/18 16:01:01 christos Exp $ *//*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * Christos Zoulas of Cornell University. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)tty.h 8.1 (Berkeley) 6/4/93 *//* * el.tty.h: Local terminal header */#ifndef _h_el_tty#define _h_el_tty#include "histedit.h"#include <termios.h>#include <unistd.h>/* Define our own since everyone gets it wrong! */#define CONTROL(A) ((A) & 037)/* * Aix compatible names */# if defined(VWERSE) && !defined(VWERASE)# define VWERASE VWERSE# endif /* VWERSE && !VWERASE */# if defined(VDISCRD) && !defined(VDISCARD)# define VDISCARD VDISCRD# endif /* VDISCRD && !VDISCARD */# if defined(VFLUSHO) && !defined(VDISCARD)# define VDISCARD VFLUSHO# endif /* VFLUSHO && VDISCARD */# if defined(VSTRT) && !defined(VSTART)# define VSTART VSTRT# endif /* VSTRT && ! VSTART */# if defined(VSTAT) && !defined(VSTATUS)# define VSTATUS VSTAT# endif /* VSTAT && ! VSTATUS */# ifndef ONLRET# define ONLRET 0# endif /* ONLRET */# ifndef TAB3# ifdef OXTABS# define TAB3 OXTABS# else# define TAB3 0# endif /* OXTABS */# endif /* !TAB3 */# if defined(OXTABS) && !defined(XTABS)# define XTABS OXTABS# endif /* OXTABS && !XTABS */# ifndef ONLCR# define ONLCR 0# endif /* ONLCR */# ifndef IEXTEN# define IEXTEN 0# endif /* IEXTEN */# ifndef ECHOCTL# define ECHOCTL 0# endif /* ECHOCTL */# ifndef PARENB# define PARENB 0# endif /* PARENB */# ifndef EXTPROC# define EXTPROC 0# endif /* EXTPROC */# ifndef FLUSHO# define FLUSHO 0# endif /* FLUSHO */# if defined(VDISABLE) && !defined(_POSIX_VDISABLE)# define _POSIX_VDISABLE VDISABLE# endif /* VDISABLE && ! _POSIX_VDISABLE *//* * Work around ISC's definition of IEXTEN which is * XCASE! */# ifdef ISC# if defined(IEXTEN) && defined(XCASE)# if IEXTEN == XCASE# undef IEXTEN# define IEXTEN 0# endif /* IEXTEN == XCASE */# endif /* IEXTEN && XCASE */# if defined(IEXTEN) && !defined(XCASE)# define XCASE IEXTEN# undef IEXTEN# define IEXTEN 0# endif /* IEXTEN && !XCASE */# endif /* ISC *//* * Work around convex weirdness where turning off IEXTEN makes us * lose all postprocessing! */#if defined(convex) || defined(__convex__)# if defined(IEXTEN) && IEXTEN != 0# undef IEXTEN# define IEXTEN 0# endif /* IEXTEN != 0 */#endif /* convex || __convex__ *//* * So that we don't lose job control. */#ifdef __SVR4# undef CSWTCH#endif#ifndef _POSIX_VDISABLE# define _POSIX_VDISABLE ((unsigned char) -1)#endif /* _POSIX_VDISABLE */#if !defined(CREPRINT) && defined(CRPRNT)# define CREPRINT CRPRNT#endif /* !CREPRINT && CRPRNT */#if !defined(CDISCARD) && defined(CFLUSH)# define CDISCARD CFLUSH#endif /* !CDISCARD && CFLUSH */#ifndef CINTR# define CINTR CONTROL('c')#endif /* CINTR */#ifndef CQUIT# define CQUIT 034 /* ^\ */#endif /* CQUIT */#ifndef CERASE# define CERASE 0177 /* ^? */#endif /* CERASE */#ifndef CKILL# define CKILL CONTROL('u')#endif /* CKILL */#ifndef CEOF# define CEOF CONTROL('d')#endif /* CEOF */#ifndef CEOL# define CEOL _POSIX_VDISABLE#endif /* CEOL */#ifndef CEOL2# define CEOL2 _POSIX_VDISABLE#endif /* CEOL2 */#ifndef CSWTCH# define CSWTCH _POSIX_VDISABLE#endif /* CSWTCH */#ifndef CDSWTCH# define CDSWTCH _POSIX_VDISABLE#endif /* CDSWTCH */#ifndef CERASE2# define CERASE2 _POSIX_VDISABLE#endif /* CERASE2 */#ifndef CSTART# define CSTART CONTROL('q')#endif /* CSTART */#ifndef CSTOP# define CSTOP CONTROL('s')#endif /* CSTOP */#ifndef CSUSP# define CSUSP CONTROL('z')#endif /* CSUSP */#ifndef CDSUSP# define CDSUSP CONTROL('y')#endif /* CDSUSP */#ifdef hpux# ifndef CREPRINT# define CREPRINT _POSIX_VDISABLE# endif /* CREPRINT */# ifndef CDISCARD# define CDISCARD _POSIX_VDISABLE# endif /* CDISCARD */# ifndef CLNEXT# define CLNEXT _POSIX_VDISABLE# endif /* CLNEXT */# ifndef CWERASE# define CWERASE _POSIX_VDISABLE# endif /* CWERASE */#else /* !hpux */# ifndef CREPRINT# define CREPRINT CONTROL('r')# endif /* CREPRINT */# ifndef CDISCARD# define CDISCARD CONTROL('o')# endif /* CDISCARD */# ifndef CLNEXT# define CLNEXT CONTROL('v')# endif /* CLNEXT */# ifndef CWERASE# define CWERASE CONTROL('w')# endif /* CWERASE */#endif /* hpux */#ifndef CSTATUS# define CSTATUS CONTROL('t')#endif /* CSTATUS */#ifndef CPAGE# define CPAGE ' '#endif /* CPAGE */#ifndef CPGOFF# define CPGOFF CONTROL('m')#endif /* CPGOFF */#ifndef CKILL2# define CKILL2 _POSIX_VDISABLE#endif /* CKILL2 */#ifndef CBRK# ifndef masscomp# define CBRK 0377# else# define CBRK '\0'# endif /* masscomp */#endif /* CBRK */#ifndef CMIN# define CMIN CEOF#endif /* CMIN */#ifndef CTIME# define CTIME CEOL#endif /* CTIME *//* * Fix for sun inconsistency. On termio VSUSP and the rest of the * ttychars > NCC are defined. So we undefine them. */#if defined(TERMIO) || defined(POSIX)# if defined(POSIX) && defined(NCCS)# define NUMCC NCCS# else# ifdef NCC# define NUMCC NCC# endif /* NCC */# endif /* POSIX && NCCS */# ifdef NUMCC# ifdef VINTR# if NUMCC <= VINTR# undef VINTR# endif /* NUMCC <= VINTR */# endif /* VINTR */# ifdef VQUIT# if NUMCC <= VQUIT# undef VQUIT# endif /* NUMCC <= VQUIT */# endif /* VQUIT */# ifdef VERASE# if NUMCC <= VERASE# undef VERASE# endif /* NUMCC <= VERASE */# endif /* VERASE */# ifdef VKILL# if NUMCC <= VKILL# undef VKILL# endif /* NUMCC <= VKILL */# endif /* VKILL */# ifdef VEOF# if NUMCC <= VEOF# undef VEOF# endif /* NUMCC <= VEOF */# endif /* VEOF */# ifdef VEOL# if NUMCC <= VEOL# undef VEOL# endif /* NUMCC <= VEOL */# endif /* VEOL */# ifdef VEOL2# if NUMCC <= VEOL2# undef VEOL2# endif /* NUMCC <= VEOL2 */# endif /* VEOL2 */# ifdef VSWTCH# if NUMCC <= VSWTCH# undef VSWTCH# endif /* NUMCC <= VSWTCH */# endif /* VSWTCH */# ifdef VDSWTCH# if NUMCC <= VDSWTCH# undef VDSWTCH# endif /* NUMCC <= VDSWTCH */# endif /* VDSWTCH */# ifdef VERASE2# if NUMCC <= VERASE2# undef VERASE2# endif /* NUMCC <= VERASE2 */# endif /* VERASE2 */# ifdef VSTART# if NUMCC <= VSTART# undef VSTART# endif /* NUMCC <= VSTART */# endif /* VSTART */# ifdef VSTOP# if NUMCC <= VSTOP# undef VSTOP# endif /* NUMCC <= VSTOP */# endif /* VSTOP */# ifdef VWERASE# if NUMCC <= VWERASE# undef VWERASE# endif /* NUMCC <= VWERASE */# endif /* VWERASE */# ifdef VSUSP# if NUMCC <= VSUSP# undef VSUSP# endif /* NUMCC <= VSUSP */# endif /* VSUSP */# ifdef VDSUSP# if NUMCC <= VDSUSP# undef VDSUSP# endif /* NUMCC <= VDSUSP */# endif /* VDSUSP */# ifdef VREPRINT# if NUMCC <= VREPRINT# undef VREPRINT# endif /* NUMCC <= VREPRINT */# endif /* VREPRINT */# ifdef VDISCARD# if NUMCC <= VDISCARD# undef VDISCARD# endif /* NUMCC <= VDISCARD */# endif /* VDISCARD */# ifdef VLNEXT# if NUMCC <= VLNEXT# undef VLNEXT# endif /* NUMCC <= VLNEXT */# endif /* VLNEXT */# ifdef VSTATUS# if NUMCC <= VSTATUS# undef VSTATUS# endif /* NUMCC <= VSTATUS */# endif /* VSTATUS */# ifdef VPAGE# if NUMCC <= VPAGE# undef VPAGE# endif /* NUMCC <= VPAGE */# endif /* VPAGE */# ifdef VPGOFF# if NUMCC <= VPGOFF# undef VPGOFF# endif /* NUMCC <= VPGOFF */# endif /* VPGOFF */# ifdef VKILL2# if NUMCC <= VKILL2# undef VKILL2# endif /* NUMCC <= VKILL2 */# endif /* VKILL2 */# ifdef VBRK# if NUMCC <= VBRK# undef VBRK# endif /* NUMCC <= VBRK */# endif /* VBRK */# ifdef VMIN# if NUMCC <= VMIN# undef VMIN# endif /* NUMCC <= VMIN */# endif /* VMIN */# ifdef VTIME# if NUMCC <= VTIME# undef VTIME# endif /* NUMCC <= VTIME */# endif /* VTIME */# endif /* NUMCC */#endif /* !POSIX */#define C_INTR 0#define C_QUIT 1#define C_ERASE 2#define C_KILL 3#define C_EOF 4#define C_EOL 5#define C_EOL2 6#define C_SWTCH 7#define C_DSWTCH 8#define C_ERASE2 9#define C_START 10#define C_STOP 11#define C_WERASE 12#define C_SUSP 13#define C_DSUSP 14#define C_REPRINT 15#define C_DISCARD 16#define C_LNEXT 17#define C_STATUS 18#define C_PAGE 19#define C_PGOFF 20#define C_KILL2 21#define C_BRK 22#define C_MIN 23#define C_TIME 24#define C_NCC 25#define C_SH(A) (1 << (A))/* * Terminal dependend data structures */#define EX_IO 0 /* while we are executing */#define ED_IO 1 /* while we are editing */#define TS_IO 2 /* new mode from terminal */#define QU_IO 2 /* used only for quoted chars */#define NN_IO 3 /* The number of entries */#define MD_INP 0#define MD_OUT 1#define MD_CTL 2#define MD_LIN 3#define MD_CHAR 4#define MD_NN 5typedef struct { const char *t_name; u_int t_setmask; u_int t_clrmask;} ttyperm_t[NN_IO][MD_NN];typedef unsigned char ttychar_t[NN_IO][C_NCC];protected int tty_init(EditLine *);protected void tty_end(EditLine *);protected int tty_stty(EditLine *, int, const char **);protected int tty_rawmode(EditLine *);protected int tty_cookedmode(EditLine *);protected int tty_quotemode(EditLine *);protected int tty_noquotemode(EditLine *);protected void tty_bind_char(EditLine *, int);typedef struct { ttyperm_t t_t; ttychar_t t_c; struct termios t_ex, t_ed, t_ts; int t_tabs; int t_eight; speed_t t_speed; int t_mode; unsigned char t_vdisable;} el_tty_t;#endif /* _h_el_tty */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -