/* -*-c-*- */ #ifndef MENU_BINDINGS_H #define MENU_BINDINGS_H /* ---------------------------- included header files ---------------------- */ /* Do not #include any files - the file including this file has to take care of * it. */ /* ---------------------------- global definitions ------------------------- */ /* ---------------------------- global macros ------------------------------ */ /* ---------------------------- forward declarations ----------------------- */ struct MenuRoot; struct MenuParameters; struct MenuReturn; struct MenuItem; /* ---------------------------- type definitions --------------------------- */ typedef struct { unsigned int keystate; unsigned int keycode; Time timestamp; } double_keypress; typedef enum { SA_NONE = 0, SA_ENTER, SA_LEAVE, SA_MOVE_ITEMS, SA_FIRST, SA_LAST, SA_CONTINUE, SA_WARPBACK, SA_SELECT, SA_TEAROFF, SA_ABORT, SA_SCROLL, SA_EXEC_CMD } menu_shortcut_action; /* ---------------------------- exported variables (globals) --------------- */ /* Do not use global variable. Full stop. */ /* ---------------------------- interface functions ------------------------ */ /* Before this function is called, all menu bindings created through * menu_binding() are permanent i.e. they can not be deleted (although * overridden). After calling it, new bindings are stored in the regular list * and can be deleted by the user as usual. * * To be called by SetRCDefaults *only*. */ void menu_bindings_startup_complete(void); /* Parse a menu binding and store it. * * To be called from bindings.c *only*. */ int menu_binding( Display *dpy, binding_t type, int button, KeySym keysym, int context, int modifier, char *action, char *menu_style); /* Checks if the given mouse or keyboard event in the given context * corresponds to a menu binding. If so, the binding is returned. Otherwise * NULL is returned. * * To be called from menus.c *only*. */ Binding *menu_binding_is_mouse(XEvent* event, int context); Binding *menu_binding_is_key(XEvent* event, int context); /* Menu keyboard processing * * Function called instead of Keyboard_Shortcuts() * when a KeyPress event is received. If the key is alphanumeric, * then the menu is scanned for a matching hot key. Otherwise if * it was the escape key then the menu processing is aborted. * If none of these conditions are true, then the default processing * routine is called. * TKP - uses XLookupString so that keypad numbers work with windowlist */ void menu_shortcuts( struct MenuRoot *mr, struct MenuParameters *pmp, struct MenuReturn *pmret, XEvent *event, struct MenuItem **pmi_current, double_keypress *pdkp, int *ret_menu_x, int *ret_menu_y); #endif /* MENU_BINDINGS_H */