KEYMAPPER: Actions can now be bound to joystick buttons
This commit is contained in:
parent
85f476070b
commit
32174c9067
19 changed files with 238 additions and 292 deletions
|
@ -23,7 +23,9 @@
|
|||
#include "backends/keymapper/hardware-input.h"
|
||||
|
||||
#include "backends/keymapper/keymapper.h"
|
||||
|
||||
#include "common/tokenizer.h"
|
||||
#include "common/translation.h"
|
||||
|
||||
namespace Common {
|
||||
|
||||
|
@ -215,6 +217,25 @@ const ModifierTableEntry defaultModifiers[] = {
|
|||
{ 0, nullptr, nullptr }
|
||||
};
|
||||
|
||||
const HardwareInputTableEntry defaultJoystickButtons[] = {
|
||||
{ "JOY_A", JOYSTICK_BUTTON_A, _s("Joy A") },
|
||||
{ "JOY_B", JOYSTICK_BUTTON_B, _s("Joy B") },
|
||||
{ "JOY_X", JOYSTICK_BUTTON_X, _s("Joy X") },
|
||||
{ "JOY_Y", JOYSTICK_BUTTON_Y, _s("Joy Y") },
|
||||
{ "JOY_BACK", JOYSTICK_BUTTON_BACK, _s("Joy Back") },
|
||||
{ "JOY_GUIDE", JOYSTICK_BUTTON_GUIDE, _s("Joy Guide") },
|
||||
{ "JOY_START", JOYSTICK_BUTTON_START, _s("Joy Start") },
|
||||
{ "JOY_LEFT_STICK", JOYSTICK_BUTTON_LEFT_STICK, _s("Joy Left Stick") },
|
||||
{ "JOY_RIGHT_STICK", JOYSTICK_BUTTON_RIGHT_STICK, _s("Joy Right Stick") },
|
||||
{ "JOY_LEFT_SHOULDER", JOYSTICK_BUTTON_LEFT_SHOULDER, _s("Joy Left Shoulder") },
|
||||
{ "JOY_RIGHT_SHOULDER", JOYSTICK_BUTTON_RIGHT_SHOULDER, _s("Joy Right Shoulder") },
|
||||
{ "JOY_UP", JOYSTICK_BUTTON_DPAD_UP, _s("Joy D-pad Up") },
|
||||
{ "JOY_DOWN", JOYSTICK_BUTTON_DPAD_DOWN, _s("Joy D-pad Down") },
|
||||
{ "JOY_LEFT", JOYSTICK_BUTTON_DPAD_LEFT, _s("Joy D-pad Left") },
|
||||
{ "JOY_RIGHT", JOYSTICK_BUTTON_DPAD_RIGHT, _s("Joy D-pad Right") },
|
||||
{ nullptr, 0, nullptr }
|
||||
};
|
||||
|
||||
HardwareInputSet::~HardwareInputSet() {
|
||||
}
|
||||
|
||||
|
@ -269,7 +290,7 @@ HardwareInput KeyboardHardwareInputSet::findHardwareInput(const String &id) cons
|
|||
}
|
||||
|
||||
const KeyState keystate = KeyState(key->keycode, 0, modifierFlags);
|
||||
return HardwareInput(id, keystate, fullKeyDesc + key->desc);
|
||||
return HardwareInput::createKeyboard(id, keystate, fullKeyDesc + key->desc);
|
||||
}
|
||||
|
||||
HardwareInput KeyboardHardwareInputSet::findHardwareInput(const Event &event) const {
|
||||
|
@ -301,7 +322,48 @@ HardwareInput KeyboardHardwareInputSet::findHardwareInput(const Event &event) co
|
|||
}
|
||||
|
||||
const KeyState keystate = KeyState(key->keycode, 0, modifierFlags);
|
||||
return HardwareInput(id + key->hwId, keystate, fullKeyDesc + key->desc);
|
||||
return HardwareInput::createKeyboard(id + key->hwId, keystate, fullKeyDesc + key->desc);
|
||||
}
|
||||
default:
|
||||
return HardwareInput();
|
||||
}
|
||||
}
|
||||
|
||||
JoystickHardwareInputSet::JoystickHardwareInputSet(const HardwareInputTableEntry *buttonEntries) :
|
||||
_buttonEntries(buttonEntries) {
|
||||
}
|
||||
|
||||
HardwareInput JoystickHardwareInputSet::findHardwareInput(const String &id) const {
|
||||
const HardwareInputTableEntry *hw = nullptr;
|
||||
for (hw = _buttonEntries; hw->hwId; hw++) {
|
||||
if (id.equals(hw->hwId)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hw || !hw->hwId) {
|
||||
return HardwareInput();
|
||||
}
|
||||
|
||||
return HardwareInput::createJoystick(hw->hwId, hw->code, hw->desc);
|
||||
}
|
||||
|
||||
HardwareInput JoystickHardwareInputSet::findHardwareInput(const Event &event) const {
|
||||
switch (event.type) {
|
||||
case EVENT_JOYBUTTON_DOWN:
|
||||
case EVENT_JOYBUTTON_UP: {
|
||||
const HardwareInputTableEntry *hw = nullptr;
|
||||
for (hw = _buttonEntries; hw->hwId; hw++) {
|
||||
if (event.joystick.button == hw->code) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hw || !hw->hwId) {
|
||||
return HardwareInput();
|
||||
}
|
||||
|
||||
return HardwareInput::createJoystick(hw->hwId, hw->code, hw->desc);
|
||||
}
|
||||
default:
|
||||
return HardwareInput();
|
||||
|
@ -325,7 +387,7 @@ HardwareInput CustomHardwareInputSet::findHardwareInput(const String &id) const
|
|||
return HardwareInput();
|
||||
}
|
||||
|
||||
return HardwareInput(hw->hwId, hw->code, hw->desc);
|
||||
return HardwareInput::createCustom(hw->hwId, hw->code, hw->desc);
|
||||
}
|
||||
|
||||
HardwareInput CustomHardwareInputSet::findHardwareInput(const Event &event) const {
|
||||
|
@ -342,7 +404,7 @@ HardwareInput CustomHardwareInputSet::findHardwareInput(const Event &event) cons
|
|||
return HardwareInput();
|
||||
}
|
||||
|
||||
return HardwareInput(hw->hwId, hw->code, hw->desc);
|
||||
return HardwareInput::createCustom(hw->hwId, hw->code, hw->desc);
|
||||
}
|
||||
default:
|
||||
return HardwareInput();
|
||||
|
@ -377,4 +439,8 @@ HardwareInput CompositeHardwareInputSet::findHardwareInput(const Event &event) c
|
|||
return HardwareInput();
|
||||
}
|
||||
|
||||
void CompositeHardwareInputSet::addHardwareInputSet(HardwareInputSet *hardwareInputSet) {
|
||||
_inputSets.push_back(hardwareInputSet);
|
||||
}
|
||||
|
||||
} //namespace Common
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue