X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=libpicofe.git;a=blobdiff_plain;f=input.h;h=360b65bb4e090a3cae1d0590ae08a18f3b538dae;hp=e87e6ea5103a260e3b7695dc8a3457f8629e566a;hb=d1453cf7e6d5d6758cc5d72c6d3af7d37156bf72;hpb=a86e9a3e58f55bf49d99dfd5e5d6413e17149593 diff --git a/input.h b/input.h index e87e6ea..360b65b 100644 --- a/input.h +++ b/input.h @@ -76,12 +76,14 @@ enum { #define IN_BIND_OFFS(key, btype) \ ((key) * IN_BINDTYPE_COUNT + (btype)) -typedef struct { +typedef struct InputDriver in_drv_t; + +struct InputDriver { const char *prefix; - void (*probe)(void); + void (*probe)(const in_drv_t *drv); void (*free)(void *drv_data); const char * const * - (*get_key_names)(int *count); + (*get_key_names)(const in_drv_t *drv, int *count); int (*clean_binds)(void *drv_data, int *binds, int *def_finds); int (*get_config)(void *drv_data, int what, int *val); int (*set_config)(void *drv_data, int what, int val); @@ -94,7 +96,8 @@ typedef struct { const char * (*get_key_name)(int keycode); const struct in_default_bind *defbinds; -} in_drv_t; + const void *pdata; +}; struct in_default_bind { unsigned short code; @@ -102,8 +105,23 @@ struct in_default_bind { unsigned char bit; }; +struct menu_keymap { + short key; + short pbtn; +}; + +struct in_pdata { + const struct in_default_bind *defbinds; + const struct menu_keymap *key_map; + size_t kmap_size; + const struct menu_keymap *joy_map; + size_t jmap_size; + const char * const *key_names; +}; + /* to be called by drivers */ -int in_register_driver(const in_drv_t *drv, const struct in_default_bind *defbinds); +int in_register_driver(const in_drv_t *drv, + const struct in_default_bind *defbinds, const void *pdata); void in_register(const char *nname, int drv_fd_hnd, void *drv_data, int key_count, const char * const *key_names, int combos); void in_combos_find(const int *binds, int last_key, int *combo_keys, int *combo_acts);