From 161175b86693b798ead2ef4975c257c89aac2a1e Mon Sep 17 00:00:00 2001 From: admiralmachado Date: Tue, 11 Mar 2014 21:13:12 +0100 Subject: [PATCH] Handle "--trigger-as-button" option from xboxdrv --- src/com/limelight/input/EvdevConstants.java | 2 ++ src/com/limelight/input/EvdevHandler.java | 16 +++++++++++----- src/com/limelight/input/GamepadMapping.java | 2 ++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/com/limelight/input/EvdevConstants.java b/src/com/limelight/input/EvdevConstants.java index 5c1c8ff..8f80fc4 100644 --- a/src/com/limelight/input/EvdevConstants.java +++ b/src/com/limelight/input/EvdevConstants.java @@ -150,6 +150,8 @@ public class EvdevConstants { public static final short ABS_THROTTLE = 0x06; public static final short ABS_RUDDER = 0x07; + public static final short BTN_THROTTLE = 311; + public static final short BTN_RUDDER = 312; public static final short BTN_SOUTH = 0x130; public static final short BTN_EAST = 0x131; diff --git a/src/com/limelight/input/EvdevHandler.java b/src/com/limelight/input/EvdevHandler.java index 9c8e019..f8b3d05 100644 --- a/src/com/limelight/input/EvdevHandler.java +++ b/src/com/limelight/input/EvdevHandler.java @@ -135,11 +135,17 @@ public class EvdevHandler implements Runnable { conn.sendMouseButtonDown(mouseButton); else if (value==EvdevConstants.KEY_RELEASED) conn.sendMouseButtonUp(mouseButton); - } else if (gamepadButton>0) { - if (value==EvdevConstants.KEY_PRESSED) { - buttonFlags |= gamepadButton; - } else if (value==EvdevConstants.KEY_RELEASED){ - buttonFlags &= ~gamepadButton; + } else { + if (gamepadButton != 0) { + if (value==EvdevConstants.KEY_PRESSED) { + buttonFlags |= gamepadButton; + } else if (value==EvdevConstants.KEY_RELEASED){ + buttonFlags &= ~gamepadButton; + } + } else if (code==mapping.btn_throttle) { + leftTrigger = (byte) (value==EvdevConstants.KEY_PRESSED ? -1 : 0); + } else if (code==mapping.btn_rudder) { + rightTrigger = (byte) (value==EvdevConstants.KEY_PRESSED ? -1 : 0); } conn.sendControllerInput(buttonFlags, leftTrigger, rightTrigger, leftStickX, leftStickY, rightStickX, rightStickY); } diff --git a/src/com/limelight/input/GamepadMapping.java b/src/com/limelight/input/GamepadMapping.java index 823d7b2..9fad6fe 100644 --- a/src/com/limelight/input/GamepadMapping.java +++ b/src/com/limelight/input/GamepadMapping.java @@ -23,6 +23,8 @@ public class GamepadMapping { public short abs_throttle = EvdevConstants.ABS_THROTTLE; public short abs_rudder = EvdevConstants.ABS_RUDDER; + public short btn_throttle = EvdevConstants.BTN_THROTTLE; + public short btn_rudder = EvdevConstants.BTN_RUDDER; public boolean reverse_x, reverse_y; public boolean reverse_rx, reverse_ry;