summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/input/input_xinput.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2023-02-05 04:50:30 +1100
committer Vas Crabb <vas@vastheman.com>2023-02-05 05:01:40 +1100
commitb98fb7c98e5e44d436808eac46c927d3d0dc1f3f (patch)
treecd411d4fe24cd36862c78165723833e42de27303 /src/osd/modules/input/input_xinput.cpp
parent519554c8464ba8e8641e474bc949a2a0beae77ae (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.cpp37
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]);