From 3f012aeef59c237b9ccb7596f3142c2eaf646a0c Mon Sep 17 00:00:00 2001 From: Hanno Zulla Date: Fri, 26 Jul 2019 12:38:54 +0200 Subject: [PATCH] Add BigBen kid's PS3 gamepad 146b:0902 to filterTrigger() --- es-core/src/guis/GuiInputConfig.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/es-core/src/guis/GuiInputConfig.cpp b/es-core/src/guis/GuiInputConfig.cpp index 29111a4841..da7f5bdced 100755 --- a/es-core/src/guis/GuiInputConfig.cpp +++ b/es-core/src/guis/GuiInputConfig.cpp @@ -339,11 +339,17 @@ void GuiInputConfig::clearAssignment(int inputId) bool GuiInputConfig::filterTrigger(Input input, InputConfig* config, int inputId) { #if defined(__linux__) - // match PlayStation joystick with 6 axes only - if((strstr(config->getDeviceName().c_str(), "PLAYSTATION") != NULL \ - || strstr(config->getDeviceName().c_str(), "PS3 Ga") != NULL \ - || strstr(config->getDeviceName().c_str(), "PS(R) Ga") != NULL) \ - && InputManager::getInstance()->getAxisCountByDevice(config->getDeviceId()) == 6) + // on Linux, some gamepads return both an analog axis and a digital button for the trigger; + // we want the analog axis only, so this function removes the button press event + + if(( + // match PlayStation joystick with 6 axes only + strstr(config->getDeviceName().c_str(), "PLAYSTATION") != NULL + || strstr(config->getDeviceName().c_str(), "PS3 Ga") != NULL + || strstr(config->getDeviceName().c_str(), "PS(R) Ga") != NULL + // BigBen kid's PS3 gamepad 146b:0902, matched on SDL GUID because its name "Bigben Interactive Bigben Game Pad" may be too generic + || strcmp(config->getDeviceGUIDString().c_str(), "030000006b1400000209000011010000") == 0 + ) && InputManager::getInstance()->getAxisCountByDevice(config->getDeviceId()) == 6) { // digital triggers are unwanted if (input.type == TYPE_BUTTON && (input.id == 6 || input.id == 7))