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