diff options
Diffstat (limited to 'src/emu/input.h')
-rw-r--r-- | src/emu/input.h | 920 |
1 files changed, 23 insertions, 897 deletions
diff --git a/src/emu/input.h b/src/emu/input.h index 3ca97ae1e99..7c00a590a8d 100644 --- a/src/emu/input.h +++ b/src/emu/input.h @@ -17,439 +17,44 @@ #ifndef MAME_EMU_INPUT_H #define MAME_EMU_INPUT_H +#include "interface/inputcode.h" +#include "interface/inputman.h" +#include "interface/inputseq.h" -//************************************************************************** -// CONSTANTS -//************************************************************************** - -// relative devices return ~512 units per onscreen pixel -constexpr s32 INPUT_RELATIVE_PER_PIXEL = 512; - -// absolute devices return values between -65536 and +65536 -constexpr s32 INPUT_ABSOLUTE_MIN = -65536; -constexpr s32 INPUT_ABSOLUTE_MAX = 65536; - -// maximum number of axis/buttons/hats with ITEM_IDs for use by osd layer -constexpr int INPUT_MAX_AXIS = 8; -constexpr int INPUT_MAX_BUTTONS = 32; -constexpr int INPUT_MAX_HATS = 4; -constexpr int INPUT_MAX_ADD_SWITCH = 16; -constexpr int INPUT_MAX_ADD_ABSOLUTE = 16; -constexpr int INPUT_MAX_ADD_RELATIVE = 16; - - -// device classes -enum input_device_class -{ - DEVICE_CLASS_INVALID, - DEVICE_CLASS_FIRST_VALID, - DEVICE_CLASS_KEYBOARD = DEVICE_CLASS_FIRST_VALID, - DEVICE_CLASS_MOUSE, - DEVICE_CLASS_LIGHTGUN, - DEVICE_CLASS_JOYSTICK, - DEVICE_CLASS_LAST_VALID = DEVICE_CLASS_JOYSTICK, - DEVICE_CLASS_INTERNAL, - DEVICE_CLASS_MAXIMUM -}; -DECLARE_ENUM_INCDEC_OPERATORS(input_device_class) - - -// device index -constexpr int DEVICE_INDEX_MAXIMUM = 0xff; - - -// input item classes -enum input_item_class -{ - ITEM_CLASS_INVALID, - ITEM_CLASS_SWITCH, - ITEM_CLASS_ABSOLUTE, - ITEM_CLASS_RELATIVE, - ITEM_CLASS_MAXIMUM -}; - - -// input item modifiers -enum input_item_modifier -{ - ITEM_MODIFIER_NONE, - ITEM_MODIFIER_POS, - ITEM_MODIFIER_NEG, - ITEM_MODIFIER_LEFT, - ITEM_MODIFIER_RIGHT, - ITEM_MODIFIER_UP, - ITEM_MODIFIER_DOWN, - ITEM_MODIFIER_MAXIMUM -}; - - -// standard item IDs -enum input_item_id -{ - ITEM_ID_INVALID, - ITEM_ID_FIRST_VALID, - - // standard keyboard IDs - ITEM_ID_A = ITEM_ID_FIRST_VALID, - ITEM_ID_B, - ITEM_ID_C, - ITEM_ID_D, - ITEM_ID_E, - ITEM_ID_F, - ITEM_ID_G, - ITEM_ID_H, - ITEM_ID_I, - ITEM_ID_J, - ITEM_ID_K, - ITEM_ID_L, - ITEM_ID_M, - ITEM_ID_N, - ITEM_ID_O, - ITEM_ID_P, - ITEM_ID_Q, - ITEM_ID_R, - ITEM_ID_S, - ITEM_ID_T, - ITEM_ID_U, - ITEM_ID_V, - ITEM_ID_W, - ITEM_ID_X, - ITEM_ID_Y, - ITEM_ID_Z, - ITEM_ID_0, - ITEM_ID_1, - ITEM_ID_2, - ITEM_ID_3, - ITEM_ID_4, - ITEM_ID_5, - ITEM_ID_6, - ITEM_ID_7, - ITEM_ID_8, - ITEM_ID_9, - ITEM_ID_F1, - ITEM_ID_F2, - ITEM_ID_F3, - ITEM_ID_F4, - ITEM_ID_F5, - ITEM_ID_F6, - ITEM_ID_F7, - ITEM_ID_F8, - ITEM_ID_F9, - ITEM_ID_F10, - ITEM_ID_F11, - ITEM_ID_F12, - ITEM_ID_F13, - ITEM_ID_F14, - ITEM_ID_F15, - ITEM_ID_F16, - ITEM_ID_F17, - ITEM_ID_F18, - ITEM_ID_F19, - ITEM_ID_F20, - ITEM_ID_ESC, - ITEM_ID_TILDE, - ITEM_ID_MINUS, - ITEM_ID_EQUALS, - ITEM_ID_BACKSPACE, - ITEM_ID_TAB, - ITEM_ID_OPENBRACE, - ITEM_ID_CLOSEBRACE, - ITEM_ID_ENTER, - ITEM_ID_COLON, - ITEM_ID_QUOTE, - ITEM_ID_BACKSLASH, - ITEM_ID_BACKSLASH2, - ITEM_ID_COMMA, - ITEM_ID_STOP, - ITEM_ID_SLASH, - ITEM_ID_SPACE, - ITEM_ID_INSERT, - ITEM_ID_DEL, - ITEM_ID_HOME, - ITEM_ID_END, - ITEM_ID_PGUP, - ITEM_ID_PGDN, - ITEM_ID_LEFT, - ITEM_ID_RIGHT, - ITEM_ID_UP, - ITEM_ID_DOWN, - ITEM_ID_0_PAD, - ITEM_ID_1_PAD, - ITEM_ID_2_PAD, - ITEM_ID_3_PAD, - ITEM_ID_4_PAD, - ITEM_ID_5_PAD, - ITEM_ID_6_PAD, - ITEM_ID_7_PAD, - ITEM_ID_8_PAD, - ITEM_ID_9_PAD, - ITEM_ID_SLASH_PAD, - ITEM_ID_ASTERISK, - ITEM_ID_MINUS_PAD, - ITEM_ID_PLUS_PAD, - ITEM_ID_DEL_PAD, - ITEM_ID_ENTER_PAD, - ITEM_ID_BS_PAD, - ITEM_ID_TAB_PAD, - ITEM_ID_00_PAD, - ITEM_ID_000_PAD, - ITEM_ID_COMMA_PAD, - ITEM_ID_EQUALS_PAD, - ITEM_ID_PRTSCR, - ITEM_ID_PAUSE, - ITEM_ID_LSHIFT, - ITEM_ID_RSHIFT, - ITEM_ID_LCONTROL, - ITEM_ID_RCONTROL, - ITEM_ID_LALT, - ITEM_ID_RALT, - ITEM_ID_SCRLOCK, - ITEM_ID_NUMLOCK, - ITEM_ID_CAPSLOCK, - ITEM_ID_LWIN, - ITEM_ID_RWIN, - ITEM_ID_MENU, - ITEM_ID_CANCEL, - - // standard mouse/joystick/gun IDs - ITEM_ID_XAXIS, - ITEM_ID_YAXIS, - ITEM_ID_ZAXIS, - ITEM_ID_RXAXIS, - ITEM_ID_RYAXIS, - ITEM_ID_RZAXIS, - ITEM_ID_SLIDER1, - ITEM_ID_SLIDER2, - ITEM_ID_BUTTON1, - ITEM_ID_BUTTON2, - ITEM_ID_BUTTON3, - ITEM_ID_BUTTON4, - ITEM_ID_BUTTON5, - ITEM_ID_BUTTON6, - ITEM_ID_BUTTON7, - ITEM_ID_BUTTON8, - ITEM_ID_BUTTON9, - ITEM_ID_BUTTON10, - ITEM_ID_BUTTON11, - ITEM_ID_BUTTON12, - ITEM_ID_BUTTON13, - ITEM_ID_BUTTON14, - ITEM_ID_BUTTON15, - ITEM_ID_BUTTON16, - ITEM_ID_BUTTON17, - ITEM_ID_BUTTON18, - ITEM_ID_BUTTON19, - ITEM_ID_BUTTON20, - ITEM_ID_BUTTON21, - ITEM_ID_BUTTON22, - ITEM_ID_BUTTON23, - ITEM_ID_BUTTON24, - ITEM_ID_BUTTON25, - ITEM_ID_BUTTON26, - ITEM_ID_BUTTON27, - ITEM_ID_BUTTON28, - ITEM_ID_BUTTON29, - ITEM_ID_BUTTON30, - ITEM_ID_BUTTON31, - ITEM_ID_BUTTON32, - ITEM_ID_START, - ITEM_ID_SELECT, - - // Hats - ITEM_ID_HAT1UP, - ITEM_ID_HAT1DOWN, - ITEM_ID_HAT1LEFT, - ITEM_ID_HAT1RIGHT, - ITEM_ID_HAT2UP, - ITEM_ID_HAT2DOWN, - ITEM_ID_HAT2LEFT, - ITEM_ID_HAT2RIGHT, - ITEM_ID_HAT3UP, - ITEM_ID_HAT3DOWN, - ITEM_ID_HAT3LEFT, - ITEM_ID_HAT3RIGHT, - ITEM_ID_HAT4UP, - ITEM_ID_HAT4DOWN, - ITEM_ID_HAT4LEFT, - ITEM_ID_HAT4RIGHT, - - // Additional IDs - ITEM_ID_ADD_SWITCH1, - ITEM_ID_ADD_SWITCH2, - ITEM_ID_ADD_SWITCH3, - ITEM_ID_ADD_SWITCH4, - ITEM_ID_ADD_SWITCH5, - ITEM_ID_ADD_SWITCH6, - ITEM_ID_ADD_SWITCH7, - ITEM_ID_ADD_SWITCH8, - ITEM_ID_ADD_SWITCH9, - ITEM_ID_ADD_SWITCH10, - ITEM_ID_ADD_SWITCH11, - ITEM_ID_ADD_SWITCH12, - ITEM_ID_ADD_SWITCH13, - ITEM_ID_ADD_SWITCH14, - ITEM_ID_ADD_SWITCH15, - ITEM_ID_ADD_SWITCH16, - - ITEM_ID_ADD_ABSOLUTE1, - ITEM_ID_ADD_ABSOLUTE2, - ITEM_ID_ADD_ABSOLUTE3, - ITEM_ID_ADD_ABSOLUTE4, - ITEM_ID_ADD_ABSOLUTE5, - ITEM_ID_ADD_ABSOLUTE6, - ITEM_ID_ADD_ABSOLUTE7, - ITEM_ID_ADD_ABSOLUTE8, - ITEM_ID_ADD_ABSOLUTE9, - ITEM_ID_ADD_ABSOLUTE10, - ITEM_ID_ADD_ABSOLUTE11, - ITEM_ID_ADD_ABSOLUTE12, - ITEM_ID_ADD_ABSOLUTE13, - ITEM_ID_ADD_ABSOLUTE14, - ITEM_ID_ADD_ABSOLUTE15, - ITEM_ID_ADD_ABSOLUTE16, - - ITEM_ID_ADD_RELATIVE1, - ITEM_ID_ADD_RELATIVE2, - ITEM_ID_ADD_RELATIVE3, - ITEM_ID_ADD_RELATIVE4, - ITEM_ID_ADD_RELATIVE5, - ITEM_ID_ADD_RELATIVE6, - ITEM_ID_ADD_RELATIVE7, - ITEM_ID_ADD_RELATIVE8, - ITEM_ID_ADD_RELATIVE9, - ITEM_ID_ADD_RELATIVE10, - ITEM_ID_ADD_RELATIVE11, - ITEM_ID_ADD_RELATIVE12, - ITEM_ID_ADD_RELATIVE13, - ITEM_ID_ADD_RELATIVE14, - ITEM_ID_ADD_RELATIVE15, - ITEM_ID_ADD_RELATIVE16, - - // generic other IDs - ITEM_ID_OTHER_SWITCH, - ITEM_ID_OTHER_AXIS_ABSOLUTE, - ITEM_ID_OTHER_AXIS_RELATIVE, - ITEM_ID_MAXIMUM, - - // internal codes for sequences - ITEM_ID_SEQ_END, - ITEM_ID_SEQ_DEFAULT, - ITEM_ID_SEQ_NOT, - ITEM_ID_SEQ_OR, - - // absolute maximum ID - ITEM_ID_ABSOLUTE_MAXIMUM = 0xfff -}; -DECLARE_ENUM_INCDEC_OPERATORS(input_item_id) - +#include <algorithm> +#include <array> +#include <cassert> +#include <iterator> +#include <map> +#include <memory> +#include <string> +#include <utility> //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// controller alias table typedef -typedef std::map<std::string, std::string> devicemap_table_type; - -// ======================> input_code - -// a combined code that describes a particular input on a particular device -class input_code -{ -public: - // construction/destruction - input_code(input_device_class devclass = DEVICE_CLASS_INVALID, int devindex = 0, input_item_class itemclass = ITEM_CLASS_INVALID, input_item_modifier modifier = ITEM_MODIFIER_NONE, input_item_id itemid = ITEM_ID_INVALID) - : m_internal(((devclass & 0xf) << 28) | ((devindex & 0xff) << 20) | ((itemclass & 0xf) << 16) | ((modifier & 0xf) << 12) | (itemid & 0xfff)) - { - assert(devclass >= 0 && devclass < DEVICE_CLASS_MAXIMUM); - assert(devindex >= 0 && devindex < DEVICE_INDEX_MAXIMUM); - assert(itemclass >= 0 && itemclass < ITEM_CLASS_MAXIMUM); - assert(modifier >= 0 && modifier < ITEM_MODIFIER_MAXIMUM); - assert(itemid >= 0 && itemid < ITEM_ID_ABSOLUTE_MAXIMUM); - } - input_code(const input_code &src) - : m_internal(src.m_internal) { } - - // operators - bool operator==(const input_code &rhs) const { return m_internal == rhs.m_internal; } - bool operator!=(const input_code &rhs) const { return m_internal != rhs.m_internal; } - - // getters - bool internal() const { return device_class() == DEVICE_CLASS_INTERNAL; } - input_device_class device_class() const { return input_device_class((m_internal >> 28) & 0xf); } - int device_index() const { return ((m_internal >> 20) & 0xff); } - input_item_class item_class() const { return input_item_class((m_internal >> 16) & 0xf); } - input_item_modifier item_modifier() const { return input_item_modifier((m_internal >> 12) & 0xf); } - input_item_id item_id() const { return input_item_id(m_internal & 0xfff); } - - // setters - void set_device_class(input_device_class devclass) { assert(devclass >= 0 && devclass <= 0xf); m_internal = (m_internal & ~(0xf << 28)) | ((devclass & 0xf) << 28); } - void set_device_index(int devindex) { assert(devindex >= 0 && devindex <= 0xff); m_internal = (m_internal & ~(0xff << 20)) | ((devindex & 0xff) << 20); } - void set_item_class(input_item_class itemclass) { assert(itemclass >= 0 && itemclass <= 0xf); m_internal = (m_internal & ~(0xf << 16)) | ((itemclass & 0xf) << 16); } - void set_item_modifier(input_item_modifier modifier) { assert(modifier >= 0 && modifier <= 0xf); m_internal = (m_internal & ~(0xf << 12)) | ((modifier & 0xf) << 12); } - void set_item_id(input_item_id itemid) { assert(itemid >= 0 && itemid <= 0xfff); m_internal = (m_internal & ~0xfff) | (itemid & 0xfff); } - -private: - // internal state - u32 m_internal; -}; - - -// ======================> input_seq - -// a sequence of input_codes, supporting AND/OR and inversion -class input_seq -{ -public: - // construction/destruction - input_seq(input_code code0 = input_seq::end_code, input_code code1 = input_seq::end_code, input_code code2 = input_seq::end_code, input_code code3 = input_seq::end_code, input_code code4 = input_seq::end_code, input_code code5 = input_seq::end_code, input_code code6 = input_seq::end_code) - { set(code0, code1, code2, code3, code4, code5, code6); } - input_seq(const input_seq &rhs) { memcpy(m_code, rhs.m_code, sizeof(m_code)); } - - // operators - bool operator==(const input_seq &rhs) const { return (memcmp(m_code, rhs.m_code, sizeof(m_code)) == 0); } - bool operator!=(const input_seq &rhs) const { return (memcmp(m_code, rhs.m_code, sizeof(m_code)) != 0); } - input_code operator[](int index) const { return (index >= 0 && index < ARRAY_LENGTH(m_code)) ? m_code[index] : input_seq::end_code; } - input_seq &operator+=(input_code code); - input_seq &operator|=(input_code code); - - // getters - int length() const; - bool is_valid() const; - bool is_default() const { return m_code[0] == default_code; } - - // setters - void set(input_code code0 = input_seq::end_code, input_code code1 = input_seq::end_code, input_code code2 = input_seq::end_code, input_code code3 = input_seq::end_code, input_code code4 = input_seq::end_code, input_code code5 = input_seq::end_code, input_code code6 = input_seq::end_code); - void reset() { set(); } - void set_default() { set(default_code); } - void backspace(); - void replace(input_code oldcode, input_code newcode); - - // constant codes used in sequences - static const input_code end_code; - static const input_code default_code; - static const input_code not_code; - static const input_code or_code; - - // constant sequences - static const input_seq empty_seq; - -private: - // internal state - input_code m_code[16]; -}; +using osd::input_seq; // too much trouble to qualify this everywhere // ======================> input_manager // global machine-level information about devices -class input_manager +class input_manager : public osd::input_manager { public: + // controller alias table typedef + using devicemap_table = std::map<std::string, std::string>; + // construction/destruction input_manager(running_machine &machine); ~input_manager(); + // OSD interface + virtual bool class_enabled(input_device_class devclass) const override; + virtual osd::input_device &add_device(input_device_class devclass, std::string_view name, std::string_view id, void *internal) override; + // getters running_machine &machine() const { return m_machine; } input_class &device_class(input_device_class devclass) { assert(devclass >= DEVICE_CLASS_FIRST_VALID && devclass <= DEVICE_CLASS_LAST_VALID); return *m_class[devclass]; } @@ -459,43 +64,31 @@ public: bool code_pressed(input_code code) { return code_value(code) != 0; } bool code_pressed_once(input_code code); - // input code polling - void reset_polling(); - input_code poll_axes(); - input_code poll_switches(); - input_code poll_keyboard_switches(); - // input code helpers input_device *device_from_code(input_code code) const; input_device_item *item_from_code(input_code code) const; input_code code_from_itemid(input_item_id itemid) const; std::string code_name(input_code code) const; std::string code_to_token(input_code code) const; - input_code code_from_token(const char *_token); + input_code code_from_token(std::string_view _token); const char *standard_token(input_item_id itemid) const; // input sequence readers bool seq_pressed(const input_seq &seq); s32 seq_axis_value(const input_seq &seq, input_item_class &itemclass); - // input sequence polling - void seq_poll_start(input_item_class itemclass, const input_seq *startseq = nullptr); - bool seq_poll(); - const input_seq &seq_poll_final() const { return m_poll_seq; } - // input sequence helpers input_seq seq_clean(const input_seq &seq) const; std::string seq_name(const input_seq &seq) const; std::string seq_to_tokens(const input_seq &seq) const; - void seq_from_tokens(input_seq &seq, const char *_token); + void seq_from_tokens(input_seq &seq, std::string_view _token); // misc - bool map_device_to_controller(const devicemap_table_type *devicemap_table = nullptr); + bool map_device_to_controller(const devicemap_table &table); private: // internal helpers void reset_memory(); - bool code_check_axis(input_device_item &item, input_code code); // internal state running_machine & m_machine; @@ -503,474 +96,7 @@ private: // classes std::array<std::unique_ptr<input_class>, DEVICE_CLASS_MAXIMUM> m_class; - - // sequence polling state - input_seq m_poll_seq; - osd_ticks_t m_poll_seq_last_ticks; - input_item_class m_poll_seq_class; }; - -//************************************************************************** -// MACROS -//************************************************************************** - -// invalid codes -#define INPUT_CODE_INVALID input_code() - -// keyboard codes -#define KEYCODE_A_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_A) -#define KEYCODE_B_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_B) -#define KEYCODE_C_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_C) -#define KEYCODE_D_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_D) -#define KEYCODE_E_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_E) -#define KEYCODE_F_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F) -#define KEYCODE_G_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_G) -#define KEYCODE_H_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_H) -#define KEYCODE_I_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_I) -#define KEYCODE_J_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_J) -#define KEYCODE_K_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_K) -#define KEYCODE_L_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_L) -#define KEYCODE_M_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_M) -#define KEYCODE_N_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_N) -#define KEYCODE_O_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_O) -#define KEYCODE_P_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_P) -#define KEYCODE_Q_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_Q) -#define KEYCODE_R_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_R) -#define KEYCODE_S_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_S) -#define KEYCODE_T_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_T) -#define KEYCODE_U_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_U) -#define KEYCODE_V_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_V) -#define KEYCODE_W_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_W) -#define KEYCODE_X_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_X) -#define KEYCODE_Y_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_Y) -#define KEYCODE_Z_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_Z) -#define KEYCODE_0_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_0) -#define KEYCODE_1_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_1) -#define KEYCODE_2_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_2) -#define KEYCODE_3_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_3) -#define KEYCODE_4_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_4) -#define KEYCODE_5_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_5) -#define KEYCODE_6_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_6) -#define KEYCODE_7_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_7) -#define KEYCODE_8_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_8) -#define KEYCODE_9_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_9) -#define KEYCODE_F1_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F1) -#define KEYCODE_F2_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F2) -#define KEYCODE_F3_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F3) -#define KEYCODE_F4_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F4) -#define KEYCODE_F5_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F5) -#define KEYCODE_F6_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F6) -#define KEYCODE_F7_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F7) -#define KEYCODE_F8_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F8) -#define KEYCODE_F9_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F9) -#define KEYCODE_F10_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F10) -#define KEYCODE_F11_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F11) -#define KEYCODE_F12_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F12) -#define KEYCODE_F13_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F13) -#define KEYCODE_F14_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F14) -#define KEYCODE_F15_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F15) -#define KEYCODE_F16_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F16) -#define KEYCODE_F17_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F17) -#define KEYCODE_F18_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F18) -#define KEYCODE_F19_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F19) -#define KEYCODE_F20_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F20) -#define KEYCODE_ESC_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_ESC) -#define KEYCODE_TILDE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_TILDE) -#define KEYCODE_MINUS_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_MINUS) -#define KEYCODE_EQUALS_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_EQUALS) -#define KEYCODE_BACKSPACE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BACKSPACE) -#define KEYCODE_TAB_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_TAB) -#define KEYCODE_OPENBRACE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_OPENBRACE) -#define KEYCODE_CLOSEBRACE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_CLOSEBRACE) -#define KEYCODE_ENTER_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_ENTER) -#define KEYCODE_COLON_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_COLON) -#define KEYCODE_QUOTE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_QUOTE) -#define KEYCODE_BACKSLASH_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BACKSLASH) -#define KEYCODE_BACKSLASH2_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BACKSLASH2) -#define KEYCODE_COMMA_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_COMMA) -#define KEYCODE_STOP_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_STOP) -#define KEYCODE_SLASH_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_SLASH) -#define KEYCODE_SPACE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_SPACE) -#define KEYCODE_INSERT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_INSERT) -#define KEYCODE_DEL_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_DEL) -#define KEYCODE_HOME_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_HOME) -#define KEYCODE_END_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_END) -#define KEYCODE_PGUP_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_PGUP) -#define KEYCODE_PGDN_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_PGDN) -#define KEYCODE_LEFT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_LEFT) -#define KEYCODE_RIGHT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_RIGHT) -#define KEYCODE_UP_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_UP) -#define KEYCODE_DOWN_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_DOWN) -#define KEYCODE_0_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_0_PAD) -#define KEYCODE_1_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_1_PAD) -#define KEYCODE_2_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_2_PAD) -#define KEYCODE_3_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_3_PAD) -#define KEYCODE_4_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_4_PAD) -#define KEYCODE_5_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_5_PAD) -#define KEYCODE_6_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_6_PAD) -#define KEYCODE_7_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_7_PAD) -#define KEYCODE_8_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_8_PAD) -#define KEYCODE_9_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_9_PAD) -#define KEYCODE_SLASH_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_SLASH_PAD) -#define KEYCODE_ASTERISK_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_ASTERISK) -#define KEYCODE_MINUS_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_MINUS_PAD) -#define KEYCODE_PLUS_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_PLUS_PAD) -#define KEYCODE_DEL_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_DEL_PAD) -#define KEYCODE_ENTER_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_ENTER_PAD) -#define KEYCODE_BS_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BS_PAD) -#define KEYCODE_TAB_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_TAB_PAD) -#define KEYCODE_00_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_00_PAD) -#define KEYCODE_000_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_000_PAD) -#define KEYCODE_COMMA_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_COMMA_PAD) -#define KEYCODE_EQUALS_PAD_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_EQUALS_PAD) -#define KEYCODE_PRTSCR_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_PRTSCR) -#define KEYCODE_PAUSE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_PAUSE) -#define KEYCODE_LSHIFT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_LSHIFT) -#define KEYCODE_RSHIFT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_RSHIFT) -#define KEYCODE_LCONTROL_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_LCONTROL) -#define KEYCODE_RCONTROL_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_RCONTROL) -#define KEYCODE_LALT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_LALT) -#define KEYCODE_RALT_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_RALT) -#define KEYCODE_SCRLOCK_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_SCRLOCK) -#define KEYCODE_NUMLOCK_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_NUMLOCK) -#define KEYCODE_CAPSLOCK_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_CAPSLOCK) -#define KEYCODE_LWIN_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_LWIN) -#define KEYCODE_RWIN_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_RWIN) -#define KEYCODE_MENU_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_MENU) -#define KEYCODE_CANCEL_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_CANCEL) - -#define KEYCODE_A KEYCODE_A_INDEXED(0) -#define KEYCODE_B KEYCODE_B_INDEXED(0) -#define KEYCODE_C KEYCODE_C_INDEXED(0) -#define KEYCODE_D KEYCODE_D_INDEXED(0) -#define KEYCODE_E KEYCODE_E_INDEXED(0) -#define KEYCODE_F KEYCODE_F_INDEXED(0) -#define KEYCODE_G KEYCODE_G_INDEXED(0) -#define KEYCODE_H KEYCODE_H_INDEXED(0) -#define KEYCODE_I KEYCODE_I_INDEXED(0) -#define KEYCODE_J KEYCODE_J_INDEXED(0) -#define KEYCODE_K KEYCODE_K_INDEXED(0) -#define KEYCODE_L KEYCODE_L_INDEXED(0) -#define KEYCODE_M KEYCODE_M_INDEXED(0) -#define KEYCODE_N KEYCODE_N_INDEXED(0) -#define KEYCODE_O KEYCODE_O_INDEXED(0) -#define KEYCODE_P KEYCODE_P_INDEXED(0) -#define KEYCODE_Q KEYCODE_Q_INDEXED(0) -#define KEYCODE_R KEYCODE_R_INDEXED(0) -#define KEYCODE_S KEYCODE_S_INDEXED(0) -#define KEYCODE_T KEYCODE_T_INDEXED(0) -#define KEYCODE_U KEYCODE_U_INDEXED(0) -#define KEYCODE_V KEYCODE_V_INDEXED(0) -#define KEYCODE_W KEYCODE_W_INDEXED(0) -#define KEYCODE_X KEYCODE_X_INDEXED(0) -#define KEYCODE_Y KEYCODE_Y_INDEXED(0) -#define KEYCODE_Z KEYCODE_Z_INDEXED(0) -#define KEYCODE_0 KEYCODE_0_INDEXED(0) -#define KEYCODE_1 KEYCODE_1_INDEXED(0) -#define KEYCODE_2 KEYCODE_2_INDEXED(0) -#define KEYCODE_3 KEYCODE_3_INDEXED(0) -#define KEYCODE_4 KEYCODE_4_INDEXED(0) -#define KEYCODE_5 KEYCODE_5_INDEXED(0) -#define KEYCODE_6 KEYCODE_6_INDEXED(0) -#define KEYCODE_7 KEYCODE_7_INDEXED(0) -#define KEYCODE_8 KEYCODE_8_INDEXED(0) -#define KEYCODE_9 KEYCODE_9_INDEXED(0) -#define KEYCODE_F1 KEYCODE_F1_INDEXED(0) -#define KEYCODE_F2 KEYCODE_F2_INDEXED(0) -#define KEYCODE_F3 KEYCODE_F3_INDEXED(0) -#define KEYCODE_F4 KEYCODE_F4_INDEXED(0) -#define KEYCODE_F5 KEYCODE_F5_INDEXED(0) -#define KEYCODE_F6 KEYCODE_F6_INDEXED(0) -#define KEYCODE_F7 KEYCODE_F7_INDEXED(0) -#define KEYCODE_F8 KEYCODE_F8_INDEXED(0) -#define KEYCODE_F9 KEYCODE_F9_INDEXED(0) -#define KEYCODE_F10 KEYCODE_F10_INDEXED(0) -#define KEYCODE_F11 KEYCODE_F11_INDEXED(0) -#define KEYCODE_F12 KEYCODE_F12_INDEXED(0) -#define KEYCODE_F13 KEYCODE_F13_INDEXED(0) -#define KEYCODE_F14 KEYCODE_F14_INDEXED(0) -#define KEYCODE_F15 KEYCODE_F15_INDEXED(0) -#define KEYCODE_F16 KEYCODE_F16_INDEXED(0) -#define KEYCODE_F17 KEYCODE_F17_INDEXED(0) -#define KEYCODE_F18 KEYCODE_F18_INDEXED(0) -#define KEYCODE_F19 KEYCODE_F19_INDEXED(0) -#define KEYCODE_F20 KEYCODE_F20_INDEXED(0) -#define KEYCODE_ESC KEYCODE_ESC_INDEXED(0) -#define KEYCODE_TILDE KEYCODE_TILDE_INDEXED(0) -#define KEYCODE_MINUS KEYCODE_MINUS_INDEXED(0) -#define KEYCODE_EQUALS KEYCODE_EQUALS_INDEXED(0) -#define KEYCODE_BACKSPACE KEYCODE_BACKSPACE_INDEXED(0) -#define KEYCODE_TAB KEYCODE_TAB_INDEXED(0) -#define KEYCODE_OPENBRACE KEYCODE_OPENBRACE_INDEXED(0) -#define KEYCODE_CLOSEBRACE KEYCODE_CLOSEBRACE_INDEXED(0) -#define KEYCODE_ENTER KEYCODE_ENTER_INDEXED(0) -#define KEYCODE_COLON KEYCODE_COLON_INDEXED(0) -#define KEYCODE_QUOTE KEYCODE_QUOTE_INDEXED(0) -#define KEYCODE_BACKSLASH KEYCODE_BACKSLASH_INDEXED(0) -#define KEYCODE_BACKSLASH2 KEYCODE_BACKSLASH2_INDEXED(0) -#define KEYCODE_COMMA KEYCODE_COMMA_INDEXED(0) -#define KEYCODE_STOP KEYCODE_STOP_INDEXED(0) -#define KEYCODE_SLASH KEYCODE_SLASH_INDEXED(0) -#define KEYCODE_SPACE KEYCODE_SPACE_INDEXED(0) -#define KEYCODE_INSERT KEYCODE_INSERT_INDEXED(0) -#define KEYCODE_DEL KEYCODE_DEL_INDEXED(0) -#define KEYCODE_HOME KEYCODE_HOME_INDEXED(0) -#define KEYCODE_END KEYCODE_END_INDEXED(0) -#define KEYCODE_PGUP KEYCODE_PGUP_INDEXED(0) -#define KEYCODE_PGDN KEYCODE_PGDN_INDEXED(0) -#define KEYCODE_LEFT KEYCODE_LEFT_INDEXED(0) -#define KEYCODE_RIGHT KEYCODE_RIGHT_INDEXED(0) -#define KEYCODE_UP KEYCODE_UP_INDEXED(0) -#define KEYCODE_DOWN KEYCODE_DOWN_INDEXED(0) -#define KEYCODE_0_PAD KEYCODE_0_PAD_INDEXED(0) -#define KEYCODE_1_PAD KEYCODE_1_PAD_INDEXED(0) -#define KEYCODE_2_PAD KEYCODE_2_PAD_INDEXED(0) -#define KEYCODE_3_PAD KEYCODE_3_PAD_INDEXED(0) -#define KEYCODE_4_PAD KEYCODE_4_PAD_INDEXED(0) -#define KEYCODE_5_PAD KEYCODE_5_PAD_INDEXED(0) -#define KEYCODE_6_PAD KEYCODE_6_PAD_INDEXED(0) -#define KEYCODE_7_PAD KEYCODE_7_PAD_INDEXED(0) -#define KEYCODE_8_PAD KEYCODE_8_PAD_INDEXED(0) -#define KEYCODE_9_PAD KEYCODE_9_PAD_INDEXED(0) -#define KEYCODE_SLASH_PAD KEYCODE_SLASH_PAD_INDEXED(0) -#define KEYCODE_ASTERISK KEYCODE_ASTERISK_INDEXED(0) -#define KEYCODE_MINUS_PAD KEYCODE_MINUS_PAD_INDEXED(0) -#define KEYCODE_PLUS_PAD KEYCODE_PLUS_PAD_INDEXED(0) -#define KEYCODE_DEL_PAD KEYCODE_DEL_PAD_INDEXED(0) -#define KEYCODE_ENTER_PAD KEYCODE_ENTER_PAD_INDEXED(0) -#define KEYCODE_BS_PAD KEYCODE_BS_PAD_INDEXED(0) -#define KEYCODE_TAB_PAD KEYCODE_TAB_PAD_INDEXED(0) -#define KEYCODE_00_PAD KEYCODE_00_PAD_INDEXED(0) -#define KEYCODE_000_PAD KEYCODE_000_PAD_INDEXED(0) -#define KEYCODE_COMMA_PAD KEYCODE_COMMA_PAD_INDEXED(0) -#define KEYCODE_EQUALS_PAD KEYCODE_EQUALS_PAD_INDEXED(0) -#define KEYCODE_PRTSCR KEYCODE_PRTSCR_INDEXED(0) -#define KEYCODE_PAUSE KEYCODE_PAUSE_INDEXED(0) -#define KEYCODE_LSHIFT KEYCODE_LSHIFT_INDEXED(0) -#define KEYCODE_RSHIFT KEYCODE_RSHIFT_INDEXED(0) -#define KEYCODE_LCONTROL KEYCODE_LCONTROL_INDEXED(0) -#define KEYCODE_RCONTROL KEYCODE_RCONTROL_INDEXED(0) -#define KEYCODE_LALT KEYCODE_LALT_INDEXED(0) -#define KEYCODE_RALT KEYCODE_RALT_INDEXED(0) -#define KEYCODE_SCRLOCK KEYCODE_SCRLOCK_INDEXED(0) -#define KEYCODE_NUMLOCK KEYCODE_NUMLOCK_INDEXED(0) -#define KEYCODE_CAPSLOCK KEYCODE_CAPSLOCK_INDEXED(0) -#define KEYCODE_LWIN KEYCODE_LWIN_INDEXED(0) -#define KEYCODE_RWIN KEYCODE_RWIN_INDEXED(0) -#define KEYCODE_MENU KEYCODE_MENU_INDEXED(0) -#define KEYCODE_CANCEL KEYCODE_CANCEL_INDEXED(0) - -// mouse axes as relative devices -#define MOUSECODE_X_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_RELATIVE, ITEM_MODIFIER_NONE, ITEM_ID_XAXIS) -#define MOUSECODE_Y_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_RELATIVE, ITEM_MODIFIER_NONE, ITEM_ID_YAXIS) -#define MOUSECODE_Z_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_RELATIVE, ITEM_MODIFIER_NONE, ITEM_ID_ZAXIS) - -#define MOUSECODE_X MOUSECODE_X_INDEXED(0) -#define MOUSECODE_Y MOUSECODE_Y_INDEXED(0) -#define MOUSECODE_Z MOUSECODE_Z_INDEXED(0) - -// mouse axes as switches in +/- direction -#define MOUSECODE_X_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_XAXIS) -#define MOUSECODE_X_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_XAXIS) -#define MOUSECODE_Y_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_YAXIS) -#define MOUSECODE_Y_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_YAXIS) -#define MOUSECODE_Z_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_ZAXIS) -#define MOUSECODE_Z_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_ZAXIS) - -#define MOUSECODE_X_POS_SWITCH MOUSECODE_X_POS_SWITCH_INDEXED(0) -#define MOUSECODE_X_NEG_SWITCH MOUSECODE_X_NEG_SWITCH_INDEXED(0) -#define MOUSECODE_Y_POS_SWITCH MOUSECODE_Y_POS_SWITCH_INDEXED(0) -#define MOUSECODE_Y_NEG_SWITCH MOUSECODE_Y_NEG_SWITCH_INDEXED(0) -#define MOUSECODE_Z_POS_SWITCH MOUSECODE_Z_POS_SWITCH_INDEXED(0) -#define MOUSECODE_Z_NEG_SWITCH MOUSECODE_Z_NEG_SWITCH_INDEXED(0) - -// mouse buttons -#define MOUSECODE_BUTTON1_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON1) -#define MOUSECODE_BUTTON2_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON2) -#define MOUSECODE_BUTTON3_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON3) -#define MOUSECODE_BUTTON4_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON4) -#define MOUSECODE_BUTTON5_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON5) -#define MOUSECODE_BUTTON6_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON6) -#define MOUSECODE_BUTTON7_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON7) -#define MOUSECODE_BUTTON8_INDEXED(n) input_code(DEVICE_CLASS_MOUSE, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON8) - -#define MOUSECODE_BUTTON1 MOUSECODE_BUTTON1_INDEXED(0) -#define MOUSECODE_BUTTON2 MOUSECODE_BUTTON2_INDEXED(0) -#define MOUSECODE_BUTTON3 MOUSECODE_BUTTON3_INDEXED(0) -#define MOUSECODE_BUTTON4 MOUSECODE_BUTTON4_INDEXED(0) -#define MOUSECODE_BUTTON5 MOUSECODE_BUTTON5_INDEXED(0) -#define MOUSECODE_BUTTON6 MOUSECODE_BUTTON6_INDEXED(0) -#define MOUSECODE_BUTTON7 MOUSECODE_BUTTON7_INDEXED(0) -#define MOUSECODE_BUTTON8 MOUSECODE_BUTTON8_INDEXED(0) - -// gun axes as absolute devices -#define GUNCODE_X_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_XAXIS) -#define GUNCODE_Y_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_YAXIS) - -#define GUNCODE_X GUNCODE_X_INDEXED(0) -#define GUNCODE_Y GUNCODE_Y_INDEXED(0) - -// gun buttons -#define GUNCODE_BUTTON1_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON1) -#define GUNCODE_BUTTON2_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON2) -#define GUNCODE_BUTTON3_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON3) -#define GUNCODE_BUTTON4_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON4) -#define GUNCODE_BUTTON5_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON5) -#define GUNCODE_BUTTON6_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON6) -#define GUNCODE_BUTTON7_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON7) -#define GUNCODE_BUTTON8_INDEXED(n) input_code(DEVICE_CLASS_LIGHTGUN, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON8) - -#define GUNCODE_BUTTON1 GUNCODE_BUTTON1_INDEXED(0) -#define GUNCODE_BUTTON2 GUNCODE_BUTTON2_INDEXED(0) -#define GUNCODE_BUTTON3 GUNCODE_BUTTON3_INDEXED(0) -#define GUNCODE_BUTTON4 GUNCODE_BUTTON4_INDEXED(0) -#define GUNCODE_BUTTON5 GUNCODE_BUTTON5_INDEXED(0) -#define GUNCODE_BUTTON6 GUNCODE_BUTTON6_INDEXED(0) -#define GUNCODE_BUTTON7 GUNCODE_BUTTON7_INDEXED(0) -#define GUNCODE_BUTTON8 GUNCODE_BUTTON8_INDEXED(0) - -// joystick axes as absolute devices -#define JOYCODE_X_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_XAXIS) -#define JOYCODE_Y_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_YAXIS) -#define JOYCODE_Z_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_ZAXIS) -#define JOYCODE_U_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_RXAXIS) -#define JOYCODE_V_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_RYAXIS) -#define JOYCODE_W_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NONE, ITEM_ID_RZAXIS) - -#define JOYCODE_X JOYCODE_X_INDEXED(0) -#define JOYCODE_Y JOYCODE_Y_INDEXED(0) -#define JOYCODE_Z JOYCODE_Z_INDEXED(0) -#define JOYCODE_U JOYCODE_U_INDEXED(0) -#define JOYCODE_V JOYCODE_V_INDEXED(0) -#define JOYCODE_W JOYCODE_W_INDEXED(0) - -// joystick axes as absolute half-axes -#define JOYCODE_X_POS_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_POS, ITEM_ID_XAXIS) -#define JOYCODE_X_NEG_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NEG, ITEM_ID_XAXIS) -#define JOYCODE_Y_POS_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_POS, ITEM_ID_YAXIS) -#define JOYCODE_Y_NEG_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NEG, ITEM_ID_YAXIS) -#define JOYCODE_Z_POS_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_POS, ITEM_ID_ZAXIS) -#define JOYCODE_Z_NEG_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NEG, ITEM_ID_ZAXIS) -#define JOYCODE_U_POS_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_POS, ITEM_ID_RXAXIS) -#define JOYCODE_U_NEG_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NEG, ITEM_ID_RXAXIS) -#define JOYCODE_V_POS_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_POS, ITEM_ID_RYAXIS) -#define JOYCODE_V_NEG_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NEG, ITEM_ID_RYAXIS) -#define JOYCODE_W_POS_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_POS, ITEM_ID_RZAXIS) -#define JOYCODE_W_NEG_ABSOLUTE_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_ABSOLUTE, ITEM_MODIFIER_NEG, ITEM_ID_RZAXIS) - -#define JOYCODE_X_POS_ABSOLUTE JOYCODE_X_POS_ABSOLUTE_INDEXED(0) -#define JOYCODE_X_NEG_ABSOLUTE JOYCODE_X_NEG_ABSOLUTE_INDEXED(0) -#define JOYCODE_Y_POS_ABSOLUTE JOYCODE_Y_POS_ABSOLUTE_INDEXED(0) -#define JOYCODE_Y_NEG_ABSOLUTE JOYCODE_Y_NEG_ABSOLUTE_INDEXED(0) -#define JOYCODE_Z_POS_ABSOLUTE JOYCODE_Z_POS_ABSOLUTE_INDEXED(0) -#define JOYCODE_Z_NEG_ABSOLUTE JOYCODE_Z_NEG_ABSOLUTE_INDEXED(0) -#define JOYCODE_U_POS_ABSOLUTE JOYCODE_U_POS_ABSOLUTE_INDEXED(0) -#define JOYCODE_U_NEG_ABSOLUTE JOYCODE_U_NEG_ABSOLUTE_INDEXED(0) -#define JOYCODE_V_POS_ABSOLUTE JOYCODE_V_POS_ABSOLUTE_INDEXED(0) -#define JOYCODE_V_NEG_ABSOLUTE JOYCODE_V_NEG_ABSOLUTE_INDEXED(0) -#define JOYCODE_W_POS_ABSOLUTE JOYCODE_W_POS_ABSOLUTE_INDEXED(0) -#define JOYCODE_W_NEG_ABSOLUTE JOYCODE_W_NEG_ABSOLUTE_INDEXED(0) - -// joystick axes as switches; X/Y are specially handled for left/right/up/down mapping -#define JOYCODE_X_LEFT_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_LEFT, ITEM_ID_XAXIS) -#define JOYCODE_X_RIGHT_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_RIGHT, ITEM_ID_XAXIS) -#define JOYCODE_Y_UP_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_UP, ITEM_ID_YAXIS) -#define JOYCODE_Y_DOWN_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_DOWN, ITEM_ID_YAXIS) -#define JOYCODE_Z_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_ZAXIS) -#define JOYCODE_Z_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_ZAXIS) -#define JOYCODE_U_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_RXAXIS) -#define JOYCODE_U_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_RXAXIS) -#define JOYCODE_V_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_RYAXIS) -#define JOYCODE_V_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_RYAXIS) -#define JOYCODE_W_POS_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_POS, ITEM_ID_RZAXIS) -#define JOYCODE_W_NEG_SWITCH_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NEG, ITEM_ID_RZAXIS) - -#define JOYCODE_X_LEFT_SWITCH JOYCODE_X_LEFT_SWITCH_INDEXED(0) -#define JOYCODE_X_RIGHT_SWITCH JOYCODE_X_RIGHT_SWITCH_INDEXED(0) -#define JOYCODE_Y_UP_SWITCH JOYCODE_Y_UP_SWITCH_INDEXED(0) -#define JOYCODE_Y_DOWN_SWITCH JOYCODE_Y_DOWN_SWITCH_INDEXED(0) -#define JOYCODE_Z_POS_SWITCH JOYCODE_Z_POS_SWITCH_INDEXED(0) -#define JOYCODE_Z_NEG_SWITCH JOYCODE_Z_NEG_SWITCH_INDEXED(0) -#define JOYCODE_U_POS_SWITCH JOYCODE_U_POS_SWITCH_INDEXED(0) -#define JOYCODE_U_NEG_SWITCH JOYCODE_U_NEG_SWITCH_INDEXED(0) -#define JOYCODE_V_POS_SWITCH JOYCODE_V_POS_SWITCH_INDEXED(0) -#define JOYCODE_V_NEG_SWITCH JOYCODE_V_NEG_SWITCH_INDEXED(0) -#define JOYCODE_W_POS_SWITCH JOYCODE_W_POS_SWITCH_INDEXED(0) -#define JOYCODE_W_NEG_SWITCH JOYCODE_W_NEG_SWITCH_INDEXED(0) - -// joystick buttons -#define JOYCODE_BUTTON1_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON1) -#define JOYCODE_BUTTON2_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON2) -#define JOYCODE_BUTTON3_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON3) -#define JOYCODE_BUTTON4_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON4) -#define JOYCODE_BUTTON5_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON5) -#define JOYCODE_BUTTON6_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON6) -#define JOYCODE_BUTTON7_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON7) -#define JOYCODE_BUTTON8_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON8) -#define JOYCODE_BUTTON9_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON9) -#define JOYCODE_BUTTON10_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON10) -#define JOYCODE_BUTTON11_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON11) -#define JOYCODE_BUTTON12_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON12) -#define JOYCODE_BUTTON13_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON13) -#define JOYCODE_BUTTON14_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON14) -#define JOYCODE_BUTTON15_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON15) -#define JOYCODE_BUTTON16_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON16) -#define JOYCODE_BUTTON17_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON17) -#define JOYCODE_BUTTON18_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON18) -#define JOYCODE_BUTTON19_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON19) -#define JOYCODE_BUTTON20_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON20) -#define JOYCODE_BUTTON21_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON21) -#define JOYCODE_BUTTON22_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON22) -#define JOYCODE_BUTTON23_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON23) -#define JOYCODE_BUTTON24_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON24) -#define JOYCODE_BUTTON25_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON25) -#define JOYCODE_BUTTON26_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON26) -#define JOYCODE_BUTTON27_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON27) -#define JOYCODE_BUTTON28_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON28) -#define JOYCODE_BUTTON29_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON29) -#define JOYCODE_BUTTON30_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON30) -#define JOYCODE_BUTTON31_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON31) -#define JOYCODE_BUTTON32_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON32) -#define JOYCODE_START_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_START) -#define JOYCODE_SELECT_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_SELECT) - -#define JOYCODE_BUTTON1 JOYCODE_BUTTON1_INDEXED(0) -#define JOYCODE_BUTTON2 JOYCODE_BUTTON2_INDEXED(0) -#define JOYCODE_BUTTON3 JOYCODE_BUTTON3_INDEXED(0) -#define JOYCODE_BUTTON4 JOYCODE_BUTTON4_INDEXED(0) -#define JOYCODE_BUTTON5 JOYCODE_BUTTON5_INDEXED(0) -#define JOYCODE_BUTTON6 JOYCODE_BUTTON6_INDEXED(0) -#define JOYCODE_BUTTON7 JOYCODE_BUTTON7_INDEXED(0) -#define JOYCODE_BUTTON8 JOYCODE_BUTTON8_INDEXED(0) -#define JOYCODE_BUTTON9 JOYCODE_BUTTON9_INDEXED(0) -#define JOYCODE_BUTTON10 JOYCODE_BUTTON10_INDEXED(0) -#define JOYCODE_BUTTON11 JOYCODE_BUTTON11_INDEXED(0) -#define JOYCODE_BUTTON12 JOYCODE_BUTTON12_INDEXED(0) -#define JOYCODE_BUTTON13 JOYCODE_BUTTON13_INDEXED(0) -#define JOYCODE_BUTTON14 JOYCODE_BUTTON14_INDEXED(0) -#define JOYCODE_BUTTON15 JOYCODE_BUTTON15_INDEXED(0) -#define JOYCODE_BUTTON16 JOYCODE_BUTTON16_INDEXED(0) -#define JOYCODE_BUTTON17 JOYCODE_BUTTON17_INDEXED(0) -#define JOYCODE_BUTTON18 JOYCODE_BUTTON18_INDEXED(0) -#define JOYCODE_BUTTON19 JOYCODE_BUTTON19_INDEXED(0) -#define JOYCODE_BUTTON20 JOYCODE_BUTTON20_INDEXED(0) -#define JOYCODE_BUTTON21 JOYCODE_BUTTON21_INDEXED(0) -#define JOYCODE_BUTTON22 JOYCODE_BUTTON22_INDEXED(0) -#define JOYCODE_BUTTON23 JOYCODE_BUTTON23_INDEXED(0) -#define JOYCODE_BUTTON24 JOYCODE_BUTTON24_INDEXED(0) -#define JOYCODE_BUTTON25 JOYCODE_BUTTON25_INDEXED(0) -#define JOYCODE_BUTTON26 JOYCODE_BUTTON26_INDEXED(0) -#define JOYCODE_BUTTON27 JOYCODE_BUTTON27_INDEXED(0) -#define JOYCODE_BUTTON28 JOYCODE_BUTTON28_INDEXED(0) -#define JOYCODE_BUTTON29 JOYCODE_BUTTON29_INDEXED(0) -#define JOYCODE_BUTTON30 JOYCODE_BUTTON30_INDEXED(0) -#define JOYCODE_BUTTON31 JOYCODE_BUTTON31_INDEXED(0) -#define JOYCODE_BUTTON32 JOYCODE_BUTTON32_INDEXED(0) -#define JOYCODE_START JOYCODE_START_INDEXED(0) -#define JOYCODE_SELECT JOYCODE_SELECT_INDEXED(0) - - - #endif // MAME_EMU_INPUT_H |