Previous 199869 Revisions Next

r21165 Monday 18th February, 2013 at 17:18:00 UTC by R. Belmont
input: Support up to 32 buttons and harmonize Windows and SDL behavior if you exceed the limit [Nick3092]
[src/emu]input.c input.h
[src/osd/windows]input.c

trunk/src/osd/windows/input.c
r21164r21165
16031603   {
16041604      FPTR offset = (FPTR)(&((DIJOYSTATE2 *)NULL)->rgbButtons[butnum]);
16051605      char *name = dinput_device_item_name(devinfo, offset, default_button_name(butnum), NULL);
1606      devinfo->device->add_item(name, (butnum < 16) ? (input_item_id)(ITEM_ID_BUTTON1 + butnum) : ITEM_ID_OTHER_SWITCH, generic_button_get_state, &devinfo->joystick.state.rgbButtons[butnum]);
1606     
1607      input_item_id itemid;
1608     
1609      if (butnum < INPUT_MAX_BUTTONS)
1610         itemid = (input_item_id) (ITEM_ID_BUTTON1 + butnum);
1611      else if (butnum < INPUT_MAX_BUTTONS + INPUT_MAX_ADD_SWITCH)
1612         itemid = (input_item_id) (ITEM_ID_ADD_SWITCH1 - INPUT_MAX_BUTTONS + butnum);
1613      else
1614         itemid = ITEM_ID_OTHER_SWITCH;
1615   
1616      devinfo->device->add_item(name, itemid, generic_button_get_state, &devinfo->joystick.state.rgbButtons[butnum]);
16071617      osd_free(name);
16081618   }
16091619
trunk/src/emu/input.c
r21164r21165
401401   { ITEM_ID_BUTTON14,      "BUTTON14" },
402402   { ITEM_ID_BUTTON15,      "BUTTON15" },
403403   { ITEM_ID_BUTTON16,      "BUTTON16" },
404   { ITEM_ID_BUTTON17,      "BUTTON17" },
405   { ITEM_ID_BUTTON18,      "BUTTON18" },
406   { ITEM_ID_BUTTON19,      "BUTTON19" },
407   { ITEM_ID_BUTTON20,      "BUTTON20" },
408   { ITEM_ID_BUTTON21,      "BUTTON21" },
409   { ITEM_ID_BUTTON22,      "BUTTON22" },
410   { ITEM_ID_BUTTON23,      "BUTTON23" },
411   { ITEM_ID_BUTTON24,      "BUTTON24" },
412   { ITEM_ID_BUTTON25,      "BUTTON25" },
413   { ITEM_ID_BUTTON26,      "BUTTON26" },
414   { ITEM_ID_BUTTON27,      "BUTTON27" },
415   { ITEM_ID_BUTTON28,      "BUTTON28" },
416   { ITEM_ID_BUTTON29,      "BUTTON29" },
417   { ITEM_ID_BUTTON30,      "BUTTON30" },
418   { ITEM_ID_BUTTON31,      "BUTTON31" },
419   { ITEM_ID_BUTTON32,      "BUTTON32" },
404420   { ITEM_ID_START,         "START" },
405421   { ITEM_ID_SELECT,        "SELECT" },
406422
trunk/src/emu/input.h
r21164r21165
6060
6161// maximum number of axis/buttons/hats with ITEM_IDs for use by osd layer
6262const int INPUT_MAX_AXIS = 8;
63const int INPUT_MAX_BUTTONS = 16;
63const int INPUT_MAX_BUTTONS = 32;
6464const int INPUT_MAX_HATS = 4;
6565const int INPUT_MAX_ADD_SWITCH = 16;
6666const int INPUT_MAX_ADD_ABSOLUTE = 16;
r21164r21165
254254   ITEM_ID_BUTTON14,
255255   ITEM_ID_BUTTON15,
256256   ITEM_ID_BUTTON16,
257   ITEM_ID_BUTTON17,
258   ITEM_ID_BUTTON18,
259   ITEM_ID_BUTTON19,
260   ITEM_ID_BUTTON20,
261   ITEM_ID_BUTTON21,
262   ITEM_ID_BUTTON22,
263   ITEM_ID_BUTTON23,
264   ITEM_ID_BUTTON24,
265   ITEM_ID_BUTTON25,
266   ITEM_ID_BUTTON26,
267   ITEM_ID_BUTTON27,
268   ITEM_ID_BUTTON28,
269   ITEM_ID_BUTTON29,
270   ITEM_ID_BUTTON30,
271   ITEM_ID_BUTTON31,
272   ITEM_ID_BUTTON32,
257273   ITEM_ID_START,
258274   ITEM_ID_SELECT,
259275
r21164r21165
10371053#define JOYCODE_BUTTON14_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON14)
10381054#define JOYCODE_BUTTON15_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON15)
10391055#define JOYCODE_BUTTON16_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON16)
1056#define JOYCODE_BUTTON17_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON17)
1057#define JOYCODE_BUTTON18_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON18)
1058#define JOYCODE_BUTTON19_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON19)
1059#define JOYCODE_BUTTON20_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON20)
1060#define JOYCODE_BUTTON21_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON21)
1061#define JOYCODE_BUTTON22_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON22)
1062#define JOYCODE_BUTTON23_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON23)
1063#define JOYCODE_BUTTON24_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON24)
1064#define JOYCODE_BUTTON25_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON25)
1065#define JOYCODE_BUTTON26_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON26)
1066#define JOYCODE_BUTTON27_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON27)
1067#define JOYCODE_BUTTON28_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON28)
1068#define JOYCODE_BUTTON29_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON29)
1069#define JOYCODE_BUTTON30_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON30)
1070#define JOYCODE_BUTTON31_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON31)
1071#define JOYCODE_BUTTON32_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_BUTTON32)
10401072#define JOYCODE_START_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_START)
10411073#define JOYCODE_SELECT_INDEXED(n) input_code(DEVICE_CLASS_JOYSTICK, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_SELECT)
10421074
r21164r21165
10561088#define JOYCODE_BUTTON14 JOYCODE_BUTTON14_INDEXED(0)
10571089#define JOYCODE_BUTTON15 JOYCODE_BUTTON15_INDEXED(0)
10581090#define JOYCODE_BUTTON16 JOYCODE_BUTTON16_INDEXED(0)
1091#define JOYCODE_BUTTON17 JOYCODE_BUTTON17_INDEXED(0)
1092#define JOYCODE_BUTTON18 JOYCODE_BUTTON18_INDEXED(0)
1093#define JOYCODE_BUTTON19 JOYCODE_BUTTON19_INDEXED(0)
1094#define JOYCODE_BUTTON20 JOYCODE_BUTTON20_INDEXED(0)
1095#define JOYCODE_BUTTON21 JOYCODE_BUTTON21_INDEXED(0)
1096#define JOYCODE_BUTTON22 JOYCODE_BUTTON22_INDEXED(0)
1097#define JOYCODE_BUTTON23 JOYCODE_BUTTON23_INDEXED(0)
1098#define JOYCODE_BUTTON24 JOYCODE_BUTTON24_INDEXED(0)
1099#define JOYCODE_BUTTON25 JOYCODE_BUTTON25_INDEXED(0)
1100#define JOYCODE_BUTTON26 JOYCODE_BUTTON26_INDEXED(0)
1101#define JOYCODE_BUTTON27 JOYCODE_BUTTON27_INDEXED(0)
1102#define JOYCODE_BUTTON28 JOYCODE_BUTTON28_INDEXED(0)
1103#define JOYCODE_BUTTON29 JOYCODE_BUTTON29_INDEXED(0)
1104#define JOYCODE_BUTTON30 JOYCODE_BUTTON30_INDEXED(0)
1105#define JOYCODE_BUTTON31 JOYCODE_BUTTON31_INDEXED(0)
1106#define JOYCODE_BUTTON32 JOYCODE_BUTTON32_INDEXED(0)
10591107#define JOYCODE_START JOYCODE_START_INDEXED(0)
10601108#define JOYCODE_SELECT JOYCODE_SELECT_INDEXED(0)
10611109

Previous 199869 Revisions Next


© 1997-2024 The MAME Team