[BACK]Return to kbd.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Annotation of src/usr.bin/mg/kbd.h, Revision 1.4

1.4     ! niklas      1: /*     $OpenBSD$       */
        !             2:
1.1       deraadt     3: /*
                      4:  * kbd.h: type definitions for symbol.c and kbd.c for mg experimental
                      5:  */
                      6:
1.2       millert     7: typedef struct {
                      8:        KCHAR            k_base;        /* first key in element          */
                      9:        KCHAR            k_num;         /* last key in element           */
                     10:        PF              *k_funcp;       /* pointer to array of pointers
                     11:                                         * to functions */
                     12:        struct keymap_s *k_prefmap;     /* keymap of ONLY prefix key in
                     13:                                         * element */
                     14: } MAP_ELEMENT;
                     15:
                     16: /*
                     17:  * predefined keymaps are NOT type KEYMAP because final array needs
                     18:  * dimension.  If any changes are made to this struct, they must be reflected
                     19:  * in all keymap declarations.
1.1       deraadt    20:  */
                     21:
1.2       millert    22: #define KEYMAPE(NUM)   {                                               \
                     23:        short   map_num;                /* elements used */             \
                     24:        short   map_max;                /* elements allocated */        \
                     25:        PF      map_default;            /* default function */          \
                     26:        MAP_ELEMENT map_element[NUM];   /* really [e_max] */            \
1.1       deraadt    27: }
1.2       millert    28: typedef struct keymap_s KEYMAPE(1) KEYMAP;
1.1       deraadt    29:
                     30: #define none   ctrlg
                     31: #define prefix (PF)NULL
                     32:
1.2       millert    33: /* Number of map_elements to grow an overflowed keymap by */
1.1       deraadt    34: #define IMAPEXT 0
                     35: #define MAPGROW 3
                     36: #define MAPINIT (MAPGROW+1)
                     37:
1.2       millert    38: /* Max number of default bindings added to avoid creating new element */
1.1       deraadt    39: #define MAPELEDEF 4
                     40:
                     41: typedef struct MAPS_S {
1.2       millert    42:        KEYMAP         *p_map;
                     43:        char           *p_name;
                     44: } MAPS;
1.1       deraadt    45:
1.2       millert    46: extern MAPS     map_table[];
1.1       deraadt    47:
                     48: typedef struct {
1.2       millert    49:        PF              n_funct;
                     50:        char           *n_name;
                     51: } FUNCTNAMES;
                     52:
1.3       millert    53: int     dobindkey              __P((KEYMAP *, char *, char *));
                     54: KEYMAP  *name_map              __P((char *));
                     55: MAPS    *name_mode             __P((char *));
1.2       millert    56: PF       doscan                        __P((KEYMAP *, int));
                     57: PF       name_function         __P((char *));
                     58: char    *function_name         __P((PF));
                     59: char    *map_name              __P((KEYMAP *));
                     60:
1.3       millert    61: extern int              nfunct;
                     62: extern FUNCTNAMES       functnames[];
                     63: extern MAP_ELEMENT     *ele;
                     64: extern MAPS            *defb_modes[];