#ifndef COSMOPOLITAN_NOMULTICS_H_
#define COSMOPOLITAN_NOMULTICS_H_

#define kTtySilence  1  /* do not relay read() into write() */
#define kTtyEchoRaw  2  /* don't ^X visualize control codes */
#define kTtyUncanon  4  /* enables non-canonical (raw) mode */
#define kTtyNoCr2Nl  8  /* don't map \r → \n (a.k.a !ICRNL) */
#define kTtyNoIsigs  16 /* don't auto-raise signals on keys */
#define kTtyXtMouse  32 /* enables eXtreme Xterm mouse mode */
#define kTtyNoIexten 64 /* disable various canon keystrokes */
#define kTtyNoEchoe  128
#define kTtyNoEchok  256
#define kTtyNoEchoke 512

COSMOPOLITAN_C_START_

struct TtyConf {
  unsigned magic;
  unsigned char mousebs;
  unsigned char replmode;
  unsigned char replstderr;
  union {
    unsigned char c_cc[20];
    struct {
      unsigned char vline;
      unsigned char vintr;  /* SIGINT keystroke (isigs) */
      unsigned char vquit;  /* SIGQUIT keystroke (isigs) */
      unsigned char verase; /* backspace keystroke (canon) */
      unsigned char vkill;  /* kill line back keystroke (canon) */
      unsigned char veof;   /* EOF keystroke (canon) */
      unsigned char vtime;  /* vtime*100ms can control read delay */
      unsigned char vmin;   /* use 0 for special non-blocking mode */
      unsigned char vswtc;
      unsigned char vstart;
      unsigned char vstop;
      unsigned char vsusp; /* keystroke for SIGTSTP (isigs) */
      unsigned char veol;
      unsigned char vreprint; /* keystroke to print unread line (canon) */
      unsigned char vdiscard;
      unsigned char vwerase; /* keystroke for kill word back (canon) */
      unsigned char vlnext;  /* print next keystroke as ascii (canon) */
      unsigned char veol2;
    };
  };
};

extern struct TtyConf __ttyconf;

COSMOPOLITAN_C_END_
#endif /* COSMOPOLITAN_NOMULTICS_H_ */
