[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.18

1.18    ! deraadt     1: /*     $OpenBSD: kbd.h,v 1.17 2005/11/18 20:56:53 deraadt Exp $        */
1.16      kjell       2:
                      3: /* This file is in the public domain. */
1.4       niklas      4:
1.1       deraadt     5: /*
                      6:  * kbd.h: type definitions for symbol.c and kbd.c for mg experimental
                      7:  */
                      8:
1.17      deraadt     9: struct map_element {
                     10:        KCHAR            k_base;        /* first key in element          */
                     11:        KCHAR            k_num;         /* last key in element           */
                     12:        PF              *k_funcp;       /* pointer to array of pointers  */
1.15      db         13:                                        /* to functions                  */
                     14:        struct keymap_s *k_prefmap;     /* keymap of ONLY prefix key in  */
                     15:                                        /* element                       */
1.17      deraadt    16: };
1.2       millert    17:
                     18: /*
1.15      db         19:  * Predefined keymaps are NOT type KEYMAP because final array needs
1.2       millert    20:  * dimension.  If any changes are made to this struct, they must be reflected
                     21:  * in all keymap declarations.
1.1       deraadt    22:  */
                     23:
1.2       millert    24: #define KEYMAPE(NUM)   {                                               \
1.17      deraadt    25:        short   map_num;                        /* elements used */     \
                     26:        short   map_max;                        /* elements allocated */\
                     27:        PF      map_default;                    /* default function */  \
                     28:        struct map_element map_element[NUM];    /* really [e_max] */    \
1.1       deraadt    29: }
1.2       millert    30: typedef struct keymap_s KEYMAPE(1) KEYMAP;
1.1       deraadt    31:
1.2       millert    32: /* Number of map_elements to grow an overflowed keymap by */
1.1       deraadt    33: #define IMAPEXT 0
                     34: #define MAPGROW 3
                     35: #define MAPINIT (MAPGROW+1)
                     36:
1.2       millert    37: /* Max number of default bindings added to avoid creating new element */
1.1       deraadt    38: #define MAPELEDEF 4
                     39:
1.17      deraadt    40: struct maps_s {
1.15      db         41:        KEYMAP          *p_map;
                     42:        const char      *p_name;
1.17      deraadt    43:        struct maps_s   *p_next;
                     44: };
1.1       deraadt    45:
1.17      deraadt    46: extern struct maps_s   *maps;
                     47: extern struct maps_s   fundamental_mode;
1.12      art        48: #define                fundamental_map (fundamental_mode.p_map)
1.1       deraadt    49:
1.17      deraadt    50: int             dobindkey(KEYMAP *, const char *, const char *);
                     51: KEYMAP         *name_map(const char *);
                     52: struct maps_s  *name_mode(const char *);
                     53: PF              doscan(KEYMAP *, int, KEYMAP **);
                     54: void            maps_init(void);
                     55: int             maps_add(KEYMAP *, const char *);
1.2       millert    56:
1.17      deraadt    57: extern struct map_element      *ele;
                     58: extern struct maps_s           *defb_modes[];