From d00972fce1fe5f2eb13c7e5d7e4e56036cb6bc91 Mon Sep 17 00:00:00 2001 From: Ameer Date: Sat, 4 Jul 2020 00:40:48 -0400 Subject: Fix for always firing triggers on some controllers, trigger threshold more universal --- src/input_common/gcadapter/gc_adapter.cpp | 6 ++---- src/input_common/gcadapter/gc_adapter.h | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/input_common/gcadapter/gc_adapter.cpp b/src/input_common/gcadapter/gc_adapter.cpp index f58b0e11c..b39d2a3fb 100644 --- a/src/input_common/gcadapter/gc_adapter.cpp +++ b/src/input_common/gcadapter/gc_adapter.cpp @@ -156,14 +156,12 @@ void Adapter::Read() { pads[port].axis_value = pads[port].substick_y; pad_queue[port].Push(pads[port]); } - if (pads[port].trigger_left > pads[port].TRIGGER_CENTER + pads[port].THRESHOLD || - pads[port].trigger_left < pads[port].TRIGGER_CENTER - pads[port].THRESHOLD) { + if (pads[port].trigger_left > pads[port].TRIGGER_THRESHOLD) { pads[port].axis = GCAdapter::PadAxes::TriggerLeft; pads[port].axis_value = pads[port].trigger_left; pad_queue[port].Push(pads[port]); } - if (pads[port].trigger_right > pads[port].TRIGGER_CENTER + pads[port].THRESHOLD || - pads[port].trigger_right < pads[port].TRIGGER_CENTER - pads[port].THRESHOLD) { + if (pads[port].trigger_right > pads[port].TRIGGER_THRESHOLD) { pads[port].axis = GCAdapter::PadAxes::TriggerRight; pads[port].axis_value = pads[port].trigger_right; pad_queue[port].Push(pads[port]); diff --git a/src/input_common/gcadapter/gc_adapter.h b/src/input_common/gcadapter/gc_adapter.h index 161d522ac..0ea6263eb 100644 --- a/src/input_common/gcadapter/gc_adapter.h +++ b/src/input_common/gcadapter/gc_adapter.h @@ -63,9 +63,11 @@ struct GCPadStatus { static constexpr u8 C_STICK_CENTER_X = 0x80; static constexpr u8 C_STICK_CENTER_Y = 0x80; static constexpr u8 C_STICK_RADIUS = 0x7f; - static constexpr u8 TRIGGER_CENTER = 20; static constexpr u8 THRESHOLD = 10; + // 256/4, at least a quarter press to count as a press. For polling mostly + static constexpr u8 TRIGGER_THRESHOLD = 64; + u8 port{}; PadAxes axis{PadAxes::Undefined}; u8 axis_value{255}; -- cgit v1.2.3