mirror of
https://github.com/shadowfacts/jinput-arm64.git
synced 2026-04-05 14:35:58 +00:00
Linux building under maven
This commit is contained in:
parent
294629a312
commit
b2fd759065
78 changed files with 418 additions and 297 deletions
37
tests/pom.xml
Normal file
37
tests/pom.xml
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>tests</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>JInput - tests</name>
|
||||
|
||||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>coreapi</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>applet</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,301 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistribution of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistribution in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materails provided with the distribution.
|
||||
*
|
||||
* Neither the name Sun Microsystems, Inc. or the names of the contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
|
||||
* ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
|
||||
* NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND
|
||||
* ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS
|
||||
* A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS
|
||||
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
|
||||
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
|
||||
* INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY
|
||||
* OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*
|
||||
* You acknowledge that this software is not designed or intended for us in
|
||||
* the design, construction, operation or maintenance of any nuclear facility
|
||||
*
|
||||
*****************************************************************************/
|
||||
package net.java.games.input;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Container;
|
||||
import java.awt.GridLayout;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
|
||||
import net.java.games.input.Component;
|
||||
import net.java.games.input.Controller;
|
||||
import net.java.games.input.ControllerEnvironment;
|
||||
import net.java.games.input.EventQueue;
|
||||
import net.java.games.input.Event;
|
||||
import net.java.games.input.Version;
|
||||
|
||||
public class ControllerEventTest extends JFrame{
|
||||
private static abstract class AxisPanel extends JPanel{
|
||||
Component axis;
|
||||
float data;
|
||||
|
||||
public AxisPanel(Component ax){
|
||||
axis = ax;
|
||||
setLayout(new BorderLayout());
|
||||
add(new JLabel(ax.getName()+"("+ax.getIdentifier()+")"),
|
||||
BorderLayout.NORTH);
|
||||
}
|
||||
|
||||
public void setPollData(float data){
|
||||
this.data = data;
|
||||
renderData();
|
||||
}
|
||||
|
||||
public Component getAxis() {
|
||||
return axis;
|
||||
}
|
||||
|
||||
protected abstract void renderData();
|
||||
}
|
||||
|
||||
private static class DigitalAxisPanel extends AxisPanel {
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalAxisPanel(Component ax) {
|
||||
super(ax);
|
||||
add(digitalState,BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
protected void renderData(){
|
||||
if (data == 0.0f){
|
||||
digitalState.setBackground(getBackground());
|
||||
digitalState.setText("OFF");
|
||||
} else if ( data == 1.0f) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("ON");
|
||||
}else { // shoudl never happen
|
||||
digitalState.setBackground(Color.red);
|
||||
digitalState.setText("ERR:"+data);
|
||||
}
|
||||
digitalState.repaint();
|
||||
}
|
||||
}
|
||||
|
||||
private static class DigitalHatPanel extends AxisPanel {
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalHatPanel(Component ax) {
|
||||
super(ax);
|
||||
add(digitalState,BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
protected void renderData(){
|
||||
if (data == Component.POV.OFF){
|
||||
digitalState.setBackground(getBackground());
|
||||
digitalState.setText("OFF");
|
||||
} else if ( data == Component.POV.UP) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("UP");
|
||||
} else if ( data == Component.POV.UP_RIGHT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("UP+RIGHT");
|
||||
} else if ( data == Component.POV.RIGHT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("RIGHT");
|
||||
} else if ( data == Component.POV.DOWN_RIGHT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("DOWN+RIGHT");
|
||||
} else if ( data == Component.POV.DOWN) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("DOWN");
|
||||
} else if ( data == Component.POV.DOWN_LEFT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("DOWN+LEFT");
|
||||
} else if ( data == Component.POV.LEFT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("LEFT");
|
||||
} else if ( data == Component.POV.UP_LEFT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("UP+LEFT");
|
||||
}else { // shoudl never happen
|
||||
digitalState.setBackground(Color.red);
|
||||
digitalState.setText("ERR:"+data);
|
||||
}
|
||||
digitalState.repaint();
|
||||
}
|
||||
}
|
||||
private static class AnalogAxisPanel extends AxisPanel {
|
||||
JLabel analogState = new JLabel("<unread>");
|
||||
|
||||
public AnalogAxisPanel(Component ax) {
|
||||
super(ax);
|
||||
add(analogState,BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
protected void renderData(){
|
||||
String extra = "";
|
||||
if (getAxis().getDeadZone() >= Math.abs(data))
|
||||
extra = " (DEADZONE)";
|
||||
analogState.setText(""+data+extra);
|
||||
analogState.repaint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static class ControllerWindow extends JFrame {
|
||||
Controller ca;
|
||||
Map axes_to_panels = new HashMap();
|
||||
boolean disabled = false;
|
||||
|
||||
public ControllerWindow(JFrame frame,Controller ca){
|
||||
super(ca.getName());
|
||||
this.setName(ca.getName());
|
||||
this.ca = ca;
|
||||
Container c = this.getContentPane();
|
||||
c.setLayout(new BorderLayout());
|
||||
Component[] components = ca.getComponents();
|
||||
System.out.println("Component count = "+components.length);
|
||||
if (components.length>0) {
|
||||
int width = (int)Math.ceil(Math.sqrt(components.length));
|
||||
JPanel p = new JPanel();
|
||||
p.setLayout(new GridLayout(width,0));
|
||||
for(int j=0;j<components.length;j++){
|
||||
addAxis(p,components[j]);
|
||||
}
|
||||
c.add(new JScrollPane(p),BorderLayout.CENTER);
|
||||
}
|
||||
setSize(400,400);
|
||||
setLocation(50,50);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
public boolean disabled() {
|
||||
return disabled;
|
||||
}
|
||||
|
||||
private void setDisabled(boolean b){
|
||||
disabled = b;
|
||||
if (!disabled){
|
||||
this.setTitle(ca.getName());
|
||||
System.out.println(ca.getName()+" enabled");
|
||||
} else {
|
||||
this.setTitle(ca.getName()+" DISABLED!");
|
||||
System.out.println(ca.getName()+" disabled");
|
||||
}
|
||||
repaint();
|
||||
}
|
||||
|
||||
private void addAxis(JPanel p, Component ax){
|
||||
JPanel p2;
|
||||
if (ax.isAnalog()) {
|
||||
p2 = new AnalogAxisPanel(ax);
|
||||
} else {
|
||||
if (ax.getIdentifier() == Component.Identifier.Axis.POV) {
|
||||
p2 = new DigitalHatPanel(ax);
|
||||
} else {
|
||||
p2 = new DigitalAxisPanel(ax);
|
||||
}
|
||||
}
|
||||
p.add(p2);
|
||||
axes_to_panels.put(ax, p2);
|
||||
}
|
||||
|
||||
public void poll(){
|
||||
if (!ca.poll()) {
|
||||
if (!disabled()){
|
||||
setDisabled(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (disabled()){
|
||||
setDisabled(false);
|
||||
}
|
||||
EventQueue event_queue = ca.getEventQueue();
|
||||
Event event = new Event();
|
||||
while (event_queue.getNextEvent(event)) {
|
||||
AxisPanel panel = (AxisPanel)axes_to_panels.get(event.getComponent());
|
||||
panel.setPollData(event.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static final long HEARTBEATMS =100; // 10th of a second
|
||||
List controllers = new ArrayList();
|
||||
|
||||
public ControllerEventTest() {
|
||||
super("Controller Event Test. Version: " + Version.getVersion());
|
||||
ControllerEnvironment ce = ControllerEnvironment.getDefaultEnvironment();
|
||||
Controller[] ca = ce.getControllers();
|
||||
for(int i =0;i<ca.length;i++){
|
||||
makeController(ca[i]);
|
||||
}
|
||||
|
||||
new Thread(new Runnable() {
|
||||
public void run(){
|
||||
try {
|
||||
while(true){
|
||||
for(Iterator i=controllers.iterator();i.hasNext();){
|
||||
try {
|
||||
ControllerWindow cw = (ControllerWindow)i.next();
|
||||
cw.poll();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Thread.sleep(HEARTBEATMS);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
pack();
|
||||
setSize(400,400);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
private void makeController(Controller c) {
|
||||
Controller[] subControllers = c.getControllers();
|
||||
if (subControllers.length == 0 ) {
|
||||
createControllerWindow(c);
|
||||
} else {
|
||||
for(int i=0;i<subControllers.length;i++){
|
||||
makeController(subControllers[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createControllerWindow(Controller c){
|
||||
controllers.add(new ControllerWindow(this,c));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
new ControllerEventTest().setVisible(true);
|
||||
}
|
||||
|
||||
}
|
||||
305
tests/src/main/java/net/java/games/input/ControllerReadTest.java
Normal file
305
tests/src/main/java/net/java/games/input/ControllerReadTest.java
Normal file
|
|
@ -0,0 +1,305 @@
|
|||
/*
|
||||
* ConrtollerReadTest.java
|
||||
*
|
||||
* Created on May 5, 2003, 3:15 PM
|
||||
*/
|
||||
/*****************************************************************************
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistribution of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistribution in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materails provided with the distribution.
|
||||
*
|
||||
* Neither the name Sun Microsystems, Inc. or the names of the contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
|
||||
* ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
|
||||
* NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND
|
||||
* ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS
|
||||
* A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS
|
||||
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
|
||||
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
|
||||
* INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY
|
||||
* OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*
|
||||
* You acknowledge that this software is not designed or intended for us in
|
||||
* the design, construction, operation or maintenance of any nuclear facility
|
||||
*
|
||||
*****************************************************************************/
|
||||
package net.java.games.input;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Container;
|
||||
import java.awt.GridLayout;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
|
||||
import net.java.games.input.Component;
|
||||
import net.java.games.input.Controller;
|
||||
import net.java.games.input.ControllerEnvironment;
|
||||
import net.java.games.input.Version;
|
||||
|
||||
public class ControllerReadTest extends JFrame{
|
||||
private abstract static class AxisPanel extends JPanel{
|
||||
Component axis;
|
||||
float data;
|
||||
|
||||
public AxisPanel(Component ax){
|
||||
axis = ax;
|
||||
setLayout(new BorderLayout());
|
||||
add(new JLabel(ax.getName()+"("+ax.getIdentifier()+")"),
|
||||
BorderLayout.NORTH);
|
||||
}
|
||||
|
||||
public void poll(){
|
||||
data = axis.getPollData();
|
||||
renderData();
|
||||
}
|
||||
|
||||
public Component getAxis() {
|
||||
return axis;
|
||||
}
|
||||
|
||||
protected abstract void renderData();
|
||||
}
|
||||
|
||||
private static class DigitalAxisPanel extends AxisPanel {
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalAxisPanel(Component ax) {
|
||||
super(ax);
|
||||
add(digitalState,BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
protected void renderData(){
|
||||
if (data == 0.0f){
|
||||
digitalState.setBackground(getBackground());
|
||||
digitalState.setText("OFF");
|
||||
} else if ( data == 1.0f) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("ON");
|
||||
}else { // shoudl never happen
|
||||
digitalState.setBackground(Color.red);
|
||||
digitalState.setText("ERR:"+data);
|
||||
}
|
||||
digitalState.repaint();
|
||||
}
|
||||
}
|
||||
|
||||
private static class DigitalHatPanel extends AxisPanel {
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalHatPanel(Component ax) {
|
||||
super(ax);
|
||||
add(digitalState,BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
protected void renderData(){
|
||||
if (data == Component.POV.OFF){
|
||||
digitalState.setBackground(getBackground());
|
||||
digitalState.setText("OFF");
|
||||
} else if ( data == Component.POV.UP) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("UP");
|
||||
} else if ( data == Component.POV.UP_RIGHT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("UP+RIGHT");
|
||||
} else if ( data == Component.POV.RIGHT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("RIGHT");
|
||||
} else if ( data == Component.POV.DOWN_RIGHT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("DOWN+RIGHT");
|
||||
} else if ( data == Component.POV.DOWN) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("DOWN");
|
||||
} else if ( data == Component.POV.DOWN_LEFT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("DOWN+LEFT");
|
||||
} else if ( data == Component.POV.LEFT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("LEFT");
|
||||
} else if ( data == Component.POV.UP_LEFT) {
|
||||
digitalState.setBackground(Color.green);
|
||||
digitalState.setText("UP+LEFT");
|
||||
}else { // shoudl never happen
|
||||
digitalState.setBackground(Color.red);
|
||||
digitalState.setText("ERR:"+data);
|
||||
}
|
||||
digitalState.repaint();
|
||||
}
|
||||
}
|
||||
private static class AnalogAxisPanel extends AxisPanel {
|
||||
JLabel analogState = new JLabel("<unread>");
|
||||
|
||||
public AnalogAxisPanel(Component ax) {
|
||||
super(ax);
|
||||
add(analogState,BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
protected void renderData(){
|
||||
String extra = "";
|
||||
if (getAxis().getDeadZone() >= Math.abs(data))
|
||||
extra = " (DEADZONE)";
|
||||
analogState.setText(""+data+extra);
|
||||
analogState.repaint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static class ControllerWindow extends JFrame {
|
||||
Controller ca;
|
||||
List axisList = new ArrayList();
|
||||
boolean disabled = false;
|
||||
|
||||
public ControllerWindow(JFrame frame,Controller ca){
|
||||
super(ca.getName());
|
||||
this.setName(ca.getName());
|
||||
this.ca = ca;
|
||||
Container c = this.getContentPane();
|
||||
c.setLayout(new BorderLayout());
|
||||
Component[] components = ca.getComponents();
|
||||
System.out.println("Component count = "+components.length);
|
||||
if (components.length>0) {
|
||||
int width = (int)Math.ceil(Math.sqrt(components.length));
|
||||
JPanel p = new JPanel();
|
||||
p.setLayout(new GridLayout(width,0));
|
||||
for(int j=0;j<components.length;j++){
|
||||
addAxis(p,components[j]);
|
||||
}
|
||||
c.add(new JScrollPane(p),BorderLayout.CENTER);
|
||||
}
|
||||
setSize(400,400);
|
||||
setLocation(50,50);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
public boolean disabled() {
|
||||
return disabled;
|
||||
}
|
||||
|
||||
private void setDisabled(boolean b){
|
||||
disabled = b;
|
||||
if (!disabled){
|
||||
this.setTitle(ca.getName());
|
||||
System.out.println(ca.getName()+" enabled");
|
||||
} else {
|
||||
this.setTitle(ca.getName()+" DISABLED!");
|
||||
System.out.println(ca.getName()+" disabled");
|
||||
}
|
||||
repaint();
|
||||
}
|
||||
|
||||
private void addAxis(JPanel p, Component ax){
|
||||
JPanel p2;
|
||||
if (ax.isAnalog()) {
|
||||
p2 = new AnalogAxisPanel(ax);
|
||||
} else {
|
||||
if (ax.getIdentifier() == Component.Identifier.Axis.POV) {
|
||||
p2 = new DigitalHatPanel(ax);
|
||||
} else {
|
||||
p2 = new DigitalAxisPanel(ax);
|
||||
}
|
||||
}
|
||||
p.add(p2);
|
||||
axisList.add(p2);
|
||||
//ax.setPolling(true);
|
||||
}
|
||||
|
||||
public void poll(){
|
||||
if (!ca.poll()) {
|
||||
if (!disabled()){
|
||||
setDisabled(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (disabled()){
|
||||
setDisabled(false);
|
||||
}
|
||||
//System.out.println("Polled "+ca.getName());
|
||||
for(Iterator i =axisList.iterator();i.hasNext();){
|
||||
try {
|
||||
((AxisPanel)i.next()).poll();
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static final long HEARTBEATMS =100; // 10th of a second
|
||||
List controllers = new ArrayList();
|
||||
|
||||
public ControllerReadTest() {
|
||||
super("Controller Read Test. Version: " + Version.getVersion());
|
||||
ControllerEnvironment ce = ControllerEnvironment.getDefaultEnvironment();
|
||||
Controller[] ca = ce.getControllers();
|
||||
for(int i =0;i<ca.length;i++){
|
||||
makeController(ca[i]);
|
||||
}
|
||||
|
||||
new Thread(new Runnable() {
|
||||
public void run(){
|
||||
try {
|
||||
while(true){
|
||||
for(Iterator i=controllers.iterator();i.hasNext();){
|
||||
try {
|
||||
ControllerWindow cw = (ControllerWindow)i.next();
|
||||
cw.poll();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Thread.sleep(HEARTBEATMS);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
pack();
|
||||
setSize(400,400);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
private void makeController(Controller c) {
|
||||
Controller[] subControllers = c.getControllers();
|
||||
if (subControllers.length == 0 ) {
|
||||
createControllerWindow(c);
|
||||
} else {
|
||||
for(int i=0;i<subControllers.length;i++){
|
||||
makeController(subControllers[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createControllerWindow(Controller c){
|
||||
controllers.add(new ControllerWindow(this,c));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
new ControllerReadTest().setVisible(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* ControllerScanner.java
|
||||
*
|
||||
* Created on April 14, 2003, 3:45 PM
|
||||
*/
|
||||
/*****************************************************************************
|
||||
* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistribution of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistribution in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materails provided with the distribution.
|
||||
*
|
||||
* Neither the name Sun Microsystems, Inc. or the names of the contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* This software is provided "AS IS," without a warranty of any kind.
|
||||
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
|
||||
* ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
|
||||
* NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND
|
||||
* ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS
|
||||
* A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS
|
||||
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
|
||||
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
|
||||
* INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY
|
||||
* OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE,
|
||||
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*
|
||||
* You acknowledge that this software is not designed or intended for us in
|
||||
* the design, construction, operation or maintenance of any nuclear facility
|
||||
*
|
||||
*****************************************************************************/
|
||||
package net.java.games.input;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author administrator
|
||||
*/
|
||||
import net.java.games.input.*;
|
||||
|
||||
public class ControllerTextTest {
|
||||
ControllerEnvironment ce;
|
||||
/** Creates a new instance of ControllerScanner */
|
||||
public ControllerTextTest() {
|
||||
ce = ControllerEnvironment.getDefaultEnvironment();
|
||||
System.out.println("JInput version: " + Version.getVersion());
|
||||
System.out.println("Controller Env = "+ce.toString());
|
||||
|
||||
|
||||
Controller[] ca = ce.getControllers();
|
||||
for(int i =0;i<ca.length;i++){
|
||||
System.out.println(ca[i].getName());
|
||||
System.out.println("Type: "+ca[i].getType().toString());
|
||||
Component[] components = ca[i].getComponents();
|
||||
System.out.println("Component Count: "+components.length);
|
||||
for(int j=0;j<components.length;j++){
|
||||
System.out.println("Component "+j+": "+components[j].getName());
|
||||
System.out.println(" Identifier: "+
|
||||
components[j].getIdentifier().getName());
|
||||
System.out.print(" ComponentType: ");
|
||||
if (components[j].isRelative()) {
|
||||
System.out.print("Relative");
|
||||
} else {
|
||||
System.out.print("Absolute");
|
||||
}
|
||||
if (components[j].isAnalog()) {
|
||||
System.out.print(" Analog");
|
||||
} else {
|
||||
System.out.print(" Digital");
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
System.out.println("---------------------------------");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
new ControllerTextTest();
|
||||
}
|
||||
|
||||
}
|
||||
74
tests/src/main/java/net/java/games/input/RumbleTest.java
Normal file
74
tests/src/main/java/net/java/games/input/RumbleTest.java
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* RumbleTest.java
|
||||
*
|
||||
* Created on 01 December 2003, 23:02
|
||||
*/
|
||||
package net.java.games.input;
|
||||
|
||||
import net.java.games.input.ControllerEnvironment;
|
||||
import net.java.games.input.Controller;
|
||||
import net.java.games.input.Rumbler;
|
||||
import net.java.games.input.Version;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jeremy
|
||||
*/
|
||||
public class RumbleTest {
|
||||
|
||||
/** Creates a new instance of RumbleTest */
|
||||
public RumbleTest() {
|
||||
ControllerEnvironment ca = ControllerEnvironment.getDefaultEnvironment();
|
||||
System.out.println("JInput version: " + Version.getVersion());
|
||||
Controller[] controllers = ca.getControllers();
|
||||
for(int i=0;i<controllers.length;i++) {
|
||||
System.out.println("Scanning " + controllers[i].getName());
|
||||
Rumbler[] rumblers = controllers[i].getRumblers();
|
||||
System.out.println("Found " + rumblers.length + " rumblers");
|
||||
for(int j=0;j<rumblers.length;j++) {
|
||||
System.out.println("Rumbler " + rumblers[j].getAxisName() + " on axis " + rumblers[j].getAxisIdentifier());
|
||||
System.out.println("Rumbling with intensity: " + 0.5f);
|
||||
rumblers[j].rumble(0.5f);
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
System.out.println("Rumbling with intensity: " + 1.0f);
|
||||
rumblers[j].rumble(1f);
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
System.out.println("Fading rumble to -1");
|
||||
for(float k=1.0f;k>-1.0f;) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
rumblers[j].rumble(k);
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
k-=((float)(System.currentTimeMillis() - startTime))/1000f;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
System.out.println("Rumbling with intensity: " + 0.0f);
|
||||
rumblers[j].rumble(0f);
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
new RumbleTest();
|
||||
}
|
||||
|
||||
}
|
||||
14
tests/src/main/java/net/java/games/input/VersionTest.java
Normal file
14
tests/src/main/java/net/java/games/input/VersionTest.java
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package net.java.games.input;
|
||||
|
||||
import net.java.games.input.Version;
|
||||
|
||||
public class VersionTest {
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
System.out.println("JInput version: " + Version.getVersion());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/**
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer. Redistributions in binary
|
||||
* form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* The name of the author may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
|
||||
*/
|
||||
package net.java.games.input.applet;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.io.IOException;
|
||||
|
||||
import net.java.games.input.ControllerEventTest;
|
||||
import net.java.games.input.applet.JInputAppletResourceLoader;
|
||||
|
||||
public class ControllerEventTestApplet extends Applet {
|
||||
|
||||
public void init() {
|
||||
try {
|
||||
new JInputAppletResourceLoader().loadResources(getCodeBase());
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
new ControllerEventTest().setVisible(true);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/**
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer. Redistributions in binary
|
||||
* form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* The name of the author may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
|
||||
*/
|
||||
package net.java.games.input.applet;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.io.IOException;
|
||||
|
||||
import net.java.games.input.ControllerReadTest;
|
||||
import net.java.games.input.applet.JInputAppletResourceLoader;
|
||||
|
||||
public class ControllerReadTestApplet extends Applet {
|
||||
|
||||
public void init() {
|
||||
try {
|
||||
new JInputAppletResourceLoader().loadResources(getCodeBase());
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
new ControllerReadTest().setVisible(true);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue