X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fkeybindings.h;h=085de9af4532447f156c9d8d8c05ccd620490ccc;hb=385ac8287af0e5e5b5ab0539b47cda9b8dcbec58;hp=85c33c781bf38581a627a66e1eb42ca002f64ec1;hpb=f222ace2f2441b21a3c29741483d8018294820a4;p=plomrogue diff --git a/src/keybindings.h b/src/keybindings.h index 85c33c7..085de9a 100644 --- a/src/keybindings.h +++ b/src/keybindings.h @@ -1,19 +1,66 @@ +/* keybindings.h + * + * Retrieval and storage of keybindings. + */ + #ifndef KEYBINDINGS_H +#define KEYBINDINGS_H + + + +#include /* for uint16_t */ +struct World; +struct WinMeta; + + + +/* Individual keybinding. */ +struct KeyBinding +{ + char * name; /* name of functionality bound to keycode */ + uint16_t key; /* keycode */ +}; + + + +/* Metadata used by the keybinding editing window. */ +struct KeysWinData +{ + uint16_t max; /* index of last keybinding (= n of keybindings - 1) */ + char edit; /* 1 if currently editing a keybinding, else 0 */ + uint16_t select; /* index of keybinding selected for editing */ +}; + + + +/* Read keybindings data from / write them to the file "keybindings". */ +extern void init_keybindings(struct World * world); +extern void save_keybindings(struct World * world); + + + +/* Return keycode matching a key (functionality) name. */ +extern uint16_t get_action_key(struct KeyBinding * keybindings, char * name); + + + +/* Translate keycode to readable names of max 9 chars where possible. */ +extern char * get_keyname(uint16_t keycode); + + + +/* Mark selection in keybindings window modifiable, get user input to modify + * key. Ensure there are max. three digits in the keycode ASCII representation. + */ +extern void keyswin_mod_key(struct World * world, struct WinMeta * win_meta); + + + +/* Move selection in keybinding window upwards ("dir" = "u") or downwards ("dir" + * = "d") within the limits of the keybindings list length. + */ +extern void keyswin_move_selection(struct World * world, char dir); + -struct KeyBinding { - char * name; - uint16_t key; }; - -struct KeysWinData { - uint16_t max; - char edit; - uint16_t select; }; - -void init_keybindings(struct World *); -void save_keybindings(struct World *); -uint16_t get_action_key (struct KeyBinding *, char *); -char * get_keyname(uint16_t); -void keyswin_mod_key (struct World *, struct WinMeta *); -void keyswin_move_selection (struct World *, char); #endif