Browse Source

Fix for always firing triggers on some controllers, trigger threshold more universal

nce_cpp
Ameer 6 years ago
parent
commit
e081fb0718
  1. 6
      src/input_common/gcadapter/gc_adapter.cpp
  2. 4
      src/input_common/gcadapter/gc_adapter.h

6
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]);

4
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};

Loading…
Cancel
Save