Makes joystick button ordering predictable.
Fixes unpredictable or unintentional joystick button ordering by sorting buttons according to their HID Usage property. This allows SFML to adhere to a manufacturer's (or driver implentation's) intended button ordering.
This commit is contained in:
parent
26fa99f197
commit
8e4091f9af
@ -30,6 +30,14 @@
|
||||
#include <SFML/Window/OSX/HIDInputManager.hpp>
|
||||
#include <SFML/Window/OSX/HIDJoystickManager.hpp>
|
||||
|
||||
// Translation unit namespace
|
||||
namespace {
|
||||
////////////////////////////////////////////////////////////
|
||||
bool JoystickButtonSortPredicate(IOHIDElementRef b1, IOHIDElementRef b2)
|
||||
{
|
||||
return IOHIDElementGetUsage(b1) < IOHIDElementGetUsage(b2);
|
||||
}
|
||||
}
|
||||
|
||||
namespace sf
|
||||
{
|
||||
@ -218,6 +226,10 @@ bool JoystickImpl::open(unsigned int index)
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure that the buttons will be indexed in the same order as their
|
||||
// HID Usage (assigned by manufacturer and/or a driver).
|
||||
std::sort(m_buttons.begin(), m_buttons.end(), JoystickButtonSortPredicate);
|
||||
|
||||
// Note : Joy::AxisPovX/Y are not supported (yet).
|
||||
// Maybe kIOHIDElementTypeInput_Axis is the corresponding type but I can't test.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user