aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFirst Last <[email protected]>2004-04-21 16:19:43 +0000
committerFirst Last <[email protected]>2004-04-21 16:19:43 +0000
commit70ffb843c5813f07b3e9d34f89343e5064900a3c (patch)
tree2558b7c5b7c744ed33ea3a91b7192d8cd3d59653
parent2b0bdf9979ac5dd092883685843000c9f0884f4a (diff)
This commit was manufactured by cvs2svn to create tag 'Tested'.Tested
git-svn-id: file:///home/sven/projects/JOGL/git-svn/svn-server-sync/jinput/tags/Tested@79 e343933a-64c8-49c5-92b1-88f2ce3e89e8
-rw-r--r--README.txt92
-rw-r--r--build.xml110
-rw-r--r--coreAPI/README.txt54
-rw-r--r--coreAPI/build.xml130
-rw-r--r--coreAPI/src/java/net/java/games/input/AbstractAxis.java153
-rw-r--r--coreAPI/src/java/net/java/games/input/AbstractController.java194
-rw-r--r--coreAPI/src/java/net/java/games/input/Axis.java365
-rw-r--r--coreAPI/src/java/net/java/games/input/Controller.java264
-rw-r--r--coreAPI/src/java/net/java/games/input/ControllerEnvironment.java140
-rw-r--r--coreAPI/src/java/net/java/games/input/ControllerEvent.java61
-rw-r--r--coreAPI/src/java/net/java/games/input/ControllerListener.java55
-rw-r--r--coreAPI/src/java/net/java/games/input/DefaultControllerEnvironment.java261
-rw-r--r--coreAPI/src/java/net/java/games/input/Keyboard.java168
-rw-r--r--coreAPI/src/java/net/java/games/input/Mouse.java396
-rw-r--r--coreAPI/src/java/net/java/games/input/PluginClassLoader.java173
-rw-r--r--coreAPI/src/java/net/java/games/input/Rumbler.java67
-rw-r--r--coreAPI/src/java/net/java/games/input/StandardKeyboard.java261
-rw-r--r--coreAPI/src/java/net/java/games/input/Version.java104
-rw-r--r--coreAPI/src/java/net/java/games/input/package.html13
-rw-r--r--coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java291
-rw-r--r--coreAPI/src/java/net/java/games/input/test/ControllerTextTest.java89
-rw-r--r--coreAPI/src/java/net/java/games/input/test/RumbleTest.java71
-rw-r--r--plugins/DX8/README.txt46
-rw-r--r--plugins/DX8/build.xml103
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java219
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputDevice.java227
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputEnvironmentPlugin.java186
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputKeyboard.java208
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputMouse.java352
-rw-r--r--plugins/DX8/src/java/net/java/games/input/DirectInputRumbler.java101
-rw-r--r--plugins/DX8/src/native/input.cpp1114
-rw-r--r--plugins/OSX/build.xml81
-rw-r--r--plugins/OSX/src/java/net/java/games/input/InputController.java13
-rw-r--r--plugins/OSX/src/java/net/java/games/input/InputControllerElement.java195
-rwxr-xr-xplugins/OSX/src/java/net/java/games/input/OSXEnvironmentPlugin.java484
-rw-r--r--plugins/OSX/src/java/net/java/games/input/OSXGamepad.java82
-rw-r--r--plugins/OSX/src/java/net/java/games/input/OSXJoystick.java83
-rw-r--r--plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java253
-rw-r--r--plugins/OSX/src/java/net/java/games/input/OSXMouse.java251
-rw-r--r--plugins/OSX/src/native/build.xml23
-rw-r--r--plugins/OSX/src/native/jinputjnilib.c839
-rw-r--r--www/index.html128
42 files changed, 0 insertions, 8500 deletions
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 7f757a1..0000000
--- a/README.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-Project: net.java.games.*
-Purpose: Open source game libraries
-Authors:
- -- input API design:
- Michael Martak, Sun Microsystems
- Thomas Daniel, Sony Computer Entertainment
- -- input API original author:
- Michael Martak,Sun Microsystems
- -- input API original release author:
- Jeff Kesselman, Game Technology Architect,
- Advanced Software Technologies Group,
- Sun Microsystems.
- -- this file updated on 06/06/2003 by Jeff Kesselman
-
-
-Introduction:
-
-This is the source tree for the Java Game Initiative (JGI) Open Source
-client game programming APIs.
-
-Build Requirements:
-
-Note: This build depends on there being a jutils.jar in the lib directories
-of both the coreAPI and the plug-ins. If you install the JGI Jutils project
-at the same root as this project and build it first it will put jars in the
-right places.
-
-This project has been built in the follwing environment.
- -- Win32 (Win 2000 in the case of our machine)
- -- Sun J2SDK 1.4 (available at java.sun.com)
- -- MinGW 2.0.0 plus the following updates: (all available at www.mingw.org)
- -- binutils 2.13.90
- -- w32api-2.2
- -- mingw-runtime-2.4
- -- "Peter Puck's" directx8 binding
- (http://www.urebelscum.speedhost.com/download.html, file: dx8libs.zip
- (Copy all of his *.a library files into the MingW "lib" directory)
- -- The DirectX9 SDK available at the microsoft directX site.
- (http://www.microsoft.com/directx)
- The Win32 plug-in build.xml file expects this to be installed in
- c:\dx9. You can install it elsewher but then you will have to modify
- the reference in that build.xml ant script.
- -- ANT 1.4.1 (available at apache.org)
-
-
-Directory Organization:
-
-The root contains a master ANT build.xml and the following sub directories:
- -- coreAPI: The actual API
- -- plugins: Directories for bildign controlelr plugins.
- (Currently the only plug in is the Win32 DX8 plugin.)
-
-Build instructions:
-
-To clean: ant clean
-To build: ant all (or just ant)
-To build docs: ant javadoc
-To test:
- First cd to coreAPI. There are currently 2 tests there.
- Textest: A simple discovery test that dumps
- the data about the discovered controllers to stdout
- To run: ant textest
- Readtest: A test that creates a window for each discovered
- controller (or sub-controller) which displays the
- current state of all the controller's axiis.
- (Note: The windows currrently all open at the same
- place on the screen so yo uwill have to move them to
- see them all.)
- To run: ant readtest
-
-Release Info:
- Initial Release: This release contains an implementation of the input
- API designed by Mike Martak of Sun and Thomas (?) of Sony CEA for
- the WIn32 platform. All the code in src/input is cross platform. The
- Win32 code is segregated to the DirectX plugin (src/DXplugin) which
- depends on DirectInput from DX7 (or later).
-
- 05/09/2003: A number of bugs and problems with the DXPlugin are fixed in this
- release. This release also brings the code up to date using the DI8
- interface. This thus is the first release that requries Peter Puck's
- DX8 bindings to compile with MinGW.
-
- 05/09/2003 (second update):
- This version adds a new standard value type to the API.
- Axis.POV holds standard definitions for values for POV (hat) switches
- -- Axis.POV.CENTER and Axis.POV.OFF are synonmous and are
- the center position.
- -- Axis.POV.UP, Axis.POV.DOWN, Axis.POV.LEFT and Axis.POV.RIGHT
- should be self explainatory.
- Any hat that claims to be "normalized" will return these values. (It is
- recommended that all hats be normalized by the systemn specific plugins.)
-
diff --git a/build.xml b/build.xml
deleted file mode 100644
index d5642b2..0000000
--- a/build.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Written to assume that classpath is rooted in the current directory. -->
-<!-- So this should be OK if you make this script in the root of a filesystem. -->
-<!-- If not, you may prefer to adjust the basedir, or move some directories around. -->
-<!-- The idea is that both Ant and NetBeans have to know what the package root is -->
-<!-- for the classes in your application. -->
-<project name="Sun Games Initiative Client Technologies" basedir="." default="all">
-
- <!-- Don't worry if you don't know the Ant syntax completely or need help on some tasks! -->
- <!-- The standard Ant documentation is bundled. See Help | Help Sets | Ant 1.4.1 Manual. -->
-
- <target name="init">
- <!-- You can set up any variables you want used throughout the script here. -->
- <!-- <property name="hello" value="world"/ -->
- <!-- To use e.g. Jikes, uncomment this line. -->
- <!-- (Or make the same change in Tools | Options | Ant Settings | Properties.) -->
- <!-- <property name="build.compiler" value="jikes"/> -->
- <!-- You might like to set up some overridable paths, etc.: -->
- <!-- <property name="mylib" value="../lib/mylib.jar"/> -->
-
- <!-- If we are running in windows, set dx8 property to true -->
- <condition property="dx8" >
- <os family="windows" />
- </condition>
-
- <!-- If we are running in linux, set linux property to true -->
- <condition property="linux" >
- <!--<os family="unix" />-->
- <os name="linux" />
- </condition>
-
- <!-- If we are running in Mac OS X, set osx property to true -->
- <condition property="osx" >
- <and>
- <os family="mac" />
- <os family="unix" />
- </and>
- </condition>
- </target>
-
- <target name="core" depends="init">
- <!-- Both srcdir and destdir should be package roots. -->
- <!-- They could be different of course; in that case NetBeans can also be set -->
- <!-- up to compile to a different filesystem in the same way; see Compiler Types: -->
- <ant dir="coreAPI" />
- </target>
-
- <target name="windows_plugin" depends="core" if="dx8" >
- <!-- Both srcdir and destdir should be package roots. -->
- <!-- They could be different of course; in that case NetBeans can also be set -->
- <!-- up to compile to a different filesystem in the same way; see Compiler Types: -->
- <ant dir="plugins/DX8" />
- </target>
-
- <target name="linux_plugin" depends="core" if="linux" >
- <!-- Both srcdir and destdir should be package roots. -->
- <!-- They could be different of course; in that case NetBeans can also be set -->
- <!-- up to compile to a different filesystem in the same way; see Compiler Types: -->
- <ant dir="plugins/linux" />
- </target>
-
- <target name="OSX_plugin" depends="core" if="osx" >
- <ant dir="plugins/OSX" />
- </target>
-
- <target name="javadoc" depends="init">
- <!-- Both srcdir and destdir should be package roots. -->
- <!-- They could be different of course; in that case NetBeans can also be set -->
- <!-- up to compile to a different filesystem in the same way; see Compiler Types: -->
- <ant dir="coreAPI" target="javadoc"/>
- <ant dir="plugins/DX8" target="javadoc"/>
- <ant dir="plugins/linux" target="javadoc"/>
- <ant dir="plugins/OSX" target="javadoc"/>
- </target>
-
- <target name="compile" depends="core,windows_plugin,linux_plugin,OSX_plugin" />
-
- <target name="all" depends="init,compile" description="Build everything.">
- <echo message="Application built. Hello ${hello}!"/>
- </target>
-
- <target name="clean" depends="init" description="Clean all build products.">
- <ant dir="plugins/DX8" target="clean"/>
- <ant dir="plugins/linux" target="clean"/>
- <ant dir="plugins/OSX" target="clean"/>
- <ant dir="coreAPI" target="clean"/>
- <delete failonerror="no">
- <fileset dir="dist">
- <include name="**/*"/>
- </fileset>
- </delete>
- </target>
-
- <target name="dist" depends="init,compile" description="Build the distribution file for this system">
- <mkdir dir="dist"/>
- <mkdir dir="dist/controller"/>
- <copy file="coreAPI/bin/jinput.jar" todir="dist"/>
- <copy file="coreAPI/lib/jutils.jar" todir="dist"/>
- <copy todir="dist/controller">
- <fileset dir="coreAPI/src/tests/controller/">
- <include name="**/*"/>
- </fileset>
- </copy>
- <zip destfile="dist/jinput_${os.name}_dist.zip"
- basedir="dist"
- excludes="*.zip"
- />
- </target>
-</project>
diff --git a/coreAPI/README.txt b/coreAPI/README.txt
deleted file mode 100644
index 90caf93..0000000
--- a/coreAPI/README.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-This file modified last on 06/06/2003 by Jeff Kesselman
-
-This is the source tree for the core input API.
-
-Directory Organization:
-
-The root contains a master ANT build.xml.
-After a successful build of the project you will have the following sub directories:
- -- apidocs Where the javadocs get built to
- -- lib Where dependant libraries are kept.
- -- bin Where the actual API is built to
- -- src The source files.
- -- src/test Execution directories and data for tests.
-
-Build instructions:
-
-To clean: ant clean
-To build: ant all (or just ant)
-To build docs: ant javadoc
-To test:
- Textest: A simple discovery test that dumps
- the data about the discovered controllers to stdout
- To run: ant textest
- Readtest: A test that creates a window for each discovered
- controller (or sub-controller) which displays the
- current state of all the controller's axiis.
- (Note: The windows currrently all open at the same
- place on the screen so yo uwill have to move them to
- see them all.)
- To run: ant readtest
-
-
-Release Info:
- Initial Release: This release contains an implementation of the input
- API designed by Mike Martak of Sun and Thomas (?) of Sony CEA for
- the WIn32 platform. All the code in src/input is cross platform. The
- Win32 code is segregated to the DirectX plugin (src/DXplugin) which
- depends on DirectInput from DX7 (or later).
-
- 05/09/2003: A number of bugs and problems with the DXPlugin are fixed in this
- release. This release also brings the code up to date using the DI8
- interface. This thus is the first release that requries Peter Puck's
- DX8 bindings to compile with MinGW.
-
- 05/09/2003 (second update):
- This version adds a new standard value type to the API.
- Axis.POV holds standard definitions for values for POV (hat) switches
- -- Axis.POV.CENTER and Axis.POV.OFF are synonmous and are
- the center position.
- -- Axis.POV.UP, Axis.POV.DOWN, Axis.POV.LEFT and Axis.POV.RIGHT
- should be self explainatory.
- Any hat that claims to be "normalized" will return these values. (It is
- recommended that all hats be normalized by the systemn specific plugins.)
-
diff --git a/coreAPI/build.xml b/coreAPI/build.xml
deleted file mode 100644
index 81017c0..0000000
--- a/coreAPI/build.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Written to assume that classpath is rooted in the current directory. -->
-<!-- So this should be OK if you make this script in the root of a filesystem. -->
-<!-- If not, you may prefer to adjust the basedir, or move some directories around. -->
-<!-- The idea is that both Ant and NetBeans have to know what the package root is -->
-<!-- for the classes in your application. -->
-<project name="Game Input API" basedir="." default="all">
-
- <!-- Don't worry if you don't know the Ant syntax completely or need help on some tasks! -->
- <!-- The standard Ant documentation is bundled. See Help | Help Sets | Ant 1.4.1 Manual. -->
-
- <target name="init">
- <!-- You can set up any variables you want used throughout the script here. -->
- <!-- property name="hello" value="world" -->
- <!-- To use e.g. Jikes, uncomment this line. -->
- <!-- (Or make the same change in Tools | Options | Ant Settings | Properties.) -->
- <!-- <property name="build.compiler" value="jikes"/> -->
- <!-- You might like to set up some overridable paths, etc.: -->
- <property name="utils" value="lib/jutils.jar"/>
- <mkdir dir="apidocs"/>
- <mkdir dir="classes"/>
- <mkdir dir="bin"/>
- </target>
-
- <target name="compile" depends="init">
- <!-- Both srcdir and destdir should be package roots. -->
- <!-- They could be different of course; in that case NetBeans can also be set -->
- <!-- up to compile to a different filesystem in the same way; see Compiler Types: -->
- <javac srcdir="src/java" destdir="classes" debug="true" deprecation="true" source="1.4">
- <include name="net/**"/>
- <!-- To add something to the classpath: -->
- <classpath>
- <pathelement location="${utils}"/>
- </classpath>
- <!-- To exclude some files: -->
- <!--
- <exclude name="com/foo/SomeFile.java"/>
- <exclude name="com/foo/somepackage/"/>
- -->
- </javac>
- </target>
-
- <target name="jar" depends="init,compile">
- <!-- To make a standalone app: -->
- <!-- 1. Create a myapp.mf manifest somewhere. -->
- <!-- 2. Put in it: -->
- <!-- Manifest-Version: 1.0 -->
- <!-- Main-Class: com.foo.Main -->
- <!-- 3. Pass to <jar>: manifest="myapp.mf" -->
- <jar jarfile="bin/jinput.jar" compress="true" basedir="classes">
- <include name="net/**"/>
- <exclude name="**/*.java"/>
- <exclude name="**/*.form"/>
- <exclude name="myapp.mf"/>
- <exclude name="myapp.jar"/>
- </jar>
- <copy file="bin/jinput.jar" todir="../plugins/DX8/lib" />
- </target>
-
-
- <target name="texttest" depends="init,all" description="Try running it.">
- <java classname="net.java.games.input.test.ControllerTextTest"
- fork="true" failonerror="true" dir="src/tests">
- <classpath>
- <pathelement location="bin/jinput.jar"/>
- <pathelement location="${utils}"/>
- </classpath>
- <!-- Pass some args, perhaps: -->
- <!-- <arg value="-myfile"/> -->
- <!-- Will be given as an absolute path: -->
- <!-- <arg file="myfile.txt"/> -->
- </java>
- </target>
- <target name="readtest" depends="init,all" description="Try running it.">
- <java classname="net.java.games.input.test.ControllerReadTest"
- fork="true" failonerror="true" dir="src/tests">
- <classpath>
- <pathelement location="bin/jinput.jar"/>
- <pathelement location="${utils}"/>
- </classpath>
- <!-- Pass some args, perhaps: -->
- <!-- <arg value="-myfile"/> -->
- <!-- Will be given as an absolute path: -->
- <!-- <arg file="myfile.txt"/> -->
- </java>
- </target>
- <target name="rumbletest" depends="init,all" description="Try running it.">
- <java classname="net.java.games.input.test.RumbleTest"
- fork="true" failonerror="true" dir="src/tests">
- <classpath>
- <pathelement location="bin/jinput.jar"/>
- <pathelement location="${utils}"/>
- </classpath>
- <!-- Pass some args, perhaps: -->
- <!-- <arg value="-myfile"/> -->
- <!-- Will be given as an absolute path: -->
- <!-- <arg file="myfile.txt"/> -->
- </java>
- </target>
-
- <target name="javadoc" depends="init" description="Javadoc for my API.">
- <javadoc packagenames="net.java.games.input.*"
- destdir="apidocs"
- additionalparam="-source 1.4">
- <sourcepath>
- <pathelement location="src/java"/>
- </sourcepath>
- <classpath>
- <pathelement location="${utils}"/>
- </classpath>
- </javadoc>
- </target>
-
- <target name="clean" depends="init" description="Clean all build products.">
- <delete>
- <fileset dir="classes">
- <include name="**/*.class"/>
- </fileset>
- </delete>
- <delete file="bin/jinput.jar"/>
- <delete dir="apidocs"/>
- <delete file="../plugins/DX8/lib/jinput.jar" />
- </target>
-
- <target name="all" depends="init,jar" description="Build everything.">
- <echo message="JInput has been built and jinput.jar is located in the bin directory."/>
- </target>
-
-</project>
diff --git a/coreAPI/src/java/net/java/games/input/AbstractAxis.java b/coreAPI/src/java/net/java/games/input/AbstractAxis.java
deleted file mode 100644
index b0fa021..0000000
--- a/coreAPI/src/java/net/java/games/input/AbstractAxis.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * Skeleton implementation of a named axis.
- */
-public abstract class AbstractAxis implements Axis {
-
- /**
- * Human-readable name for this Axis
- */
- protected String name;
-
- /**
- * Identifier for the axis
- */
- protected Identifier id;
-
- /**
- * Whether this axis is ready to receive polling data
- */
- private boolean polling;
-
- /**
- * Protected constructor
- * @param name A name for the axis
- */
- protected AbstractAxis(String name, Identifier id) {
- this.name = name;
- this.id = id;
- this.polling = true;
- }
-
- /**
- * Returns the type or identifier of the axis.
- */
- public Identifier getIdentifier() {
- return id;
- }
-
- /**
- * Returns whether or not the axis is analog, or false if it is digital.
- * @return false by default, can be overridden
- */
- public boolean isAnalog() {
- return false;
- }
-
- /**
- * Returns whether or not data polled from this axis is normalized
- * between the values of -1.0f and 1.0f.
- * @return true by default, can be overridden
- */
- public boolean isNormalized() {
- return true;
- }
-
- /**
- * Returns whether or not this axis is ready to receive polling data.
- * By default, an abstract axis is set to receive polling data.
- */
- public boolean isPolling() {
- return polling;
- }
-
- /**
- * Sets whether or not the axis should receive polling data.
- */
- public void setPolling(boolean polling) {
- this.polling = polling;
- }
-
- /**
- * Returns the suggested dead zone for this axis. Dead zone is the
- * amount polled data can vary before considered a significant change
- * in value. An application can safely ignore changes less than this
- * value in the positive or negative direction.
- * @return 0.0f by default, can be overridden
- */
- public float getDeadZone() {
- return 0.0f;
- }
-
- /**
- * Returns the data from the last time the control has been polled.
- * If this axis is a button, the value returned will be either 0.0f or 1.0f.
- * If this axis is normalized, the value returned will be between -1.0f and
- * 1.0f.
- * @return 0.0f by default, can be overridden
- */
- public float getPollData() {
- return 0.0f;
- }
-
- /**
- * Returns a human-readable name for this axis.
- */
- public String getName() {
- return name;
- }
-
- /**
- * Returns a non-localized string description of this axis.
- */
- public String toString() {
- return name;
- }
-
- /**
- * Changes the name of this Axis. This should be done only during
- * initialization of the axis so that its name remains immutable.
- */
- public void setName(String name) {
- this.name = name;
- }
-} // AbstractAxis
diff --git a/coreAPI/src/java/net/java/games/input/AbstractController.java b/coreAPI/src/java/net/java/games/input/AbstractController.java
deleted file mode 100644
index 99ee2da..0000000
--- a/coreAPI/src/java/net/java/games/input/AbstractController.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * An AbstractController is a skeleton implementation of a controller that
- * contains a fixed number of axes, controllers, and rumblers.
- */
-public abstract class AbstractController implements Controller {
-
- /**
- * Null array representing no axes
- */
- protected static final Axis[] NO_AXES = {};
-
- /**
- * Null array representing no child controllers
- */
- protected static final Controller[] NO_CONTROLLERS = {};
-
- /**
- * Null array representing no rumblers
- */
- protected static final Rumbler[] NO_RUMBLERS = {};
-
- /**
- * Human-readable name for this Controller
- */
- private final String name;
-
- /**
- * Array of axes
- */
- protected Axis[] axes;
-
- /**
- * Array of child controllers
- */
- protected Controller[] children;
-
- /**
- * Array of rumblers
- */
- protected Rumbler[] rumblers;
-
- /**
- * Protected constructor for a controller; initially contains no axes,
- * child controllers, or rumblers.
- * @param name The name for the controller
- */
- protected AbstractController(String name) {
- this(name, NO_AXES, NO_CONTROLLERS, NO_RUMBLERS);
- }
-
- /**
- * Protected constructor for a controller containing the specified
- * axes, child controllers, and rumblers
- * @param name name for the controller
- * @param axes axes for the controller
- * @param children child controllers for the controller
- * @param rumblers rumblers for the controller
- */
- protected AbstractController(String name, Axis[] axes,
- Controller[] children, Rumbler[] rumblers) {
- this.name = name;
- this.axes = axes;
- this.children = children;
- this.rumblers = rumblers;
- }
-
- /**
- * Returns the controllers connected to make up this controller, or
- * an empty array if this controller contains no child controllers.
- * The objects in the array are returned in order of assignment priority
- * (primary stick, secondary buttons, etc.).
- */
- public Controller[] getControllers() {
- return children;
- }
-
- /**
- * Returns the axes on this controller, in order of assignment priority.
- * For example, the button controller on a mouse returns an array containing
- * the primary or leftmost mouse button, followed by the secondary or
- * rightmost mouse button (if present), followed by the middle mouse button
- * (if present).
- * The array returned is an empty array if this controller contains no axes
- * (such as a logical grouping of child controllers).
- */
- public Axis[] getAxes() {
- return axes;
- }
-
- /**
- * Returns a single axis based on its identifier, or null
- * if no axis with the specified type could be found.
- * By default, AbstractController calls getAxes in this method so that
- * subclasses may lazily initialize the array of axes, if necessary.
- */
- public Axis getAxis(Axis.Identifier id) {
- // Calls getAxes() so that subclasses may lazily set the array of axes.
- Axis[] axes = getAxes();
- if (axes.length == 0) {
- return null;
- }
- for (int i = 0; i < axes.length; i++) {
- if (axes[i].getIdentifier() == id) {
- return axes[i];
- }
- }
- return null;
- }
-
- /**
- * Returns the rumblers for sending feedback to this controller, or an
- * empty array if there are no rumblers on this controller.
- */
- public Rumbler[] getRumblers() {
- return rumblers;
- }
-
- /**
- * Returns the port type for this Controller.
- * @return PortType.UNKNOWN by default, can be overridden
- */
- public PortType getPortType() {
- return PortType.UNKNOWN;
- }
-
- /**
- * Returns the zero-based port number for this Controller.
- * @return 0 by default, can be overridden
- */
- public int getPortNumber() {
- return 0;
- }
-
- /**
- * Returns a human-readable name for this Controller.
- */
- public String getName() {
- return name;
- }
-
- /**
- * Returns a non-localized string description of this controller.
- */
- public String toString() {
- return name;
- }
-
- /** Returns the type of the Controller.
- */
- public Type getType() {
- return Type.UNKNOWN;
- }
-
-} // class AbstractController
diff --git a/coreAPI/src/java/net/java/games/input/Axis.java b/coreAPI/src/java/net/java/games/input/Axis.java
deleted file mode 100644
index 438f37f..0000000
--- a/coreAPI/src/java/net/java/games/input/Axis.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * An axis is a single button, slider, or dial, which has a single range. An
- * axis can hold information for motion (linear or rotational), velocity,
- * force, or acceleration.
- */
-public interface Axis {
-
- /**
- * Returns the identifier of the axis.
- */
- public abstract Identifier getIdentifier();
-
- /**
- * Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- */
- public abstract boolean isRelative();
-
- /**
- * Returns whether or not the axis is analog, or false if it is digital.
- */
- public abstract boolean isAnalog();
-
- /**
- * Returns whether or not data polled from this axis is normalized
- * between the values of -1.0f and 1.0f.
- * @see #getPollData
- */
- public abstract boolean isNormalized();
-
- /**
- * Returns whether or not this axis is ready to receive polling data.
- * @see #getPollData
- * @see Controller#poll
- * @see #setPolling
- */
- public abstract boolean isPolling();
-
- /**
- * Sets whether or not the axis should receive polling data.
- * @see #getPollData
- * @see Controller#poll
- * @see #isPolling
- */
- public abstract void setPolling(boolean polling);
-
- /**
- * Returns the suggested dead zone for this axis. Dead zone is the
- * amount polled data can vary before considered a significant change
- * in value. An application can safely ignore changes less than this
- * value in the positive or negative direction.
- * @see #getPollData
- */
- public abstract float getDeadZone();
-
- /**
- * Returns the data from the last time the control has been polled.
- * If this axis is a button, the value returned will be either 0.0f or 1.0f.
- * If this axis is normalized, the value returned will be between -1.0f and
- * 1.0f.
- * @see Controller#poll
- */
- public abstract float getPollData();
-
- /**
- * Returns a human-readable name for this axis.
- */
- public abstract String getName();
-
- /**
- * Identifiers for different Axes.
- */
- public static class Identifier {
-
- /**
- * Name of axis type
- */
- private final String name;
-
- /**
- * Protected constructor
- */
- protected Identifier(String name) {
- this.name = name;
- }
-
- /**
- * Returns a non-localized string description of this axis type.
- */
- public String getName() {
- return name;
- }
-
- /**
- * Returns a non-localized string description of this axis type.
- */
- public String toString() {
- return name;
- }
-
- /**
- * An axis for specifying vertical data.
- */
- public static final Identifier X = new Identifier("x");
-
- /**
- * An axis for specifying horizontal data.
- */
- public static final Identifier Y = new Identifier("y");
-
- /**
- * An axis for specifying third dimensional up/down
- * data, or linear data in any direction that is
- * neither horizontal nor vertical.
- */
- public static final Identifier Z = new Identifier("z");
-
- /**
- * An axis for specifying left-right rotational data.
- */
- public static final Identifier RX = new Identifier("rx");
-
- /**
- * An axis for specifying forward-back rotational data.
- */
- public static final Identifier RY = new Identifier("ry");
-
- /**
- * An axis for specifying up-down rotational data
- * (rudder control).
- */
- public static final Identifier RZ = new Identifier("rz");
-
- /**
- * An axis for a button or key.
- */
- public static final Identifier BUTTON = new Identifier("button");
-
- /**
- * An axis for a slider or mouse wheel.
- */
- public static final Identifier SLIDER = new Identifier("slider");
-
- /**
- * An axis for a point-of-view control.
- */
- public static final Identifier POV = new Identifier("pov");
-
- /**
- * An axis for specifying vertical velocity data.
- */
- public static final Identifier X_VELOCITY =
- new Identifier("x-velocity");
-
- /**
- * An axis for specifying horizontal velocity data.
- */
- public static final Identifier Y_VELOCITY =
- new Identifier("y-velocity");
-
- /**
- * An axis for specifying third dimensional up/down velocity
- * data.
- */
- public static final Identifier Z_VELOCITY =
- new Identifier("z-velocity");
-
- /**
- * An axis for specifying left-right angular velocity data.
- */
- public static final Identifier RX_VELOCITY =
- new Identifier("rx-velocity");
-
- /**
- * An axis for specifying forward-back angular velocity data.
- */
- public static final Identifier RY_VELOCITY =
- new Identifier("ry-velocity");
-
- /**
- * An axis for specifying up-down angular velocity data.
- */
- public static final Identifier RZ_VELOCITY =
- new Identifier("rz-velocity");
-
- /**
- * An axis for slider or mouse wheel velocity data.
- */
- public static final Identifier SLIDER_VELOCITY =
- new Identifier("slider-velocity");
-
- /**
- * An axis for specifying vertical acceleration data.
- */
- public static final Identifier X_ACCELERATION =
- new Identifier("x-acceleration");
-
- /**
- * An axis for specifying horizontal acceleration data.
- */
- public static final Identifier Y_ACCELERATION =
- new Identifier("y-acceleration");
-
- /**
- * An axis for specifying third dimensional up/down acceleration
- * data.
- */
- public static final Identifier Z_ACCELERATION =
- new Identifier("z-acceleration");
-
- /**
- * An axis for specifying left-right angular acceleration data.
- */
- public static final Identifier RX_ACCELERATION =
- new Identifier("rx-acceleration");
-
- /**
- * An axis for specifying forward-back angular acceleration data.
- */
- public static final Identifier RY_ACCELERATION =
- new Identifier("ry-acceleration");
-
- /**
- * An axis for specifying up-down angular acceleration data.
- */
- public static final Identifier RZ_ACCELERATION =
- new Identifier("rz-acceleration");
-
- /**
- * An axis for slider or mouse wheel acceleration data.
- */
- public static final Identifier SLIDER_ACCELERATION =
- new Identifier("slider-acceleration");
-
- /**
- * An axis for specifying vertical force data.
- */
- public static final Identifier X_FORCE =
- new Identifier("x-force");
-
- /**
- * An axis for specifying horizontal force data.
- */
- public static final Identifier Y_FORCE =
- new Identifier("y-force");
-
- /**
- * An axis for specifying third dimensional up/down force
- * data.
- */
- public static final Identifier Z_FORCE =
- new Identifier("z-force");
-
- /**
- * An axis for specifying left-right angular force (torque) data.
- */
- public static final Identifier RX_FORCE =
- new Identifier("rx-force");
-
- /**
- * An axis for specifying forward-back angular force (torque) data.
- */
- public static final Identifier RY_FORCE =
- new Identifier("ry-force");
-
- /**
- * An axis for specifying up-down angular force (torque) data.
- */
- public static final Identifier RZ_FORCE =
- new Identifier("rz-force");
-
- /**
- * An axis for slider force data.
- */
- public static final Identifier SLIDER_FORCE =
- new Identifier("slider-force");
- } // class Axis.Identifier
-
- /**
- * POV enum for different positions.
- */
- public static class POV {
- /**
- * Standard value for center HAT position
- */
- public static final float OFF = 0.0f;
- /**
- * Synonmous with OFF
- */
- 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
- */
- public static final float LEFT = 1.0f;
- } // class Axis.POV
-} // interface Axis
diff --git a/coreAPI/src/java/net/java/games/input/Controller.java b/coreAPI/src/java/net/java/games/input/Controller.java
deleted file mode 100644
index c9f3df3..0000000
--- a/coreAPI/src/java/net/java/games/input/Controller.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * A Controller represents a physical device, such as a keyboard, mouse,
- * or joystick, or a logical grouping of related controls, such as a button
- * pad or mouse ball. A controller can be composed of multiple controllers.
- * For example, the ball of a mouse and its buttons are two separate
- * controllers.
- */
-public interface Controller {
-
- /**
- * Returns the controllers connected to make up this controller, or
- * an empty array if this controller contains no child controllers.
- * The objects in the array are returned in order of assignment priority
- * (primary stick, secondary buttons, etc.).
- */
- public abstract Controller[] getControllers();
-
- /**
- * Returns the type of the Controller.
- */
- public abstract Type getType();
-
- /**
- * Returns the axes on this controller, in order of assignment priority.
- * For example, the button controller on a mouse returns an array containing
- * the primary or leftmost mouse button, followed by the secondary or
- * rightmost mouse button (if present), followed by the middle mouse button
- * (if present).
- * The array returned is an empty array if this controller contains no axes
- * (such as a logical grouping of child controllers).
- */
- public abstract Axis[] getAxes();
-
- /**
- * Returns a single axis based on its type, or null
- * if no axis with the specified type could be found.
- */
- public abstract Axis getAxis(Axis.Identifier id);
-
- /**
- * Returns the rumblers for sending feedback to this controller, or an
- * empty array if there are no rumblers on this controller.
- */
- public abstract Rumbler[] getRumblers();
-
- /**
- * Polls axes for data. Returns false if the controller is no longer valid.
- * Polling reflects the current state of the device when polled.
- */
- public abstract boolean poll();
-
- /**
- * Returns the port type for this Controller.
- */
- public abstract PortType getPortType();
-
- /**
- * Returns the zero-based port number for this Controller.
- */
- public abstract int getPortNumber();
-
- /**
- * Returns a human-readable name for this Controller.
- */
- public abstract String getName();
-
- /**
- * Types of controller objects.
- */
- public static class Type {
-
- /**
- * Name of controller type
- */
- private final String name;
-
- /**
- * Protected constructor
- */
- protected Type(String name) {
- this.name = name;
- }
-
- /**
- * Returns a non-localized string description of this controller type.
- */
- public String toString() {
- return name;
- }
-
- /**
- * Mouse controller.
- */
- public static final Type UNKNOWN = new Type("unknown");
-
- /**
- * Mouse controller.
- */
- public static final Type MOUSE = new Type("mouse");
-
- /**
- * A mouse ball or the ball part of a trackball controller.
- * Note that a mouse wheel is considered part of a ball controller.
- */
- public static final Type BALL = new Type("ball");
-
- /**
- * A group of buttons on a pad (mouse buttons, for
- * example) or a keyboard.
- */
- public static final Type BUTTONS = new Type("buttons");
- /**
- * A keyboard controller (same as BUTTONS)
- * @see #BUTTONS
- */
- public static final Type KEYBOARD = BUTTONS;
-
- /**
- * Fingerstick controller; note that this may be sometimes treated as a
- * type of mouse or stick.
- */
- public static final Type FINGERSTICK = new Type("fingerstick");
-
- /**
- * Gamepad controller.
- */
- public static final Type GAMEPAD = new Type("gamepad");
-
- /**
- * Headtracker controller.
- */
- public static final Type HEADTRACKER = new Type("headtracker");
-
- /**
- * Rudder controller.
- */
- public static final Type RUDDER = new Type("rudder");
-
- /**
- * Stick controller, such as a joystick or flightstick.
- */
- public static final Type STICK = new Type("stick");
-
- /**
- * A trackball controller; note that this may sometimes be treated as a
- * type of mouse.
- */
- public static final Type TRACKBALL = new Type("trackball");
-
- /**
- * A trackpad, such as a tablet, touchpad, or glidepad;
- * note that this may sometimes be treated as a type of mouse.
- */
- public static final Type TRACKPAD = new Type("trackpad");
-
- /**
- * A wheel controller, such as a steering wheel (note
- * that a mouse wheel is considered part of a ball control, not a
- * wheel controller).
- */
- public static final Type WHEEL = new Type("wheel");
- } // class Controller.Type
-
- /**
- * Common controller port types.
- */
- public static final class PortType {
-
- /**
- * Name of port type
- */
- private final String name;
-
- /**
- * Protected constructor
- */
- protected PortType(String name) {
- this.name = name;
- }
-
- /**
- * Returns a non-localized string description of this port type.
- */
- public String toString() {
- return name;
- }
-
- /**
- * Unknown port type
- */
- public static final PortType UNKNOWN = new PortType("Unknown");
-
- /**
- * USB port
- */
- public static final PortType USB = new PortType("USB port");
-
- /**
- * Standard game port
- */
- public static final PortType GAME = new PortType("Game port");
-
- /**
- * Network port
- */
- public static final PortType NETWORK = new PortType("Network port");
-
- /**
- * Serial port
- */
- public static final PortType SERIAL = new PortType("Serial port");
-
- /**
- * i8042
- */
- public static final PortType I8042 = new PortType("i8042 (PS/2)");
-
- /**
- * Parallel port
- */
- public static final PortType PARALLEL = new PortType("Parallel port");
-
- } // class Controller.PortType
-} // interface Controller
diff --git a/coreAPI/src/java/net/java/games/input/ControllerEnvironment.java b/coreAPI/src/java/net/java/games/input/ControllerEnvironment.java
deleted file mode 100644
index d58ed4e..0000000
--- a/coreAPI/src/java/net/java/games/input/ControllerEnvironment.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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.util.ArrayList;
-import java.util.Iterator;
-
-/**
- * A ControllerEnvironment represents a collection of controllers that are
- * physically or logically linked. By default, this corresponds to the
- * environment for the local machine.
- * <p>
- * In this reference implementation, this class can also be used to register
- * controllers with the default environment as "plug-ins". A plug-in is
- * created by subclassing ControllerEnvironment with a class that has a public
- * no-argument constructor, implements the org.java.games.util.plugins.Plugin
- * interface and has a name ending in "Plugin".
- * (See org.java.games.input.DirectInputEnvironmentPlugin in the DXplugin
- * part of the source tree for an example.)
- *
- * When the DefaultControllerEnvrionment is instanced it uses the plugin library
- * to look for Plugins in both [java.home]/lib/controller and
- * [user.dir]/controller. This allows controller plugins to be installed either
- * globally for the entire Java environment or locally for just one particular
- * Java app.
- *
- * For more information on the organization of plugins within the controller
- * root directories, see org.java.games.util.plugins.Plugins (Note the
- * plural -- "Plugins" not "Plugin" which is just a marker interface.)
- *
- */
-public abstract class ControllerEnvironment {
-
- /**
- * The default controller environment
- */
- private static ControllerEnvironment defaultEnvironment =
- new DefaultControllerEnvironment();
-
- /**
- * List of controller listeners
- */
- protected final ArrayList controllerListeners = new ArrayList();
-
- /**
- * Protected constructor for subclassing.
- */
- protected ControllerEnvironment() {
- }
-
- /**
- * Returns a list of all controllers available to this environment,
- * or an empty array if there are no controllers in this environment.
- */
- public abstract Controller[] getControllers();
-
- /**
- * Adds a listener for controller state change events.
- */
- public void addControllerListener(ControllerListener l) {
- assert l != null;
- controllerListeners.add(l);
- }
-
- /**
- * Removes a listener for controller state change events.
- */
- public void removeControllerListener(ControllerListener l) {
- assert l != null;
- controllerListeners.remove(l);
- }
-
- /**
- * Creates and sends an event to the controller listeners that a controller
- * has been added.
- */
- protected void fireControllerAdded(Controller c) {
- ControllerEvent ev = new ControllerEvent(c);
- Iterator it = controllerListeners.iterator();
- while (it.hasNext()) {
- ((ControllerListener)it.next()).controllerAdded(ev);
- }
- }
-
- /**
- * Creates and sends an event to the controller listeners that a controller
- * has been lost.
- */
- protected void fireControllerRemoved(Controller c) {
- ControllerEvent ev = new ControllerEvent(c);
- Iterator it = controllerListeners.iterator();
- while (it.hasNext()) {
- ((ControllerListener)it.next()).controllerRemoved(ev);
- }
- }
-
- /**
- * Returns the default environment for input controllers.
- * This usually corresponds to the environment for the local machine.
- */
- public static ControllerEnvironment getDefaultEnvironment() {
- return defaultEnvironment;
- }
-} // ControllerEnvironment
diff --git a/coreAPI/src/java/net/java/games/input/ControllerEvent.java b/coreAPI/src/java/net/java/games/input/ControllerEvent.java
deleted file mode 100644
index 14fbbcd..0000000
--- a/coreAPI/src/java/net/java/games/input/ControllerEvent.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * An event that is fired when the state of a controller changes
- */
-public class ControllerEvent {
-
- private Controller controller;
-
- /**
- * Creates a controller event object.
- */
- public ControllerEvent(Controller c) {
- controller = c;
- }
-
- /**
- * Returns the controller for this event.
- */
- public Controller getController() {
- return controller;
- }
-} // class ControllerEvent
diff --git a/coreAPI/src/java/net/java/games/input/ControllerListener.java b/coreAPI/src/java/net/java/games/input/ControllerListener.java
deleted file mode 100644
index 8c58eff..0000000
--- a/coreAPI/src/java/net/java/games/input/ControllerListener.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * A listener for changes in the state of controllers
- */
-public interface ControllerListener {
-
- /**
- * Invoked when a controller is lost.
- */
- public abstract void controllerRemoved(ControllerEvent ev);
-
- /**
- * Invoked when a controller has been added.
- */
- public abstract void controllerAdded(ControllerEvent ev);
-} // interface ControllerListener
diff --git a/coreAPI/src/java/net/java/games/input/DefaultControllerEnvironment.java b/coreAPI/src/java/net/java/games/input/DefaultControllerEnvironment.java
deleted file mode 100644
index 5e8e358..0000000
--- a/coreAPI/src/java/net/java/games/input/DefaultControllerEnvironment.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import net.java.games.util.plugins.*;
-
-/**
- * The default controller environment.
- *
- * @version %I% %G%
- * @author Michael Martak
- */
-class DefaultControllerEnvironment extends ControllerEnvironment {
- static final boolean DEBUG =false;
- /**
- * The name of the properties file to find plugins.
- */
- private final static String PROPERTY_FILENAME =
- "controller.properties";
-
- /**
- * The name of the property for identifying a plugin (used
- * as the value, the key being the class name).
- */
- private final static String ID_PLUGIN =
- "ControllerEnvironment";
-
- /**
- * Location of the LIB directory.
- */
- static String libPath;
-
- /**
- * List of all controllers in this environment
- */
- private ArrayList controllers;
-
- /**
- * Plug-in properties.
- */
- private Properties properties = new Properties();
-
- /**
- * Plug-in class loader.
- */
- private PluginClassLoader pluginLoader = new PluginClassLoader();
-
- /**
- * Public no-arg constructor.
- */
- public DefaultControllerEnvironment() {
- }
-
- /**
- * Returns a list of all controllers available to this environment,
- * or an empty array if there are no controllers in this environment.
- */
- public Controller[] getControllers() {
- if (controllers == null) {
- // Controller list has not been scanned.
- controllers = new ArrayList();
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- scanControllers();
- return DefaultControllerEnvironment.this;
- }
- });
- //Check the properties for specified controller classes
- String pluginClasses = System.getProperty("jinput.plugins", "") + System.getProperty("net.java.games.input.plugins", "");
- if(!pluginClasses.equals("")) {
- ArrayList pluginClassList = new ArrayList();
- StringTokenizer pluginClassTok = new StringTokenizer(pluginClasses, " \t\n\r\f,;:");
- while(pluginClassTok.hasMoreTokens()) {
- String className = pluginClassTok.nextToken();
- try {
- ControllerEnvironment ce = (ControllerEnvironment) Class.forName(className).newInstance();
- addControllers(ce.getControllers());
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
- }
- Controller[] ret = new Controller[controllers.size()];
- Iterator it = controllers.iterator();
- int i = 0;
- while (it.hasNext()) {
- ret[i] = (Controller)it.next();
- i++;
- }
- return ret;
- }
-
- /**
- * Scans for controllers, placing them in the controllers list.
- */
- /* This is Mike's old plugin code.
- private void scanControllers() {
- // Load properties object.
- try {
- loadProperties();
- } catch (IOException e) {
- // Could not find or read file, simply return.
- return;
- }
- // Create a list of ControllerEnvironment classes.
- // For each ControllerEnvironment, locate the class
- // using the plugin class loader.
- Iterator it = properties.keySet().iterator();
- while (it.hasNext()) {
- Object key = it.next();
- assert key != null;
- Object value = properties.get(key);
- assert value != null;
- if (value.equals(ID_PLUGIN)) {
- try {
- ControllerEnvironment plugin =
- newPlugin(key.toString());
- addControllers(plugin.getControllers());
- } catch (Throwable t) {
- System.err.println(
- "Warning : could not load plugin " +
- key.toString() + ", received exeption " +
- t.toString());
- t.printStackTrace(System.err);
- }
- }
- }
- }*/
-
- /* This is jeff's new plugin code using Jeff's Plugin manager */
- private void scanControllers() {
- String pluginPathName = System.getProperty("jinput.controllerPluginPath");
- if(pluginPathName == null) {
- pluginPathName = "controller";
- }
-
- scanControllersAt(System.getProperty("java.home") +
- File.separator + "lib"+File.separator + pluginPathName);
- scanControllersAt(System.getProperty("user.dir")+
- File.separator + pluginPathName);
- }
-
- private void scanControllersAt(String path) {
- File file = new File(path);
- if (!file.exists()) {
- return;
- }
- try {
- Plugins plugins = new Plugins(file);
- Class[] envClasses = plugins.getExtends(ControllerEnvironment.class);
- for(int i=0;i<envClasses.length;i++){
- try {
- if (DEBUG) {
- System.out.println("ControllerEnvironment "+
- envClasses[i].getName()
- +" loaded by "+envClasses[i].getClassLoader());
- }
- ControllerEnvironment ce = (ControllerEnvironment)
- envClasses[i].newInstance();
- addControllers(ce.getControllers());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Retrieve the file "lib/control.properties" and
- * load properties into properties object.
- */
- private void loadProperties() throws IOException {
- if (libPath == null) {
- libPath = System.getProperty("java.home") +
- File.separator + "lib";
- }
- File file = new File(libPath + File.separator +
- PROPERTY_FILENAME);
- FileInputStream inputStream = new FileInputStream(file);
- properties.load(inputStream);
- inputStream.close();
- }
-
- /**
- * Create a new plugin ControllerEnvironment object
- */
- /*
- private ControllerEnvironment newPlugin(String name) throws
- ClassNotFoundException, InstantiationException,
- IllegalAccessException {
- Class pluginClass = pluginLoader.loadClass(name);
- if (!ControllerEnvironment.class.isAssignableFrom(pluginClass)) {
- throw new ClassCastException(
- "Plugin class must be assignable from " +
- ControllerEnvironment.class.getName());
- }
- Object instance = pluginClass.newInstance();
- return (ControllerEnvironment)instance;
- }
- */
- /**
- * Add the array of controllers to our list of controllers.
- */
- private void addControllers(Controller[] c) {
- for (int i = 0; i < c.length; i++) {
- controllers.add(c[i]);
- }
- }
-}
diff --git a/coreAPI/src/java/net/java/games/input/Keyboard.java b/coreAPI/src/java/net/java/games/input/Keyboard.java
deleted file mode 100644
index 92361af..0000000
--- a/coreAPI/src/java/net/java/games/input/Keyboard.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * A Keyboard is a type of controller consisting of a single controller,
- * they keypad, which contains several axes (the keys). By default, all keys
- * are set to receive polling data.
- */
-public abstract class Keyboard extends AbstractController {
-
- /**
- * Protected constructor.
- * Subclasses should initialize the array of axes to an array of keys.
- * @param name The name of the keyboard
- */
- protected Keyboard(String name) {
- super(name);
- }
-
- /**
- * Returns the type of the Controller.
- */
- public Type getType() {
- return Type.KEYBOARD;
- }
-
- /**
- * Returns the axis corresponding to a particular key on the keypad,
- * or null if a key with the specified ID could not be found.
- */
- public Axis getAxis(Axis.Identifier id) {
- assert axes != null;
- // Default implementation uses indices to lookup keys
- // in the array of axes
- if (id instanceof KeyID) {
- KeyID kid = (KeyID)id;
- int index = kid.getKeyIndex();
- assert axes.length > index;
- return axes[index];
- }
- return null;
- }
-
- /**
- * Returns whether or not the given key has been pressed since the last
- * call to poll. This is called from a key's getPollData method.
- */
- protected abstract boolean isKeyPressed(Key key);
-
- /**
- * Axis representing a single key. By default, all keys are set to receive
- * polling data.
- */
- public class Key extends AbstractAxis {
-
- /**
- * Key identifier
- */
- private final KeyID keyID;
-
- /**
- * Construct a new key object
- */
- public Key(KeyID keyID) {
- super(keyID.toString(), keyID);
- this.keyID = keyID;
- }
-
- /**
- * Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- * @return false by default, can be overridden
- */
- public final boolean isRelative() {
- return false;
- }
-
- /**
- * Returns the data from the last time the control has been polled.
- * The value returned will be either 0.0f or 1.0f. The result is always
- * 0.0f if polling is turned off.
- */
- public float getPollData() {
- if (!isPolling()) {
- return 0.0f;
- }
- return (isKeyPressed(this) ? 1.0f : 0.0f);
- }
- } // class Keyboard.Key
-
- /**
- * Identifiers for physical keys.
- */
- public static class KeyID extends Axis.Identifier {
-
- /**
- * Key string
- */
- private static final String NAME_KEY = "key";
-
- /**
- * Index in the array of axes supplied to the keyboard contructor for
- * this key.
- */
- protected final int keyIndex;
-
- /**
- * Protected constructor
- * @param keyIndex the index for looking up the key in the array of axes
- */
- protected KeyID(int keyIndex) {
- super(NAME_KEY);
- this.keyIndex = keyIndex;
- }
-
- /**
- * The index for this key for looking up the in the array of axes.
- */
- public int getKeyIndex() {
- return keyIndex;
- }
-
- /**
- * Returns a non-localized string description of this control type.
- */
- public String toString() {
- return super.toString() + " " + Integer.toString(keyIndex);
- }
- } // class Keyboard.KeyID
-} // class Keyboard
diff --git a/coreAPI/src/java/net/java/games/input/Mouse.java b/coreAPI/src/java/net/java/games/input/Mouse.java
deleted file mode 100644
index 7f8449f..0000000
--- a/coreAPI/src/java/net/java/games/input/Mouse.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * A Mouse is a type of controller consisting of two child controllers,
- * a ball and a button pad. This includes devices such as touch pads,
- * trackballs, and fingersticks.
- */
-public abstract class Mouse extends AbstractController {
-
- /**
- * Mouse ball; should be initialized by subclasses
- */
- protected Ball ball;
-
- /**
- * Mouse buttons; should be initialized by subclasses
- */
- protected Buttons buttons;
-
- /**
- * Protected constructor;
- * Subclasses should initialize the ball and buttons
- */
- protected Mouse(String name) {
- super(name);
- }
-
- /**
- * Returns the controllers connected to make up this controller, or
- * an empty array if this controller contains no child controllers.
- * The objects in the array are returned in order of assignment priority
- * (primary stick, secondary buttons, etc.).
- */
- public Controller[] getControllers() {
- if (children.length == 0 && ball != null && buttons != null) {
- children = new Controller[] { ball, buttons };
- }
- return children;
- }
-
- /**
- * Returns the control for the ball of the mouse, never null.
- */
- public Ball getBall() {
- return ball;
- }
-
- /**
- * Returns the control for the buttons of the mouse, never null.
- */
- public Buttons getButtons() {
- return buttons;
- }
-
- /**
- * Returns the type of the Controller.
- */
- public Type getType() {
- return Type.MOUSE;
- }
-
- /**
- * Mouse ball controller
- */
- public abstract class Ball extends AbstractController {
-
- /**
- * X-axis; should be initialized by subclasses
- */
- protected Axis x;
-
- /**
- * Y-axis; should be initialized by subclasses
- */
- protected Axis y;
-
- /**
- * Mouse wheel; should be initialized by subclasses
- */
- protected Axis wheel;
-
- /**
- * Protected constructor
- */
- protected Ball(String name) {
- super(name);
- }
-
- /**
- * Returns the type of Controller.
- */
- public Type getType() {
- return Type.BALL;
- }
-
- /**
- * Returns the x-axis for the mouse ball, never null.
- */
- public Axis getX() {
- return x;
- }
-
- /**
- * Returns the y-axis for the mouse ball, never null.
- */
- public Axis getY() {
- return y;
- }
-
- /**
- * Returns the mouse wheel, or null if no mouse wheel is present.
- */
- public Axis getWheel() {
- return wheel;
- }
-
- /**
- * Returns the axes on this controller, in order of assignment priority.
- * Overridden to return the x-axis, followed by the y-axes, followed by
- * the wheel (if present).
- * The array returned is an empty array if this controller contains no
- * axes (such as a logical grouping of child controllers).
- */
- public Axis[] getAxes() {
- if (axes.length == 0 && x != null && y != null) {
- if (wheel == null) {
- axes = new Axis[] { x, y };
- } else {
- axes = new Axis[] { x, y, wheel };
- }
- }
- return axes;
- }
-
- /**
- * Polls axes for data. Returns false if the controller is no longer
- * valid. Polling reflects the current state of the device when polled.
- * By default, polling a mouse ball or button polls the entire mouse
- * control.
- */
- public boolean poll() {
- return Mouse.this.poll();
- }
- } // class Mouse.Ball
-
- /**
- * Mouse buttons controller
- */
- public abstract class Buttons extends AbstractController {
-
- /**
- * Left button; should be initialized by subclasses
- */
- protected Button left;
-
- /**
- * Right button; should be initialized by subclasses
- */
- protected Button right;
-
- /**
- * Middle button; should be initialized by subclasses
- */
- protected Button middle;
-
- /**
- * Side button; should be initialized by subclasses
- */
- protected Button side;
-
- /**
- * Extra button; should be initialized by subclasses
- */
- protected Button extra;
-
- /**
- * Forward button; should be initialized by subclasses
- */
- protected Button forward;
-
- /**
- * Back button; should be initialized by subclasses
- */
- protected Button back;
-
- /**
- * Protected constructor
- */
- protected Buttons(String name) {
- super(name);
- }
-
- /**
- * Returns the type or identifier of the Controller.
- */
- public Type getType() {
- return Type.BUTTONS;
- }
-
- /**
- * Returns the left or primary mouse button, never null.
- */
- public Button getLeft() {
- return left;
- }
-
- /**
- * Returns the right or secondary mouse button, null if the mouse is
- * a single-button mouse.
- */
- public Button getRight() {
- return right;
- }
-
- /**
- * Returns the middle or tertiary mouse button, null if the mouse has
- * fewer than three buttons.
- */
- public Button getMiddle() {
- return middle;
- }
-
- /**
- * Returns the side or 4th mouse button, null if the mouse has
- * fewer than 4 buttons.
- */
- public Button getSide() {
- return side;
- }
-
- /**
- * Returns the extra or 5th mouse button, null if the mouse has
- * fewer than 5 buttons.
- */
- public Button getExtra() {
- return extra;
- }
-
- /**
- * Returns the forward mouse button, null if the mouse hasn't
- * got one.
- */
- public Button getForward() {
- return forward;
- }
-
- /**
- * Returns the back mouse button, null if the mouse hasn't
- * got one.
- */
- public Button getBack() {
- return back;
- }
-
- /**
- * Returns the axes on this controller, in order of assignment priority.
- * Overridden to return the the primary or leftmost mouse button,
- * followed by the secondary or rightmost mouse button (if present),
- * followed by the middle mouse button (if present).
- * The array returned is an empty array if this controller contains no
- * axes (such as a logical grouping of child controllers).
- */
- public Axis[] getAxes() {
- if (axes.length == 0 && left != null) {
- if (right == null) {
- axes = new Axis[] { left };
- } else if (middle == null) {
- axes = new Axis[] { left, right };
- } else if (side == null) {
- axes = new Axis[] { left, right, middle };
- } else if (extra == null) {
- axes = new Axis[] { left, right, middle, side };
- } else if (forward == null) {
- axes = new Axis[] { left, right, middle, side, extra };
- } else if (back == null) {
- axes = new Axis[] { left, right, middle, side, extra, forward };
- } else {
- axes = new Axis[] { left, right, middle, side, extra, forward, back };
- }
- }
- return axes;
- }
-
- /**
- * Polls axes for data. Returns false if the controller is no longer
- * valid. Polling reflects the current state of the device when polled.
- * By default, polling a mouse ball or button polls the entire mouse
- * control.
- */
- public boolean poll() {
- return Mouse.this.poll();
- }
- } // class Mouse.Buttons
-
- /**
- * Mouse button axis
- */
- public abstract class Button extends AbstractAxis {
-
- /**
- * Protected constructor
- */
- protected Button(String name, ButtonID id) {
- super(name, id);
- }
- } // class Mouse.Button
-
- /**
- * Identifier for types of mouse buttons
- */
- public static class ButtonID extends Axis.Identifier {
-
- /**
- * Protected constructor
- */
- protected ButtonID(String name) {
- super(name);
- }
-
- /**
- * The primary or leftmost mouse button.
- */
- public static final ButtonID LEFT = new ButtonID("left");
-
- /**
- * The secondary or rightmost mouse button, not present if
- * the mouse is a single-button mouse.
- */
- public static final ButtonID RIGHT = new ButtonID("right");
-
- /**
- * Returns the middle mouse button, not present if the
- * mouse has fewer than three buttons.
- */
- public static final ButtonID MIDDLE = new ButtonID("middle");
-
- /**
- * Returns the side mouse button.
- */
- public static final ButtonID SIDE = new ButtonID("side");
-
- /**
- * Returns the extra mouse button.
- */
- public static final ButtonID EXTRA = new ButtonID("extra");
-
- /**
- * Returns the forward mouse button.
- */
- public static final ButtonID FORWARD = new ButtonID("forward");
-
- /**
- * Returns the back mouse button.
- */
- public static final ButtonID BACK = new ButtonID("back");
-
- } // class Mouse.ButtonID
-} // class Mouse
diff --git a/coreAPI/src/java/net/java/games/input/PluginClassLoader.java b/coreAPI/src/java/net/java/games/input/PluginClassLoader.java
deleted file mode 100644
index dd9d8e1..0000000
--- a/coreAPI/src/java/net/java/games/input/PluginClassLoader.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.StringTokenizer;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-/**
- * Loads all plugins.
- *
- * @version %I% %G%
- * @author Michael Martak
- */
-class PluginClassLoader extends ClassLoader {
-
- /**
- * Location of directory to look for plugins
- */
- private static String pluginDirectory;
-
- /**
- * File filter for JAR files
- */
- private static final FileFilter JAR_FILTER = new JarFileFilter();
-
- /**
- * Create a new class loader for loading plugins
- */
- public PluginClassLoader() {
- super(Thread.currentThread().getContextClassLoader());
- }
-
- /**
- * Overrides findClass to first look in the parent class loader,
- * then try loading the class from the plugin file system.
- */
- protected Class findClass(String name)
- throws ClassNotFoundException {
- // Try loading the class from the file system.
- byte[] b = loadClassData(name);
- return defineClass(name, b, 0, b.length);
- }
-
- /**
- * Load the class data from the file system
- */
- private byte[] loadClassData(String name)
- throws ClassNotFoundException {
- if (pluginDirectory == null) {
- pluginDirectory = DefaultControllerEnvironment.libPath +
- File.separator + "controller";
- }
- try {
- return loadClassFromDirectory(name);
- } catch (Exception e) {
- try {
- return loadClassFromJAR(name);
- } catch (IOException e2) {
- throw new ClassNotFoundException(name, e2);
- }
- }
- }
-
- /**
- * Load the class data from the file system based on parsing
- * the class name (packages).
- */
- private byte[] loadClassFromDirectory(String name)
- throws ClassNotFoundException, IOException {
- // Parse the class name into package directories.
- // Look for the class in the plugin directory.
- StringTokenizer tokenizer = new StringTokenizer(name, ".");
- StringBuffer path = new StringBuffer(pluginDirectory);
- while (tokenizer.hasMoreTokens()) {
- path.append(File.separator);
- path.append(tokenizer.nextToken());
- }
- path.append(".class");
- File file = new File(path.toString());
- if (!file.exists()) {
- throw new ClassNotFoundException(name);
- }
- FileInputStream fileInputStream = new FileInputStream(file);
- assert file.length() <= Integer.MAX_VALUE;
- int length = (int)file.length();
- byte[] bytes = new byte[length];
- int length2 = fileInputStream.read(bytes);
- assert length == length2;
- return bytes;
- }
-
- /**
- * Scans through the plugin directory for JAR files and
- * attempts to load the class data from each JAR file.
- */
- private byte[] loadClassFromJAR(String name)
- throws ClassNotFoundException, IOException {
- File dir = new File(pluginDirectory);
- File[] jarFiles = dir.listFiles(JAR_FILTER);
- if (jarFiles == null) {
- throw new ClassNotFoundException("Could not find class " + name);
- }
- for (int i = 0; i < jarFiles.length; i++) {
- JarFile jarfile = new JarFile(jarFiles[i]);
- JarEntry jarentry = jarfile.getJarEntry(name + ".class");
- if (jarentry != null) {
- InputStream jarInputStream = jarfile.getInputStream(jarentry);
- assert jarentry.getSize() <= Integer.MAX_VALUE;
- int length = (int)jarentry.getSize();
- assert length >= 0;
- byte[] bytes = new byte[length];
- int length2 = jarInputStream.read(bytes);
- assert length == length2;
- return bytes;
- }
- }
- throw new FileNotFoundException(name);
- }
-
- /**
- * Filters out all non-JAR files, based on whether or not they
- * end in ".JAR" (case-insensitive).
- */
- private static class JarFileFilter implements FileFilter {
- public boolean accept(File file) {
- return file.getName().toUpperCase().endsWith(".JAR");
- }
- }
-}
-
diff --git a/coreAPI/src/java/net/java/games/input/Rumbler.java b/coreAPI/src/java/net/java/games/input/Rumbler.java
deleted file mode 100644
index 9da084b..0000000
--- a/coreAPI/src/java/net/java/games/input/Rumbler.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * A Rumbler is a controller's mechanism for delivering feedback
- * to the user through the device.
- */
-public interface Rumbler {
-
- /**
- * Rumble with the specified intensity.
- */
- public abstract void rumble(float intensity);
-
- /**
- * Get the string name of the axis the rumbler is attached to
- *
- * @return The axis name
- */
- public String getAxisName();
-
- /**
- * Get the axis identifier the rumbler is attached to
- *
- * @return The axis identifier
- */
- public Axis.Identifier getAxisIdentifier();
-
-
-} // interface Rumbler
diff --git a/coreAPI/src/java/net/java/games/input/StandardKeyboard.java b/coreAPI/src/java/net/java/games/input/StandardKeyboard.java
deleted file mode 100644
index 5dc891a..0000000
--- a/coreAPI/src/java/net/java/games/input/StandardKeyboard.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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;
-
-/**
- * Identifiers for physical keys for standard PC (LATIN-1) keyboards.
- */
-public abstract class StandardKeyboard extends Keyboard {
-
- private Key[] standardKeys = {
- new Key(KeyID.VOID ), new Key(KeyID.ESCAPE ),
- new Key(KeyID._1 ), new Key(KeyID._2 ),
- new Key(KeyID._3 ), new Key(KeyID._4 ),
- new Key(KeyID._5 ), new Key(KeyID._6 ),
- new Key(KeyID._7 ), new Key(KeyID._8 ),
- new Key(KeyID._9 ), new Key(KeyID._0 ),
- new Key(KeyID.MINUS ), new Key(KeyID.EQUALS ),
- new Key(KeyID.BACK ), new Key(KeyID.TAB ),
- new Key(KeyID.Q ), new Key(KeyID.W ),
- new Key(KeyID.E ), new Key(KeyID.R ),
- new Key(KeyID.T ), new Key(KeyID.Y ),
- new Key(KeyID.U ), new Key(KeyID.I ),
- new Key(KeyID.O ), new Key(KeyID.P ),
- new Key(KeyID.LBRACKET ), new Key(KeyID.RBRACKET ),
- new Key(KeyID.RETURN ), new Key(KeyID.LCONTROL ),
- new Key(KeyID.A ), new Key(KeyID.S ),
- new Key(KeyID.D ), new Key(KeyID.F ),
- new Key(KeyID.G ), new Key(KeyID.H ),
- new Key(KeyID.J ), new Key(KeyID.K ),
- new Key(KeyID.L ), new Key(KeyID.SEMICOLON ),
- new Key(KeyID.APOSTROPHE ), new Key(KeyID.GRAVE ),
- new Key(KeyID.LSHIFT ), new Key(KeyID.BACKSLASH ),
- new Key(KeyID.Z ), new Key(KeyID.X ),
- new Key(KeyID.C ), new Key(KeyID.V ),
- new Key(KeyID.B ), new Key(KeyID.N ),
- new Key(KeyID.M ), new Key(KeyID.COMMA ),
- new Key(KeyID.PERIOD ), new Key(KeyID.SLASH ),
- new Key(KeyID.RSHIFT ), new Key(KeyID.MULTIPLY ),
- new Key(KeyID.LALT ), new Key(KeyID.SPACE ),
- new Key(KeyID.CAPITAL ), new Key(KeyID.F1 ),
- new Key(KeyID.F2 ), new Key(KeyID.F3 ),
- new Key(KeyID.F4 ), new Key(KeyID.F5 ),
- new Key(KeyID.F6 ), new Key(KeyID.F7 ),
- new Key(KeyID.F8 ), new Key(KeyID.F9 ),
- new Key(KeyID.F10 ), new Key(KeyID.NUMLOCK ),
- new Key(KeyID.SCROLL ), new Key(KeyID.NUMPAD7 ),
- new Key(KeyID.NUMPAD8 ), new Key(KeyID.NUMPAD9 ),
- new Key(KeyID.SUBTRACT ), new Key(KeyID.NUMPAD4 ),
- new Key(KeyID.NUMPAD5 ), new Key(KeyID.NUMPAD6 ),
- new Key(KeyID.ADD ), new Key(KeyID.NUMPAD1 ),
- new Key(KeyID.NUMPAD2 ), new Key(KeyID.NUMPAD3 ),
- new Key(KeyID.NUMPAD0 ), new Key(KeyID.DECIMAL ),
- new Key(KeyID.F11 ), new Key(KeyID.F12 ),
- new Key(KeyID.F13 ), new Key(KeyID.F14 ),
- new Key(KeyID.F15 ), new Key(KeyID.KANA ),
- new Key(KeyID.CONVERT ), new Key(KeyID.NOCONVERT ),
- new Key(KeyID.YEN ), new Key(KeyID.NUMPADEQUAL),
- new Key(KeyID.CIRCUMFLEX ), new Key(KeyID.AT ),
- new Key(KeyID.COLON ), new Key(KeyID.UNDERLINE ),
- new Key(KeyID.KANJI ), new Key(KeyID.STOP ),
- new Key(KeyID.AX ), new Key(KeyID.UNLABELED ),
- new Key(KeyID.NUMPADENTER), new Key(KeyID.RCONTROL ),
- new Key(KeyID.NUMPADCOMMA), new Key(KeyID.DIVIDE ),
- new Key(KeyID.SYSRQ ), new Key(KeyID.RALT ),
- new Key(KeyID.PAUSE ), new Key(KeyID.HOME ),
- new Key(KeyID.UP ), new Key(KeyID.PRIOR ),
- new Key(KeyID.LEFT ), new Key(KeyID.RIGHT ),
- new Key(KeyID.END ), new Key(KeyID.DOWN ),
- new Key(KeyID.NEXT ), new Key(KeyID.INSERT ),
- new Key(KeyID.DELETE ), new Key(KeyID.LWIN ),
- new Key(KeyID.RWIN ), new Key(KeyID.APPS ),
- new Key(KeyID.POWER ), new Key(KeyID.SLEEP ),
- };
-
- /**
- * Creates a new standard keyboard object with the default keys
- * for a standard keyboard.
- */
- protected StandardKeyboard(String name) {
- super(name);
- axes = standardKeys;
- }
-
- /**
- * KeyIDs for standard PC (LATIN-1) keyboards
- */
- public static class KeyID extends Keyboard.KeyID {
- /**
- * Protected constructor
- */
- protected KeyID(int keyID) {
- super(keyID);
- }
- /**
- * Standard keyboard (LATIN-1) keys
- * UNIX X11 keysym values are listed to the right
- */
- public static final KeyID VOID = new KeyID(0); // MS 0x00 UNIX 0xFFFFFF
- public static final KeyID ESCAPE = new KeyID(1); // MS 0x01 UNIX 0xFF1B
- public static final KeyID _1 = new KeyID(2); // MS 0x02 UNIX 0x031 EXCLAM 0x021
- public static final KeyID _2 = new KeyID(3); // MS 0x03 UNIX 0x032 AT 0x040
- public static final KeyID _3 = new KeyID(4); // MS 0x04 UNIX 0x033 NUMBERSIGN 0x023
- public static final KeyID _4 = new KeyID(5); // MS 0x05 UNIX 0x034 DOLLAR 0x024
- public static final KeyID _5 = new KeyID(6); // MS 0x06 UNIX 0x035 PERCENT 0x025
- public static final KeyID _6 = new KeyID(7); // MS 0x07 UNIX 0x036 CIRCUMFLEX 0x05e
- public static final KeyID _7 = new KeyID(8); // MS 0x08 UNIX 0x037 AMPERSAND 0x026
- public static final KeyID _8 = new KeyID(9); // MS 0x09 UNIX 0x038 ASTERISK 0x02a
- public static final KeyID _9 = new KeyID(10); // MS 0x0A UNIX 0x039 PARENLEFT 0x028
- public static final KeyID _0 = new KeyID(11); // MS 0x0B UNIX 0x030 PARENRIGHT 0x029
- public static final KeyID MINUS = new KeyID(12); // MS 0x0C UNIX 0x02d UNDERSCORE 0x05f
- public static final KeyID EQUALS = new KeyID(13); // MS 0x0D UNIX 0x03d PLUS 0x02b
- public static final KeyID BACK = new KeyID(14); // MS 0x0E UNIX 0xFF08
- public static final KeyID TAB = new KeyID(15); // MS 0x0F UNIX 0xFF09
- public static final KeyID Q = new KeyID(16); // MS 0x10 UNIX 0x071 UPPER 0x051
- public static final KeyID W = new KeyID(17); // MS 0x11 UNIX 0x077 UPPER 0x057
- public static final KeyID E = new KeyID(18); // MS 0x12 UNIX 0x065 UPPER 0x045
- public static final KeyID R = new KeyID(19); // MS 0x13 UNIX 0x072 UPPER 0x052
- public static final KeyID T = new KeyID(20); // MS 0x14 UNIX 0x074 UPPER 0x054
- public static final KeyID Y = new KeyID(21); // MS 0x15 UNIX 0x079 UPPER 0x059
- public static final KeyID U = new KeyID(22); // MS 0x16 UNIX 0x075 UPPER 0x055
- public static final KeyID I = new KeyID(23); // MS 0x17 UNIX 0x069 UPPER 0x049
- public static final KeyID O = new KeyID(24); // MS 0x18 UNIX 0x06F UPPER 0x04F
- public static final KeyID P = new KeyID(25); // MS 0x19 UNIX 0x070 UPPER 0x050
- public static final KeyID LBRACKET = new KeyID(26); // MS 0x1A UNIX 0x05b BRACE 0x07b
- public static final KeyID RBRACKET = new KeyID(27); // MS 0x1B UNIX 0x05d BRACE 0x07d
- public static final KeyID RETURN = new KeyID(28); // MS 0x1C UNIX 0xFF0D
- public static final KeyID LCONTROL = new KeyID(29); // MS 0x1D UNIX 0xFFE3
- public static final KeyID A = new KeyID(30); // MS 0x1E UNIX 0x061 UPPER 0x041
- public static final KeyID S = new KeyID(31); // MS 0x1F UNIX 0x073 UPPER 0x053
- public static final KeyID D = new KeyID(32); // MS 0x20 UNIX 0x064 UPPER 0x044
- public static final KeyID F = new KeyID(33); // MS 0x21 UNIX 0x066 UPPER 0x046
- public static final KeyID G = new KeyID(34); // MS 0x22 UNIX 0x067 UPPER 0x047
- public static final KeyID H = new KeyID(35); // MS 0x23 UNIX 0x068 UPPER 0x048
- public static final KeyID J = new KeyID(36); // MS 0x24 UNIX 0x06A UPPER 0x04A
- public static final KeyID K = new KeyID(37); // MS 0x25 UNIX 0x06B UPPER 0x04B
- public static final KeyID L = new KeyID(38); // MS 0x26 UNIX 0x06C UPPER 0x04C
- public static final KeyID SEMICOLON = new KeyID(39); // MS 0x27 UNIX 0x03b COLON 0x03a
- public static final KeyID APOSTROPHE = new KeyID(40); // MS 0x28 UNIX 0x027 QUOTEDBL 0x022
- public static final KeyID GRAVE = new KeyID(41); // MS 0x29 UNIX 0x060 TILDE 0x07e
- public static final KeyID LSHIFT = new KeyID(42); // MS 0x2A UNIX 0xFFE1
- public static final KeyID BACKSLASH = new KeyID(43); // MS 0x2B UNIX 0x05c BAR 0x07c
- public static final KeyID Z = new KeyID(44); // MS 0x2C UNIX 0x07A UPPER 0x05A
- public static final KeyID X = new KeyID(45); // MS 0x2D UNIX 0x078 UPPER 0x058
- public static final KeyID C = new KeyID(46); // MS 0x2E UNIX 0x063 UPPER 0x043
- public static final KeyID V = new KeyID(47); // MS 0x2F UNIX 0x076 UPPER 0x056
- public static final KeyID B = new KeyID(48); // MS 0x30 UNIX 0x062 UPPER 0x042
- public static final KeyID N = new KeyID(49); // MS 0x31 UNIX 0x06E UPPER 0x04E
- public static final KeyID M = new KeyID(50); // MS 0x32 UNIX 0x06D UPPER 0x04D
- public static final KeyID COMMA = new KeyID(51); // MS 0x33 UNIX 0x02c LESS 0x03c
- public static final KeyID PERIOD = new KeyID(52); // MS 0x34 UNIX 0x02e GREATER 0x03e
- public static final KeyID SLASH = new KeyID(53); // MS 0x35 UNIX 0x02f QUESTION 0x03f
- public static final KeyID RSHIFT = new KeyID(54); // MS 0x36 UNIX 0xFFE2
- public static final KeyID MULTIPLY = new KeyID(55); // MS 0x37 UNIX 0xFFAA
- public static final KeyID LALT = new KeyID(56); // MS 0x38 UNIX 0xFFE9
- public static final KeyID SPACE = new KeyID(57); // MS 0x39 UNIX 0x020
- public static final KeyID CAPITAL = new KeyID(58); // MS 0x3A UNIX 0xFFE5 SHIFTLOCK 0xFFE6
- public static final KeyID F1 = new KeyID(59); // MS 0x3B UNIX 0xFFBE
- public static final KeyID F2 = new KeyID(60); // MS 0x3C UNIX 0xFFBF
- public static final KeyID F3 = new KeyID(61); // MS 0x3D UNIX 0xFFC0
- public static final KeyID F4 = new KeyID(62); // MS 0x3E UNIX 0xFFC1
- public static final KeyID F5 = new KeyID(63); // MS 0x3F UNIX 0xFFC2
- public static final KeyID F6 = new KeyID(64); // MS 0x40 UNIX 0xFFC3
- public static final KeyID F7 = new KeyID(65); // MS 0x41 UNIX 0xFFC4
- public static final KeyID F8 = new KeyID(66); // MS 0x42 UNIX 0xFFC5
- public static final KeyID F9 = new KeyID(67); // MS 0x43 UNIX 0xFFC6
- public static final KeyID F10 = new KeyID(68); // MS 0x44 UNIX 0xFFC7
- public static final KeyID NUMLOCK = new KeyID(69); // MS 0x45 UNIX 0xFF7F
- public static final KeyID SCROLL = new KeyID(70); // MS 0x46 UNIX 0xFF14
- public static final KeyID NUMPAD7 = new KeyID(71); // MS 0x47 UNIX 0xFFB7 HOME 0xFF95
- public static final KeyID NUMPAD8 = new KeyID(72); // MS 0x48 UNIX 0xFFB8 UP 0xFF97
- public static final KeyID NUMPAD9 = new KeyID(73); // MS 0x49 UNIX 0xFFB9 PRIOR 0xFF9A
- public static final KeyID SUBTRACT = new KeyID(74); // MS 0x4A UNIX 0xFFAD
- public static final KeyID NUMPAD4 = new KeyID(75); // MS 0x4B UNIX 0xFFB4 LEFT 0xFF96
- public static final KeyID NUMPAD5 = new KeyID(76); // MS 0x4C UNIX 0xFFB5
- public static final KeyID NUMPAD6 = new KeyID(77); // MS 0x4D UNIX 0xFFB6 RIGHT 0xFF98
- public static final KeyID ADD = new KeyID(78); // MS 0x4E UNIX 0xFFAB
- public static final KeyID NUMPAD1 = new KeyID(79); // MS 0x4F UNIX 0xFFB1 END 0xFF9C
- public static final KeyID NUMPAD2 = new KeyID(80); // MS 0x50 UNIX 0xFFB2 DOWN 0xFF99
- public static final KeyID NUMPAD3 = new KeyID(81); // MS 0x51 UNIX 0xFFB3 NEXT 0xFF9B
- public static final KeyID NUMPAD0 = new KeyID(82); // MS 0x52 UNIX 0xFFB0 INSERT 0xFF9E
- public static final KeyID DECIMAL = new KeyID(83); // MS 0x53 UNIX 0xFFAE DELETE 0xFF9F
- public static final KeyID F11 = new KeyID(84); // MS 0x57 UNIX 0xFFC8
- public static final KeyID F12 = new KeyID(85); // MS 0x58 UNIX 0xFFC9
- public static final KeyID F13 = new KeyID(86); // MS 0x64 UNIX 0xFFCA
- public static final KeyID F14 = new KeyID(87); // MS 0x65 UNIX 0xFFCB
- public static final KeyID F15 = new KeyID(88); // MS 0x66 UNIX 0xFFCC
- public static final KeyID KANA = new KeyID(89); // MS 0x70 UNIX 0xFF2D
- public static final KeyID CONVERT = new KeyID(90); // MS 0x79 Japanese keyboard
- public static final KeyID NOCONVERT = new KeyID(91); // MS 0x7B Japanese keyboard
- public static final KeyID YEN = new KeyID(92); // MS 0x7D UNIX 0x0a5
- public static final KeyID NUMPADEQUAL = new KeyID(93); // MS 0x8D UNIX 0xFFBD
- public static final KeyID CIRCUMFLEX = new KeyID(94); // MS 0x90 Japanese keyboard
- public static final KeyID AT = new KeyID(95); // MS 0x91 UNIX 0x040
- public static final KeyID COLON = new KeyID(96); // MS 0x92 UNIX 0x03a
- public static final KeyID UNDERLINE = new KeyID(97); // MS 0x93 NEC PC98
- public static final KeyID KANJI = new KeyID(98); // MS 0x94 UNIX 0xFF21
- public static final KeyID STOP = new KeyID(99); // MS 0x95 UNIX 0xFF69
- public static final KeyID AX = new KeyID(100); // MS 0x96 Japan AX
- public static final KeyID UNLABELED = new KeyID(101); // MS 0x97 J3100
- public static final KeyID NUMPADENTER = new KeyID(102); // MS 0x9C UNIX 0xFF8D
- public static final KeyID RCONTROL = new KeyID(103); // MS 0x9D UNIX 0xFFE4
- public static final KeyID NUMPADCOMMA = new KeyID(104); // MS 0xB3 UNIX 0xFFAC
- public static final KeyID DIVIDE = new KeyID(105); // MS 0xB5 UNIX 0xFFAF
- public static final KeyID SYSRQ = new KeyID(106); // MS 0xB7 UNIX 0xFF15 PRINT 0xFF61
- public static final KeyID RALT = new KeyID(107); // MS 0xB8 UNIX 0xFFEA
- public static final KeyID PAUSE = new KeyID(108); // MS 0xC5 UNIX 0xFF13 BREAK 0xFF6B
- public static final KeyID HOME = new KeyID(109); // MS 0xC7 UNIX 0xFF50
- public static final KeyID UP = new KeyID(110); // MS 0xC8 UNIX 0xFF52
- public static final KeyID PRIOR = new KeyID(111); // MS 0xC9 UNIX 0xFF55
- public static final KeyID LEFT = new KeyID(112); // MS 0xCB UNIX 0xFF51
- public static final KeyID RIGHT = new KeyID(113); // MS 0xCD UNIX 0xFF53
- public static final KeyID END = new KeyID(114); // MS 0xCF UNIX 0xFF57
- public static final KeyID DOWN = new KeyID(115); // MS 0xD0 UNIX 0xFF54
- public static final KeyID NEXT = new KeyID(116); // MS 0xD1 UNIX 0xFF56
- public static final KeyID INSERT = new KeyID(117); // MS 0xD2 UNIX 0xFF63
- public static final KeyID DELETE = new KeyID(118); // MS 0xD3 UNIX 0xFFFF
- public static final KeyID LWIN = new KeyID(119); // MS 0xDB UNIX META 0xFFE7 SUPER 0xFFEB HYPER 0xFFED
- public static final KeyID RWIN = new KeyID(120); // MS 0xDC UNIX META 0xFFE8 SUPER 0xFFEC HYPER 0xFFEE
- public static final KeyID APPS = new KeyID(121); // MS 0xDD UNIX 0xFF67
- public static final KeyID POWER = new KeyID(122); // MS 0xDE Sun 0x1005FF76 SHIFT 0x1005FF7D
- public static final KeyID SLEEP = new KeyID(123); // MS 0xDF No UNIX keysym
- protected static final KeyID FIRST = VOID;
- protected static final KeyID LAST = SLEEP;
- } // class StandardKeyboard.KeyID
-} // class StandardKeyboard
diff --git a/coreAPI/src/java/net/java/games/input/Version.java b/coreAPI/src/java/net/java/games/input/Version.java
deleted file mode 100644
index 143f100..0000000
--- a/coreAPI/src/java/net/java/games/input/Version.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-* Copyright (c) 2004 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 materials provided with the distribution.
-*
-* Neither the name of Sun Microsystems, Inc. or the names of 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 WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
-* NON-INFRINGEMENT, 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 DISTRIBUTING 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 OR 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 use in the
-* design, construction, operation or maintenance of any nuclear facility.
-*/
-
-package net.java.games.input;
-
-/**
- * The version and build number of this implementation.
- * Version numbers for a release are of the form: w.x.y[-a]-z, where:
- * <ul>
- * <li>
- * w - the major version number of the release. This number should
- * start at 1. Typically, a bump in the major version number
- * signifies that the release breaks backwards compatibility
- * with some older release.
- * </li>
- * <li>
- * x - minor version number. This number starts at 0. A bump in
- * the minor version number signifies a release that has significant
- * new functionality.
- * </li>
- * <li>
- * y - minor-minor version number number. This number starts at 0. A
- * bump in the minor-minor version number signifies that new bug
- * fixes have been added to the build.
- * </li>
- * <li>
- * a - an optional build designator followed by a digit. Valid build
- * designators are:
- * <ul>
- * <li>alpha</li>
- * <li>beta</li>
- * </ul>
- * </li>
- * <li>
- * z - build number. This is used to specify the build number of the
- * release. This is usually only important to people that use
- * the daily build of a project. The format is the lower-case
- * letter 'b' followed by a two digit number.
- * </li>
- * </ul>
- *
- * For example, the following are all valid version strings:
- * <ul>
- * <li>1.1.2-b02</li>
- * <li>1.3.5-alpha1-b19</li>
- * <li>4.7.1-beta3-b20</li>
- * </ul>
- *
- */
-public final class Version {
-
- /**
- * Private constructor - no need for user to create
- * an instance of this class.
- */
- private Version() {
- }
-
- /**
- * Version string of this build.
- */
- private static final String version = "1.0.0-b01";
-
- /**
- * Returns the verison string and build number of
- * this implementation. See the class descritpion
- * for the version string format.
- *
- * @return The version string of this implementation.
- */
- public static String getVersion() {
- return version;
- }
-}
diff --git a/coreAPI/src/java/net/java/games/input/package.html b/coreAPI/src/java/net/java/games/input/package.html
deleted file mode 100644
index 666595d..0000000
--- a/coreAPI/src/java/net/java/games/input/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<body>
-
-Top level package for JInput.
-
-<h2>Package Specification</h2>
-
-Use -D jinput.plugins (or net.java.games.input.plugins) and specifiy a list of class name to over ride the plugins system. This will force the classes passed to be loaded first, then plugins will be searched for in the default manner (./controller/*.jar)<BR/>
-Use -D jinput.controllerPluginPath to change the path the plugins mechanism will use to search for plugin Jars.
-
-</body>
-</html> \ No newline at end of file
diff --git a/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java b/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java
deleted file mode 100644
index 9e6d56f..0000000
--- a/coreAPI/src/java/net/java/games/input/test/ControllerReadTest.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * 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.test;
-
-/**
- *
- * @author administrator
- */
-
-import net.java.games.input.*;
-import javax.swing.*;
-import java.util.*;
-import java.util.List;
-import java.awt.*;
-
-abstract class AxisPanel extends JPanel{
- Axis axis;
- float data;
-
- public AxisPanel(Axis ax){
- axis = ax;
- setLayout(new BorderLayout());
- add(new JLabel(ax.getName()+"("+ax.getIdentifier()+")"),
- BorderLayout.NORTH);
- }
-
- public void poll(){
- data = axis.getPollData();
- renderData();
- }
-
- protected abstract void renderData();
-}
-
-class DigitalAxisPanel extends AxisPanel {
- JLabel digitalState = new JLabel("<unread>");
-
- public DigitalAxisPanel(Axis 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();
- }
-}
-
-class DigitalHatPanel extends AxisPanel {
- JLabel digitalState = new JLabel("<unread>");
-
- public DigitalHatPanel(Axis ax) {
- super(ax);
- add(digitalState,BorderLayout.CENTER);
- }
-
- protected void renderData(){
- if (data == Axis.POV.OFF){
- digitalState.setBackground(getBackground());
- digitalState.setText("OFF");
- } 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);
- }
- digitalState.repaint();
- }
-}
-class AnalogAxisPanel extends AxisPanel {
- JLabel analogState = new JLabel("<unread>");
-
- public AnalogAxisPanel(Axis ax) {
- super(ax);
- add(analogState,BorderLayout.CENTER);
- }
-
- protected void renderData(){
- analogState.setText(""+data);
- analogState.repaint();
- }
-}
-
-
-
-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());
- Axis[] axis = ca.getAxes();
- System.out.println("Axis count = "+axis.length);
- if (axis.length>0) {
- int width = (int)Math.ceil(Math.sqrt(axis.length));
- JPanel p = new JPanel();
- p.setLayout(new GridLayout(width,0));
- for(int j=0;j<axis.length;j++){
- addAxis(p,axis[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, Axis ax){
- JPanel p2;
- if (ax.isAnalog()) {
- p2 = new AnalogAxisPanel(ax);
- } else {
- if (ax.getIdentifier() == Axis.Identifier.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();
- }
- }
- }
-}
-
-public class ControllerReadTest extends JFrame{
- static final long HEARTBEATMS =100; // 10th of a second
- List controllers = new ArrayList();
- /** Creates a new instance of ConrtollerReadTest */
- public ControllerReadTest() {
- super("Controller Read Test");
- 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);
- }
-
-}
diff --git a/coreAPI/src/java/net/java/games/input/test/ControllerTextTest.java b/coreAPI/src/java/net/java/games/input/test/ControllerTextTest.java
deleted file mode 100644
index 8b59c8f..0000000
--- a/coreAPI/src/java/net/java/games/input/test/ControllerTextTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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.test;
-
-/**
- *
- * @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("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());
- Axis[] axis = ca[i].getAxes();
- System.out.println("Axis Count: "+axis.length);
- for(int j=0;j<axis.length;j++){
- System.out.println("Axis "+j+": "+axis[j].getName());
- System.out.println(" Identifier: "+
- axis[j].getIdentifier().getName());
- System.out.print(" AxisType: ");
- if (axis[j].isRelative()) {
- System.out.print("Relative");
- } else {
- System.out.print("Absolute");
- }
- if (axis[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();
- }
-
-}
diff --git a/coreAPI/src/java/net/java/games/input/test/RumbleTest.java b/coreAPI/src/java/net/java/games/input/test/RumbleTest.java
deleted file mode 100644
index 64fe204..0000000
--- a/coreAPI/src/java/net/java/games/input/test/RumbleTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * RumbleTest.java
- *
- * Created on 01 December 2003, 23:02
- */
-package net.java.games.input.test;
-
-import net.java.games.input.ControllerEnvironment;
-import net.java.games.input.Controller;
-import net.java.games.input.Rumbler;
-
-/**
- *
- * @author Jeremy
- */
-public class RumbleTest {
-
- /** Creates a new instance of RumbleTest */
- public RumbleTest() {
- ControllerEnvironment ca = ControllerEnvironment.getDefaultEnvironment();
- 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().getName());
- 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) {
- }
- }
- }
- }
-
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- new RumbleTest();
- }
-
-}
diff --git a/plugins/DX8/README.txt b/plugins/DX8/README.txt
deleted file mode 100644
index 12cd468..0000000
--- a/plugins/DX8/README.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-This file modified last on 06/06/2003 by Jeff Kesselman
-
-This is the source tree for the core input API.
-
-Directory Organization:
-
-The root contains a master ANT build.xml.
-After a successful build you will have the following sub directories:
- -- apidocs Where the javadocs get built to
- -- lib Where dependant libraries are kept.
- -- bin Where the plugin dll and jar files ar built to.
- -- src The source files.
-
-
-Build instructions:
-
-To clean: ant clean
-To build: ant all (or just ant)
-To build docs: ant javadoc
-To test:
- This build will install the plug-in into the coreAPI's test
- directories.
- Use the tests in the coreAPI build.xml to test.
-
-Release Info:
- Initial Release: This release contains an implementation of the input
- API designed by Mike Martak of Sun and Thomas (?) of Sony CEA for
- the WIn32 platform. All the code in src/input is cross platform. The
- Win32 code is segregated to the DirectX plugin (src/DXplugin) which
- depends on DirectInput from DX7 (or later).
-
- 05/09/2003: A number of bugs and problems with the DXPlugin are fixed in this
- release. This release also brings the code up to date using the DI8
- interface. This thus is the first release that requries Peter Puck's
- DX8 bindings to compile with MinGW.
-
- 05/09/2003 (second update):
- This version adds a new standard value type to the API.
- Axis.POV holds standard definitions for values for POV (hat) switches
- -- Axis.POV.CENTER and Axis.POV.OFF are synonmous and are
- the center position.
- -- Axis.POV.UP, Axis.POV.DOWN, Axis.POV.LEFT and Axis.POV.RIGHT
- should be self explainatory.
- Any hat that claims to be "normalized" will return these values. (It is
- recommended that all hats be normalized by the systemn specific plugins.)
-
diff --git a/plugins/DX8/build.xml b/plugins/DX8/build.xml
deleted file mode 100644
index 0a4759b..0000000
--- a/plugins/DX8/build.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Written to assume that classpath is rooted in the current directory. -->
-<!-- So this should be OK if you make this script in the root of a filesystem. -->
-<!-- If not, you may prefer to adjust the basedir, or move some directories around. -->
-<!-- The idea is that both Ant and NetBeans have to know what the package root is -->
-<!-- for the classes in your application. -->
-<project name="Direct Input Plugin" basedir="." default="all">
-
- <!-- Don't worry if you don't know the Ant syntax completely or need help on some tasks! -->
- <!-- The standard Ant documentation is bundled. See Help | Help Sets | Ant 1.4.1 Manual. -->
-
- <target name="init">
- <!-- You can set up any variables you want used throughout the script here. -->
- <property name="hello" value="world"/>
- <mkdir dir="classes"/>
- <mkdir dir="bin"/>
- <!-- To use e.g. Jikes, uncomment this line. -->
- <!-- (Or make the same change in Tools | Options | Ant Settings | Properties.) -->
- <!-- <property name="build.compiler" value="jikes"/> -->
- <!-- You might like to set up some overridable paths, etc.: -->
- <!-- <property name="mylib" value="../lib/mylib.jar"/> -->
- </target>
-
- <target name="compile" depends="init">
- <!-- Both srcdir and destdir should be package roots. -->
- <!-- They could be different of course; in that case NetBeans can also be set -->
- <!-- up to compile to a different filesystem in the same way; see Compiler Types: -->
- <javac srcdir="src/java" destdir="classes" debug="true" deprecation="true" source="1.4">
- <!-- To add something to the classpath: -->
- <classpath>
- <pathelement location="lib/jinput.jar"/>
- <pathelement location="lib/jutils.jar"/>
- </classpath>
- <!-- To exclude some files: -->
- <!--
- <exclude name="com/foo/SomeFile.java"/>
- <exclude name="com/foo/somepackage/"/>
- -->
- </javac>
- <exec dir="." executable="g++" os="Windows 2000, Windows XP, Windows 98">
- <arg line=" -D_STRICT_ANSI -D_JNI_IMPLEMENTATION_"/>
- <arg line=" -I'${java.home}/../include' -I'${java.home}/../include/win32' -Ic:/dx9/include"/>
- <arg line=" -o bin/dxinput.dll src/native/input.cpp -Wl,--export-all-symbols"/>
- <arg line=" -shared -Wl,--kill-at -ldxguid -ldinput -ldinput8"/>
- </exec>
- <copy file="bin/dxinput.dll" todir="../../coreAPI/src/tests/controller" />
- </target>
-
- <target name="jar" depends="init,compile">
- <!-- To make a standalone app: -->
- <!-- 1. Create a myapp.mf manifest somewhere. -->
- <!-- 2. Put in it: -->
- <!-- Manifest-Version: 1.0 -->
- <!-- Main-Class: com.foo.Main -->
- <!-- 3. Pass to <jar>: manifest="myapp.mf" -->
- <jar jarfile="bin/dxinput.jar" compress="true" basedir="classes">
- <exclude name="**/*.java"/>
- <exclude name="**/*.form"/>
- <exclude name="dxinput.mf"/>
- <exclude name="dxinput.jar"/>
- <exclude name="apidoc"/>
- </jar>
- <copy file="bin/dxinput.jar" todir="../../coreAPI/src/tests/controller" />
- </target>
-
- <target name="all" depends="compile,jar" description="Build everything.">
- <echo message="Application built. Hello ${hello}!"/>
- </target>
-
- <target name="test" depends="init,all" description="Try running it.">
- <echo message="Test by running test on the build.xml for input"/>
- </target>
-
- <target name="javadoc" depends="init" description="Javadoc for my API.">
- <mkdir dir="apidocs"/>
- <javadoc packagenames="net.*"
- destdir="apidocs"
- additionalparam="-source 1.4">
- <sourcepath>
- <pathelement location="src/java"/>
- </sourcepath>
- <classpath>
- <pathelement location="lib/jinput.jar"/>
- <pathelement location="lib/jutils.jar"/>
- </classpath>
- </javadoc>
- </target>
-
- <target name="clean" depends="init" description="Clean all build products.">
- <delete>
- <fileset dir="classes">
- <include name="**/*.class"/>
- </fileset>
- </delete>
- <delete file="bin/dxinput.jar" failonerror="no"/>
- <delete file="bin/dxinput.dll" failonerror="no"/>
- <delete file="../../coreAPI/src/tests/controller/dxinput.jar" failonerror="no" />
- <delete file="../../coreAPI/src/test/controller/dxinput.dll" failonerror="no"/>
- <delete dir="../../docs/input/win32/apidoc" failonerror="no"/>
- </target>
-
-</project>
diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java b/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java
deleted file mode 100644
index e9cfc6e..0000000
--- a/plugins/DX8/src/java/net/java/games/input/DirectInputAxis.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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 net.java.games.input.AbstractAxis;
-import net.java.games.input.Axis;
-
-/**
- *
- * @author martak
- * @version
- */
-class DirectInputAxis extends AbstractAxis {
-
- /**
- * DIDFT_ constants and macros defined in dinput.h
- */
- private static final int DIDFT_ALL = 0x00000000;
- private static final int DIDFT_RELAXIS = 0x00000001;
- private static final int DIDFT_ABSAXIS = 0x00000002;
- private static final int DIDFT_AXIS = 0x00000003;
- private static final int DIDFT_PSHBUTTON = 0x00000004;
- private static final int DIDFT_TGLBUTTON = 0x00000008;
- private static final int DIDFT_BUTTON = 0x0000000C;
- private static final int DIDFT_POV = 0x00000010;
- private static final int DIDFT_COLLECTION = 0x00000040;
- private static final int DIDFT_NODATA = 0x00000080;
- private static final int DIDFT_ANYINSTANCE = 0x00FFFF00;
- private static final int DIDFT_INSTANCEMASK = DIDFT_ANYINSTANCE;
- private static final int DIDFT_FFACTUATOR = 0x01000000;
- private static final int DIDFT_FFEFFECTTRIGGER = 0x02000000;
- private static final int DIDFT_OUTPUT = 0x10000000;
- private static final int DIDFT_NOCOLLECTION = 0x00FFFF00;
- private static int DIDFT_MAKEINSTANCE(int n) {
- return ((n&0xffff) << 8);
- }
- private static int DIDFT_GETTYPE(int n) {
- return (n&0xFF);
- }
- private static int DIDFT_GETINSTANCE(int n) {
- return ((n >> 8)&0xffff);
- }
- private static int DIDFT_ENUMCOLLECTION(int n) {
- return ((n&0xFFFF) << 8);
- }
-
- private DirectInputDevice device;
- /**
- * DIJOYSTATE structure defined in dinput.h:
- *
- * <pre>
- * typedef struct DIJOYSTATE {
- * LONG lX;
- * LONG lY;
- * LONG lZ;
- * LONG lRx;
- * LONG lRy;
- * LONG lRz;
- * LONG rglSlider[2];
- * DWORD rgdwPOV[4];
- * BYTE rgbButtons[32];
- * } DIJOYSTATE, *LPDIJOYSTATE;
- *
- * 80 bytes total
- * </pre>
- */
- private int offset;
- private int type;
- private int instance;
- private int bitmask = 0xffffffff;
- private int bitshift = 0;
-
- private DirectInputAxis(DirectInputDevice device, Axis.Identifier id,
- int didft, String name) {
- super(name, id);
- this.device = device;
- this.type = DIDFT_GETTYPE(didft);
- this.instance = DIDFT_GETINSTANCE(didft);
- if (id == Axis.Identifier.X) {
- offset = 0;
- } else if (id == Axis.Identifier.Y) {
- offset = 1;
- } else if (id == Axis.Identifier.Z) {
- offset = 2;
- } else if (id == Axis.Identifier.RX) {
- offset = 3;
- } else if (id == Axis.Identifier.RY) {
- offset = 4;
- } else if (id == Axis.Identifier.RZ) {
- offset = 5;
- } else if (id == Axis.Identifier.SLIDER) {
- //System.out.println("Slider on "+name+" instance = "+instance);
- offset = 6 + (instance>>2);
- } else if (id == Axis.Identifier.POV) {
- //System.out.println("POV on "+name+" instance = "+instance);
- offset = 8 + instance;
- } else if (id == Axis.Identifier.BUTTON) {
- //System.out.println("Button on "+name+" instance = "+instance);
- offset = 12 + (instance/4);
- bitshift = (instance%4)*8;
- bitmask=0xff;
- }
- }
-
- /** Returns the data from the last time the control has been polled.
- * If this axis is a button, the value returned will be either 0.0f or 1.0f.
- * If this axis is normalized, the value returned will be between -1.0f and
- * 1.0f.
- * @return A float between -1.0 and 1.0
- */
- public float getPollData() {
- int data = ((device.data[offset] >> bitshift)&bitmask);
- if ((type&DIDFT_BUTTON) != 0 ) {
- return (float)((data&0x80)>>7);
- } else if ((type&DIDFT_AXIS)!=0){ // all axes are set for -32768 to 32738
- return ((float)data)/32768;
- } else if ((type&DIDFT_POV)!=0) {
- if (data == -1) {
- 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;
- }
- } else { // return raw value
- return (float)data;
- }
-
- }
-
- /** Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- * @return true if data has chnaged since last poll, else false
- */
- public boolean isRelative() {
- return (type & DIDFT_RELAXIS) != 0;
- }
-
- /** Returns whether or not the axis is analog, or false if it is digital.
- * @return true if analog, false if digital
- */
- public boolean isAnalog() {
- return (type & DIDFT_AXIS) != 0;
- }
-
- /** Returns whether or not data polled from this axis is normalized
- * between the values of -1.0f and 1.0f.
- * @return true if data is normalized, false if not.
- */
- public boolean isNormalized() {
- return (type & (DIDFT_BUTTON|DIDFT_AXIS|DIDFT_POV)) != 0;
- }
-
- /** Creates a new DirectInputAxis (factory method).
- * This is a function used internally during set up
- * @return The new DirectInputAxis object.
- * @param device The device to attach this axis to.
- *
- * @param didft The identifier for the axis as provided by DX8.
- * @param name A name to give the new axis.
- * @param id The identifier for the device
- */
- public static DirectInputAxis createAxis(DirectInputDevice device,
- Axis.Identifier id, int didft, String name) {
- return new DirectInputAxis(device, id, didft, name);
- }
-}
diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputDevice.java b/plugins/DX8/src/java/net/java/games/input/DirectInputDevice.java
deleted file mode 100644
index d269961..0000000
--- a/plugins/DX8/src/java/net/java/games/input/DirectInputDevice.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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 net.java.games.input.AbstractController;
-import net.java.games.input.Axis;
-import net.java.games.input.Controller;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/**
- *
- * @author martak
- * @version
- */
-class DirectInputDevice extends AbstractController {
-
- /**
- * DIDEVTYPE_ constants from dinput.h header file
- ** JPK NOTE: This changed in DI8. In general this
- * is fragile anda way shoudl be found to tie these mroe directly
- * to the header files.
- */
- /* Mike's <=DX7 types
- private static final int DIDEVTYPEJOYSTICK_UNKNOWN = 1;
- private static final int DIDEVTYPEJOYSTICK_TRADITIONAL = 2;
- private static final int DIDEVTYPEJOYSTICK_FLIGHTSTICK = 3;
- private static final int DIDEVTYPEJOYSTICK_GAMEPAD = 4;
- private static final int DIDEVTYPEJOYSTICK_RUDDER = 5;
- private static final int DIDEVTYPEJOYSTICK_WHEEL = 6;
- private static final int DIDEVTYPEJOYSTICK_HEADTRACKER = 7;
- */
-
- /**
- * Pointer to the IDirectInputDevice for this device
- */
- private long lpDevice;
-
- /**
- * Type of device
- */
- private Type type;
-
- /**
- * Do we need to poll data?
- */
- private boolean polled = true;
- /**
- * Data when polling, as per the DIJOYSTATE structure in dinput.h;
- * @see DirectInputAxis for a breakdown of this structure
- */
- int[] data = new int[32];
-
- /** Array list of rumblers */
- private ArrayList rumblerList = new ArrayList();
-
- /**
- * Private constructor
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param subtype The subtype of device, as defined in the DIDEVTYPE
- * constants above
- * @param productName The product name for the device
- * @param instanceName The name of the device
- */
- private DirectInputDevice(long lpDevice, int subtype, String productName,
- String instanceName,boolean polled) {
- super(productName + " " + instanceName);
- this.lpDevice = lpDevice;
- this.polled = polled;
- System.out.println("Creating "+productName+" polling = "+polled);
- switch(subtype) {
- /*
- case DIDEVTYPEJOYSTICK_GAMEPAD:
- type = Type.GAMEPAD; break;
- case DIDEVTYPEJOYSTICK_RUDDER:
- type = Type.RUDDER; break;
- case DIDEVTYPEJOYSTICK_WHEEL:
- type = Type.WHEEL; break;
- case DIDEVTYPEJOYSTICK_HEADTRACKER:
- type = Type.HEADTRACKER; break;
- case DIDEVTYPEJOYSTICK_TRADITIONAL: // fall through
- case DIDEVTYPEJOYSTICK_FLIGHTSTICK: // fall through
- */
- default:
- type = Type.STICK; break;
- }
- axes = initDirectInputAxes();
- }
-
- /**
- * Used instead of overriding initAxes because it needs the
- * pointer to the IDirectInputDevice
- */
- private Axis[] initDirectInputAxes() {
- ArrayList list = new ArrayList();
- enumObjects(lpDevice, list);
- Axis[] ret = new Axis[list.size()];
- Iterator it = list.iterator();
- int i = 0;
- while (it.hasNext()) {
- ret[i] = (Axis)it.next();
- i++;
- }
- return ret;
- }
-
- /**
- * Callback called by enumObjects to add a new axis into the list
- * @param list This in which to add the new axis
- * @param id The identifier for the axis, based on GUID
- * @param didft The combination of DIDFT_ flags that make up the type and
- * instance number of the axis.
- * @param name The name to call the axis.
- */
- private void addAxis(ArrayList list, Axis.Identifier id, int didft,
- String name) {
- list.add(DirectInputAxis.createAxis(this, id, didft, name));
- }
-
- /**
- * Callback called by enumDevice to add a rumbler
- *
- * @param effect the natie effect id
- * @param axisID The axis ID
- */
- private void addRumbler(long effect, Axis.Identifier axisID, String axisName) {
- rumblerList.add(new DirectInputRumbler(this, effect, axisID, axisName));
- }
-
- /** Polls axes for data. Returns false if the controller is no longer valid.
- * Polling reflects the current state of the device when polled, and is
- * unbuffered.
- * @return False if the co troller is no longer valid, else true.
- */
- public boolean poll() {
- return pollNative(lpDevice, data, polled);
- }
-
- /** Returns the type of Controller.
- * @return The type of the controller.
- */
- public Type getType() {
- return type;
- }
-
- /** Returns the zero-based port number for this Controller.
- * @return The port number.
- */
- public int getPortNumber() {
- // REMIND : We may be able to parse this from the name string
- return 0;
- }
-
- /**
- * Returns the rumbler array
- */
- public Rumbler[] getRumblers() {
- return (Rumbler[]) rumblerList.toArray(new Rumbler[0]);
- }
-
- /**
- * Polls the device; native method. The data from the poll is stored in
- * the data array.
- */
- private native boolean pollNative(long lpDevice, int[] data,
- boolean polled);
-
- /**
- * Enumerates the axes on the device
- */
- private native boolean enumObjects(long lpDevice, ArrayList list);
-
- /** Creates a new DirectInputDevice (factory method)
- * This is a function used internally during set up
- * @param polled Whether this device's driver should actually be
- * polled during a call to Poll or whether it is an
- * interrupt driven device that should ignore poll
- * requests.
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param subtype The subtype of device, as defined in the DIDEVTYPE
- * constants above
- * @param productName The product name for the device
- * @param instanceName The name of the device
- * @return The new DirectInputDevice object
- */
- public static DirectInputDevice createDevice(long lpDevice, int subtype,
- String productName, String instanceName, boolean polled) {
- return new DirectInputDevice(lpDevice, subtype, productName,
- instanceName,polled);
- }
-} // class DirectInputDevice
diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputEnvironmentPlugin.java b/plugins/DX8/src/java/net/java/games/input/DirectInputEnvironmentPlugin.java
deleted file mode 100644
index fcaa278..0000000
--- a/plugins/DX8/src/java/net/java/games/input/DirectInputEnvironmentPlugin.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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.security.AccessController;
-import java.util.ArrayList;
-import java.util.Iterator;
-import net.java.games.input.Controller;
-import net.java.games.input.ControllerEnvironment;
-//import sun.security.action.LoadLibraryAction;
-import net.java.games.util.plugins.Plugin;
-
-/** DirectInput implementation of controller environment
- * @author martak
- * @version 1.0
- */
-public class DirectInputEnvironmentPlugin extends ControllerEnvironment
- implements Plugin
-{
-
- static {
- /** Mikes old code, causes it to be laoded by wrong loader
- java.security.AccessController.doPrivileged(
- new LoadLibraryAction("jinput"));
- */
- System.loadLibrary("dxinput");
- }
-
- /**
- * DIDEVTYPE_ constants from dinput.h header file
- * JPK NOTE: changed in DX8 so had to be changed. This is
- * fragile, we should find a way to set them from
- * the C side sowe can stay up to date with header
- */
- /** DX7 and earlier
- private static final int DIDEVTYPE_DEVICE = 1;
- private static final int DIDEVTYPE_MOUSE = 2;
- private static final int DIDEVTYPE_KEYBOARD = 3;
- private static final int DIDEVTYPE_JOYSTICK = 4;
- private static final int DIDEVTYPE_HID = 0x00010000;
- private static int GET_DIDEVICE_TYPE(int dwDevType) {
- return (int)((byte)dwDevType);
- }
- private static int GET_DIDEVICE_SUBTYPE(int dwDevType) {
- return (int)((byte)((((short)dwDevType) >> 8) & 0xFF));
- }
- **/
- /* DX8 and 9 */
- private static final int DI8DEVTYPE_DEVICE = 0x11;
- private static final int DI8DEVTYPE_MOUSE = 0x12;
- private static final int DI8DEVTYPE_KEYBOARD = 0x13;
- private static final int DI8DEVTYPE_JOYSTICK = 0x14;
- private static final int DI8DEVTYPE_GAMEPAD = 0x15;
- private static final int DI8DEVTYPE_DRIVING = 0x16;
- private static final int DI8DEVTYPE_FLIGHT = 0x17;
- private static final int DI8DEVTYPE_1STPERSON = 0x18;
- private static final int DI8DEVTYPE_DEVICECTRL = 0x19;
- private static final int DI8DEVTYPE_SCREENPOINTER = 0x1A;
- private static final int DI8DEVTYPE_REMOTE = 0x1B;
- private static final int DI8DEVTYPE_SUPPLEMENTAL = 0x1C;
-
- private static int GET_DIDEVICE_TYPE(int dwDevType) {
- return (dwDevType&0xFF);
- }
- private static int GET_DIDEVICE_SUBTYPE(int dwDevType) {
- return (int)((byte)((((short)dwDevType) >> 8) & 0xFF));
- }
-
- // Pointer to DirectInput instance
- private long lpDirectInput;
- // Permanent array of controllers
- private Controller[] controllers;
-
- /** Creates new DirectInputEnvironment */
- public DirectInputEnvironmentPlugin() {
- lpDirectInput = directInputCreate();
- enumControllers();
- }
-
- /** Returns a list of all controllers available to this environment,
- * or an empty array if there are no controllers in this environment.
- * @return An array of controllers that may be empty.
- */
- public Controller[] getControllers() {
- return controllers;
- }
-
- private void enumControllers() {
- // If direct input fails, create an empty array
- if (lpDirectInput == 0) {
- controllers = new Controller[] {};
- return;
- }
- // Create temporary controller array
- ArrayList tempDevices = new ArrayList();
- // Eumerate devices
- enumDevices(lpDirectInput, tempDevices);
- // Set up permanent controller array
- controllers = new Controller[tempDevices.size()];
- Iterator it = tempDevices.iterator();
- int i = 0;
- while (it.hasNext()) {
- controllers[i] = (Controller)it.next();
- i++;
- }
- }
-
- /**
- * Creates a new device, adding it to the list supplied.
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param type The type of device to create, as defined by the constants
- * in dinput.h (see DI8DEVTYPE constants above).
- * @param productName The product name for the device
- * @param instanceName The name of the device
- */
- private void addDevice(ArrayList list, long lpDevice,
- int type, String productName, String instanceName, boolean polled) {
- Controller c;
- int category = GET_DIDEVICE_TYPE(type);
- int subtype = GET_DIDEVICE_SUBTYPE(type);
- //System.out.println("Category = "+category);
- if (category == DI8DEVTYPE_MOUSE) {
- c = DirectInputMouse.createMouse(lpDevice, subtype, productName,
- instanceName);
- } else if (category == DI8DEVTYPE_KEYBOARD) {
- c = DirectInputKeyboard.createKeyboard(lpDevice, subtype,
- productName, instanceName);
- } else {
- // commented out the assert as we have already got devices that are
- // gamepad type, but wr are still going to create them as
- // DirectInputDevices
- //assert category == DI8DEVTYPE_JOYSTICK;
- c = DirectInputDevice.createDevice(lpDevice, subtype, productName,
- instanceName,polled);
- }
- if (c != null) {
- list.add(c);
- }
- }
-
- /**
- * Returns the direct input instance, or 0 if failed to initialize
- */
- private native long directInputCreate();
-
- /**
- * Enumerates all devices, calling createDevice for each one
- */
- private native boolean enumDevices(long lpDirectInput, ArrayList list);
-} // class DirectInputEnvironment
diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputKeyboard.java b/plugins/DX8/src/java/net/java/games/input/DirectInputKeyboard.java
deleted file mode 100644
index 6faf163..0000000
--- a/plugins/DX8/src/java/net/java/games/input/DirectInputKeyboard.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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 net.java.games.input.AbstractAxis;
-import net.java.games.input.Axis;
-import net.java.games.input.StandardKeyboard;
-
-/**
- * DirectInput keyboard implementation.
- * @author martak
- * @version
- */
-class DirectInputKeyboard extends StandardKeyboard {
-
- /**
- * DIDEVTYPE_ constants from dinput.h header file
- */
- private static final int DIDEVTYPEKEYBOARD_UNKNOWN = 0;
- private static final int DIDEVTYPEKEYBOARD_PCXT = 1;
- private static final int DIDEVTYPEKEYBOARD_OLIVETTI = 2;
- private static final int DIDEVTYPEKEYBOARD_PCAT = 3;
- private static final int DIDEVTYPEKEYBOARD_PCENH = 4;
- private static final int DIDEVTYPEKEYBOARD_NOKIA1050 = 5;
- private static final int DIDEVTYPEKEYBOARD_NOKIA9140 = 6;
- private static final int DIDEVTYPEKEYBOARD_NEC98 = 7;
- private static final int DIDEVTYPEKEYBOARD_NEC98LAPTOP = 8;
- private static final int DIDEVTYPEKEYBOARD_NEC98106 = 9;
- private static final int DIDEVTYPEKEYBOARD_JAPAN106 = 10;
- private static final int DIDEVTYPEKEYBOARD_JAPANAX = 11;
- private static final int DIDEVTYPEKEYBOARD_J3100 = 12;
-
- /**
- * Key index crosstable; maps indices into the data array to virtual keys
- * in the key array in StandardKeyboard.
- * For example, the key F11 is at index 84 in the array of keys in
- * StandardKeyboard, yet it is data element 87 (0x57) in our data array.
- * <p>
- * To access the data element of a particular key (F11), we use the
- * crosstable as follows:
- * <p><code>
- * KeyID f11 = StandardKey.KeyID.F11;
- * int keyIndex = f11.getKeyIndex(); // returns 84
- * int crossIndex = CROSSTABLE[keyIndex]; // returns 0x57 (87)
- * </code>
- * To find a key given the data element index (87), we do a simple search
- * through the crosstable starting at that index (index 87/0x57 = 0x65) and
- * looking backwards until we find our key itself, or a lower number
- * (meaning the key was not found). We can only take advantage of this
- * algorithm only because on Windows, our crosstable is in increasing order.
- */
- private final static int[] CROSSTABLE = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, // _9
- 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, // Y
- 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, // D
- 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, // BACKSLASH
- 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, // RSHIFT
- 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, // F7
- 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, // NUMPAD5
- 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x57, 0x58, 0x64, 0x65, // F14
- 0x66, 0x70, 0x79, 0x7B, 0x7D, 0x8D, 0x90, 0x91, 0x92, 0x93, 0x94, // KANJI
- 0x95, 0x96, 0x97, 0x9C, 0x9D, 0xB3, 0xB5, 0xB7, 0xB8, 0xC5, 0xC7, // HOME
- 0xC8, 0xC9, 0xCB, 0xCD, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xDB, 0xDC, // RWIN
- 0xDD, 0xDE, 0xDF // SLEEP
- };
-
- /**
- * Pointer to the IDirectInputDevice for this device
- */
- private long lpDevice;
-
- /**
- * Subtype of keyboard, defined by DIDEVTYPE constants
- */
- private int subtype;
-
- /**
- * Polling key data
- */
- private byte[] keyData = new byte[256];
-
- /**
- * Private constructor
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param subtype The subtype of keyboard, as defined in the DIDEVTYPE
- * constants above
- * @param productName The product name for the device
- * @param instanceName The name of the device
- */
- private DirectInputKeyboard(long lpDevice, int subtype, String productName,
- String instanceName) {
- super(productName + " (" + instanceName + ")");
- this.lpDevice = lpDevice;
- this.subtype = subtype;
- }
-
- /**
- * Callback to rename a given key by index, name
- * @param index the index in the data array
- * @param name the name of the key
- */
- private void renameKey(int index, String name) {
- int keyIndex = index;
- if (keyIndex > CROSSTABLE.length) {
- keyIndex = CROSSTABLE.length - 1;
- }
- for (; CROSSTABLE[keyIndex] > index; keyIndex--)
- ;
- if (CROSSTABLE[keyIndex] == index) {
- Axis[] axes = getAxes();
- AbstractAxis key = (AbstractAxis)axes[index];
- if (name != null && name.length() > 0) {
- //System.out.println("Renaming key " + key.getName() +
- // " to " + name + " index=" +
- // index + " keyIndex=" + keyIndex + " CROSSTAB=" +
- // CROSSTABLE[keyIndex]);
- key.setName(name);
- }
- } else {
- //System.out.println("Key not found " + name + " index=" + index +
- // " keyIndex=" + keyIndex + " CROSSTAB=" +
- // CROSSTABLE[keyIndex]);
- }
- }
-
- /** Polls axes for data. Returns false if the controller is no longer valid.
- * Polling reflects the current state of the device when polled.
- * @return False if the KB is no longer valid, true otherwise.
- */
- public boolean poll() {
- return pollNative(lpDevice, keyData);
- }
-
- /** Returns whether or not the given key has been pressed since the last
- * call to poll.
- * @param key The key whose state to check.
- * @return true if this key has changed state since last read of its state, false otherwise.
- */
- protected boolean isKeyPressed(Key key) {
- KeyID id = (KeyID)key.getIdentifier();
- int keyIndex = id.getKeyIndex();
- int crossIndex = CROSSTABLE[keyIndex];
- return ((keyData[crossIndex] & 0x80) != 0);
- }
-
- /**
- * Polls the device; native method
- */
- private native boolean pollNative(long lpDevice, byte[] keyData);
-
- /**
- * Renames the keys with the name provided by DirectInput
- */
- private native boolean renameKeys(long lpDevice);
-
- /** Creates a new DirectInputKeyboard (factory method)
- * This is a function used internally during set up.
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param subtype The subtype of keyboard, as defined in the DIDEVTYPE
- * constants above
- * @param productName The product name for the keyboard
- * @param instanceName The name of the keyboard
- * @return The new DirectInputKeyboard object.
- */
- public static DirectInputKeyboard createKeyboard(long lpDevice,
- int subtype, String productName, String instanceName) {
- DirectInputKeyboard ret = new DirectInputKeyboard(lpDevice, subtype,
- productName, instanceName);
- ret.renameKeys(lpDevice);
- return ret;
- }
-} // class DirectInputKeyboard
diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputMouse.java b/plugins/DX8/src/java/net/java/games/input/DirectInputMouse.java
deleted file mode 100644
index 7241414..0000000
--- a/plugins/DX8/src/java/net/java/games/input/DirectInputMouse.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
- * 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 net.java.games.input.AbstractAxis;
-import net.java.games.input.Axis;
-import net.java.games.input.Mouse;
-
-/**
- * DirectInput mouse implementation.
- * @author martak
- * @version
- */
-class DirectInputMouse extends Mouse {
-
- /**
- * DIDEVTYPE_ constants from dinput.h header file
- */
- private static final int DIDEVTYPEMOUSE_UNKNOWN = 1;
- private static final int DIDEVTYPEMOUSE_TRADITIONAL = 2;
- private static final int DIDEVTYPEMOUSE_FINGERSTICK = 3;
- private static final int DIDEVTYPEMOUSE_TOUCHPAD = 4;
- private static final int DIDEVTYPEMOUSE_TRACKBALL = 5;
-
- /**
- * Pointer to the IDirectInputDevice for this device
- */
- private long lpDevice;
-
- /**
- * Type of mouse
- */
- private Type type;
-
- /**
- * Mouse data
- */
- private byte[] mouseData = new byte[20];
-
- /**
- * Private constructor
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param subtype The subtype of mouse, as defined in the DIDEVTYPE
- * constants above
- * @param productName The product name for the device
- * @param instanceName The name of the device
- */
- private DirectInputMouse(long lpDevice, int subtype, String productName,
- String instanceName) {
- super(productName + " " + instanceName);
- this.lpDevice = lpDevice;
- buttons = new ButtonsImpl();
- ball = new BallImpl();
- switch(subtype) {
- case DIDEVTYPEMOUSE_FINGERSTICK:
- type = Type.FINGERSTICK; break;
- case DIDEVTYPEMOUSE_TOUCHPAD:
- type = Type.TRACKPAD; break;
- case DIDEVTYPEMOUSE_TRACKBALL:
- type = Type.TRACKBALL; break;
- case DIDEVTYPEMOUSE_TRADITIONAL: // fall through
- case DIDEVTYPEMOUSE_UNKNOWN: // fall through
- default:
- type = Type.MOUSE; break;
- }
- renameAxes(lpDevice);
- }
-
- /**
- * Callback to rename a given axis by type, name
- */
- private void renameAxis(Axis.Identifier id, String name) {
- AbstractAxis axis;
- if (id instanceof ButtonID) {
- axis = (AbstractAxis)getButtons().getAxis(id);
- } else {
- axis = (AbstractAxis)getBall().getAxis(id);
- }
- axis.setName(name);
- //System.out.println("Renaming " + name);
- }
-
- /** Polls axes for data. Returns false if the controller is no longer valid.
- * Polling reflects the current state of the device when polled.
- * @return false if the mosue is no lonegr valid, true otherwise.
- */
- public boolean poll() {
- return pollNative(lpDevice, mouseData);
- }
-
- /** Returns the type of the Controller.
- * @return The device type of the controller (logically this
- * shoudl be some form of "mouse" .)
- */
- public Type getType() {
- return type;
- }
-
- /** Creates a new DirectInputMouse (factory method)
- * This is a function used internally during set up.
- * @param lpDevice A pointer to the IDirectInputDevice for the device.
- * @param subtype The subtype of mouse, as defined in the DIDEVTYPE
- * constants above
- * @param productName The product name for the keyboard
- * @param instanceName The name of the keyboard
- * @return The new DirectInputMouse object.
- */
- public static DirectInputMouse createMouse(long lpDevice, int subtype,
- String productName, String instanceName) {
- return new DirectInputMouse(lpDevice, subtype, productName,
- instanceName);
- }
-
- /**
- * Implementation class representing the mouse ball
- */
- class BallImpl extends Ball {
-
- private int numAxes;
-
- /**
- * Public constructor
- */
- public BallImpl() {
- super(DirectInputMouse.this.getName() + " ball");
- numAxes = getNumAxes(lpDevice);
- x = new BallAxis(Axis.Identifier.X);
- y = new BallAxis(Axis.Identifier.Y);
- if(numAxes > 2) {
- wheel = new BallAxis(Axis.Identifier.SLIDER);
- }
- }
- } // class DirectInputMouse.BallImpl
-
- /**
- * Implementation class representing the mouse buttons
- */
- class ButtonsImpl extends Buttons {
-
- private int numButtons;
-
- /**
- * Public constructor
- */
- public ButtonsImpl() {
- super(DirectInputMouse.this.getName() + " buttons");
- numButtons = getNumButtons(lpDevice);
- left = new ButtonImpl(ButtonID.LEFT);
- right = new ButtonImpl(ButtonID.RIGHT);
- if(numButtons>2) {
- middle = new ButtonImpl(ButtonID.MIDDLE);
- }
- if(numButtons>3) {
- side = new ButtonImpl(ButtonID.SIDE);
- }
- if(numButtons>4) {
- extra = new ButtonImpl(ButtonID.EXTRA);
- }
- if(numButtons>5) {
- forward = new ButtonImpl(ButtonID.FORWARD);
- }
- if(numButtons>6) {
- back = new ButtonImpl(ButtonID.BACK);
- }
- }
- } // class DirectInputMouse.ButtonsImpl
-
- /**
- * Polls the device; native method
- */
- private native boolean pollNative(long lpDevice, byte[] mouseData);
-
- /**
- * Renames the axes with the name provided by DirectInput
- */
- private native boolean renameAxes(long lpDevice);
-
- // another Endolf special
- /**
- * Gets the number of buttons the mouse supports
- */
- private native int getNumButtons(long lpDevice);
- /**
- * Gets the number of axes the mouse supports
- */
- private native int getNumAxes(long lpDevice);
-
- /**
- * Mouse button axis implementation
- */
- class ButtonImpl extends Button {
-
- /**
- * Index into the mouseData array
- */
- private final int index;
-
- /** Public constructor
- * @param id An ID of a button to create an obejct to represent.
- *
- */
- public ButtonImpl(ButtonID id) {
- super(id.getName(), id);
- if (id == ButtonID.LEFT) {
- index = 12;
- } else if (id == ButtonID.RIGHT) {
- index = 13;
- } else if (id == ButtonID.MIDDLE) {
- index = 14;
- } else if (id == ButtonID.SIDE) {
- index = 15;
- } else if (id == ButtonID.EXTRA) {
- index = 16;
- } else if (id == ButtonID.FORWARD) {
- index = 17;
- } else if (id == ButtonID.BACK) {
- index = 18;
- } else {
- throw new RuntimeException("Unknown button");
- }
- }
-
- /** Returns the data from the last time the control has been polled.
- * If this axis is a button, the value returned will be either 0.0f or 1.0f.
- * If this axis is normalized, the value returned will be between -1.0f and
- * 1.0f.
- * @return state of controller. (Note: DX8 mice actually
- * queue state so what is returned is the next state,
- * not necessarily the most current one.)
- */
- public float getPollData() {
- // Mouse button
- byte data = mouseData[index];
- if ((data & 0x80) != 0) {
- return 1.0f;
- } else {
- return 0.0f;
- }
- }
-
- /** Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- * @return true if data is relative, otherwise false.
- */
- public boolean isRelative() {
- return false;
- }
- } // class DirectInputMouse.ButtonImpl
-
- /**
- * Mouse ball axis implementation
- */
- class BallAxis extends AbstractAxis {
-
- /**
- * Starting index into the mouseData array
- */
- private final int index;
-
- /** Public constructor
- * @param id An ID for a mouse axis to create an object to represent.
- */
- public BallAxis(Identifier id) {
- super(id.getName(), id);
- if (id == Identifier.X) {
- index = 0;
- } else if (id == Identifier.Y) {
- index = 4;
- } else if (id == Identifier.SLIDER) {
- index = 8;
- } else {
- throw new RuntimeException("Unknown mouse axis");
- }
- }
-
- // Endolf changed this comment, we *are* a mouse axis if we are in here,
- // and mouse axes no longer are normalised at all
- /** Returns the data from the last time the control has been polled.
- *
- * @return data The total mouse axis change since the last poll
- */
- public float getPollData() {
- int data = ((int)mouseData[index+3] << 24) |
- ((int)mouseData[index + 2] << 16) |
- ((int)mouseData[index + 1] << 8) |
- ((int)mouseData[index]);
- return (float)data;
- }
-
- /** Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- * @return true if relative, otherwise false.
- */
- public boolean isRelative() {
- return true;
- }
-
- /** Returns whether or not the axis is analog, or false if it is digital.
- * @return true if analog, false if digital
- */
- public boolean isAnalog() {
- return true;
- }
-
- /** Returns whether or not data polled from this axis is normalized between the values of -1.0f and 1.0f.
- *
- * @return true if normalized, otherwise false.
- */
- public boolean isNormalized() {
- return false;
- }
-
- } // class DirectInputMouse.MouseBallAxis
-} // class DirectInputMouse
diff --git a/plugins/DX8/src/java/net/java/games/input/DirectInputRumbler.java b/plugins/DX8/src/java/net/java/games/input/DirectInputRumbler.java
deleted file mode 100644
index 444bf02..0000000
--- a/plugins/DX8/src/java/net/java/games/input/DirectInputRumbler.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Copyright (C) 2003 Jeremy Booth ([email protected])
- *
- * 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;
-
-/**
- * Implementation of the Rumbler interface for direct x
- *
- * @author Endolf
- */
-public class DirectInputRumbler implements Rumbler {
-
- /** The parent device */
- private DirectInputDevice device;
- /** The native effect */
- private long effect;
- /** The identifier of the axis we are attached too */
- private Axis.Identifier axisID;
- /** The name of the axis this rumbler is attached too */
- private String axisName;
-
- /**
- * Creates a new instance of DirectInputRumbler
- *
- * @param device The parent device
- * @param effect The native effect
- * @param axisID The id of the axis this rumbler is attached too
- * @param axisName The name of the axis this rumbler is attached too
- */
- public DirectInputRumbler(DirectInputDevice device, long effect, Axis.Identifier axisID, String axisName) {
- this.device = device;
- this.effect = effect;
- this.axisID = axisID;
- this.axisName = axisName;
- }
-
- /**
- * Gets the identifier of the axis this rumbler is attached too
- *
- * @return The axis id
- */
- public Axis.Identifier getAxisIdentifier() {
- return axisID;
- }
-
- /**
- * Gets the name of the axis this rumbler is attached too
- *
- * @return The axis name
- */
- public String getAxisName() {
- return axisName;
- }
-
- /**
- * Rumbles this rumbler at the given intensity.
- * This will start or stop the effect if necesary.
- * The intensity is in the range of -1 to 1 and will be clipped if values
- * outside that range are provided.
- *
- * @param intensity The intensity
- */
- public void rumble(float intensity) {
- if(intensity>1f) {
- intensity = 1.0f;
- } else if(intensity<-1f) {
- intensity = -1.0f;
- }
- setRumble(effect, intensity);
- }
-
- /**
- * Performs the native call(s) to run the effect
- *
- * @param effect The native effect
- * @param intensity The intensity of the rumble
- */
- private native void setRumble(long effect, float intensity);
-}
diff --git a/plugins/DX8/src/native/input.cpp b/plugins/DX8/src/native/input.cpp
deleted file mode 100644
index c4eb7af..0000000
--- a/plugins/DX8/src/native/input.cpp
+++ /dev/null
@@ -1,1114 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
-#ifndef WIN32
- #error This is a Windows-only file
-#endif
-
-// hard define as DX7
-//#define DIRECTINPUT_VERSION 0x0800
-#include <windows.h>
-#include <jni.h>
-#include <dinput.h>
-
-
-/*
- ******************************************************************************
- * Global variables
- ******************************************************************************
- */
-jclass CLASS_AxisIdentifier = NULL;
-jclass CLASS_ButtonIdentifier = NULL;
-jclass CLASS_DirectInputEnvironmentPlugin = NULL;
-jclass CLASS_DirectInputDevice = NULL;
-jclass CLASS_DirectInputKeyboard = NULL;
-jclass CLASS_DirectInputMouse = NULL;
-jmethodID MID_AddDevice = NULL;
-jmethodID MID_AddAxis = NULL;
-jmethodID MID_AddRumbler = NULL;
-jmethodID MID_RenameKey = NULL;
-jmethodID MID_RenameAxis = NULL;
-jfieldID FID_X = NULL;
-jfieldID FID_Y = NULL;
-jfieldID FID_Z = NULL;
-jfieldID FID_RX = NULL;
-jfieldID FID_RY = NULL;
-jfieldID FID_RZ = NULL;
-jfieldID FID_Slider = NULL;
-jfieldID FID_Button = NULL;
-jfieldID FID_POV = NULL;
-jfieldID FID_Left = NULL;
-jfieldID FID_Right = NULL;
-jfieldID FID_Middle = NULL;
-jfieldID FID_Extra = NULL;
-jfieldID FID_Side = NULL;
-jfieldID FID_Forward = NULL;
-jfieldID FID_Back = NULL;
-
-const char* FD_AxisIdentifier = "Lnet/java/games/input/Axis$Identifier;";
-const char* FD_ButtonIdentifier = "Lnet/java/games/input/Mouse$ButtonID;";
-// Dummy input window. This is needed because DirectX evidently needs a window
-// to do anything, such as setting the cooperative level for a device.
-const TCHAR* DUMMY_WINDOW_NAME = "InputControllerWindow";
-HWND hwndDummy = NULL;
-// Buffer size
-// Endolf changed the name as it is specific to the mouse
-// Endolf increased the size as he kept making it go pop
-const DWORD MOUSE_BUFFER_SIZE = 32;
-
-// Class for handing device data to the callback for EnumDevices
-class DeviceParamData {
-public:
- DeviceParamData(LPDIRECTINPUT8 lpdi, JNIEnv* e, jobject o, jobject l) :
- lpDirectInput(lpdi), env(e), obj(o), list(l)
- {
- }
- LPDIRECTINPUT8 lpDirectInput;
- JNIEnv* env;
- jobject obj;
- jobject list;
-};
-
-// Class for handing device data to the callback for EnumObjects
-class ObjectParamData {
-public:
- ObjectParamData(LPDIRECTINPUTDEVICE8 lpDev, JNIEnv* e, jobject o,
- jobject l) :
- lpDevice(lpDev), env(e), obj(o), list(l)
- {
- }
- LPDIRECTINPUTDEVICE8 lpDevice;
- JNIEnv* env;
- jobject obj;
- jobject list;
-};
-
-void PrintOutput(TCHAR* tszMessage) {
- printf("%s\n", tszMessage);
-}
-
-void PrintDIError(TCHAR* tszOutput, HRESULT res) {
- TCHAR tszMessage[256];
-#define CHECK_RESULT(r) case r: \
-sprintf(tszMessage, "%s : %s", tszOutput, #r); \
-break;
- switch (res) {
- CHECK_RESULT(DI_OK)
- CHECK_RESULT(DI_NOTATTACHED)
- CHECK_RESULT(DI_POLLEDDEVICE)
- CHECK_RESULT(DI_DOWNLOADSKIPPED)
- CHECK_RESULT(DI_EFFECTRESTARTED)
- CHECK_RESULT(DI_TRUNCATED)
- CHECK_RESULT(DI_TRUNCATEDANDRESTARTED)
- CHECK_RESULT(DIERR_OLDDIRECTINPUTVERSION)
- CHECK_RESULT(DIERR_BETADIRECTINPUTVERSION)
- CHECK_RESULT(DIERR_BADDRIVERVER)
- CHECK_RESULT(DIERR_DEVICENOTREG)
- CHECK_RESULT(DIERR_NOTFOUND)
- //CHECK_RESULT(DIERR_OBJECTNOTFOUND)
- CHECK_RESULT(DIERR_INVALIDPARAM)
- CHECK_RESULT(DIERR_NOINTERFACE)
- CHECK_RESULT(DIERR_GENERIC)
- CHECK_RESULT(DIERR_OUTOFMEMORY)
- CHECK_RESULT(DIERR_UNSUPPORTED)
- CHECK_RESULT(DIERR_NOTINITIALIZED)
- CHECK_RESULT(DIERR_ALREADYINITIALIZED)
- CHECK_RESULT(DIERR_NOAGGREGATION)
- CHECK_RESULT(DIERR_OTHERAPPHASPRIO)
- CHECK_RESULT(DIERR_INPUTLOST)
- CHECK_RESULT(DIERR_ACQUIRED)
- CHECK_RESULT(DIERR_NOTACQUIRED)
- //CHECK_RESULT(DIERR_READONLY)
- //CHECK_RESULT(DIERR_HANDLEEXISTS)
- CHECK_RESULT(DIERR_INSUFFICIENTPRIVS)
- CHECK_RESULT(DIERR_DEVICEFULL)
- CHECK_RESULT(DIERR_MOREDATA)
- CHECK_RESULT(DIERR_NOTDOWNLOADED)
- CHECK_RESULT(DIERR_HASEFFECTS)
- CHECK_RESULT(DIERR_NOTEXCLUSIVEACQUIRED)
- CHECK_RESULT(DIERR_INCOMPLETEEFFECT)
- CHECK_RESULT(DIERR_NOTBUFFERED)
- CHECK_RESULT(DIERR_EFFECTPLAYING)
- CHECK_RESULT(DIERR_UNPLUGGED)
- CHECK_RESULT(DIERR_REPORTFULL)
- default: sprintf(tszMessage, "Unknown"); break;
- }
- PrintOutput(tszMessage);
-}
-
-/*
- ******************************************************************************
- * DirectInputEnvironmentPlugin
- ******************************************************************************
- */
-
-/*
- * Initialize all class, method, and field IDs
- */
-BOOL InitIDs(JNIEnv* env) {
- CLASS_AxisIdentifier =
- env->FindClass("net/java/games/input/Axis$Identifier");
- if (CLASS_AxisIdentifier == NULL) {
- return FALSE;
- }
- FID_X = env->GetStaticFieldID(CLASS_AxisIdentifier, "X",
- FD_AxisIdentifier);
- if (FID_X == NULL) {
- return FALSE;
- }
- FID_Y = env->GetStaticFieldID(CLASS_AxisIdentifier, "Y",
- FD_AxisIdentifier);
- if (FID_Y == NULL) {
- return FALSE;
- }
- FID_Z = env->GetStaticFieldID(CLASS_AxisIdentifier, "Z",
- FD_AxisIdentifier);
- if (FID_Z == NULL) {
- return FALSE;
- }
- FID_RX = env->GetStaticFieldID(CLASS_AxisIdentifier, "RX",
- FD_AxisIdentifier);
- if (FID_RX == NULL) {
- return FALSE;
- }
- FID_RY = env->GetStaticFieldID(CLASS_AxisIdentifier, "RY",
- FD_AxisIdentifier);
- if (FID_RY == NULL) {
- return FALSE;
- }
- FID_RZ = env->GetStaticFieldID(CLASS_AxisIdentifier, "RZ",
- FD_AxisIdentifier);
- if (FID_RZ == NULL) {
- return FALSE;
- }
- FID_Slider = env->GetStaticFieldID(CLASS_AxisIdentifier, "SLIDER",
- FD_AxisIdentifier);
- if (FID_Slider == NULL) {
- return FALSE;
- }
- FID_Button = env->GetStaticFieldID(CLASS_AxisIdentifier, "BUTTON",
- FD_AxisIdentifier);
- if (FID_Button == NULL) {
- return FALSE;
- }
- FID_POV = env->GetStaticFieldID(CLASS_AxisIdentifier, "POV",
- FD_AxisIdentifier);
- if (FID_POV == NULL) {
- return FALSE;
- }
- CLASS_ButtonIdentifier =
- env->FindClass("net/java/games/input/Mouse$ButtonID");
- if (CLASS_ButtonIdentifier == NULL) {
- return FALSE;
- }
- FID_Left = env->GetStaticFieldID(CLASS_ButtonIdentifier, "LEFT",
- FD_ButtonIdentifier);
- if (FID_Left == NULL) {
- return FALSE;
- }
- FID_Right = env->GetStaticFieldID(CLASS_ButtonIdentifier, "RIGHT",
- FD_ButtonIdentifier);
- if (FID_Right == NULL) {
- return FALSE;
- }
- FID_Middle = env->GetStaticFieldID(CLASS_ButtonIdentifier, "MIDDLE",
- FD_ButtonIdentifier);
- if (FID_Middle == NULL) {
- return FALSE;
- }
-// Endolf
- FID_Side = env->GetStaticFieldID(CLASS_ButtonIdentifier, "SIDE",
- FD_ButtonIdentifier);
- if (FID_Side == NULL) {
- return FALSE;
- }
- FID_Extra = env->GetStaticFieldID(CLASS_ButtonIdentifier, "EXTRA",
- FD_ButtonIdentifier);
- if (FID_Extra == NULL) {
- return FALSE;
- }
- FID_Forward = env->GetStaticFieldID(CLASS_ButtonIdentifier, "FORWARD",
- FD_ButtonIdentifier);
- if (FID_Forward == NULL) {
- return FALSE;
- }
- FID_Back = env->GetStaticFieldID(CLASS_ButtonIdentifier, "BACK",
- FD_ButtonIdentifier);
- if (FID_Back == NULL) {
- return FALSE;
- }
-
- CLASS_DirectInputEnvironmentPlugin =
- env->FindClass("net/java/games/input/DirectInputEnvironmentPlugin");
- if (CLASS_DirectInputEnvironmentPlugin == NULL) {
- return FALSE;
- }
- MID_AddDevice = env->GetMethodID(CLASS_DirectInputEnvironmentPlugin, "addDevice",
- "(Ljava/util/ArrayList;JILjava/lang/String;Ljava/lang/String;Z)V");
- if (MID_AddDevice == NULL) {
- return FALSE;
- }
- CLASS_DirectInputDevice =
- env->FindClass("net/java/games/input/DirectInputDevice");
- if (CLASS_DirectInputDevice == NULL) {
- return FALSE;
- }
- MID_AddAxis = env->GetMethodID(CLASS_DirectInputDevice, "addAxis",
- "(Ljava/util/ArrayList;Lnet/java/games/input/Axis$Identifier;ILjava/lang/String;)V");
- if (MID_AddAxis == NULL) {
- return FALSE;
- }
- MID_AddRumbler = env->GetMethodID(CLASS_DirectInputDevice, "addRumbler",
- "(JLnet/java/games/input/Axis$Identifier;Ljava/lang/String;)V");
- if (MID_AddRumbler == NULL) {
- return FALSE;
- }
- CLASS_DirectInputKeyboard =
- env->FindClass("net/java/games/input/DirectInputKeyboard");
- if (CLASS_DirectInputKeyboard == NULL) {
- return FALSE;
- }
- MID_RenameKey = env->GetMethodID(CLASS_DirectInputKeyboard, "renameKey",
- "(ILjava/lang/String;)V");
- if (MID_RenameKey == NULL) {
- return FALSE;
- }
- CLASS_DirectInputMouse =
- env->FindClass("net/java/games/input/DirectInputMouse");
- if (CLASS_DirectInputMouse == NULL) {
- return FALSE;
- }
- MID_RenameAxis = env->GetMethodID(CLASS_DirectInputMouse, "renameAxis",
- "(Lnet/java/games/input/Axis$Identifier;Ljava/lang/String;)V");
- if (MID_RenameAxis == NULL) {
- return FALSE;
- }
- return TRUE;
-}
-
-/*
- * WndProc for our dummy input window
- */
-LRESULT CALLBACK DummyWndProc(
- HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- return DefWindowProc(hWnd, message, wParam, lParam);
-}
-
-/*
- * Register the dummy input window class
- */
-BOOL RegisterDummyWindow(HINSTANCE hInstance)
-{
- WNDCLASSEX wcex;
- wcex.cbSize = sizeof(WNDCLASSEX);
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = (WNDPROC)DummyWndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = NULL;
- wcex.hCursor = NULL;
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = (LPCSTR)NULL;
- wcex.lpszClassName = DUMMY_WINDOW_NAME;
- wcex.hIconSm = NULL;
- return RegisterClassEx(&wcex);
-}
-
-/*
- * Class: org_java_games_input_DirectInputEnvironmentPlugin
- * Method: directInputCreate
- * Signature: ()J
- */
-extern "C" JNIEXPORT jlong JNICALL
-Java_net_java_games_input_DirectInputEnvironmentPlugin_directInputCreate
- (JNIEnv* env, jobject obj)
-{
- // Get our module handle
- HINSTANCE hInst = GetModuleHandle(NULL);
-
- // Register the dummy input window
- if (!RegisterDummyWindow(hInst)) {
- return (jlong)0;
- }
-
- // Create the dummy input window
- hwndDummy = CreateWindow(DUMMY_WINDOW_NAME, NULL,
- WS_POPUP | WS_ICONIC,
- 0, 0, 0, 0, NULL, NULL, hInst, NULL);
- if (hwndDummy == NULL)
- {
- return (jlong)0;
- }
-
- // Create the IDirectInput object
- DWORD dwVersion = DIRECTINPUT_VERSION;
- LPDIRECTINPUT8 lpDirectInput = NULL;
- HRESULT res;
- if (FAILED(res = DirectInput8Create(hInst, DIRECTINPUT_VERSION,
- IID_IDirectInput8,(VOID **)&lpDirectInput, NULL))){
- PrintDIError("DirectInputCreate", res);
- return (jlong)0;
- }
-
- // Initialize method, class, and field IDs
- if (!InitIDs(env)) {
- lpDirectInput->Release();
- return (jlong)0;
- }
-
- return (jlong)(long)lpDirectInput;
-}
-
-BOOL CALLBACK CountFFAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi,
- VOID* pContext )
-{
- DWORD* pdwNumForceFeedbackAxis = (DWORD*) pContext;
-
- if( (pdidoi->dwFlags & DIDOI_FFACTUATOR) != 0 ) {
- //printf("%s is ff enabled\n", pdidoi->tszName);
- (*pdwNumForceFeedbackAxis)++;
- }
-
- return DIENUM_CONTINUE;
-}
-
-/*
- * Enumeration callback for devices
- *
- * returns DIENUM_CONTINUE or DIENUM_STOP
- */
-
-/** jeff's new enum callback */
-BOOL CALLBACK EnumDeviceCallback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef)
-{
- DeviceParamData* pData = (DeviceParamData*)pvRef;
- LPDIRECTINPUT8 lpDirectInput = pData->lpDirectInput;
- JNIEnv* env = pData->env;
- jobject obj = pData->obj;
- jobject list = pData->list;
- LPDIRECTINPUTDEVICE8 lpDevice = NULL;
- LPUNKNOWN pUnknown = NULL;
- HRESULT res;
-
- // Create the device object
- if (FAILED(res = lpDirectInput->CreateDevice(lpddi->guidInstance, &lpDevice,
- pUnknown))){
- PrintDIError("CreateDevice", res);
- return DIENUM_STOP;
- }
-
- /*
- LPDIRECTINPUTDEVICE8 lpDevice2 = NULL;
- // Get the IDirectDrawDevice8 interface from the object
- res = lpDevice->QueryInterface(IID_IDirectInputDevice8,
- (void**)&lpDevice2);
- if (res != DI_OK) {
- PrintDIError("QueryInterface DID2", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
- */
-
- //find out if this device is ff enabled
- DWORD numForceFeedbackAxis = 0;
- res = lpDevice->EnumObjects( CountFFAxesCallback,
- (VOID*)&numForceFeedbackAxis, DIDFT_AXIS );
- if(FAILED(res)) {
- PrintDIError("getting ff devices", res);
- }
-
- // Set the data format
- LPCDIDATAFORMAT lpDataFormat;
- DWORD category = GET_DIDEVICE_TYPE(lpddi->dwDevType)&0xFF;
- switch (category){
- case DI8DEVTYPE_KEYBOARD:
- //printf("found Keyboard\n");
- lpDataFormat = &c_dfDIKeyboard;
- break;
- case DI8DEVTYPE_MOUSE:
- //printf("found mouse\n");
- lpDataFormat = &c_dfDIMouse2;
- // set up buffering
- DIPROPDWORD dipropdw;
- dipropdw.diph.dwSize = sizeof(DIPROPDWORD);
- dipropdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
- dipropdw.diph.dwObj = 0;
- dipropdw.diph.dwHow = DIPH_DEVICE;
- dipropdw.dwData = MOUSE_BUFFER_SIZE;
- if (FAILED(
- res = lpDevice->SetProperty(DIPROP_BUFFERSIZE,
- &dipropdw.diph))) {
- PrintDIError("SetProperty", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
- break;
- case DI8DEVTYPE_JOYSTICK:
- default:
- //printf("found stick\n");
- lpDataFormat = &c_dfDIJoystick;
- break;
- }
-
- if (FAILED(res = lpDevice->SetDataFormat(lpDataFormat))){
- PrintDIError("SetDataFormat", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
-
- if(numForceFeedbackAxis>0) {
- // Set the cooperative level
- if(FAILED(res = lpDevice->SetCooperativeLevel(hwndDummy,
- DISCL_EXCLUSIVE | DISCL_BACKGROUND))){
- PrintDIError("SetCooperativeLevel", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
- } else {
- // Set the cooperative level
- if(FAILED(res = lpDevice->SetCooperativeLevel(hwndDummy,
- DISCL_NONEXCLUSIVE | DISCL_BACKGROUND))){
- PrintDIError("SetCooperativeLevel", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
- }
-
- // get polling
- DIDEVCAPS didc;
- // Allocate space for all the device's objects (axes, buttons, POVS)
- ZeroMemory( &didc, sizeof(DIDEVCAPS) );
- didc.dwSize = sizeof(DIDEVCAPS);
- if (FAILED(res=lpDevice->GetCapabilities(&didc))){
- PrintDIError("Get Device Capabilities", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
- jboolean polled = JNI_FALSE;
- if ((didc.dwFlags)&DIDC_POLLEDDATAFORMAT) {
- polled = JNI_TRUE;
- }
-
- // Acquire the device
- if(FAILED(res = lpDevice->Acquire())){
- PrintDIError("Acquire", res);
- lpDevice->Release();
- return DIENUM_STOP;
- }
-
- // Set the variables for the Java callback
- jint type = (jint)lpddi->dwDevType&0xffff;
- //printf("type == %x\n",type);
- jstring productName = env->NewStringUTF(lpddi->tszProductName);
- if (productName == NULL) {
- lpDevice->Release();
- return DIENUM_STOP;
- }
- jstring instanceName = env->NewStringUTF(lpddi->tszInstanceName);
- if (instanceName == NULL) {
- lpDevice->Release();
- return DIENUM_STOP;
- }
-
- // Add the device into the list
- env->CallVoidMethod(obj, MID_AddDevice, list, (jlong)(long)lpDevice, type,
- productName, instanceName,(jboolean)polled);
- return DIENUM_CONTINUE;
-}
-
-/*
- * Class: org_java_games_input_DirectInputEnvironmentPlugin
- * Method: enumDevices
- * Signature: (JLjava/util/ArrayList;)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputEnvironmentPlugin_enumDevices
- (JNIEnv* env, jobject obj, jlong lDirectInput, jobject list)
-{
- LPDIRECTINPUT8 lpDirectInput = (LPDIRECTINPUT8)(long)lDirectInput;
- DWORD dwDevType = DI8DEVCLASS_ALL;
- DeviceParamData data(lpDirectInput, env, obj, list);
- LPVOID pvRef = (LPVOID)&data;
- DWORD dwFlags = DIEDFL_ATTACHEDONLY;
- HRESULT res;
- if(FAILED(res=lpDirectInput->EnumDevices(dwDevType,
- EnumDeviceCallback, pvRef, dwFlags))){
- PrintDIError("EnumDevices", res);
- return JNI_FALSE;
- }
- return JNI_TRUE;
-}
-
-/*
- ******************************************************************************
- * DirectInputDevice
- ******************************************************************************
- */
-
-/*
- * Class: org_java_games_input_DirectInputDevice
- * Method: pollNative
- * Signature: (J[B)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputDevice_pollNative
- (JNIEnv* env, jobject obj, jlong lDevice, jintArray baData,
- jboolean pollme)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- // Reacquire the device
- HRESULT res = lpDevice->Acquire();
- if (res != DI_OK && res != S_FALSE) {
- PrintDIError("Acquire", res);
- return JNI_FALSE;
- }
- // Poll the device
- if (pollme == JNI_TRUE) {
- res = lpDevice->Poll();
- // Changed this to FAILED(res) instead of res != DI_OK as it was
- // causeing problems and the dx samples check for FAILED too.
- if ( FAILED(res) ) {
- PrintDIError("Poll", res);
- return JNI_FALSE;
- }
- }
- // Get the device state (data)
- DIJOYSTATE data;
- res = lpDevice->GetDeviceState(sizeof(data), &data);
- if (res != DI_OK) {
- PrintDIError("GetDeviceState", res);
- return JNI_FALSE;
- }
- // Copy the data into the byte array
- env->SetIntArrayRegion(baData, 0, (jsize)(sizeof(data)/4), (jint*)&data);
- return JNI_TRUE;
-}
-
-/*
- * Enumeration callback for device objects
- *
- * returns DIENUM_CONTINUE or DIENUM_STOP
- */
-BOOL CALLBACK EnumObjectsCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi,
- LPVOID pvRef)
-{
- ObjectParamData* pData = (ObjectParamData*)pvRef;
- LPDIRECTINPUTDEVICE8 lpDevice = pData->lpDevice;
- JNIEnv* env = pData->env;
- jobject obj = pData->obj;
- jobject list = pData->list;
- jobject identifier = NULL;
- char ffEnabled = 0;
-
- HRESULT res;
- if (lpddoi->guidType == GUID_XAxis) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_X);
- } else if (lpddoi->guidType == GUID_YAxis) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_Y);
- } else if (lpddoi->guidType == GUID_ZAxis) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_Z);
- } else if (lpddoi->guidType == GUID_RxAxis) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_RX);
- } else if (lpddoi->guidType == GUID_RyAxis) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_RY);
- } else if (lpddoi->guidType == GUID_RzAxis) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_RZ);
- } else if (lpddoi->guidType == GUID_Slider) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_Slider);
- } else if (lpddoi->guidType == GUID_Button) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_Button);
- } else if (lpddoi->guidType == GUID_POV) {
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier, FID_POV);
- } else {
- // Do not add this axis into the list, since we don't know what it is
- return DIENUM_CONTINUE;
- }
- if (identifier == NULL) {
- return DIENUM_STOP;
- }
- if (DIDFT_GETTYPE(lpddoi->dwType)&DIDFT_AXIS){
- // set axis range
- DIPROPRANGE joy_axis_range;
- joy_axis_range.lMin = -32768;
- joy_axis_range.lMax = 32768;
- joy_axis_range.diph.dwSize=sizeof(DIPROPRANGE);
- joy_axis_range.diph.dwHeaderSize=sizeof(DIPROPHEADER);
- joy_axis_range.diph.dwHow = DIPH_BYID;
- joy_axis_range.diph.dwObj=lpddoi->dwType;
- if (FAILED(
- res=lpDevice->SetProperty(DIPROP_RANGE,&joy_axis_range.diph))){
- PrintDIError("SetProperty", res);
- }
-
- //check if this axis is ff enabled
- if( (lpddoi->dwFlags & DIDOI_FFACTUATOR) != 0 ) {
- //printf("%s is ff enabled\n", lpddoi->tszName);
- ffEnabled = 1;
- }
- }
-
- jint didft = (jint)lpddoi->dwType;
- jstring name = env->NewStringUTF(lpddoi->tszName);
- // Add the axis into our list
- env->CallVoidMethod(obj, MID_AddAxis, list, identifier, didft,
- name);
-
- if(ffEnabled) {
- // This application needs only one effect: Applying raw forces.
- DWORD rgdwAxes;
- LONG rglDirection = 0;
- if(lpddoi->guidType == GUID_XAxis) {
- //printf("effect is in the x axis\n");
- rgdwAxes = DIJOFS_X;
- } else if(lpddoi->guidType == GUID_YAxis) {
- //printf("effect is in the y axis\n");
- rgdwAxes = DIJOFS_Y;
- } else if(lpddoi->guidType == GUID_ZAxis) {
- //printf("effect is in the z axis\n");
- rgdwAxes = DIJOFS_Z;
- }
-
- DICONSTANTFORCE cf = { DI_FFNOMINALMAX };
-
- DIEFFECT eff;
- ZeroMemory( &eff, sizeof(eff) );
- eff.dwSize = sizeof(DIEFFECT);
- eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
- eff.dwDuration = INFINITE;
- eff.dwSamplePeriod = 0;
- eff.dwGain = DI_FFNOMINALMAX;
- eff.dwTriggerButton = DIEB_NOTRIGGER;
- eff.dwTriggerRepeatInterval = 0;
- eff.cAxes = 1;
- eff.rgdwAxes = &rgdwAxes;
- eff.rglDirection = &rglDirection;
- eff.lpEnvelope = 0;
- eff.cbTypeSpecificParams = sizeof(DICONSTANTFORCE);
- eff.lpvTypeSpecificParams = &cf;
- eff.dwStartDelay = 0;
- cf.lMagnitude = (long) (0);
-
- LPDIRECTINPUTEFFECT g_pEffect;
- // Create the prepared effect
- if( FAILED( res = lpDevice->CreateEffect( GUID_ConstantForce,
- &eff, &g_pEffect, NULL ) ) )
- {
- PrintDIError("Create effect", res);
- return res;
- }
-
- env->CallVoidMethod(obj, MID_AddRumbler, (jlong)(long)g_pEffect, identifier, name);
- }
- return DIENUM_CONTINUE;
-}
-
-/*
- * Class: org_java_games_input_DirectInputRumbler
- * Method setRumble
- * Signature (JF)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputRumbler_setRumble
- (JNIEnv *env, jobject obj, jlong effect, jfloat value)
-{
- LPDIRECTINPUTEFFECT g_pEffect = (LPDIRECTINPUTEFFECT)(long)effect;
- float force = (float)value;
- HRESULT hr;
-
- DICONSTANTFORCE cf = { DI_FFNOMINALMAX };
-
- DIEFFECT eff;
- ZeroMemory( &eff, sizeof(eff) );
- eff.dwSize = sizeof(DIEFFECT);
- eff.cbTypeSpecificParams = sizeof(DICONSTANTFORCE);
- eff.lpvTypeSpecificParams = &cf;
- cf.lMagnitude = (long) (((float)DI_FFNOMINALMAX)*force);
-
- //printf("force: %f, mag: %d\n", force, cf.lMagnitude);
-
- hr = g_pEffect->SetParameters( &eff, DIEP_TYPESPECIFICPARAMS );
- if (FAILED(hr)) {
- PrintDIError("set parameters", hr);
- return hr;
- }
-
- if(force!=0) {
- hr = g_pEffect->Start(1,0);
- if (FAILED(hr)) {
- PrintDIError("start", hr);
- return hr;
- }
- } else {
- hr = g_pEffect->Stop();
- if (FAILED(hr)) {
- PrintDIError("stop", hr);
- return hr;
- }
- }
-}
-
-/*
- * Class: org_java_games_input_DirectInputDevice
- * Method: enumObjects
- * Signature: (JLjava/util/ArrayList;)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputDevice_enumObjects
- (JNIEnv* env, jobject obj, jlong lDevice, jobject list)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- ObjectParamData data(lpDevice, env, obj, list);
- LPVOID pvRef = (LPVOID)&data;
- DWORD dwFlags = DIDFT_ALL;
- // Enum objects
- HRESULT res = lpDevice->EnumObjects(EnumObjectsCallback, pvRef, dwFlags);
- if (res != DI_OK) {
- PrintDIError("EnumObjects", res);
- return JNI_FALSE;
- }
- return JNI_TRUE;
-}
-
-/*
- ******************************************************************************
- * DirectInputKeyboard
- ******************************************************************************
- */
-
-/*
- * Class: org_java_games_input_DirectInputKeyboard
- * Method: pollNative
- * Signature: (J[B)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputKeyboard_pollNative
- (JNIEnv* env, jobject obj, jlong lDevice, jbyteArray baData)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- // Reacquire the device
- HRESULT res = lpDevice->Acquire();
- if (res != DI_OK && res != S_FALSE) {
- PrintDIError("Acquire", res);
- return JNI_FALSE;
- }
- // Get the device state (data)
- char data[256];
- res = lpDevice->GetDeviceState(sizeof(data), data);
- if (res != DI_OK) {
- PrintDIError("GetDeviceState", res);
- return JNI_FALSE;
- }
- env->SetByteArrayRegion(baData, 0, (jsize)sizeof(data), (jbyte*)&data);
- return JNI_TRUE;
-}
-
-/*
- * Enumeration callback to rename keyboard keys
- *
- * returns DIENUM_CONTINUE or DIENUM_STOP
- */
-BOOL CALLBACK RenameKeysCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi,
- LPVOID pvRef)
-{
- ObjectParamData* pData = (ObjectParamData*)pvRef;
- //LPDIRECTINPUTDEVICE8 lpDevice = pData->lpDevice;
- JNIEnv* env = pData->env;
- jobject obj = pData->obj;
- jint index = (jint)lpddoi->dwOfs;
- jstring name = env->NewStringUTF(lpddoi->tszName);
- env->CallVoidMethod(obj, MID_RenameKey, index, name);
- return DIENUM_CONTINUE;
-}
-
-/*
- * Class: org_java_games_input_DirectInputKeyboard
- * Method: renameKeys
- * Signature: (J)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputKeyboard_renameKeys
- (JNIEnv* env, jobject obj, jlong lDevice)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- ObjectParamData data(lpDevice, env, obj, NULL);
- LPVOID pvRef = (LPVOID)&data;
- DWORD dwFlags = DIDFT_ALL;
- // Enum objects
- HRESULT res = lpDevice->EnumObjects(RenameKeysCallback, pvRef, dwFlags);
- if (res != DI_OK) {
- PrintDIError("EnumObjects", res);
- return JNI_FALSE;
- }
- return JNI_TRUE;
-}
-
-/*
- ******************************************************************************
- * DirectInputMouse
- ******************************************************************************
- */
-
-/*
- * Class: org_java_games_input_DirectInputMouse
- * Method: getNumAxes
- * Signature: (J)I
- */
-extern "C" JNIEXPORT jint JNICALL
-Java_net_java_games_input_DirectInputMouse_getNumAxes
- (JNIEnv* env, jobject obj, jlong lDevice)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- // Reacquire the device
- HRESULT res = lpDevice->Acquire();
- if (res != DI_OK && res != S_FALSE) {
- PrintDIError("Acquire", res);
- return 0;
- }
- DIDEVCAPS deviceCaps;
- // Allocate space for all the device's objects (axes, buttons, POVS)
- ZeroMemory( &deviceCaps, sizeof(DIDEVCAPS) );
- deviceCaps.dwSize = sizeof(DIDEVCAPS);
- res = lpDevice->GetCapabilities(&deviceCaps);
- if(res != DI_OK) {
- PrintDIError("GetCapabilities", res);
- return JNI_FALSE;
- }
- return deviceCaps.dwAxes;
-}
-
-/*
- * Class: org_java_games_input_DirectInputMouse
- * Method: getNumButtons
- * Signature: (J)I
- */
-extern "C" JNIEXPORT jint JNICALL
-Java_net_java_games_input_DirectInputMouse_getNumButtons
- (JNIEnv* env, jobject obj, jlong lDevice)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- // Reacquire the device
- HRESULT res = lpDevice->Acquire();
- if (res != DI_OK && res != S_FALSE) {
- PrintDIError("Acquire", res);
- return 0;
- }
- DIDEVCAPS deviceCaps;
- // Allocate space for all the device's objects (axes, buttons, POVS)
- ZeroMemory( &deviceCaps, sizeof(DIDEVCAPS) );
- deviceCaps.dwSize = sizeof(DIDEVCAPS);
- res = lpDevice->GetCapabilities(&deviceCaps);
- if(res != DI_OK) {
- PrintDIError("GetCapabilities", res);
- return JNI_FALSE;
- }
- return deviceCaps.dwButtons;
-}
-
-/*
- * Class: org_java_games_input_DirectInputMouse
- * Method: pollNative
- * Signature: (J[B)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputMouse_pollNative
- (JNIEnv* env, jobject obj, jlong lDevice, jbyteArray baData)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- // Reacquire the device
- HRESULT res = lpDevice->Acquire();
- if (res != DI_OK && res != S_FALSE) {
- PrintDIError("Acquire", res);
- return JNI_FALSE;
- }
- // Get the data
- DIMOUSESTATE2 data;
- res = lpDevice->GetDeviceState(sizeof(data), &data);
- if (res != DI_OK) {
- PrintDIError("GetDeviceState", res);
- return JNI_FALSE;
- }
-
- // Endolf woz here
- // Set the axis data to 0, we only want the buttons for this second
- data.lX = 0;
- data.lY = 0;
- data.lZ = 0;
-
- DIDEVICEOBJECTDATA dataBuffer[MOUSE_BUFFER_SIZE];
- DWORD numEvents = MOUSE_BUFFER_SIZE;
- HRESULT res2 = lpDevice->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), dataBuffer, &numEvents, 0);
- switch(res2) {
- case DIERR_INPUTLOST:
- printf("DIERR_INPUTLOST\n");
- break;
- case DIERR_INVALIDPARAM:
- printf("DIERR_INVALIDPARAM\n");
- break;
- case DIERR_NOTACQUIRED:
- printf("DIERR_NOTACQUIRED\n");
- break;
- case DIERR_NOTBUFFERED:
- printf("DIERR_NOTBUFFERED\n");
- break;
- case DIERR_NOTINITIALIZED:
- printf("DIERR_NOTINITIALIZED\n");
- break;
- case DI_BUFFEROVERFLOW:
- printf("DI_BUFFEROVERFLOW\n");
- break;
- }
- int i=0;
- for(i=0;i<numEvents;i++) {
- switch(dataBuffer[i].dwOfs) {
- case DIMOFS_BUTTON0:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[0] = 0x80;
- }
- break;
- case DIMOFS_BUTTON1:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[1] = 0x80;
- }
- break;
- case DIMOFS_BUTTON2:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[2] = 0x80;
- }
- break;
- case DIMOFS_BUTTON3:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[3] = 0x80;
- }
- break;
- case DIMOFS_BUTTON4:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[4] = 0x80;
- }
- break;
- case DIMOFS_BUTTON5:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[5] = 0x80;
- }
- break;
- case DIMOFS_BUTTON6:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[6] = 0x80;
- }
- break;
- case DIMOFS_BUTTON7:
- if(dataBuffer[i].dwData == 0x80) {
- data.rgbButtons[7] = 0x80;
- }
- break;
- case DIMOFS_X:
- data.lX += dataBuffer[i].dwData;
- break;
- case DIMOFS_Y:
- data.lY += dataBuffer[i].dwData;
- break;
- case DIMOFS_Z:
- data.lZ += dataBuffer[i].dwData;
- break;
- default:
- printf("Uknown data offset (%d)\n", dataBuffer[i].dwOfs);
- }
- }
-
- //printf("axis data in native at poll end is x: %d, y: %d, z: %d\n", data.lX, data.lY, data.lZ);
-
- // Set the data in our array
- env->SetByteArrayRegion(baData, 0, (jsize)sizeof(data), (jbyte*)&data);
- return JNI_TRUE;
-}
-
-/*
- * Enumeration callback to rename mouse axes
- *
- * returns DIENUM_CONTINUE or DIENUM_STOP
- */
-BOOL CALLBACK RenameAxesCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi,
- LPVOID pvRef)
-{
- ObjectParamData* pData = (ObjectParamData*)pvRef;
- //LPDIRECTINPUTDEVICE8 lpDevice = pData->lpDevice;
- JNIEnv* env = pData->env;
- jobject obj = pData->obj;
- jobject identifier;
- switch (lpddoi->dwOfs) {
- case DIMOFS_X:
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier,
- FID_X);
- break;
- case DIMOFS_Y:
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier,
- FID_Y);
- break;
- case DIMOFS_Z:
- identifier = env->GetStaticObjectField(CLASS_AxisIdentifier,
- FID_Slider);
- break;
- case DIMOFS_BUTTON0:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Left);
- break;
- case DIMOFS_BUTTON1:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Right);
- break;
- case DIMOFS_BUTTON2:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Middle);
- break;
- case DIMOFS_BUTTON3:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Side);
- break;
- case DIMOFS_BUTTON4:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Extra);
- break;
- case DIMOFS_BUTTON5:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Forward);
- break;
- case DIMOFS_BUTTON6:
- identifier = env->GetStaticObjectField(CLASS_ButtonIdentifier,
- FID_Back);
- break;
- default:
- return DIENUM_CONTINUE; // Not an axis we know
- }
- jstring name = env->NewStringUTF(lpddoi->tszName);
- env->CallVoidMethod(obj, MID_RenameAxis, identifier, name);
- return DIENUM_CONTINUE;
-}
-
-/*
- * Class: org_java_games_input_DirectInputMouse
- * Method: renameAxes
- * Signature: (J)Z
- */
-extern "C" JNIEXPORT jboolean JNICALL
-Java_net_java_games_input_DirectInputMouse_renameAxes
- (JNIEnv* env, jobject obj, jlong lDevice)
-{
- LPDIRECTINPUTDEVICE8 lpDevice = (LPDIRECTINPUTDEVICE8)(long)lDevice;
- ObjectParamData data(lpDevice, env, obj, NULL);
- LPVOID pvRef = (LPVOID)&data;
- DWORD dwFlags = DIDFT_ALL;
- // Enum objects
- HRESULT res = lpDevice->EnumObjects(RenameAxesCallback, pvRef, dwFlags);
- if (res != DI_OK) {
- PrintDIError("EnumObjects", res);
- return JNI_FALSE;
- }
- return JNI_TRUE;
-}
-
-
diff --git a/plugins/OSX/build.xml b/plugins/OSX/build.xml
deleted file mode 100644
index 066c838..0000000
--- a/plugins/OSX/build.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" ?>
-<project basedir="." default="all" name="OSX Plugin">
- <description>OSX JInput Plugin</description>
- <property name="src" location="src" />
- <property name="build" location="classes" />
- <property name="dist" location="dist" />
- <property name="plugins" location="plugins" />
-
- <target name="init">
- <mkdir dir="classes"/>
- <mkdir dir="dist"/>
- </target>
-
- <target depends="init" name="compile">
- <javac debug="true" deprecation="true" destdir="${build}" source="1.4" srcdir="src/java">
- <classpath>
- <pathelement location="../../coreAPI/bin/jinput.jar"/>
- <pathelement location="../../coreAPI/lib/jutils.jar"/>
- </classpath>
- </javac>
- </target>
-
- <target depends="init,compile" name="jar">
- <jar jarfile="${dist}/HIDWrapper.jar" compress="true" basedir="${build}">
- <exclude name="**/*.java"/>
- <exclude name="HIDWrapper.jar"/>
- <exclude name="apidoc"/>
- </jar>
- <copy file="${dist}/HIDWrapper.jar" todir="../../coreAPI/src/tests/controller" />
- </target>
-
- <target depends="compileNativeJinputLib,jar" description="Build everything." name="all">
- <echo message="Native OSX JInput library built!"/>
- </target>
-
- <target name="javadoc" depends="init" description="Javadoc for OS X plugin for JInput.">
- <mkdir dir="apidocs"/>
- <javadoc packagenames="net.java.games.input.*"
- destdir="apidocs"
- additionalparam="-source 1.4"
- link="../../../coreAPI/apidocs">
- <sourcepath>
- <pathelement location="src/java"/>
- </sourcepath>
- <classpath>
- <pathelement location="../../coreAPI/bin/jinput.jar"/>
- <pathelement location="../../coreAPI/lib/jutils.jar"/>
- </classpath>
- </javadoc>
- </target>
-
- <target description="Clean all build products." name="clean">
- <delete failonerror="no">
- <fileset dir="${build}">
- <include name="**/*.class"/>
- </fileset>
- </delete>
- <delete file="${dist}/HIDWrapper.jar" failonerror="no"/>
- <delete file="${dist}/libjinput.jnilib" failonerror="no"/>
- <delete file="../../coreAPI/src/tests/controller/HIDWrapper.jar" failonerror="no" />
- <delete file="../../coreAPI/src/tests/controller/libjinput.jnilib" failonerror="no"/>
- <delete file="apidoc" failonerror="no"/>
- </target>
-
- <target depends="init,compile" name="createJNIHeaders">
- <javah destdir="src/native">
- <classpath>
- <pathelement path="${build}"/>
- <pathelement location="../../coreAPI/classes"/>
- </classpath>
- <class name="net.java.games.input.OSXEnvironmentPlugin"/>
- </javah>
- </target>
-
-
- <target name="compileNativeJinputLib" depends="init,createJNIHeaders" >
- <ant dir="src/native" target="compileNativeJinputLib"/>
- <copy file="src/native/libjinput.jnilib" todir="${dist}" />
- <copy file="${dist}/libjinput.jnilib" todir="../../coreAPI/src/tests/controller" />
- </target>
-</project>
diff --git a/plugins/OSX/src/java/net/java/games/input/InputController.java b/plugins/OSX/src/java/net/java/games/input/InputController.java
deleted file mode 100644
index 2a5442b..0000000
--- a/plugins/OSX/src/java/net/java/games/input/InputController.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package net.java.games.input;
-
-/**
- * Created by IntelliJ IDEA.
- * User: gpierce
- * Date: Aug 2, 2003
- * Time: 2:57:15 PM
- * To change this template use Options | File Templates.
- */
-public interface InputController
-{
- public void addControllerElement( InputControllerElement element );
-}
diff --git a/plugins/OSX/src/java/net/java/games/input/InputControllerElement.java b/plugins/OSX/src/java/net/java/games/input/InputControllerElement.java
deleted file mode 100644
index 8ba92c3..0000000
--- a/plugins/OSX/src/java/net/java/games/input/InputControllerElement.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package net.java.games.input;
-
-/**
- * Created by IntelliJ IDEA.
- * User: gpierce
- * Date: Aug 2, 2003
- * Time: 2:59:26 PM
- * To change this template use Options | File Templates.
- */
-public class InputControllerElement
-{
- private long hidCookie;
- private int elementType;
- private int usagePage;
- private int usage;
-
- private int rawMin;
- private int rawMax;
- private int scaledMin;
- private int scaledMax;
-
- private int dataBitSize;
-
- private boolean isRelative;
- private boolean isWrapping;
- private boolean isNonLinear;
- private boolean hasPreferredState;
- private boolean hasNullState;
-
- public InputControllerElement()
- {
- }
-
- public InputControllerElement(long hidCookie, int elementType, int usage, int usagePage,
- int rawMin, int rawMax, int scaledMin, int scaledMax,
- int dataBitSize, boolean isRelative, boolean isWrapping,
- boolean isNonLinear, boolean hasPreferredState, boolean hasNullState )
- {
- this.hidCookie = hidCookie;
- this.elementType = elementType;
- this.usage = usage;
- this.usagePage = usagePage;
- this.rawMin = rawMin;
- this.rawMax = rawMax;
- this.scaledMin = scaledMin;
- this.scaledMax = scaledMax;
- this.dataBitSize = dataBitSize;
- this.isRelative = isRelative;
- this.isWrapping = isWrapping;
- this.isNonLinear = isNonLinear;
- this.hasPreferredState = hasPreferredState;
- this.hasNullState = hasNullState;
- }
-
- public long getHidCookie()
- {
- return hidCookie;
- }
-
- public void setHidCookie(long hidCookie)
- {
- this.hidCookie = hidCookie;
- }
-
- public int getElementType()
- {
- return elementType;
- }
-
- public void setElementType(int elementType)
- {
- this.elementType = elementType;
- }
-
- public int getUsagePage()
- {
- return usagePage;
- }
-
- public void setUsagePage(int usagePage)
- {
- this.usagePage = usagePage;
- }
-
- public int getUsage()
- {
- return usage;
- }
-
- public void setUsage(int usage)
- {
- this.usage = usage;
- }
-
- public int getRawMin()
- {
- return rawMin;
- }
-
- public void setRawMin(int rawMin)
- {
- this.rawMin = rawMin;
- }
-
- public int getRawMax()
- {
- return rawMax;
- }
-
- public void setRawMax(int rawMax)
- {
- this.rawMax = rawMax;
- }
-
- public int getScaledMin()
- {
- return scaledMin;
- }
-
- public void setScaledMin(int scaledMin)
- {
- this.scaledMin = scaledMin;
- }
-
- public int getScaledMax()
- {
- return scaledMax;
- }
-
- public void setScaledMax(int scaledMax)
- {
- this.scaledMax = scaledMax;
- }
-
- public int getDataBitSize()
- {
- return dataBitSize;
- }
-
- public void setDataBitSize(int dataBitSize)
- {
- this.dataBitSize = dataBitSize;
- }
-
- public boolean isRelative()
- {
- return isRelative;
- }
-
- public void setRelative(boolean relative)
- {
- isRelative = relative;
- }
-
- public boolean isWrapping()
- {
- return isWrapping;
- }
-
- public void setWrapping(boolean wrapping)
- {
- isWrapping = wrapping;
- }
-
- public boolean isNonLinear()
- {
- return isNonLinear;
- }
-
- public void setNonLinear(boolean nonLinear)
- {
- isNonLinear = nonLinear;
- }
-
- public boolean isHasPreferredState()
- {
- return hasPreferredState;
- }
-
- public void setHasPreferredState(boolean hasPreferredState)
- {
- this.hasPreferredState = hasPreferredState;
- }
-
- public boolean isHasNullState()
- {
- return hasNullState;
- }
-
- public void setHasNullState(boolean hasNullState)
- {
- this.hasNullState = hasNullState;
- }
-
-}
diff --git a/plugins/OSX/src/java/net/java/games/input/OSXEnvironmentPlugin.java b/plugins/OSX/src/java/net/java/games/input/OSXEnvironmentPlugin.java
deleted file mode 100755
index 41a28fc..0000000
--- a/plugins/OSX/src/java/net/java/games/input/OSXEnvironmentPlugin.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
-* 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.security.AccessController;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.HashMap;
-
-import net.java.games.input.Controller;
-import net.java.games.input.ControllerEnvironment;
-import net.java.games.util.plugins.Plugin;
-
-/** OSX HIDManager implementation of controller environment
-* @author gregorypierce
-* @version 1.0
-*/
-public class OSXEnvironmentPlugin extends ControllerEnvironment implements Plugin
-{
-
-
- public static final int HID_DEVICE_MOUSE = 0x02;
- public static final int HID_DEVICE_JOYSTICK = 0x04;
- public static final int HID_DEVICE_GAMEPAD = 0x05;
- public static final int HID_DEVICE_KEYBOARD = 0x06;
-
-
- public static final int HID_USAGE_POINTER = 0x01;
- public static final int HID_USAGE_XAXIS = 0x30;
- public static final int HID_USAGE_YAXIS = 0x31;
- public static final int HID_USAGE_ZAXIS = 0x32;
- public static final int HID_USAGE_XAXIS_ROTATION = 0x33;
- public static final int HID_USAGE_YAXIS_ROTATION = 0x34;
- public static final int HID_USAGE_ZAXIS_ROTATION = 0x35;
- public static final int HID_USAGE_SLIDER = 0x36;
- public static final int HID_USAGE_DIAL = 0x37;
- public static final int HID_USAGE_WHEEL = 0x38;
- public static final int HID_USAGE_HAT = 0x39;
- public static final int HID_USAGE_DPAD_UP = 0x90;
- public static final int HID_USAGE_DPAD_DOWN = 0x91;
- public static final int HID_USAGE_DPAD_LEFT = 0x92;
- public static final int HID_USAGE_DPAD_RIGHT = 0x93;
-
-
- public static final int HID_USAGE_KEYBOARD_ERRORROLLOVER = 0x01; /* ErrorRollOver */
- public static final int HID_USAGE_KEYBOARD_POSTFAIL = 0x02; /* POSTFail */
- public static final int HID_USAGE_KEYBOARD_ERRORUNDEFINED = 0x03; /* ErrorUndefined */
- public static final int HID_USAGE_KEYBOARD_A = 0x04; /* a or A */
- public static final int HID_USAGE_KEYBOARD_B = 0x05; /* b or B */
- public static final int HID_USAGE_KEYBOARD_C = 0x06; /* c or C */
- public static final int HID_USAGE_KEYBOARD_D = 0x07; /* d or D */
- public static final int HID_USAGE_KEYBOARD_E = 0x08; /* e or E */
- public static final int HID_USAGE_KEYBOARD_F = 0x09; /* f or F */
- public static final int HID_USAGE_KEYBOARD_G = 0x0A; /* g or G */
- public static final int HID_USAGE_KEYBOARD_H = 0x0B; /* h or H */
- public static final int HID_USAGE_KEYBOARD_I = 0x0C; /* i or I */
- public static final int HID_USAGE_KEYBOARD_J = 0x0D; /* j or J */
- public static final int HID_USAGE_KEYBOARD_K = 0x0E; /* k or K */
- public static final int HID_USAGE_KEYBOARD_L = 0x0F; /* l or L */
- public static final int HID_USAGE_KEYBOARD_M = 0x10; /* m or M */
- public static final int HID_USAGE_KEYBOARD_N = 0x11; /* n or N */
- public static final int HID_USAGE_KEYBOARD_O = 0x12; /* o or O */
- public static final int HID_USAGE_KEYBOARD_P = 0x13; /* p or P */
- public static final int HID_USAGE_KEYBOARD_Q = 0x14; /* q or Q */
- public static final int HID_USAGE_KEYBOARD_R = 0x15; /* r or R */
- public static final int HID_USAGE_KEYBOARD_S = 0x16; /* s or S */
- public static final int HID_USAGE_KEYBOARD_T = 0x17; /* t or T */
- public static final int HID_USAGE_KEYBOARD_U = 0x18; /* u or U */
- public static final int HID_USAGE_KEYBOARD_V = 0x19; /* v or V */
- public static final int HID_USAGE_KEYBOARD_W = 0x1A; /* w or W */
- public static final int HID_USAGE_KEYBOARD_X = 0x1B; /* x or X */
- public static final int HID_USAGE_KEYBOARD_Y = 0x1C; /* y or Y */
- public static final int HID_USAGE_KEYBOARD_Z = 0x1D; /* z or Z */
- public static final int HID_USAGE_KEYBOARD_1 = 0x1E; /* 1 or ! */
- public static final int HID_USAGE_KEYBOARD_2 = 0x1F; /* 2 or @ */
- public static final int HID_USAGE_KEYBOARD_3 = 0x20; /* 3 or # */
- public static final int HID_USAGE_KEYBOARD_4 = 0x21; /* 4 or $ */
- public static final int HID_USAGE_KEYBOARD_5 = 0x22; /* 5 or % */
- public static final int HID_USAGE_KEYBOARD_6 = 0x23; /* 6 or ^ */
- public static final int HID_USAGE_KEYBOARD_7 = 0x24; /* 7 or & */
- public static final int HID_USAGE_KEYBOARD_8 = 0x25; /* 8 or * */
- public static final int HID_USAGE_KEYBOARD_9 = 0x26; /* 9 or ( */
- public static final int HID_USAGE_KEYBOARD_0 = 0x27; /* 0 or ) */
- public static final int HID_USAGE_KEYBOARD_ENTER = 0x28; /* Return (Enter) */
- public static final int HID_USAGE_KEYBOARD_ESCAPE = 0x29; /* Escape */
- public static final int HID_USAGE_KEYBOARD_BACKSPACE = 0x2A; /* Delete (Backspace) */
- public static final int HID_USAGE_KEYBOARD_TAB = 0x2B; /* Tab */
- public static final int HID_USAGE_KEYBOARD_SPACEBAR = 0x2C; /* Spacebar */
- public static final int HID_USAGE_KEYBOARD_HYPHEN = 0x2D; /* - or _ */
- public static final int HID_USAGE_KEYBOARD_EQUALSIGN = 0x2E; /* = or + */
- public static final int HID_USAGE_KEYBOARD_OPENBRACKET = 0x2F; /* [ or { */
- public static final int HID_USAGE_KEYBOARD_CLOSEBRACKET = 0x30; /* ] or } */
- public static final int HID_USAGE_KEYBOARD_BACKSLASH = 0x31; /* \ or | */
- public static final int HID_USAGE_KEYBOARD_NONUSPOUNT = 0x32; /* Non-US # or _ */
- public static final int HID_USAGE_KEYBOARD_SEMICOLON = 0x33; /* ; or : */
- public static final int HID_USAGE_KEYBOARD_QUOTE = 0x34; /* ' or " */
- public static final int HID_USAGE_KEYBOARD_TILDE = 0x35; /* Grave Accent and Tilde */
- public static final int HID_USAGE_KEYBOARD_COMMA = 0x36; /* , or < */
- public static final int HID_USAGE_KEYBOARD_PERIOD = 0x37; /* . or > */
- public static final int HID_USAGE_KEYBOARD_SLASH = 0x38; /* / or ? */
- public static final int HID_USAGE_KEYBOARD_CAPSLOCK = 0x39; /* Caps Lock */
- public static final int HID_USAGE_KEYBOARD_F1 = 0x3A; /* F1 */
- public static final int HID_USAGE_KEYBOARD_F2 = 0x3B; /* F2 */
- public static final int HID_USAGE_KEYBOARD_F3 = 0x3C; /* F3 */
- public static final int HID_USAGE_KEYBOARD_F4 = 0x3D; /* F4 */
- public static final int HID_USAGE_KEYBOARD_F5 = 0x3E; /* F5 */
- public static final int HID_USAGE_KEYBOARD_F6 = 0x3F; /* F6 */
- public static final int HID_USAGE_KEYBOARD_F7 = 0x40; /* F7 */
- public static final int HID_USAGE_KEYBOARD_F8 = 0x41; /* F8 */
- public static final int HID_USAGE_KEYBOARD_F9 = 0x42; /* F9 */
- public static final int HID_USAGE_KEYBOARD_F10 = 0x43; /* F10 */
- public static final int HID_USAGE_KEYBOARD_F11 = 0x44; /* F11 */
- public static final int HID_USAGE_KEYBOARD_F12 = 0x45; /* F12 */
- public static final int HID_USAGE_KEYBOARD_PRINTSCREEN = 0x46; /* Print Screen */
- public static final int HID_USAGE_KEYBOARD_SCROLLLOCK = 0x47; /* Scroll Lock */
- public static final int HID_USAGE_KEYBOARD_PAUSE = 0x48; /* Pause */
- public static final int HID_USAGE_KEYBOARD_INSERT = 0x49; /* Insert */
- public static final int HID_USAGE_KEYBOARD_HOME = 0x4A; /* Home */
- public static final int HID_USAGE_KEYBOARD_PAGEUP = 0x4B; /* Page Up */
- public static final int HID_USAGE_KEYBOARD_DELETE = 0x4C; /* Delete Forward */
- public static final int HID_USAGE_KEYBOARD_END = 0x4D; /* End */
- public static final int HID_USAGE_KEYBOARD_PAGEDOWN = 0x4E; /* Page Down */
- public static final int HID_USAGE_KEYBOARD_RIGHTARROW = 0x4F; /* Right Arrow */
- public static final int HID_USAGE_KEYBOARD_LEFTARROW = 0x50; /* Left Arrow */
- public static final int HID_USAGE_KEYBOARD_DOWNARROW = 0x51; /* Down Arrow */
- public static final int HID_USAGE_KEYBOARD_UPARROW = 0x52; /* Up Arrow */
- public static final int HID_USAGE_KEYPAD_NUMLOCK = 0x53; /* Keypad NumLock or Clear */
- public static final int HID_USAGE_KEYPAD_SLASH = 0x54; /* Keypad / */
- public static final int HID_USAGE_KEYPAD_ASTERICK = 0x55; /* Keypad * */
- public static final int HID_USAGE_KEYPAD_HYPHEN = 0x56; /* Keypad - */
- public static final int HID_USAGE_KEYPAD_PLUS = 0x57; /* Keypad + */
- public static final int HID_USAGE_KEYPAD_ENTER = 0x58; /* Keypad Enter */
- public static final int HID_USAGE_KEYPAD_1 = 0x59; /* Keypad 1 or End */
- public static final int HID_USAGE_KEYPAD_2 = 0x5A; /* Keypad 2 or Down Arrow */
- public static final int HID_USAGE_KEYPAD_3 = 0x5B; /* Keypad 3 or Page Down */
- public static final int HID_USAGE_KEYPAD_4 = 0x5C; /* Keypad 4 or Left Arrow */
- public static final int HID_USAGE_KEYPAD_5 = 0x5D; /* Keypad 5 */
- public static final int HID_USAGE_KEYPAD_6 = 0x5E; /* Keypad 6 or Right Arrow */
- public static final int HID_USAGE_KEYPAD_7 = 0x5F; /* Keypad 7 or Home */
- public static final int HID_USAGE_KEYPAD_8 = 0x60; /* Keypad 8 or Up Arrow */
- public static final int HID_USAGE_KEYPAD_9 = 0x61; /* Keypad 9 or Page Up */
- public static final int HID_USAGE_KEYPAD_0 = 0x62; /* Keypad 0 or Insert */
- public static final int HID_USAGE_KEYPAD_PERIOD = 0x63; /* Keypad . or Delete */
- public static final int HID_USAGE_KEYBOARD_NONUSBACKSLASH = 0x64; /* Non-US \ or | */
- public static final int HID_USAGE_KEYBOARD_APPLICATION = 0x65; /* Application */
- public static final int HID_USAGE_KEYBOARD_POWER = 0x66; /* Power */
- public static final int HID_USAGE_KEYPAD_EQUALSIGN = 0x67; /* Keypad = */
- public static final int HID_USAGE_KEYBOARD_F13 = 0x68; /* F13 */
- public static final int HID_USAGE_KEYBOARD_F14 = 0x69; /* F14 */
- public static final int HID_USAGE_KEYBOARD_F15 = 0x6A; /* F15 */
- public static final int HID_USAGE_KEYBOARD_F16 = 0x6B; /* F16 */
- public static final int HID_USAGE_KEYBOARD_F17 = 0x6C; /* F17 */
- public static final int HID_USAGE_KEYBOARD_F18 = 0x6D; /* F18 */
- public static final int HID_USAGE_KEYBOARD_F19 = 0x6E; /* F19 */
- public static final int HID_USAGE_KEYBOARD_F20 = 0x6F; /* F20 */
- public static final int HID_USAGE_KEYBOARD_F21 = 0x70; /* F21 */
- public static final int HID_USAGE_KEYBOARD_F22 = 0x71; /* F22 */
- public static final int HID_USAGE_KEYBOARD_F23 = 0x72; /* F23 */
- public static final int HID_USAGE_KEYBOARD_F24 = 0x73; /* F24 */
- public static final int HID_USAGE_KEYBOARD_EXECUTE = 0x74; /* Execute */
- public static final int HID_USAGE_KEYBOARD_HELP = 0x75; /* Help */
- public static final int HID_USAGE_KEYBOARD_MENU = 0x76; /* Menu */
- public static final int HID_USAGE_KEYBOARD_SELECT = 0x77; /* Select */
- public static final int HID_USAGE_KEYBOARD_STOP = 0x78; /* Stop */
- public static final int HID_USAGE_KEYBOARD_AGAIN = 0x79; /* Again */
- public static final int HID_USAGE_KEYBOARD_UNDO = 0x7A; /* Undo */
- public static final int HID_USAGE_KEYBOARD_CUT = 0x7B; /* Cut */
- public static final int HID_USAGE_KEYBOARD_COPY = 0x7C; /* Copy */
- public static final int HID_USAGE_KEYBOARD_PASTE = 0x7D; /* Paste */
- public static final int HID_USAGE_KEYBOARD_FIND = 0x7E; /* Find */
- public static final int HID_USAGE_KEYBOARD_MUTE = 0x7F; /* Mute */
- public static final int HID_USAGE_KEYBOARD_VOLUMEUP = 0x80; /* Volume Up */
- public static final int HID_USAGE_KEYBOARD_VOLUMEDOWN = 0x81; /* Volume Down */
- public static final int HID_USAGE_KEYBOARD_LOCKINGCAPSLOCK = 0x82; /* Locking Caps Lock */
- public static final int HID_USAGE_KEYBOARD_LOCKINGNUMLOCK = 0x83; /* Locking Num Lock */
- public static final int HID_USAGE_KEYBOARD_LOCKINGSCROLLLOCK = 0x84; /* Locking Scroll Lock */
- public static final int HID_USAGE_KEYPAD_COMMA = 0x85; /* Keypad Comma */
- public static final int HID_USAGE_KEYPAD_EQUALSSIGNAS400 = 0x86; /* Keypad Equal Sign for AS/400 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL1 = 0x87; /* International1 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL2 = 0x88; /* International2 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL3 = 0x89; /* International3 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL4 = 0x8A; /* International4 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL5 = 0x8B; /* International5 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL6 = 0x8C; /* International6 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL7 = 0x8D; /* International7 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL8 = 0x8E; /* International8 */
- public static final int HID_USAGE_KEYBOARD_INTERNATIONAL9 = 0x8F; /* International9 */
- public static final int HID_USAGE_KEYBOARD_LANG1 = 0x90; /* LANG1 */
- public static final int HID_USAGE_KEYBOARD_LANG2 = 0x91; /* LANG2 */
- public static final int HID_USAGE_KEYBOARD_LANG3 = 0x92; /* LANG3 */
- public static final int HID_USAGE_KEYBOARD_LANG4 = 0x93; /* LANG4 */
- public static final int HID_USAGE_KEYBOARD_LANG5 = 0x94; /* LANG5 */
- public static final int HID_USAGE_KEYBOARD_LANG6 = 0x95; /* LANG6 */
- public static final int HID_USAGE_KEYBOARD_LANG7 = 0x96; /* LANG7 */
- public static final int HID_USAGE_KEYBOARD_LANG8 = 0x97; /* LANG8 */
- public static final int HID_USAGE_KEYBOARD_LANG9 = 0x98; /* LANG9 */
- public static final int HID_USAGE_KEYBOARD_ALTERNATEERASE = 0x99; /* AlternateErase */
- public static final int HID_USAGE_KEYBOARD_SYSREQORATTENTION = 0x9A; /* SysReq/Attention */
- public static final int HID_USAGE_KEYBOARD_CANCEL = 0x9B; /* Cancel */
- public static final int HID_USAGE_KEYBOARD_CLEAR = 0x9C; /* Clear */
- public static final int HID_USAGE_KEYBOARD_PRIOR = 0x9D; /* Prior */
- public static final int HID_USAGE_KEYBOARD_RETURN = 0x9E; /* Return */
- public static final int HID_USAGE_KEYBOARD_SEPARATOR = 0x9F; /* Separator */
- public static final int HID_USAGE_KEYBOARD_OUT = 0xA0; /* Out */
- public static final int HID_USAGE_KEYBOARD_OPER = 0xA1; /* Oper */
- public static final int HID_USAGE_KEYBOARD_CLEARORAGAIN = 0xA2; /* Clear/Again */
- public static final int HID_USAGE_KEYBOARD_CRSELORPROPS = 0xA3; /* CrSel/Props */
- public static final int HID_USAGE_KEYBOARD_EXSEL = 0xA4; /* ExSel */
- /* 0xA5-0xDF Reserved */
- public static final int HID_USAGE_KEYBOARD_LEFTCONTROL = 0xE0; /* Left Control */
- public static final int HID_USAGE_KEYBOARD_LEFTSHIFT = 0xE1; /* Left Shift */
- public static final int HID_USAGE_KEYBOARD_LEFTALT = 0xE2; /* Left Alt */
- public static final int HID_USAGE_KEYBOARD_LEFTGUI = 0xE3; /* Left GUI */
- public static final int HID_USAGE_KEYBOARD_RIGHTCONTROL = 0xE4; /* Right Control */
- public static final int HID_USAGE_KEYBOARD_RIGHTSHIFT = 0xE5; /* Right Shift */
- public static final int HID_USAGE_KEYBOARD_RIGHTALT = 0xE6; /* Right Alt */
- public static final int HID_USAGE_KEYBOARD_RIGHTGUI = 0xE7; /* Right GUI */
- /* 0xE8-0xFFFF Reserved */
- public static final int HID_USAGE_KEYBOARD__RESERVED = 0xFFFF;
-
-
- public static final int HID_USAGEPAGE_UNDEFINED = 0x00;
- public static final int HID_USAGEPAGE_GENERICDESKTOP = 0x01;
- public static final int HID_USAGEPAGE_SIMULATION = 0x02;
- public static final int HID_USAGEPAGE_VR = 0x03;
- public static final int HID_USAGEPAGE_SPORT = 0x04;
- public static final int HID_USAGEPAGE_GAME = 0x05;
- public static final int HID_USAGEPAGE_KEYBOARD = 0x07; /* USB Device Class Definition for Human Interface Devices (HID). Note: the usage type for all key codes is Selector (Sel). */
- public static final int HID_USAGEPAGE_LED = 0x08;
- public static final int HID_USAGEPAGE_BUTTON = 0x09;
- public static final int HID_USAGEPAGE_ORDINAL = 0x0A;
- public static final int HID_USAGEPAGE_TELEPHONY = 0x0B;
- public static final int HID_USAGEPAGE_CONSUMER = 0x0C;
- public static final int HID_USAGEPAGE_DIGITIZER = 0x0D;
- public static final int HID_USAGEPAGE_PID = 0x0F; /* USB Physical Interface Device definitions for force feedback and related devices. */
- public static final int HID_USAGEPAGE_UNICODE = 0x10;
- public static final int HID_USAGEPAGE_ALPHANUMERIC_DISPLAY = 0x14;
- public static final int HID_USAGEPAGE_POWERDEVICE = 0x84; /* Power Device Page */
- public static final int HID_USAGEPAGE_BATTERY_SYSTEM = 0x85; /* Battery System Page */
- public static final int HID_USAGEPAGE_BARCODE_SCANNER = 0x8C; /* (Point of Sale) USB Device Class Definition for Bar Code Scanner Devices */
- public static final int HID_USAGEPAGE_SCALE = 0x8D; /* (Point of Sale) USB Device Class Definition for Scale Devices */
- public static final int HID_USAGEPAGE_CAMERA_CONTROL = 0x90; /* USB Device Class Definition for Image Class Devices */
- public static final int HID_USAGEPAGE_ARCADE = 0x91; /* OAAF Definitions for arcade and coinop related Devices */
- public static final int HID_USAGEPAGE_VENDOR_DEFINED_START = 0xFF00;
-
-
- public static final int HID_ELEMENTTYPE_INPUT_MISC = 1;
- public static final int HID_ELEMENTTYPE_INPUT_BUTTON = 2;
- public static final int HID_ELEMENTTYPE_INPUT_AXIS = 3;
- public static final int HID_ELEMENTTYPE_INPUT_SCANCODES = 4;
- public static final int HID_ELEMENTTYPE_OUTPUT = 129;
- public static final int HID_ELEMENTTYPE_FEATURE = 257;
- public static final int HID_ELEMENTTYPE_COLLECTION = 513;
-
-
-
-
-
-
- static
- {
- System.loadLibrary("jinput");
- }
-
- public native void hidCreate();
- public native void hidDispose();
- public native void enumDevices();
-
- /**
- * Opens an input device and returns the address of the input queue for that device
- */
- public native long openDevice( long lpDevice, int queueDepth );
- public native void closeDevice( long lpDevice, long lpQueue );
-
-
- /**
- * Polls a device and returns the element top most on the input queue. The elements that
- * are returned are only those that have had their hidCookies registered with registerDeviceElement.
- * @param lpQueue
- * @return
- */
- public native int pollDevice( long lpQueue );
- public native int pollElement( long lpDevice, long hidCookie );
- public native void registerDeviceElement( long lpQueue, long hidCookie );
- public native void deregisterDeviceElement( long lpQueue, long hidCookie );
-
-
- private HashMap devices = new HashMap();
-
-
- public OSXEnvironmentPlugin()
- {
- System.out.println("net.java.games.input.OSXEnvironmentPlugin instance created");
-
- System.out.println("Creating HID engine");
- hidCreate();
-
- System.out.println("Enumerating devices");
- enumDevices();
- }
-
- public void finalize()
- {
- System.out.println("Disposing HID engine");
- hidDispose();
- }
-
- public Controller[] getControllers()
- {
- return (Controller[])(devices.values().toArray( new Controller[0]));
- }
-
- public Controller createController( long lpDevice, String productName, int usage )
- {
-
- switch (usage)
- {
- case (HID_DEVICE_MOUSE):
- System.out.println("Found mouse [" + productName + "] device address [" + lpDevice + "]");
- return new OSXMouse( this, lpDevice, productName );
- case (HID_DEVICE_JOYSTICK):
- System.out.println("Found joystick [" + productName + "] device address [" + lpDevice + "]");
- return new OSXJoystick( this, lpDevice, productName );
- case (HID_DEVICE_GAMEPAD):
- System.out.println("Found gamepad [" + productName + "] device address [" + lpDevice + "]");
- return new OSXGamepad( this, lpDevice, productName );
- case (HID_DEVICE_KEYBOARD):
- System.out.println("Found keyboard [" + productName + "] device address [" + lpDevice + "]");
- return new OSXKeyboard( this, lpDevice, productName );
-
- default:
- System.out.println("Found device of unknown or unsupported type. Usage[" + usage + "], ProductName[" + productName + "] - ignoring");
- return null;
- }
- }
-
- /**
- * Add a controller to the device list
- * @param lpDevice
- * @param productName
- * @param usage
- */
- private void addController( long lpDevice, String productName, int usage )
- {
- Controller controller = null;
-
- controller = createController( lpDevice, productName, usage );
-
- if ( controller != null )
- {
- devices.put( new Long(lpDevice), controller );
- }
- }
-
- /**
- * Adds an InputControllerElement to a device. This method is invoked from native code.
- * @param lpDevice
- * @param elementCookie
- * @param elementType
- * @param usage
- * @param usagePage
- * @param rawMin
- * @param rawMax
- * @param scaledMin
- * @param scaledMax
- * @param dataBitSize
- * @param isRelative
- * @param isWrapping
- * @param isNonLinear
- * @param hasPreferredState
- * @param hasNullState
- */
- private void addControllerElement( long lpDevice,
- long elementCookie,
- int elementType,
- int usage,
- int usagePage,
- int rawMin,
- int rawMax,
- int scaledMin,
- int scaledMax,
- int dataBitSize,
- boolean isRelative,
- boolean isWrapping,
- boolean isNonLinear,
- boolean hasPreferredState,
- boolean hasNullState)
- {
- InputControllerElement element = new InputControllerElement( elementCookie, elementType, usage, usagePage,
- rawMin, rawMax, scaledMin, scaledMax,
- dataBitSize, isRelative, isWrapping, isNonLinear,
- hasPreferredState, hasNullState );
-
-
- InputController inputController = (InputController)devices.get( new Long( lpDevice) );
- if ( inputController != null )
- {
- inputController.addControllerElement( element );
- }
- }
-
-
-
- public void testDevice( long lpDevice )
- {
- System.out.println("Opening device ");
- long lpQueue = openDevice( lpDevice, 32 );
-
- for ( int i = 0; i < 50; i++ )
- {
- try
- {
- pollDevice( lpQueue );
- Thread.sleep(10);
- }
- catch( Exception e )
- {
- System.out.println("Interrupted" + e );
- }
- }
-
- System.out.println("Closing device");
- closeDevice( lpDevice, lpQueue );
- }
-
- public static void main (String args[])
- {
- System.out.println("Started net.java.games.input.OSXEnvironmentPlugin");
- OSXEnvironmentPlugin newjni = new OSXEnvironmentPlugin();
-
- //newjni.hidCreate();
-
- //newjni.enumDevices();
-
-
- Controller[] controllers = newjni.getControllers();
-
- for ( int i = 0; i < controllers.length; i++ )
- {
- System.out.println("Controller [" + controllers[i].getName() +"] enumerated...");
- }
-
- //newjni.hidDispose();
-
- System.out.println("Done");
- }
-
-} \ No newline at end of file
diff --git a/plugins/OSX/src/java/net/java/games/input/OSXGamepad.java b/plugins/OSX/src/java/net/java/games/input/OSXGamepad.java
deleted file mode 100644
index d739b6c..0000000
--- a/plugins/OSX/src/java/net/java/games/input/OSXGamepad.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package net.java.games.input;
-
-/**
- * Created by IntelliJ IDEA.
- * User: gpierce
- * Date: Aug 2, 2003
- * Time: 3:59:09 PM
- * To change this template use Options | File Templates.
- */
-public class OSXGamepad extends AbstractController implements InputController
-{
- private OSXEnvironmentPlugin plugin;
- private long lpDevice;
- private long lpQueue;
-
- public OSXGamepad( OSXEnvironmentPlugin plugin, long lpDevice, String productName )
- {
- super( productName );
-
- this.plugin = plugin;
- this.lpDevice = lpDevice;
-
- openDevice();
- }
- public boolean poll()
- {
- plugin.pollDevice( lpQueue );
-
- return true;
- }
-
- public void openDevice()
- {
- this.lpQueue = plugin.openDevice( this.lpDevice, 32 );
- }
-
- public void closeDevice()
- {
- plugin.closeDevice( this.lpDevice, this.lpQueue );
- }
-
- public void pollDevice()
- {
- plugin.pollDevice( this.lpQueue );
- }
-
- public void addControllerElement(InputControllerElement element)
- {
- switch ( element.getElementType() )
- {
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_MISC:
- System.out.println("*Adding misc component");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_BUTTON:
- System.out.println("*Adding button");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_AXIS:
- System.out.println("*Adding axis");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_SCANCODES:
- System.out.println("*Adding scancode");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_OUTPUT:
- System.out.println("*Adding forcefeedback");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_FEATURE:
-
- System.out.println("*Adding feature");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_COLLECTION:
- System.out.println("*Adding collection");
- break;
-
- }
- }
-}
diff --git a/plugins/OSX/src/java/net/java/games/input/OSXJoystick.java b/plugins/OSX/src/java/net/java/games/input/OSXJoystick.java
deleted file mode 100644
index f200514..0000000
--- a/plugins/OSX/src/java/net/java/games/input/OSXJoystick.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package net.java.games.input;
-
-/**
- * Created by IntelliJ IDEA.
- * User: gpierce
- * Date: Aug 2, 2003
- * Time: 3:58:45 PM
- * To change this template use Options | File Templates.
- */
-public class OSXJoystick extends AbstractController implements InputController
-{
- private OSXEnvironmentPlugin plugin;
- private long lpDevice;
- private long lpQueue;
-
- public OSXJoystick( OSXEnvironmentPlugin plugin, long lpDevice, String productName )
- {
- super( productName );
-
- this.plugin = plugin;
- this.lpDevice = lpDevice;
-
- openDevice();
- }
-
- public boolean poll()
- {
- plugin.pollDevice( lpQueue );
-
- return true;
- }
-
- public void openDevice()
- {
- this.lpQueue = plugin.openDevice( this.lpDevice, 32 );
- }
-
- public void closeDevice()
- {
- plugin.closeDevice( this.lpDevice, this.lpQueue );
- }
-
- public void pollDevice()
- {
- plugin.pollDevice( this.lpQueue );
- }
-
- public void addControllerElement(InputControllerElement element)
- {
- switch ( element.getElementType() )
- {
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_MISC:
- System.out.println("*Adding misc component");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_BUTTON:
- System.out.println("*Adding button");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_AXIS:
- System.out.println("*Adding axis");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_SCANCODES:
- System.out.println("*Adding scancode");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_OUTPUT:
- System.out.println("*Adding forcefeedback");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_FEATURE:
-
- System.out.println("*Adding feature");
- break;
-
- case OSXEnvironmentPlugin.HID_ELEMENTTYPE_COLLECTION:
- System.out.println("*Adding collection");
- break;
-
- }
- }
-}
diff --git a/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java b/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java
deleted file mode 100644
index 4809a75..0000000
--- a/plugins/OSX/src/java/net/java/games/input/OSXKeyboard.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package net.java.games.input;
-
-import java.util.HashMap;
-
-/**
- * Created by IntelliJ IDEA.
- * User: gpierce
- * Date: Aug 2, 2003
- * Time: 3:57:58 PM
- * To change this template use Options | File Templates.
- */
-public class OSXKeyboard extends StandardKeyboard implements InputController
-{
-
- private final static int[] CROSSTABLE = {
- 0x00, // VOID
- 0x29, // ESCAPE
- 0x1E, // _1
- 0x1F, // _2
- 0x20, // _3
- 0x21, // _4
- 0x22, // _5
- 0x23, // _6
- 0x24, // _7
- 0x25, // _8
- 0x26, // _9
- 0x27, // _0
- 0x2D, // MINUS
- 0x2E, // EQUALS
- 0x2A, // BACK
- 0x2B, // TAB
- 0x14, // Q
- 0x1A, // W
- 0x08, // E
- 0x15, // R
- 0x17, // T
- 0x1C, // Y
- 0x18, // U
- 0x0C, // I
- 0x12, // O
- 0x13, // P
- 0x2F, // [
- 0x30, // ]
- 0x28, // RETURN
- 0xE0, // LEFT CONTROL
- 0x04, // A
- 0x16, // S
- 0x07, // D
- 0x09, // F
- 0x0A, // G
- 0x0B, // H
- 0x0D, // J
- 0x0E, // K
- 0x0F, // L
- 0x33, // ;
- 0x34, // '
- 0x35, // ~
- 0xE1, // /
- 0x31, // BACKSLASH (\)
- 0x1D, // Z
- 0x1B, // X
- 0x06, // C
- 0x19, // V
- 0x05, // B
- 0x11, // N
- 0x10, // M
- 0x36, // ,
- 0x37, // .
- 0x38, // SLASH (/)
- 0xE5, // RSHIFT
- 0x55, // MULT (*)
- 0xE2, // LEFT ALT
- 0x2C, // SPACE
- 0x39, // CAPSLOCK
- 0x3A, // F1
- 0x3B, // F2
- 0x3C, // F3
- 0x3D, // F4
- 0x3E, // F5
- 0x3F, // F6
- 0x40, // F7
- 0x41, // F8
- 0x42, // F9
- 0x43, // F10
- 0x53, // NUMLOCK
- 0x47, // SCROLLLOCK
- 0x5F, // NUMPAD7
- 0x60, // NUMPAD8
- 0x61, // NUMPAD9
- 0x56, // SUBTRACT (KEYPAD -)
- 0x5C, // NUMPAD4
- 0x5D, // NUMPAD5
- 0x5E, // NUMPAD6
- 0x57, // ADD (KEYPAD +)
- 0x59, // NUMPAD1
- 0x5A, // NUMPAD2
- 0x5B, // NUMPAD3
- 0x62, // NUMPAD0
- 0x63, // DECIMAL (KEYPAD .)
- 0x44, // F11
- 0x45, // F12
- 0x68, // F13
- 0x69, // F14
- 0x6A, // F15
- 0x87, // KANA
- 0x88, // CONVERT
- 0x89, // NONCONVERT
- 0x8A, // YEN
- 0x67, // NUMPAD=
- 0x8B, // CIRCUMFLEX
- 0x8C, // AT
- 0x8D, // COLON
- 0x9F, // UNDERLINE
- 0x8E, // KANJI
- 0x78, // STOP
- 0x8F, // AX
- 0x90, // UNLABELED
- 0x58, // NUMPAD ENTER
- 0xE4, // RIGHT CONTROL
- 0x85, // NUMPAD COMMA
- 0x54, // DIVIDE ( NUMPAD /)
- 0x9A, // SYSREQ
- 0xE6, // RIGHT ALT
- 0x48, // PAUSE
- 0x4A, // HOME
- 0x52, // UP
- 0x9D, // PRIOR
- 0x50, // LEFT
- 0x4F, // RIGHT
- 0x4D, // END
- 0x51, // DOWN
- 0xA2, // NEXT
- 0x49, // INSERT
- 0x4C, // DELETE
- 0xE3, // LEFT WIN
- 0xE7, // RIGHT WIN
- 0x65, // APPS
- 0x66, // POWER
- 0x66 // SLEEP
- };
-
- private OSXEnvironmentPlugin plugin;
- private long lpDevice;
- private long lpQueue;
- private HashMap keys = new HashMap();
-
- private static int[] COOKIETABLE = new int[CROSSTABLE.length ];
-
- public OSXKeyboard( OSXEnvironmentPlugin plugin, long lpDevice, String productName )
- {
- super( productName );
-
- this.plugin = plugin;
- this.lpDevice = lpDevice;
-
- openDevice();
- }
-
- public void openDevice()
- {
- this.lpQueue = plugin.openDevice( this.lpDevice, 256 );
- }
-
- public void closeDevice()
- {
- plugin.closeDevice( this.lpDevice, this.lpQueue );
- }
-
- public void addControllerElement(InputControllerElement element)
- {
- System.out.println("Adding keyboard elements usage page[" + element.getUsagePage() + "] usage [" + element.getUsage() + "] type [" + element.getElementType() + "]" );
-
- switch( element.getUsagePage() )
- {
- case OSXEnvironmentPlugin.HID_USAGEPAGE_KEYBOARD:
-
- System.out.println("Found keyboard element");
-
- if ( element.getElementType() == OSXEnvironmentPlugin.HID_ELEMENTTYPE_INPUT_BUTTON )
- {
- // register this key with the queue system as all buttons are retrieved from the
- // input controllers queue
- //
- System.out.println("Registering button-key (usage page [" + element.getUsagePage() + "], usage[" + element.getUsage() + "], elementType [" + element.getElementType() + "], hidCookie [" + element.getHidCookie() + "])");
-
-
- if ( keys.get( new Long( element.getUsage() )) == null )
- {
- plugin.registerDeviceElement( lpQueue, element.getHidCookie() );
-
- keys.put( new Long( element.getUsage() ), element );
- System.out.println("Registered key [" + element.getHidCookie() + "]");
- }
- else
- {
- System.out.println("Ignoring key [" + element.getHidCookie() + "] already enumerated.");
- }
- }
- else
- {
- System.out.println("Ignoring non-button-key (usage page [" + element.getUsagePage() + "], usage[" + element.getUsage() + "], elementType [" + element.getElementType() + "], hidCookie [" + element.getHidCookie() + "])");
- }
- break;
-
- default:
- }
- }
-
- public boolean poll()
- {
- plugin.pollDevice( lpQueue );
-
-
- return true;
- }
-
-
- /** Returns whether or not the given key has been pressed since the last
- * call to poll.
- * @param key The key whose state to check.
- * @return true if this key has changed state since last read of its state, false otherwise.
- */
- protected boolean isKeyPressed(Keyboard.Key key)
- {
- KeyID id = (KeyID)key.getIdentifier();
- int keyIndex = id.getKeyIndex();
-
- // get that key code out of the crosstable and find the proper InputControllerElement/button for that key
- //
- //TODO: Optimize this - put the usages in another array the same size as the crosstable so the hidCookies
- // can be retrieved directly without the Long creation
- int usage = CROSSTABLE[keyIndex];
- InputControllerElement element = (InputControllerElement) keys.get( new Long(usage) );
-
-
- if ( element != null )
- {
- int value = plugin.pollElement( lpDevice, element.getHidCookie() );
-
- System.out.println("Key Poll result [" + value + "]");
- if ( value == 1 )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- return false;
- }
-}
diff --git a/plugins/OSX/src/java/net/java/games/input/OSXMouse.java b/plugins/OSX/src/java/net/java/games/input/OSXMouse.java
deleted file mode 100644
index 31e683e..0000000
--- a/plugins/OSX/src/java/net/java/games/input/OSXMouse.java
+++ /dev/null
@@ -1,251 +0,0 @@
-package net.java.games.input;
-
-/**
- * Created by IntelliJ IDEA.
- * User: gpierce
- * Date: Aug 2, 2003
- * Time: 3:57:00 PM
- * To change this template use Options | File Templates.
- */
-public class OSXMouse extends Mouse implements InputController
-{
- private OSXEnvironmentPlugin plugin;
- private long lpDevice;
- private long lpQueue;
- private int buttonCount = 0;
-
-
- public OSXMouse( OSXEnvironmentPlugin plugin, long lpDevice, String productName )
- {
- super( productName );
-
- this.plugin = plugin;
- this.lpDevice = lpDevice;
-
- openDevice();
-
- buttons = new ButtonsImpl();
- ball = new BallImpl();
- }
-
- public void openDevice()
- {
- this.lpQueue = plugin.openDevice( this.lpDevice, 32 );
- }
-
- public void closeDevice()
- {
- plugin.closeDevice( this.lpDevice, this.lpQueue );
- }
-
- public boolean poll()
- {
- plugin.pollDevice( this.lpQueue );
-
- return true;
- }
-
- public void addControllerElement(InputControllerElement element)
- {
-
- switch ( element.getUsagePage() )
- {
- case OSXEnvironmentPlugin.HID_USAGEPAGE_BUTTON:
- buttonCount ++;
- System.out.println("Adding button [" + buttonCount + "]");
- ((ButtonsImpl)buttons).addButton(element);
- break;
-
-
- case OSXEnvironmentPlugin.HID_USAGEPAGE_GENERICDESKTOP:
- switch( element.getUsage() )
- {
- case OSXEnvironmentPlugin.HID_USAGE_POINTER:
- System.out.println("Adding pointer - this will contain axis");
- break;
-
- case OSXEnvironmentPlugin.HID_USAGE_XAXIS:
- ((BallImpl)ball).addXAxis(element);
- System.out.println("Adding X Axis") ;
- break;
-
- case OSXEnvironmentPlugin.HID_USAGE_YAXIS:
- ((BallImpl)ball).addYAxis(element);
- System.out.println("Adding Y Axis");
- break;
-
- case OSXEnvironmentPlugin.HID_USAGE_WHEEL:
- ((BallImpl)ball).addWheelAxis(element);
- System.out.println("Adding wheel");
- break;
-
- default:
-
- }
- break;
-
-
- default:
-
- }
- }
-
- /**
- * Implementation class representing the mouse ball
- */
- class BallImpl extends Ball
- {
- /**
- * Public constructor
- */
- public BallImpl()
- {
- super(OSXMouse.this.getName() + " ball");
- }
-
- public void addXAxis( InputControllerElement element )
- {
- x = new BallAxis( Axis.Identifier.X, element );
- }
-
- public void addYAxis( InputControllerElement element )
- {
- y = new BallAxis( Axis.Identifier.Y, element );
- }
-
- public void addWheelAxis( InputControllerElement element )
- {
- wheel = new BallAxis( Axis.Identifier.SLIDER, element );
- }
- }
-
-
- /**
- * Implementation class representing the mouse buttons
- */
- class ButtonsImpl extends Buttons
- {
- /**
- * Public constructor
- */
- public ButtonsImpl()
- {
- super(OSXMouse.this.getName() + " buttons");
- }
-
- public void addButton( InputControllerElement element )
- {
- if ( left == null )
- {
- left = new ButtonImpl( ButtonID.LEFT, element );
- }
- else if ( right == null )
- {
- right = new ButtonImpl( ButtonID.RIGHT, element );
- }
- else if ( middle == null )
- {
- middle = new ButtonImpl( ButtonID.MIDDLE, element );
- }
- }
- }
-
- /**
- * Mouse button axis implementation
- */
- class ButtonImpl extends Button
- {
-
- private long hidCookie;
- private boolean isRelative;
-
-
- /** Public constructor
- * @param id An ID of a button to create an obejct to represent.
- *
- */
- public ButtonImpl(ButtonID id, InputControllerElement element)
- {
- super(id.getName(), id);
- this.hidCookie = element.getHidCookie();
- this.isRelative = element.isRelative();
- }
-
- /** Returns the data from the last time the control has been polled.
- * If this axis is a button, the value returned will be either 0.0f or 1.0f.
- * If this axis is normalized, the value returned will be between -1.0f and
- * 1.0f.
- * @return state of controller. (Note: DX8 mice actually
- * queue state so what is returned is the next state,
- * not necessarily the most current one.)
- */
- public float getPollData()
- {
- return (float) plugin.pollElement( lpDevice, hidCookie );
- }
-
- /** Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- * @return true if data is relative, otherwise false.
- */
- public boolean isRelative()
- {
- return isRelative;
- }
- }
-
-
- /**
- * Mouse ball axis implementation
- */
- class BallAxis extends AbstractAxis
- {
-
- private long hidCookie;
- private boolean isRelative;
-
- /** Public constructor
- * @param id An ID for a mouse axis to create an object to represent.
- */
- public BallAxis(Identifier id, InputControllerElement element)
- {
- super(id.getName(), id);
-
- this.hidCookie = element.getHidCookie();
- this.isRelative = element.isRelative();
- }
-
- /** Returns the data from the last time the control has been polled.
- * If this axis is a button, the value returned will be either 0.0f or 1.0f.
- * If this axis is normalized, the value returned will be between -1.0f and
- * 1.0f.
- * @return data. (Note that mice queue state in DX8 so what
- * is returned is the next stae in the queue, not
- * necessarily the most current one.)
- */
- public float getPollData()
- {
- return (float) plugin.pollElement( lpDevice, hidCookie );
- }
-
- /** Returns <code>true</code> if data returned from <code>poll</code>
- * is relative to the last call, or <code>false</code> if data
- * is absolute.
- * @return true if relative, otherwise false.
- */
- public boolean isRelative()
- {
- return isRelative;
- }
-
- /** Returns whether or not the axis is analog, or false if it is digital.
- * @return true if analog, false if digital
- */
- public boolean isAnalog()
- {
- return true;
- }
- }
-
-}
diff --git a/plugins/OSX/src/native/build.xml b/plugins/OSX/src/native/build.xml
deleted file mode 100644
index b88c856..0000000
--- a/plugins/OSX/src/native/build.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" ?>
-<project name="OS X Plugin, Native code" basedir="." default="compileNativeJinputLib">
- <description>OSX JInput Native Plugin</description>
- <property name="src" location="src" />
- <property name="build" location="classes" />
- <property name="dist" location="../../dist" />
- <property name="plugins" location="plugins" />
-
- <target name="init">
- <mkdir dir="build"/>
- </target>
-
- <target name="compileNativeJinputLib" depends="init">
- <exec dir="." executable="cc" os="Mac OS X">
-
- <arg line="-c -I${java.home}/include jinputjnilib.c"/>
- </exec>
- <exec dir="." executable="cc" os="Mac OS X">
- <arg line="-bundle -o libjinput.jnilib jinputjnilib.o -framework JavaVM -framework CoreFoundation -framework IOKit "/>
- </exec>
- </target>
-
-</project>
diff --git a/plugins/OSX/src/native/jinputjnilib.c b/plugins/OSX/src/native/jinputjnilib.c
deleted file mode 100644
index 86c7347..0000000
--- a/plugins/OSX/src/native/jinputjnilib.c
+++ /dev/null
@@ -1,839 +0,0 @@
-/*
- * %W% %E%
- *
- * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-/*****************************************************************************
-* 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
-*
-*****************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/errno.h>
-#include <sysexits.h>
-#include <mach/mach.h>
-#include <mach/mach_error.h>
-#include <IOKit/IOKitLib.h>
-#include <IOKit/IOCFPlugIn.h>
-#include <IOKit/hid/IOHIDLib.h>
-#include <IOKit/hid/IOHIDKeys.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <Carbon/Carbon.h>
-#include "net_java_games_input_OSXEnvironmentPlugin.h"
-
-Boolean init( JNIEnv * env );
-void createMasterPort();
-void disposeMasterPort();
-
-
-void createHIDDevice(io_object_t hidDevice, IOHIDDeviceInterface ***hidDeviceInterface);
-IOReturn openDevice(IOHIDDeviceInterface ***hidDeviceInterface);
-IOReturn closeDevice(IOHIDDeviceInterface ***hidDeviceInterface);
-
-
-Boolean showDictionaryElement (CFDictionaryRef dictionary, CFStringRef key);
-void showProperty(const void * key, const void * value);
-void displayCFProperty(CFStringRef object, CFTypeRef value);
-void CFObjectShow( CFTypeRef value );
-void CFObjectSend( CFTypeRef value );
-
-jclass CLASS_JNIWrapper = NULL;
-jmethodID MID_AddController = NULL;
-jmethodID MID_AddControllerElement = NULL;
-mach_port_t masterPort = NULL;
-io_iterator_t hidObjectIterator;
-
-long elementCookie;
-long elementType;
-long usage;
-long usagePage;
-long min;
-long max;
-long scaledMin;
-long scaledMax;
-long size;
-jboolean isRelative;
-jboolean isWrapping;
-jboolean isNonLinear;
-
-
-JNIEnv * lpEnv;
-jlong lpDevice;
-jobject lpObj;
-jboolean completeElement = JNI_FALSE;
-
-
-
-
-Boolean showDictionaryElement (CFDictionaryRef dictionary, CFStringRef key)
-{
- CFTypeRef value = CFDictionaryGetValue (dictionary, key);
- if (value)
- {
- const char * c = CFStringGetCStringPtr (key, CFStringGetSystemEncoding ());
- if (c)
- {
- printf ("%s", c);
- }
- else
- {
- CFIndex bufferSize = CFStringGetLength (key) + 1;
- char * buffer = (char *)malloc (bufferSize);
- if (buffer)
- {
- if (CFStringGetCString (key, buffer, bufferSize, CFStringGetSystemEncoding ()))
- printf ("%s", buffer);
- free(buffer);
- }
- }
-
- printf("=");
-
- CFObjectShow( value );
-
- printf("\n");
- }
- return (value != NULL);
-}
-
-static void showCFArray (const void * value, void * parameter)
-{
- if (CFGetTypeID (value) != CFDictionaryGetTypeID ())
- {
- return;
- }
-
- CFObjectShow(value);
-}
-
-void CFObjectShow( CFTypeRef value )
-{
- CFTypeID type = CFGetTypeID(value);
- if (type == CFArrayGetTypeID())
- {
- CFRange range = {0, CFArrayGetCount (value)};
-
- //Show an element array containing one or more element dictionaries
- CFArrayApplyFunction (value, range, showCFArray, 0);
- }
- else if (type == CFBooleanGetTypeID())
- {
- printf(CFBooleanGetValue(value) ? "true" : "false");
- }
- else if (type == CFDictionaryGetTypeID())
- {
- printf("Map\n");
-
-
- showDictionaryElement (value, CFSTR(kIOHIDElementCookieKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementCollectionTypeKey));
-
- showDictionaryElement (value, CFSTR(kIOHIDElementMinKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementMaxKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementScaledMinKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementScaledMaxKey));
-
- showDictionaryElement (value, CFSTR(kIOHIDElementSizeKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementIsRelativeKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementIsWrappingKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementIsNonLinearKey));
-#ifdef kIOHIDElementHasPreferredStateKey
- showDictionaryElement (value, CFSTR(kIOHIDElementHasPreferredStateKey));
-#else
- showDictionaryElement (value, CFSTR(kIOHIDElementHasPreferedStateKey));
-#endif
- showDictionaryElement (value, CFSTR(kIOHIDElementHasNullStateKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementVendorSpecificKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementUnitKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementUnitExponentKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementNameKey));
- showDictionaryElement (value, CFSTR(kIOHIDElementKey));
-
- printf("\n\n\n");
- }
- else if (type == CFNumberGetTypeID())
- {
- long number;
- if (CFNumberGetValue (value, kCFNumberLongType, &number))
- {
- printf("0x%lx (%ld)", number, number);
- }
- }
- else if (type == CFStringGetTypeID())
- {
- const char * c = CFStringGetCStringPtr (value, CFStringGetSystemEncoding ());
- if (c)
- {
- printf ("%s", c);
- }
- else
- {
- CFIndex bufferSize = CFStringGetLength (value) + 1;
- char * buffer = (char *)malloc (bufferSize);
- if (buffer)
- {
- if (CFStringGetCString (value, buffer, bufferSize, CFStringGetSystemEncoding ()))
- {
- printf ("%s", buffer);
- }
-
- free(buffer);
- }
- }
- }
-}
-
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////
-
-Boolean init(JNIEnv* env)
-{
- CLASS_JNIWrapper = (*env)->FindClass(env,"net/java/games/input/OSXEnvironmentPlugin");
- if ( CLASS_JNIWrapper == NULL )
- {
- printf("Class OSXEnvironmentPlugin not found... \n");
- return FALSE;
- }
-
- MID_AddController = (*env)->GetMethodID(env, CLASS_JNIWrapper, "addController", "(JLjava/lang/String;I)V");
- if (MID_AddController == NULL)
- {
- printf("Method addController not found... \n");
- return FALSE;
- }
-
- MID_AddControllerElement = (*env)->GetMethodID(env, CLASS_JNIWrapper, "addControllerElement", "(JJIIIIIIIIZZZZZ)V");
- if (MID_AddControllerElement == NULL)
- {
- printf("Method addControllerElement not found... \n");
- return FALSE;
- }
-
- return TRUE;
-}
-
-void createMasterPort()
-{
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- //Get a Mach port to initiate communication with I/O Kit.
- //
- ioReturnValue = IOMasterPort(bootstrap_port, &masterPort);
-}
-
-void disposeMasterPort()
-{
- //Free master port if we created one.
- //
- if (masterPort)
- {
- mach_port_deallocate(mach_task_self(), masterPort);
- }
-}
-
-void createHIDDevice( io_object_t hidDevice, IOHIDDeviceInterface ***hidDeviceInterface )
-{
- io_name_t className;
- IOCFPlugInInterface **plugInInterface = NULL;
- HRESULT plugInResult = S_OK;
- SInt32 score = 0;
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- ioReturnValue = IOObjectGetClass(hidDevice, className);
- if ( ioReturnValue != kIOReturnSuccess )
- {
- printf("Failed to get IOObject class name.");
- }
-
- printf("Found device type [%s]\n", className);
-
- ioReturnValue = IOCreatePlugInInterfaceForService(hidDevice,
- kIOHIDDeviceUserClientTypeID,
- kIOCFPlugInInterfaceID,
- &plugInInterface,
- &score);
-
- if (ioReturnValue == kIOReturnSuccess)
- {
- //Call a method of the intermediate plug-in to create the device
- //interface
- //
- plugInResult = (*plugInInterface)->QueryInterface(plugInInterface,
- CFUUIDGetUUIDBytes(kIOHIDDeviceInterfaceID),
- (LPVOID) hidDeviceInterface);
- if ( plugInResult != S_OK )
- {
- printf("Couldn't create HID class device interface");
- }
-
- (*plugInInterface)->Release(plugInInterface);
- }
-}
-
-IOReturn openDevice(IOHIDDeviceInterface ***hidDeviceInterface)
-{
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- //todo, change this to be controlled from the java layer at each device
- //
- ioReturnValue = (**hidDeviceInterface)->open(*hidDeviceInterface, 0 );
- if ( ioReturnValue != kIOReturnSuccess )
- {
- printf("Unable to open device - return [%d]\n", ioReturnValue );
- }
- else
- {
- printf("Successfully opened device \n");
- }
-
- return ioReturnValue;
-}
-
-IOReturn closeDevice(IOHIDDeviceInterface ***hidDeviceInterface)
-{
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- ioReturnValue = (**hidDeviceInterface)->close(*hidDeviceInterface);
- if ( ioReturnValue != kIOReturnSuccess )
- {
- printf("Unable to close device - return [%d]\n", ioReturnValue );
- }
- else
- {
- printf("Successfully closed device \n");
- }
-
- // release the device interface
- //
- (**hidDeviceInterface)->Release(*hidDeviceInterface);
-
- return ioReturnValue;
-}
-
-static void sendCFArray(const void * value, void * parameter)
-{
- if (CFGetTypeID (value) != CFDictionaryGetTypeID ())
- {
- return;
- }
-
- CFObjectSend(value);
-}
-
-void CFObjectSend( CFTypeRef value )
-{
- CFTypeID type = CFGetTypeID(value);
- if (type == CFArrayGetTypeID())
- {
- CFRange range = {0, CFArrayGetCount (value)};
-
- //Show an element array containing one or more element dictionaries
- CFArrayApplyFunction (value, range, sendCFArray, 0);
- }
- else if (type == CFDictionaryGetTypeID())
- {
-// printf("Sending Map\n");
-
-
- CFTypeRef val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementCookieKey) );
- if ( val )
- {
- CFNumberGetValue ( val , kCFNumberLongType, &elementCookie);
- printf("ElementCookie - 0x%lx (%ld) \n", elementCookie, elementCookie);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementTypeKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &elementType);
- printf("element Type - 0x%lx (%ld) \n", elementType, elementType);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementUsageKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &usage);
- printf("usage - 0x%lx (%ld) \n", usage, usage);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementUsagePageKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &usagePage);
- printf("usage page- 0x%lx (%ld) \n", usagePage, usagePage);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementMinKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &min);
- //printf("min - 0x%lx (%ld) \n", min, min);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementMaxKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &max);
- //printf("max - 0x%lx (%ld) \n", max, max);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementScaledMinKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &scaledMin);
- //printf("scaledMin - 0x%lx (%ld) \n", scaledMin, scaledMin);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementScaledMaxKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &scaledMax);
- //printf("scaledMax - 0x%lx (%ld) \n", scaledMax, scaledMax);
- }
-
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementSizeKey) );
- if ( val )
- {
- CFNumberGetValue ( val, kCFNumberLongType, &size);
- //printf("Size - 0x%lx (%ld) \n", size, size);
- }
-
- jboolean isRelative = JNI_FALSE;
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementIsRelativeKey) );
- if ( val )
- {
- isRelative = (CFBooleanGetValue(val) ? JNI_TRUE : JNI_FALSE);
- }
-
-
- jboolean isWrapping = JNI_FALSE;
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementIsWrappingKey) );
- if ( val )
- {
- isWrapping = (CFBooleanGetValue(val) ? JNI_TRUE : JNI_FALSE);
- }
-
-
- jboolean isNonLinear = JNI_FALSE;
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementIsNonLinearKey) );
- if ( val )
- {
- isNonLinear = (CFBooleanGetValue(val) ? JNI_TRUE : JNI_FALSE);
- }
-
-
- jboolean hasPreferredState = JNI_FALSE;
-#ifdef kIOHIDElementHasPreferredStateKey
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementHasPreferredStateKey) );
- if ( val )
- {
- hasPreferredState = (CFBooleanGetValue(val) ? JNI_TRUE : JNI_FALSE);
- }
-#else
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementHasPreferedStateKey) );
- if ( val )
- {
- hasPreferredState = (CFBooleanGetValue(val) ? JNI_TRUE : JNI_FALSE);
- }
-#endif
-
- jboolean hasNullState = JNI_FALSE;
- val = CFDictionaryGetValue( value, CFSTR(kIOHIDElementHasNullStateKey) );
- if ( val )
- {
- hasNullState = (CFBooleanGetValue(val) ? JNI_TRUE : JNI_FALSE);
- }
-
- (*lpEnv)->CallVoidMethod(lpEnv, lpObj, MID_AddControllerElement,
- (jlong)(long)lpDevice,
- (jlong)(long)elementCookie,
- (jint)(long)elementType,
- (jint)(long)usage,
- (jint)(long)usagePage,
- (jint)(long)min,
- (jint)(long)max,
- (jint)(long)scaledMin,
- (jint)(long)scaledMax,
- (jint)(long)size,
- (jboolean)isRelative,
- (jboolean)isWrapping,
- (jboolean)isNonLinear,
- (jboolean)hasPreferredState,
- (jboolean)hasNullState);
-
-// printf("End of element definition \n");
-
-
-
- CFTypeRef object = CFDictionaryGetValue (value, CFSTR(kIOHIDElementKey));
- if (object)
- {
- CFObjectSend( object );
- }
-
- printf("\n\n\n");
- }
-}
-
-void addControllerElements( CFMutableDictionaryRef dictionary, CFStringRef key )
-{
- printf("Adding controller elements\n");
-
- CFTypeRef value = CFDictionaryGetValue (dictionary, key);
- if (value)
- {
- CFRange range = {0, CFArrayGetCount (value)};
- CFArrayApplyFunction (value, range, sendCFArray, 0);
- }
-}
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: hidCreate
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_hidCreate
- (JNIEnv * env, jobject obj)
-{
- if ( init( env ) )
- {
- createMasterPort();
- }
-}
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: hidDispose
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_hidDispose
- (JNIEnv * env, jobject obj)
-{
- disposeMasterPort();
-}
-
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: enumDevices
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_enumDevices
- (JNIEnv * env, jobject obj)
-{
-
- lpEnv = env;
- lpObj = obj;
-
- CFMutableDictionaryRef hidMatchDictionary = NULL;
- IOReturn ioReturnValue = kIOReturnSuccess;
- Boolean noMatchingDevices = false;
-
- // Set up a matching dictionary to search the I/O Registry by class
- // name for all HID class devices
- //
- hidMatchDictionary = IOServiceMatching(kIOHIDDeviceKey);
-
- // Now search I/O Registry for matching devices.
- //
- ioReturnValue = IOServiceGetMatchingServices(masterPort, hidMatchDictionary, &hidObjectIterator);
-
- noMatchingDevices = ((ioReturnValue != kIOReturnSuccess) | (hidObjectIterator == NULL));
-
- // If search is unsuccessful, print message .
- //
- if (noMatchingDevices)
- {
- printf("No matching HID class devices found.");
- return;
- }
-
- // IOServiceGetMatchingServices consumes a reference to the
- // dictionary, so we don't need to release the dictionary ref.
- //
- hidMatchDictionary = NULL;
-
- io_object_t hidDevice = NULL;
- IOHIDDeviceInterface **hidDeviceInterface = NULL;
- CFMutableDictionaryRef properties = 0;
- char path[512];
- kern_return_t result;
-
-
- while ((hidDevice = IOIteratorNext(hidObjectIterator)))
- {
- result = IORegistryEntryGetPath(hidDevice, kIOServicePlane, path);
-
- if ( result == KERN_SUCCESS )
- {
- result = IORegistryEntryCreateCFProperties(hidDevice,
- &properties,
- kCFAllocatorDefault,
- kNilOptions);
- }
-
- if ((result == KERN_SUCCESS) && properties)
- {
- //showDictionaryElement(properties, CFSTR(kIOHIDTransportKey));
- //showDictionaryElement(properties, CFSTR(kIOHIDVendorKey));
- //printf("ProductID: "); showDictionaryElement(properties, CFSTR(kIOHIDProductIDKey));
- //printf("VersionNumber: "); showDictionaryElement(properties, CFSTR(kIOHIDVersionNumberKey));
- //printf("Manufacturer: "); showDictionaryElement(properties, CFSTR(kIOHIDManufacturerKey));
- //printf("ProductKey: "); showDictionaryElement(properties, CFSTR(kIOHIDProductKey));
- //printf("SerialNumber: "); showDictionaryElement(properties, CFSTR(kIOHIDSerialNumberKey));
- //showDictionaryElement(properties, CFSTR(kIOHIDLocationIDKey));
- //printf("PrimaryUsage: "); showDictionaryElement(properties, CFSTR(kIOHIDPrimaryUsageKey));
- //showDictionaryElement(properties, CFSTR(kIOHIDPrimaryUsagePageKey));
- //showDictionaryElement(properties, CFSTR(kIOHIDElementKey));
-
-
-
- // get the product name
- //
- CFTypeRef productName = CFDictionaryGetValue (properties, CFSTR(kIOHIDProductKey));
-
- // get the usage for this product
- //
- long usage;
- CFNumberGetValue ( CFDictionaryGetValue( properties, CFSTR(kIOHIDPrimaryUsageKey) ), kCFNumberLongType, &usage);
-
-
- createHIDDevice( hidDevice, &hidDeviceInterface );
-
- IOObjectRelease( hidDevice );
-
- if ( hidDeviceInterface != NULL )
- {
- (*env)->CallVoidMethod(env, obj, MID_AddController,
- (jlong)(long)hidDeviceInterface,
- (*env)->NewStringUTF( env, CFStringGetCStringPtr( productName, CFStringGetSystemEncoding()) ),
- (jint)usage );
- lpEnv = env;
- lpDevice = (jlong)(long)hidDeviceInterface;
-
- addControllerElements( properties, CFSTR(kIOHIDElementKey) );
-
-
- }
-
- //Release the properties dictionary
- CFRelease(properties);
- }
-
- }
-
- IOObjectRelease(hidObjectIterator);
-}
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: openDevice
- * Signature: (JI)J
- */
-JNIEXPORT jlong JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_openDevice
- (JNIEnv * env, jobject obj, jlong lpDevice, jint queueDepth)
-{
- IOHIDDeviceInterface **hidDeviceInterface = NULL;
- hidDeviceInterface = (IOHIDDeviceInterface **) (long)lpDevice;
- openDevice( &hidDeviceInterface );
-
-
- IOHIDQueueInterface **queue = NULL;
- queue = (*hidDeviceInterface)->allocQueue(hidDeviceInterface);
-
- if (queue)
- {
- // create a queue and specify how deep they want the input queue to be
- //
- (*queue)->create( queue, 0, (int)queueDepth );
- printf("InputQueue created %lx with depth %d \n", (long) queue, (int)queueDepth );
-
- // start the input queue
- //
- (*queue)->start( queue );
- }
- else
- {
- printf("Unable to create queue for device! \n");
- }
-
- return (jlong)(long)queue;
-
-}
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: closeDevice
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_closeDevice
- (JNIEnv * env, jobject obj, jlong lpDevice, jlong lpQueue)
-{
- IOHIDDeviceInterface **hidDeviceInterface = NULL;
- hidDeviceInterface = (IOHIDDeviceInterface **) (long)lpDevice;
-
- IOHIDQueueInterface **queue = NULL;
- queue = (IOHIDQueueInterface **)(long)lpQueue;
-
- // stop the queue
- //
- (*queue)->stop(queue);
-
- // dispose of the queue
- //
- (*queue)->dispose(queue);
-
- // release the queue
- //
- (*queue)->Release(queue);
-
- // close the input device
- //
- closeDevice( &hidDeviceInterface );
-}
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: pollDevice
- * Signature: (J)I
- */
-JNIEXPORT jint JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_pollDevice
- (JNIEnv * env, jobject obj, jlong lpQueue)
-{
- IOHIDEventStruct event;
-
- IOHIDQueueInterface **queue = NULL;
- queue = (IOHIDQueueInterface **)(long)lpQueue;
-
- AbsoluteTime zeroTime = {0,0};
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- ioReturnValue = (*queue)->getNextEvent(queue, &event, zeroTime, 0);
- if ( ioReturnValue == kIOReturnSuccess )
- {
- printf("Queue getNextEvent return value: %ld\n", (long)ioReturnValue );
- }
- else
- {
- printf("Queue event[%lx] %ld\n", (unsigned long) event.elementCookie, event.value );
- }
-
- return (jint) event.value;
-}
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: pollDevice
- * Signature: (JJ)I
- */
-JNIEXPORT jint JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_pollElement
- (JNIEnv * env, jobject obj, jlong lpDevice, jlong hidCookie)
-{
- IOHIDDeviceInterface **hidDeviceInterface = NULL;
- hidDeviceInterface = (IOHIDDeviceInterface **) (long)lpDevice;
-
- IOHIDElementCookie cookie = (IOHIDElementCookie)(long)hidCookie;
-
- IOHIDEventStruct event;
-
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- ioReturnValue = (*hidDeviceInterface)->getElementValue(hidDeviceInterface, cookie, &event);
- if ( ioReturnValue == kIOReturnSuccess )
- {
- printf("Queue getNextEvent return value: %ld\n", (long)ioReturnValue );
- }
- else
- {
- printf("Queue event[%lx] %ld\n", (unsigned long) event.elementCookie, event.value );
- }
-
- return (jint) event.value;
-}
-
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: registerDeviceElement
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_registerDeviceElement
- (JNIEnv * env, jobject obj, jlong lpQueue, jlong hidCookie)
-{
- IOHIDQueueInterface **queue = NULL;
- queue = (IOHIDQueueInterface **)(long)lpQueue;
-
- IOHIDElementCookie cookie = (IOHIDElementCookie)(long)hidCookie;
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- ioReturnValue = (*queue)->addElement(queue, cookie, 0);
- if ( ioReturnValue == kIOReturnSuccess )
- {
- printf("Registered pollElement: %ld\n", (long)cookie );
- }
- else
- {
- printf("Failed to add poll element: %ld\n", (long)cookie );
- }
-}
-
-/*
- * Class: net_java_games_input_OSXEnvironmentPlugin
- * Method: deregisterDeviceElement
- * Signature: (JJ)V
- */
-JNIEXPORT void JNICALL Java_net_java_games_input_OSXEnvironmentPlugin_deregisterDeviceElement
- (JNIEnv * env, jobject obj, jlong lpQueue, jlong hidCookie)
-{
- IOHIDQueueInterface **queue = NULL;
- queue = (IOHIDQueueInterface **)(long)lpQueue;
-
- IOHIDElementCookie cookie = (IOHIDElementCookie)(long)hidCookie;
-
- IOReturn ioReturnValue = kIOReturnSuccess;
-
- ioReturnValue = (*queue)->removeElement(queue, cookie );
- if ( ioReturnValue == kIOReturnSuccess )
- {
- printf("Removed pollElement: %ld\n", (long)cookie );
- }
- else
- {
- printf("Failed to remove poll element: %ld\n", (long)cookie );
- }
-}
-
-
-
diff --git a/www/index.html b/www/index.html
deleted file mode 100644
index a7dfdd2..0000000
--- a/www/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<html>
- <body bgcolor="f5f5f5">
-<div Align=center>
- <img ID="NavBar" WIDTH=800 HEIGHT=64 SRC="http://games.dev.java.net/images/navbar2p.gif" VSPACE=0 HSPACE=0 ALIGN="TOP" BORDER=0 USEMAP="#NavBar_MAP" NOFINSIDE="~! ~!" > </div>
-
-<MAP NAME="NavBar_Map">
- <AREA SHAPE="rect" ALT="Projects" COORDS="356,14,440,46" HREF="http://games.dev.java.net" TARGET="_self">
- <AREA SHAPE="rect" ALT="Wiki" COORDS="643,14,695,46" HREF="http://wiki.java.net/bin/view/Games">
- <AREA SHAPE="rect" ALT="Weblogs" COORDS="562,15,624,46" HREF="http://weblogs.java.net/weblogs/project/games">
- <AREA SHAPE="rect" COORDS="463,16,541,45" HREF="http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi" target="_top" ALT="Forums">
- <AREA SHAPE="rect" ALT="JavaGames Home" COORDS="147,16,334,48" HREF="http://community.java.net/games">
- <AREA SHAPE="rect" ALT="Java.net" COORDS="21,15,128,46" HREF="http://www.java.net" TARGET="_self">
-</MAP>
-
-<div align="center"><font color="#005177" size="+2">Welcome to the Java Input API Project! </font> </div>
-<table width="100%" border="0" cellspacing="1" cellpadding="0">
- <tr>
- <td width="66%" valign="top"> <table width="100%" height="358" border="0" cellpadding="5" cellspacing="1">
- <tr>
- <td valign="top"><table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#6E94B7">
- <tr>
- <td width="589" valign="top" bgcolor="#6E94B7"><div align="left"><font color="#FFFFFF"><strong>Overview</strong></font></div></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="#F8F8F8"><div align="justify">
- <p>The JInput Project hosts an implementation of an API for game controller
- discovery and polled input. It is part of a suite of open-source technologies
- initiated by the Game Technology Group at Sun Microsystems with intention of
- making the development of high performance games in Java a reality.</p>
- <p>The API itself is pure Java and presents a platform-neutral
- completely portable model of controller discovery and polling.
- It can handle arbitrary controllers and returns both human and
- machine understandable descriptions of the inputs available.</p>
- <p>The implementation hosted here also includes plug-ins to allow
- the API to adapt to various specific platforms. These plug-ins
- often contain a native code portion to interface to the host system.
- </p>
- </div></td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#6E94B7">
- <tr>
- <td width="589" bgcolor="#6E94B7"><div align="left"><font color="#FFFFFF"><strong>Project
- Status</strong></font></div></td>
- </tr>
- <tr>
- <td bgcolor="#F8F8F8"><div align="justify">The intial implementation
- of the Java Input API is available for download from
- <a href=" http://jinput.dev.java.net/source/browse/jinput/ ">CVS</a>.
- This release contains a plug-in for Win32i, Linux, and OSX. The nightly builds of this technology are available at <a href="https://games-binaries.dev.java.net/build/index.html">Nightly Builds</a>.
- </div></td>
-
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#6E94B7">
- <tr>
- <td width="589" bgcolor="#6E94B7"><div align="left"><font color="#FFFFFF"><strong>Getting
- Started </strong></font></div></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="#F8F8F8"><p>This project has been built
- in the following environment:</p>
- <ul>
- <li> Win32 (Win 2000 in the case of our machine)</li>
- <li> OSX 10.2.x or greater</li>
- <li> Sun J2SDK 1.4.2 (available at <a href=" http://java.sun.com " target="_blank">java.sun.com</a>)</li>
- <li> MinGW 2.0.0 plus the following updates: (all available
- at <a href=" http://www.mingw.org " target="_blank">www.mingw.org</a>)
- <ul>
- <li>binutils 2.13.90</li>
- <li> w32api-2.2</li>
- <li> mingw-runtime-2.4</li>
- <li> "Peter Puck's" DirectX8 binding "dx8libs.zip" at
- <a href="http://www.urebelscum.speedhost.com/download.html" target= " _blank">
- www.urebelscum.speedhost.com/download.html</a>
- (Copy all his .a files into your MinGW installation's "lib" directory.)
- </li>
- <li> The DirectX9 SDK available at
- <a href="http://www.microsoft.com/directx" target= " _blank">
- www.microsoft.com/directx</a>
- (The ant script expects this to be in c:\dx9. If you
- install elsewhere you will need to modify the Win32 plugin's
- build.xml file.)
- </ul>
- </li>
- <li> ANT 1.4.1 (available at <a href=" http://www.apache.org " target="_blank">www.apache.org</a>)</li>
- <p>This project requires that the Java Utils library (jutil.jar) be built and placed
- in this project's lib directories. See the README for more detail. For the
- Java Utils library itself see
- <a href="http://jutils.dev.java.net" target="_blank"> jutils.dev.java.net </a>
- </p></ul></td>
- </tr>
- </table></td>
- </tr>
- </table>
- <p>&nbsp;</p></td>
- <td valign="top">
- <table width="100%" border="0" cellspacing="1" cellpadding="5">
- <tr>
- <td bgcolor="#F8F8F8"><table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#6E94B7">
- <tr>
- <td valign="top" bgcolor="#6E94B7"><div align="left"><font color="#FFFFFF"><strong>Useful
- Links</strong></font></div></td></tr>
- <tr><td valign="top" bgcolor="#F8F8F8">
- <a
-href="http://games-core.dev.java.net/sun_contrib_051903_javagames.pdf">
-Developer Agreement </a></td>
- </tr>
- <tr>
- <td valign="top" bgcolor="#FFFFFF"><ul>
-
- </ul></td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td>&nbsp;</td>
- </tr>
- </table></td>
- </tr>
-</table>
-
-</body>
-</html>