diff options
3 files changed, 36 insertions, 0 deletions
diff --git a/coreAPI/src/java/net/java/games/input/Axis.java b/coreAPI/src/java/net/java/games/input/Axis.java index a4abced..438f37f 100644 --- a/coreAPI/src/java/net/java/games/input/Axis.java +++ b/coreAPI/src/java/net/java/games/input/Axis.java @@ -330,17 +330,33 @@ public interface Axis { */ public static final float CENTER = OFF; /** + * Standard value for up-left HAT position + */ + public static final float UP_LEFT = 0.125f; + /** * Standard value for up HAT position */ public static final float UP = 0.25f; + /** + * Standard value for up-right HAT position + */ + public static final float UP_RIGHT = 0.375f; /** * Standard value for right HAT position */ public static final float RIGHT = 0.50f; + /** + * Standard value for down-right HAT position + */ + public static final float DOWN_RIGHT = 0.625f; /** * Standard value for down HAT position */ public static final float DOWN = 0.75f; + /** + * Standard value for down-left HAT position + */ + public static final float DOWN_LEFT = 0.875f; /** * Standard value for left HAT position */ diff --git a/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java b/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java index 15668bf..9e6d56f 100644 --- a/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java +++ b/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java @@ -105,15 +105,27 @@ class DigitalHatPanel extends AxisPanel { } else if ( data == Axis.POV.UP) { digitalState.setBackground(Color.green); digitalState.setText("UP"); + } else if ( data == Axis.POV.UP_RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("UP+RIGHT"); } else if ( data == Axis.POV.RIGHT) { digitalState.setBackground(Color.green); digitalState.setText("RIGHT"); + } else if ( data == Axis.POV.DOWN_RIGHT) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN+RIGHT"); } else if ( data == Axis.POV.DOWN) { digitalState.setBackground(Color.green); digitalState.setText("DOWN"); + } else if ( data == Axis.POV.DOWN_LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("DOWN+LEFT"); } else if ( data == Axis.POV.LEFT) { digitalState.setBackground(Color.green); digitalState.setText("LEFT"); + } else if ( data == Axis.POV.UP_LEFT) { + digitalState.setBackground(Color.green); + digitalState.setText("UP+LEFT"); }else { // shoudl never happen digitalState.setBackground(Color.red); digitalState.setText("ERR:"+data); diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java b/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java index 58df37d..e9cfc6e 100644 --- a/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java +++ b/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java @@ -155,12 +155,20 @@ class DirectInputAxis extends AbstractAxis { return Axis.POV.OFF; } else if (data == 0.0) { return Axis.POV.UP; + } else if (data == 4500) { + return Axis.POV.UP_RIGHT; } else if (data == 9000) { return Axis.POV.RIGHT; + } else if (data == 13500) { + return Axis.POV.DOWN_RIGHT; } else if (data == 18000) { return Axis.POV.DOWN; + } else if (data == 22500) { + return Axis.POV.DOWN_LEFT; } else if (data == 27000) { return Axis.POV.LEFT; + } else if (data == 31500) { + return Axis.POV.UP_LEFT; } else { System.err.print("Unexpected value for DX8 HAT: "+data); return Axis.POV.OFF; |