diff options
author | 2023-02-05 04:50:30 +1100 | |
---|---|---|
committer | 2023-02-05 05:01:40 +1100 | |
commit | b98fb7c98e5e44d436808eac46c927d3d0dc1f3f (patch) | |
tree | cd411d4fe24cd36862c78165723833e42de27303 /src/osd/modules/input/input_xinput.cpp | |
parent | 519554c8464ba8e8641e474bc949a2a0beae77ae (diff) |
Small batch of input refactoring:
emu/input.cpp: Fixed regression in display of some joystick inputs.
osd/interface: Split up interface classes into a few more files to
reduce where the input device interface class needs to be included.
Made OSD independent of concrete input_device class.
osd/modules/input, emu/inputdev.cpp, emu/ioport.cpp: Allow input devices
to provide tokens for controls without standard item types and
additional default input assignments. Fixes issues assigning Yen and
Backslash on Japanese keyboards.
ui/textbox.cpp: Added a fixed-content text box menu class for future
use.
Got main.h out of emu.h as it’s only used in a very small number of
places, mostly for getting the application name. Added eminline.h to
attotime.h as it's used without emu.h. Cleaned up forward declarations
in emufwd.h a little.
Diffstat (limited to 'src/osd/modules/input/input_xinput.cpp')
-rw-r--r-- | src/osd/modules/input/input_xinput.cpp | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/osd/modules/input/input_xinput.cpp b/src/osd/modules/input/input_xinput.cpp index 851a0799817..e8dc0af5e19 100644 --- a/src/osd/modules/input/input_xinput.cpp +++ b/src/osd/modules/input/input_xinput.cpp @@ -791,6 +791,7 @@ void xinput_joystick_device::configure(input_device &device) { device.add_item( axis_names[i], + std::string_view(), axis_ids[i], generic_axis_get_state<s32>, &m_axes[AXIS_LSX + i]); @@ -813,6 +814,7 @@ void xinput_joystick_device::configure(input_device &device) { device.add_item( hat_names[i], + std::string_view(), input_item_id(ITEM_ID_HAT1UP + i), // matches up/down/left/right order generic_button_get_state<u8>, &m_switches[SWITCH_DPAD_UP + i]); @@ -839,6 +841,7 @@ void xinput_joystick_device::configure(input_device &device) { device.add_item( button_names[i], + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[offset]); @@ -850,6 +853,7 @@ void xinput_joystick_device::configure(input_device &device) { device.add_item( "Start", + std::string_view(), ITEM_ID_START, generic_button_get_state<u8>, &m_switches[SWITCH_START]); @@ -858,6 +862,7 @@ void xinput_joystick_device::configure(input_device &device) { device.add_item( "Back", + std::string_view(), ITEM_ID_SELECT, generic_button_get_state<u8>, &m_switches[SWITCH_BACK]); @@ -872,6 +877,7 @@ void xinput_joystick_device::configure(input_device &device) { device.add_item( axis_names[4 + i], + std::string_view(), axis_ids[4 + i], generic_axis_get_state<s32>, &m_axes[AXIS_LT + i]); @@ -1029,6 +1035,7 @@ void xinput_guitar_device::configure(input_device &device) { device.add_item( name, + std::string_view(), item, generic_axis_get_state<s32>, &m_axes[AXIS_SLIDER + i]); @@ -1042,6 +1049,7 @@ void xinput_guitar_device::configure(input_device &device) { device.add_item( HAT_NAMES_GUITAR[i], + std::string_view(), input_item_id(ITEM_ID_HAT1UP + i), // matches up/down/left/right order generic_button_get_state<u8>, &m_switches[SWITCH_DPAD_UP + i]); @@ -1056,6 +1064,7 @@ void xinput_guitar_device::configure(input_device &device) { device.add_item( BUTTON_NAMES_GUITAR[i], + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_FRET1 + i]); @@ -1067,6 +1076,7 @@ void xinput_guitar_device::configure(input_device &device) { device.add_item( "Start", + std::string_view(), ITEM_ID_START, generic_button_get_state<u8>, &m_switches[SWITCH_START]); @@ -1075,6 +1085,7 @@ void xinput_guitar_device::configure(input_device &device) { device.add_item( "Back", + std::string_view(), ITEM_ID_SELECT, generic_button_get_state<u8>, &m_switches[SWITCH_BACK]); @@ -1219,6 +1230,7 @@ void xinput_drumkit_device::configure(input_device &device) { device.add_item( name, + std::string_view(), item, generic_axis_get_state<s32>, &m_axes[AXIS_GREEN + i]); @@ -1232,6 +1244,7 @@ void xinput_drumkit_device::configure(input_device &device) { device.add_item( HAT_NAMES_GAMEPAD[i], + std::string_view(), input_item_id(ITEM_ID_HAT1UP + i), // matches up/down/left/right order generic_button_get_state<u8>, &m_switches[SWITCH_DPAD_UP + i]); @@ -1246,6 +1259,7 @@ void xinput_drumkit_device::configure(input_device &device) { device.add_item( BUTTON_NAMES_DRUMKIT[i], + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_GREEN + i]); @@ -1257,6 +1271,7 @@ void xinput_drumkit_device::configure(input_device &device) { device.add_item( "Start", + std::string_view(), ITEM_ID_START, generic_button_get_state<u8>, &m_switches[SWITCH_START]); @@ -1265,6 +1280,7 @@ void xinput_drumkit_device::configure(input_device &device) { device.add_item( "Back", + std::string_view(), ITEM_ID_SELECT, generic_button_get_state<u8>, &m_switches[SWITCH_BACK]); @@ -1382,7 +1398,7 @@ void xinput_turntable_device::poll() m_switches[SWITCH_GREEN + i] = BIT(trigger_right(), i) ? 0xff : 0x00; // translate axes - m_axes[AXIS_TURNTABLE] = s32(thumb_left_y()) * INPUT_RELATIVE_PER_PIXEL * 2; + m_axes[AXIS_TURNTABLE] = s32(thumb_left_y()) * input_device::RELATIVE_PER_PIXEL * 2; m_axes[AXIS_CROSSFADE] = normalize_absolute_axis(thumb_right_y(), XINPUT_AXIS_MINVALUE, XINPUT_AXIS_MAXVALUE); // convert effect dial value to relative displacement @@ -1393,7 +1409,7 @@ void xinput_turntable_device::poll() effect_delta -= 0x1'0000; else if (-0x8000 > effect_delta) effect_delta += 0x1'0000; - m_axes[AXIS_EFFECT] = effect_delta * INPUT_RELATIVE_PER_PIXEL / 128; + m_axes[AXIS_EFFECT] = effect_delta * input_device::RELATIVE_PER_PIXEL / 128; } m_prev_effect = u16(thumb_right_x()); } @@ -1419,16 +1435,19 @@ void xinput_turntable_device::configure(input_device &device) // add axes device.add_item( "Turntable", + std::string_view(), ITEM_ID_ADD_RELATIVE1, generic_axis_get_state<s32>, &m_axes[AXIS_TURNTABLE]); device.add_item( "Effect", + std::string_view(), ITEM_ID_ADD_RELATIVE2, generic_axis_get_state<s32>, &m_axes[AXIS_EFFECT]); device.add_item( "Crossfade", + std::string_view(), ITEM_ID_XAXIS, generic_axis_get_state<s32>, &m_axes[AXIS_CROSSFADE]); @@ -1440,6 +1459,7 @@ void xinput_turntable_device::configure(input_device &device) { device.add_item( HAT_NAMES_GAMEPAD[i], + std::string_view(), input_item_id(ITEM_ID_HAT1UP + i), // matches up/down/left/right order generic_button_get_state<u8>, &m_switches[SWITCH_DPAD_UP + i]); @@ -1454,6 +1474,7 @@ void xinput_turntable_device::configure(input_device &device) { device.add_item( BUTTON_NAMES_KEYBOARD[i], + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_A + i]); @@ -1461,16 +1482,19 @@ void xinput_turntable_device::configure(input_device &device) } device.add_item( "Green", + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_GREEN]); device.add_item( "Red", + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_RED]); device.add_item( "Blue", + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_BLUE]); @@ -1480,6 +1504,7 @@ void xinput_turntable_device::configure(input_device &device) { device.add_item( "Start", + std::string_view(), ITEM_ID_START, generic_button_get_state<u8>, &m_switches[SWITCH_START]); @@ -1488,6 +1513,7 @@ void xinput_turntable_device::configure(input_device &device) { device.add_item( "Back", + std::string_view(), ITEM_ID_SELECT, generic_button_get_state<u8>, &m_switches[SWITCH_BACK]); @@ -1627,11 +1653,13 @@ void xinput_keyboard_device::configure(input_device &device) // add axes device.add_item( "Velocity", + std::string_view(), ITEM_ID_SLIDER1, generic_axis_get_state<s32>, &m_axes[AXIS_VELOCITY]); device.add_item( "Pedal", + std::string_view(), ITEM_ID_SLIDER2, generic_axis_get_state<s32>, &m_axes[AXIS_PEDAL]); @@ -1643,6 +1671,7 @@ void xinput_keyboard_device::configure(input_device &device) { device.add_item( HAT_NAMES_GAMEPAD[i], + std::string_view(), input_item_id(ITEM_ID_HAT1UP + i), // matches up/down/left/right order generic_button_get_state<u8>, &m_switches[SWITCH_DPAD_UP + i]); @@ -1657,6 +1686,7 @@ void xinput_keyboard_device::configure(input_device &device) { device.add_item( BUTTON_NAMES_KEYBOARD[i], + std::string_view(), button_id++, generic_button_get_state<u8>, &m_switches[SWITCH_A + i]); @@ -1670,6 +1700,7 @@ void xinput_keyboard_device::configure(input_device &device) { device.add_item( util::string_format(key_formats[i % 12], (i / 12) + 1), + std::string_view(), (ITEM_ID_BUTTON32 >= button_id) ? button_id++ : ITEM_ID_OTHER_SWITCH, generic_button_get_state<u8>, &m_switches[SWITCH_C1 + i]); @@ -1680,6 +1711,7 @@ void xinput_keyboard_device::configure(input_device &device) { device.add_item( "Start", + std::string_view(), ITEM_ID_START, generic_button_get_state<u8>, &m_switches[SWITCH_START]); @@ -1688,6 +1720,7 @@ void xinput_keyboard_device::configure(input_device &device) { device.add_item( "Back", + std::string_view(), ITEM_ID_SELECT, generic_button_get_state<u8>, &m_switches[SWITCH_BACK]); |