From a5355432b42407af6344afa9dd9ca6095f63ecc8 Mon Sep 17 00:00:00 2001 From: cyber-sushi Date: Sat, 11 May 2024 22:57:14 +0200 Subject: [PATCH] Gamepad triggers correctly emit event value 0 when lifted --- src/event_reader.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/event_reader.rs b/src/event_reader.rs index 73587d3..2372bfb 100644 --- a/src/event_reader.rs +++ b/src/event_reader.rs @@ -241,23 +241,25 @@ impl EventReader { } }, (EventType::ABSOLUTE, _, AbsoluteAxisType::ABS_Z) => { - let clamped_value = if event.value() > 0 { 1 } else { 0 }; - if clamped_value == 1 && ltrigger_value == 0 { + if event.value() > 0 && ltrigger_value == 0 { ltrigger_value = 1; - let clamped_event = InputEvent::new_now(event.event_type(), event.code(), clamped_value); + let clamped_event = InputEvent::new_now(event.event_type(), event.code(), 1); self.convert_axis_events(clamped_event, &"BTN_TL2".to_string(), false).await; - } else if clamped_value == 0 { + } else if event.value() == 0 && ltrigger_value == 1 { ltrigger_value = 0; + let clamped_event = InputEvent::new_now(event.event_type(), event.code(), 0); + self.convert_axis_events(clamped_event, &"BTN_TL2".to_string(), false).await; } }, (EventType::ABSOLUTE, _, AbsoluteAxisType::ABS_RZ) => { - let clamped_value = if event.value() > 0 { 1 } else { 0 }; - if clamped_value == 1 && rtrigger_value == 0 { + if event.value() > 1 && rtrigger_value == 0 { rtrigger_value = 1; - let clamped_event = InputEvent::new_now(event.event_type(), event.code(), clamped_value); + let clamped_event = InputEvent::new_now(event.event_type(), event.code(), 1); self.convert_axis_events(clamped_event, &"BTN_TR2".to_string(), false).await; - } else if clamped_value == 0 { + } else if event.value() == 0 && rtrigger_value == 1 { rtrigger_value = 0; + let clamped_event = InputEvent::new_now(event.event_type(), event.code(), 0); + self.convert_axis_events(clamped_event, &"BTN_TR2".to_string(), false).await; } }, _ => {self.emit_default_event(event).await;}