Home
       term.h - iomenu - interactive terminal-based selection menu
  HTML git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
       term.h (949B)
       ---
            1 #ifndef TERM_H
            2 #define TERM_H
            3 
            4 #include <stdint.h>
            5 #include <stdio.h>
            6 #include <sys/ioctl.h>
            7 #include <termios.h>
            8 #include <unistd.h>
            9 
           10 #define TERM_KEY_CTRL(c)    ((c) & ~0x40)
           11 #define TERM_KEY_ALT(c)            (0x100 + (c))
           12 #define TERM_KEY_CSI(c, i)  (0x100 + (c) * 0x100 + (i))
           13 
           14 enum term_key {
           15         TERM_KEY_ESC        = 0x1b,
           16         TERM_KEY_DELETE     = 127,
           17         TERM_KEY_BACKSPACE  = TERM_KEY_CTRL('H'),
           18         TERM_KEY_TAB        = TERM_KEY_CTRL('I'),
           19         TERM_KEY_ENTER      = TERM_KEY_CTRL('J'),
           20         TERM_KEY_ARROW_UP   = TERM_KEY_CSI('A', 0),
           21         TERM_KEY_ARROW_DOWN = TERM_KEY_CSI('B', 0),
           22         TERM_KEY_PAGE_UP    = TERM_KEY_CSI('~', 5),
           23         TERM_KEY_PAGE_DOWN  = TERM_KEY_CSI('~', 6),
           24 };
           25 
           26 struct term {
           27         struct winsize winsize;
           28         struct termios termios;
           29 };
           30 
           31 extern struct term term;
           32 
           33 int        term_width_at_pos(uint32_t codepoint, int pos);
           34 int        term_at_width(char const *s, int width, int pos);
           35 int        term_raw_on(int fd);
           36 int        term_raw_off(int fd);
           37 int        term_get_key(FILE *fp);
           38 
           39 #endif