aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--coreAPI/src/java/net/java/games/input/Axis.java16
-rw-r--r--coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java12
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java8
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;