Go to the first, previous, next, last section, table of contents.


Termios functions

The termios functions allow to control terminals and asynchronous communications ports. The DJGPP implementation currently supports the termios functionality for console devices only. It does that by reading the keyboard via the BIOS Int 16h and writes to the screen via the direct output interrupt 29h. This I/O redirection is performed by the special hook internal to the library.

Many of the termios functions accept a termiosp argument which is a pointer to a struct termios variable. Here's the description of this structure:

 #define NCCS 12
 struct termios {
   cc_t	        c_cc[NCCS];  /* control characters */
   tcflag_t     c_cflag;     /* control modes */
   tcflag_t     c_iflag;     /* input modes */
   tcflag_t     c_lflag;     /* local modes */
   tcflag_t     c_oflag;     /* output modes */
   speed_t      c_ispeed;    /* input baudrate */
   speed_t      c_ospeed;    /* output baudrate */
 }

The array c_cc[] defines the special control characters. the following table lists the supported control functions the default characters which invoke those functions, and the default values for MIN and TIME parameters:

  • Index Name Function Default Value
  • 1 VEOF Signal End-Of-Input Ctrl-D
  • 2 VEOL Signal End-Of-Line [Disabled]
  • 3 VERASE Delete previous character Backspace
  • 4 VINTR Generate SIGINT Ctrl-C
  • 5 VKILL Erase current line Ctrl-U
  • 6 VMIN The MIN value 1
  • 7 VQUIT Generate SIGQUIT Ctrl-\
  • 8 VSTART Resume output Ctrl-Q
  • 9 VSTOP Suspend output Ctrl-S
  • 10 VSUSP Suspend program Ctrl-Z
  • 11 VTIME TIME value 0 The special characters (like VEOL, VKILL, etc.) produce their effect only under the canonical input processing, that is, when the ICANON bit in the c_lflag member of struct termios (see below) is set. If ICANON is not set, all characters are processed as regular characters and returned to the caller; only the VMIN and VTIME parameters are meaningful in the non-canonical processing mode. The VEOL character can be used to signal end of line (and thus end of input in the canonical mode) in addition to the normal RET key. In the non-canonical mode, input ends as soon as at least VMIN characters are received. Note that the values of VMIN and VTIME are currently ignored; termios functions always work as if VMIN were 1 and VTIME were zero. Other parameters are supported (for console devices only), except that VSTOP and VSTART characters are not inserted to the input, but otherwise produce no effect. The c_cflag member of struct termios describes the hardware terminal control, as follows:
  • Symbol Function
  • B0 Hang up
  • B50 50 baud
  • B75 75 baud
  • B110 110 baud
  • B134 134.5 baud
  • B150 150 baud
  • B200 200 baud
  • B300 300 baud
  • B600 600 baud
  • B1200 1200 baud
  • B1800 1800 baud
  • B2400 2400 baud
  • B4800 4800 baud
  • B9600 9600 baud
  • B19200 19200 baud
  • B38400 38400 baud
  • CSIZE Character size:
  • CS5 5-bit characters
  • CS6 6-bit characters
  • CS7 7-bit characters
  • CS8 8-bit characters
  • CSTOPB If set, send two stop bits
  • CREAD Enable reading
  • PARENB Enable parity
  • PARODD If set, use odd parity
  • HUPCL Hang up on last close
  • CLOCAL If set, line is local Note that since the DOS terminal doesn't use asynchronous ports, the above parameters are always ignored by the implementation. The default value of c_cflag is (CS8|CREAD|CLOCAL). The c_lflag member of struct termios defines the local modes that control the terminal functions:
  • Symbol Function
  • ISIG If set, enable signals SIGINT and SIGQUIT
  • ICANON If set, enable canonical input processing
  • ECHO If set, enable echoing
  • ECHOE Erase character deletes
  • ECHOK Output newline after the kill character
  • ECHONL Echo the newline
  • NOFLSH [Ignored]
  • TOSTOP [Ignored]
  • ECHOCTL Echo control characters as ^X
  • ECHOKE Erase killed line
  • IEXTEN [Ignored] The default value of c_lflag is (ISIG|ICANON|ECHO|IEXTEN|ECHOE|ECHOKE|ECHOCTL). The c_iflag member of struct termios describes the input control:
  • Symbol Function
  • IGNBRK Ignore Ctrl-BREAK
  • BRKINT Generate SIGINT on Ctrl-BREAK
  • IGNPAR [Ignored]
  • PARMRK [Ignored]
  • INPCK [Ignored]
  • ISTRIP Strip the 8th bit from input
  • INLCR Map NL to CR on input
  • IGNCR Ignore CR characters
  • ICRNL Map CR to NL on input
  • IXON [Ignored]
  • IXOFF Enable start/stop input control
  • IMAXBEL Ring the bell if input line too long The default value of c_iflag is (BRKINT|ICRNL|IMAXBEL). The c_oflag member of struct termios specifies the output handling:
  • Symbol Function
  • OPOST If not set, output characters verbatim
  • ONLCR Map newline to CR-LF pair on output
  • OCRNL Map CR to NL on output
  • ONOEOT Don't output EOT characters Note that if the OPOST bit is not set, all the other flags are ignored and the characters are output verbatim. The default value of c_oflag is (OPOST|ONLCR|ONOEOT). The c_ispeed and c_ospeed members specify, respectively, the input and output baudrate of the terminal. They are set by default to 9600 baud, but the value is always ignored by this implementation, since no asynchronous ports are used.


    Go to the first, previous, next, last section, table of contents.