mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
Merge pull request #8033 from SamGondelman/xboxFix
Game pads work after falling asleep and being reactivated
This commit is contained in:
commit
fc5214c938
5 changed files with 63 additions and 63 deletions
|
@ -1,14 +1,14 @@
|
||||||
{
|
{
|
||||||
"name": "XBox to Standard",
|
"name": "XBox to Standard",
|
||||||
"channels": [
|
"channels": [
|
||||||
{ "from": "GamePad.LY", "to": "Standard.LY" },
|
{ "from": "GamePad.LY", "filters": { "type": "deadZone", "min": 0.05 }, "to": "Standard.LY" },
|
||||||
{ "from": "GamePad.LX", "to": "Standard.LX" },
|
{ "from": "GamePad.LX", "filters": { "type": "deadZone", "min": 0.05 }, "to": "Standard.LX" },
|
||||||
{ "from": "GamePad.LT", "to": "Standard.LT" },
|
{ "from": "GamePad.LT", "to": "Standard.LT" },
|
||||||
{ "from": "GamePad.LB", "to": "Standard.LB" },
|
{ "from": "GamePad.LB", "to": "Standard.LB" },
|
||||||
{ "from": "GamePad.LS", "to": "Standard.LS" },
|
{ "from": "GamePad.LS", "to": "Standard.LS" },
|
||||||
|
|
||||||
{ "from": "GamePad.RY", "to": "Standard.RY" },
|
{ "from": "GamePad.RY", "filters": { "type": "deadZone", "min": 0.05 }, "to": "Standard.RY" },
|
||||||
{ "from": "GamePad.RX", "to": "Standard.RX" },
|
{ "from": "GamePad.RX", "filters": { "type": "deadZone", "min": 0.05 }, "to": "Standard.RX" },
|
||||||
{ "from": "GamePad.RT", "to": "Standard.RT" },
|
{ "from": "GamePad.RT", "to": "Standard.RT" },
|
||||||
{ "from": "GamePad.RB", "to": "Standard.RB" },
|
{ "from": "GamePad.RB", "to": "Standard.RB" },
|
||||||
{ "from": "GamePad.RS", "to": "Standard.RS" },
|
{ "from": "GamePad.RS", "to": "Standard.RS" },
|
||||||
|
|
|
@ -62,14 +62,6 @@ namespace controller {
|
||||||
UserInputMapper::~UserInputMapper() {
|
UserInputMapper::~UserInputMapper() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int UserInputMapper::recordDeviceOfType(const QString& deviceName) {
|
|
||||||
if (!_deviceCounts.contains(deviceName)) {
|
|
||||||
_deviceCounts[deviceName] = 0;
|
|
||||||
}
|
|
||||||
_deviceCounts[deviceName] += 1;
|
|
||||||
return _deviceCounts[deviceName];
|
|
||||||
}
|
|
||||||
|
|
||||||
void UserInputMapper::registerDevice(InputDevice::Pointer device) {
|
void UserInputMapper::registerDevice(InputDevice::Pointer device) {
|
||||||
Locker locker(_lock);
|
Locker locker(_lock);
|
||||||
if (device->_deviceID == Input::INVALID_DEVICE) {
|
if (device->_deviceID == Input::INVALID_DEVICE) {
|
||||||
|
@ -77,8 +69,6 @@ void UserInputMapper::registerDevice(InputDevice::Pointer device) {
|
||||||
}
|
}
|
||||||
const auto& deviceID = device->_deviceID;
|
const auto& deviceID = device->_deviceID;
|
||||||
|
|
||||||
recordDeviceOfType(device->getName());
|
|
||||||
|
|
||||||
qCDebug(controllers) << "Registered input device <" << device->getName() << "> deviceID = " << deviceID;
|
qCDebug(controllers) << "Registered input device <" << device->getName() << "> deviceID = " << deviceID;
|
||||||
|
|
||||||
for (const auto& inputMapping : device->getAvailableInputs()) {
|
for (const auto& inputMapping : device->getAvailableInputs()) {
|
||||||
|
@ -134,6 +124,15 @@ void UserInputMapper::removeDevice(int deviceID) {
|
||||||
_mappingsByDevice.erase(mappingsEntry);
|
_mappingsByDevice.erase(mappingsEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const auto& inputMapping : device->getAvailableInputs()) {
|
||||||
|
const auto& input = inputMapping.first;
|
||||||
|
auto endpoint = _endpointsByInput.find(input);
|
||||||
|
if (endpoint != _endpointsByInput.end()) {
|
||||||
|
_inputsByEndpoint.erase((*endpoint).second);
|
||||||
|
_endpointsByInput.erase(input);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_registeredDevices.erase(proxyEntry);
|
_registeredDevices.erase(proxyEntry);
|
||||||
|
|
||||||
emit hardwareChanged();
|
emit hardwareChanged();
|
||||||
|
|
|
@ -143,9 +143,6 @@ namespace controller {
|
||||||
std::vector<Pose> _poseStates = std::vector<Pose>(toInt(Action::NUM_ACTIONS));
|
std::vector<Pose> _poseStates = std::vector<Pose>(toInt(Action::NUM_ACTIONS));
|
||||||
std::vector<float> _lastStandardStates = std::vector<float>();
|
std::vector<float> _lastStandardStates = std::vector<float>();
|
||||||
|
|
||||||
int recordDeviceOfType(const QString& deviceName);
|
|
||||||
QHash<const QString&, int> _deviceCounts;
|
|
||||||
|
|
||||||
static float getValue(const EndpointPointer& endpoint, bool peek = false);
|
static float getValue(const EndpointPointer& endpoint, bool peek = false);
|
||||||
static Pose getPose(const EndpointPointer& endpoint, bool peek = false);
|
static Pose getPose(const EndpointPointer& endpoint, bool peek = false);
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,8 @@ bool Joystick::triggerHapticPulse(float strength, float duration, controller::Ha
|
||||||
|
|
||||||
controller::Input::NamedVector Joystick::getAvailableInputs() const {
|
controller::Input::NamedVector Joystick::getAvailableInputs() const {
|
||||||
using namespace controller;
|
using namespace controller;
|
||||||
static const Input::NamedVector availableInputs{
|
if (_availableInputs.length() == 0) {
|
||||||
|
_availableInputs = {
|
||||||
makePair(A, "A"),
|
makePair(A, "A"),
|
||||||
makePair(B, "B"),
|
makePair(B, "B"),
|
||||||
makePair(X, "X"),
|
makePair(X, "X"),
|
||||||
|
@ -127,7 +128,8 @@ controller::Input::NamedVector Joystick::getAvailableInputs() const {
|
||||||
makePair(DL, "Left"),
|
makePair(DL, "Left"),
|
||||||
makePair(DR, "Right"),
|
makePair(DR, "Right"),
|
||||||
};
|
};
|
||||||
return availableInputs;
|
}
|
||||||
|
return _availableInputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Joystick::getDefaultMappingConfig() const {
|
QString Joystick::getDefaultMappingConfig() const {
|
||||||
|
|
|
@ -56,6 +56,8 @@ private:
|
||||||
SDL_Joystick* _sdlJoystick;
|
SDL_Joystick* _sdlJoystick;
|
||||||
SDL_Haptic* _sdlHaptic;
|
SDL_Haptic* _sdlHaptic;
|
||||||
SDL_JoystickID _instanceId;
|
SDL_JoystickID _instanceId;
|
||||||
|
|
||||||
|
mutable controller::Input::NamedVector _availableInputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_Joystick_h
|
#endif // hifi_Joystick_h
|
||||||
|
|
Loading…
Reference in a new issue