summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/input
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2022-07-15 15:16:33 +1000
committer Vas Crabb <vas@vastheman.com>2022-07-15 15:16:33 +1000
commitb80b4066bfefb4e19c9a2d8c30b511bee947b921 (patch)
tree6461aa01ba4da1b7aba5c0471acbe67acb90ce48 /src/osd/modules/input
parentf066d1da3257ccc5b7de6a2dfe8fb85cc62d0dbe (diff)
osd/sdl: Removed keyboard/mouse/joystick device mapping options.
The keyboard and mouse device mapping options did nothing at all, mostly because of lack of support for separating inputs from multiple devices. The joystick options were useless when you have two of the same kind of controller, and you can achieve the same thing with controller configuration files.
Diffstat (limited to 'src/osd/modules/input')
-rw-r--r--src/osd/modules/input/input_sdl.cpp92
1 files changed, 17 insertions, 75 deletions
diff --git a/src/osd/modules/input/input_sdl.cpp b/src/osd/modules/input/input_sdl.cpp
index 731c3683ee6..a3bbe494194 100644
--- a/src/osd/modules/input/input_sdl.cpp
+++ b/src/osd/modules/input/input_sdl.cpp
@@ -725,15 +725,14 @@ public:
{
case SDL_JOYAXISMOTION:
{
- int axis = sdlevent.jaxis.axis;
-
+ int const axis = sdlevent.jaxis.axis;
if (axis <= 3)
{
joystick.axes[sdlevent.jaxis.axis] = (sdlevent.jaxis.value * 2);
}
else
{
- int magic = (sdlevent.jaxis.value / 2) + 16384;
+ int const magic = (sdlevent.jaxis.value / 2) + 16384;
joystick.axes[sdlevent.jaxis.axis] = magic;
}
}
@@ -974,32 +973,6 @@ public:
};
-void devmap_register(device_map_t &devmap, int physical_idx, const std::string &name)
-{
- // Attempt to find the entry by name
- auto entry = std::find_if(
- std::begin(devmap.map),
- std::end(devmap.map),
- [&name] (auto const &item) { return (item.name == name) && (item.physical < 0); });
-
- // If we didn't find it by name, find the first free slot
- if (entry == std::end(devmap.map))
- {
- entry = std::find_if(
- std::begin(devmap.map),
- std::end(devmap.map),
- [] (auto const &item) { return item.name.empty(); });
- }
-
- if (entry != std::end(devmap.map))
- {
- entry->physical = physical_idx;
- entry->name = name;
- int logical_idx = std::distance(std::begin(devmap.map), entry);
- devmap.logical[physical_idx] = logical_idx;
- }
-}
-
//============================================================
// sdl_joystick_module
//============================================================
@@ -1007,10 +980,9 @@ void devmap_register(device_map_t &devmap, int physical_idx, const std::string &
class sdl_joystick_module : public sdl_input_module
{
private:
- device_map_t m_joy_map;
- bool m_initialized_joystick;
- bool m_initialized_haptic;
- bool m_sixaxis_mode;
+ bool m_initialized_joystick;
+ bool m_initialized_haptic;
+ bool m_sixaxis_mode;
public:
sdl_joystick_module() :
sdl_input_module(OSD_JOYSTICKINPUT_PROVIDER),
@@ -1058,29 +1030,26 @@ public:
m_sixaxis_mode = downcast<const sdl_options *>(options())->sixaxis();
- m_joy_map.init(machine, SDLOPTION_JOYINDEX, 8, "Joystick mapping");
-
osd_printf_verbose("Joystick: Start initialization\n");
for (int physical_stick = 0; physical_stick < SDL_NumJoysticks(); physical_stick++)
{
- std::string joy_name = remove_spaces(SDL_JoystickNameForIndex(physical_stick));
- devmap_register(m_joy_map, physical_stick, joy_name);
- }
-
- for (int stick = 0; stick < MAX_DEVMAP_ENTRIES; stick++)
- {
- sdl_joystick_device *const devinfo = create_joystick_device(machine, &m_joy_map, stick, DEVICE_CLASS_JOYSTICK);
-
- if (!devinfo)
- continue;
-
- int const physical_stick = m_joy_map.map[stick].physical;
SDL_Joystick *const joy = SDL_JoystickOpen(physical_stick);
+ char const *const name = SDL_JoystickName(joy);
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joy);
char guid_str[256];
guid_str[0] = '\0';
SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str) - 1);
+ sdl_joystick_device *const devinfo = m_sixaxis_mode
+ ? &devicelist().create_device<sdl_sixaxis_joystick_device>(machine, name ? name : guid_str, guid_str, *this)
+ : &devicelist().create_device<sdl_joystick_device>(machine, name ? name : guid_str, guid_str, *this);
+
+ if (!devinfo)
+ {
+ SDL_JoystickClose(joy);
+ continue;
+ }
+
devinfo->sdl_state.device = joy;
devinfo->sdl_state.joystick_id = SDL_JoystickInstanceID(joy);
devinfo->sdl_state.hapdevice = SDL_HapticOpenFromJoystick(joy);
@@ -1093,7 +1062,7 @@ public:
devinfo->sdl_state.serial = std::nullopt;
osd_printf_verbose("Joystick: %s [GUID %s] Vendor ID %04X, Product ID %04X, Revision %04X\n",
- SDL_JoystickNameForIndex(physical_stick),
+ name ? name : "<nullptr>",
guid_str,
SDL_JoystickGetVendor(joy),
SDL_JoystickGetProduct(joy),
@@ -1103,7 +1072,6 @@ public:
SDL_JoystickNumButtons(joy),
SDL_JoystickNumHats(joy),
SDL_JoystickNumBalls(joy));
- osd_printf_verbose("Joystick: ... Physical id %d mapped to logical id %d\n", physical_stick, stick + 1);
if (devinfo->sdl_state.hapdevice)
osd_printf_verbose("Joystick: ... Has haptic capability\n");
else
@@ -1256,32 +1224,6 @@ private:
}
return nullptr;
}
-
- sdl_joystick_device *create_joystick_device(running_machine &machine, device_map_t *devmap, int index, input_device_class devclass)
- {
- char tempname[20];
- char guid_str[256];
- SDL_JoystickGUID guid = SDL_JoystickGetDeviceGUID(m_joy_map.map[index].physical);
- SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str) - 1);
-
- if (devmap->map[index].name.empty())
- {
- // only map place holders if there were mappings specified
- if (devmap->initialized)
- {
- snprintf(tempname, std::size(tempname), "NC%d", index);
- m_sixaxis_mode
- ? devicelist().create_device<sdl_sixaxis_joystick_device>(machine, tempname, guid_str, *this)
- : devicelist().create_device<sdl_joystick_device>(machine, tempname, guid_str, *this);
- }
-
- return nullptr;
- }
-
- return m_sixaxis_mode
- ? &devicelist().create_device<sdl_sixaxis_joystick_device>(machine, std::string(devmap->map[index].name), guid_str, *this)
- : &devicelist().create_device<sdl_joystick_device>(machine, std::string(devmap->map[index].name), guid_str, *this);
- }
};
} // anonymous namespace