Mercurial > repos > blastem
diff controller_info.h @ 1596:437e80a700aa
Initial heuristics for detecting controller types and showing different labels in UI. Modified controller settings view to first display a list of controllers, only showing mapping after selecting controller
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 22 Jul 2018 17:48:46 -0700 |
parents | |
children | 1fc61c844ec5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controller_info.h Sun Jul 22 17:48:46 2018 -0700 @@ -0,0 +1,45 @@ +#ifndef CONTROLLER_INFO_H_ +#define CONTROLLER_INFO_H_ +#include <stdint.h> + +enum { + TYPE_UNKNOWN, + TYPE_GENERIC_MAPPING, + TYPE_XBOX, + TYPE_PSX, + TYPE_NINTENDO, + TYPE_SEGA +}; + +enum { + SUBTYPE_UNKNOWN, + SUBTYPE_XBOX, + SUBTYPE_X360, + SUBTYPE_XBONE, + SUBTYPE_PS2, + SUBTYPE_PS3, + SUBTYPE_PS4, + SUBTYPE_WIIU, + SUBTYPE_SWITCH, + SUBTYPE_GENESIS, + SUBTYPE_SATURN +}; + +enum { + VARIANT_NORMAL, + VARIANT_6B_BUMPERS, //C and Z positions are RB and LB respectively + VARIANT_6B_RIGHT //C and Z positions are RT and RB respectively +}; + +typedef struct { + char const *name; + uint8_t type; + uint8_t subtype; + uint8_t variant; +} controller_info; + +controller_info get_controller_info(int index); +const char *get_button_label(controller_info *info, int button); +const char *get_axis_label(controller_info *info, int axis); + +#endif //CONTROLLER_INFO_H_ \ No newline at end of file