|
@@ -52,8 +52,11 @@ public class GlfwJoystickInput implements JoyInput {
|
|
|
private static final Logger LOGGER = Logger.getLogger(InputManager.class.getName());
|
|
|
|
|
|
private RawInputListener listener;
|
|
|
+
|
|
|
private final Map<Integer, GlfwJoystick> joysticks = new HashMap<>();
|
|
|
|
|
|
+ private final Map<JoystickButton, Boolean> joyButtonPressed = new HashMap<>();
|
|
|
+
|
|
|
private boolean initialized = false;
|
|
|
|
|
|
@Override
|
|
@@ -88,8 +91,11 @@ public class GlfwJoystickInput implements JoyInput {
|
|
|
int buttonIndex = 0;
|
|
|
while (byteBuffer.hasRemaining()) {
|
|
|
byteBuffer.get();
|
|
|
+
|
|
|
final String logicalId = JoystickCompatibilityMappings.remapComponent(joystick.getName(), String.valueOf(buttonIndex));
|
|
|
- joystick.addButton(new DefaultJoystickButton(inputManager, joystick, buttonIndex, String.valueOf(buttonIndex), logicalId));
|
|
|
+ final JoystickButton button = new DefaultJoystickButton(inputManager, joystick, buttonIndex, String.valueOf(buttonIndex), logicalId);
|
|
|
+ joystick.addButton(button);
|
|
|
+ joyButtonPressed.put(button, false);
|
|
|
buttonIndex++;
|
|
|
}
|
|
|
}
|
|
@@ -133,7 +139,11 @@ public class GlfwJoystickInput implements JoyInput {
|
|
|
|
|
|
for (final JoystickButton button : entry.getValue().getButtons()) {
|
|
|
final boolean pressed = byteBuffer.get(button.getButtonId()) == GLFW_PRESS;
|
|
|
- listener.onJoyButtonEvent(new JoyButtonEvent(button, pressed));
|
|
|
+
|
|
|
+ if (joyButtonPressed.get(button) != pressed) {
|
|
|
+ joyButtonPressed.put(button, pressed);
|
|
|
+ listener.onJoyButtonEvent(new JoyButtonEvent(button, pressed));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -213,6 +223,3 @@ public class GlfwJoystickInput implements JoyInput {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|