summaryrefslogtreecommitdiff
path: root/controller_info.h
diff options
context:
space:
mode:
Diffstat (limited to 'controller_info.h')
-rw-r--r--controller_info.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/controller_info.h b/controller_info.h
new file mode 100644
index 0000000..0bef684
--- /dev/null
+++ b/controller_info.h
@@ -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