mirror of
https://github.com/shadowfacts/jinput-arm64.git
synced 2026-01-04 07:49:57 +01:00
Merge remote-tracking branch 'origin/master' into github-pages
This commit is contained in:
commit
62c5953307
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -10,3 +10,4 @@ dist/
|
|||
eclipse_bin/
|
||||
*.iml
|
||||
.idea/
|
||||
dependency-reduced-pom.xml
|
||||
|
|
|
|||
53
Jenkinsfile
vendored
53
Jenkinsfile
vendored
|
|
@ -6,7 +6,23 @@ pipeline {
|
|||
jdk 'OpenJDK 9'
|
||||
}
|
||||
options { buildDiscarder(logRotator(numToKeepStr: '5')) }
|
||||
parameters {
|
||||
booleanParam(defaultValue: false, description: 'Perform Release', name: 'release')
|
||||
}
|
||||
stages {
|
||||
stage('Build core') {
|
||||
agent {
|
||||
label "osx"
|
||||
}
|
||||
steps {
|
||||
sh 'mvn -B -Dmaven.antrun.skip -Dmaven.source.skip -Dmaven.test.skip -DskipTests -DskipITs -pl coreAPI/ package'
|
||||
}
|
||||
post {
|
||||
success {
|
||||
archiveArtifacts artifacts: 'coreAPI/target/apidocs/**/*', fingerprint: true
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build natives') {
|
||||
parallel {
|
||||
stage('Build Windows natives') {
|
||||
|
|
@ -71,7 +87,9 @@ pipeline {
|
|||
agent {
|
||||
label "linux"
|
||||
}
|
||||
when { branch 'master' }
|
||||
steps {
|
||||
milestone(1)
|
||||
unstash 'windows-natives'
|
||||
unstash 'osx-natives'
|
||||
unstash 'linux-natives'
|
||||
|
|
@ -87,5 +105,40 @@ pipeline {
|
|||
}
|
||||
}
|
||||
}
|
||||
stage('Release') {
|
||||
agent {
|
||||
label "linux"
|
||||
}
|
||||
when {
|
||||
expression {
|
||||
return params.release
|
||||
}
|
||||
}
|
||||
steps {
|
||||
milestone(3)
|
||||
unstash 'windows-natives'
|
||||
unstash 'osx-natives'
|
||||
unstash 'linux-natives'
|
||||
sh 'echo $GPG_SECRET_KEYS | base64 --decode | gpg --batch --import'
|
||||
sh 'echo $GPG_OWNERTRUST | base64 --decode | gpg --import-ownertrust'
|
||||
withMaven(
|
||||
maven: 'Maven 3.5.3',
|
||||
jdk: 'OpenJDK 9',
|
||||
globalMavenSettingsConfig: 'global-maven-settings-ossrh',
|
||||
mavenOpts: '-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts' //Work around for JDK9 missing cacerts
|
||||
) {
|
||||
sh "mvn -P windows,linux,osx,wintab versions:set -DremoveSnapshot"
|
||||
script {
|
||||
VERSION_TAG = sh(script: "mvn -Dexpression=project.version help:evaluate | grep -e '^[[:digit:]]'", returnStdout: true).trim()
|
||||
}
|
||||
sh "git tag -a ${VERSION_TAG} -m 'Release tag ${VERSION_TAG}'"
|
||||
sh "mvn -P windows,linux,osx,wintab,release -Dmaven.antrun.skip -Dmaven.test.skip -DskipTests -DskipITs deploy"
|
||||
sh "mvn -P windows,linux,osx,wintab versions:revert"
|
||||
sh "mvn -P windows,linux,osx,wintab versions:set -DnextSnapshot"
|
||||
sh "git commit -m 'Next development release' ."
|
||||
sh "git push --follow-tags"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# JInput
|
||||
|
||||
[](https://maven-badges.herokuapp.com/maven-central/net.java.jinput/jinput)
|
||||
[](http://www.javadoc.io/doc/net.java.jinput/jinput)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/net.java.jinput/coreapi)
|
||||
[](http://www.javadoc.io/doc/net.java.jinput/coreapi)
|
||||
|
||||
Library for access to input devices.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
|||
|
|
@ -50,19 +50,11 @@ public class JInputAppletResourceLoader {
|
|||
private int percentageDone = 0;
|
||||
|
||||
private String getPrivilegedProperty(final String property) {
|
||||
return (String) AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property));
|
||||
}
|
||||
|
||||
private String setPrivilegedProperty(final String property, final String value) {
|
||||
return (String) AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.setProperty(property, value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.setProperty(property, value));
|
||||
}
|
||||
|
||||
public void loadResources(URL codeBase) throws IOException {
|
||||
|
|
@ -94,13 +86,13 @@ public class JInputAppletResourceLoader {
|
|||
|
||||
JarFile localJarFile = new JarFile(new File(tempDir, nativeJar), true);
|
||||
|
||||
Enumeration jarEntries = localJarFile.entries();
|
||||
Enumeration<JarEntry> jarEntries = localJarFile.entries();
|
||||
int totalUncompressedBytes = 0;
|
||||
int totalUncompressedBytesWritten = 0;
|
||||
List entriesToUse = new ArrayList();
|
||||
List<JarEntry> entriesToUse = new ArrayList<>();
|
||||
|
||||
while(jarEntries.hasMoreElements()) {
|
||||
JarEntry jarEntry = (JarEntry)jarEntries.nextElement();
|
||||
JarEntry jarEntry = jarEntries.nextElement();
|
||||
String entryName = jarEntry.getName();
|
||||
if(!entryName.startsWith("META-INF")) {
|
||||
totalUncompressedBytes+=jarEntry.getSize();
|
||||
|
|
@ -116,7 +108,7 @@ public class JInputAppletResourceLoader {
|
|||
}
|
||||
|
||||
for(int i=0;i<entriesToUse.size();i++) {
|
||||
JarEntry jarEntry = (JarEntry) entriesToUse.get(i);
|
||||
JarEntry jarEntry = entriesToUse.get(i);
|
||||
InputStream inStream = localJarFile.getInputStream(localJarFile.getEntry(jarEntry.getName()));
|
||||
File nativeFile = new File(tempNativesDir, jarEntry.getName());
|
||||
FileOutputStream fos = new FileOutputStream(nativeFile);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
/*
|
||||
* %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:
|
||||
|
|
@ -35,13 +29,11 @@
|
|||
* 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.Map;
|
||||
import java.util.List;
|
||||
import java.util.HashMap;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
@ -77,7 +69,7 @@ public abstract class AbstractController implements Controller {
|
|||
/**
|
||||
* Map from Component.Identifiers to Components
|
||||
*/
|
||||
private final Map id_to_components = new HashMap();
|
||||
private final Map<Component.Identifier, Component> id_to_components = new HashMap<>();
|
||||
|
||||
private EventQueue event_queue = new EventQueue(EVENT_QUEUE_DEPTH);
|
||||
|
||||
|
|
@ -128,7 +120,7 @@ public abstract class AbstractController implements Controller {
|
|||
* if no component with the specified type could be found.
|
||||
*/
|
||||
public final Component getComponent(Component.Identifier id) {
|
||||
return (Component)id_to_components.get(id);
|
||||
return id_to_components.get(id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -183,7 +175,7 @@ public abstract class AbstractController implements Controller {
|
|||
setDeviceEventQueueSize(size);
|
||||
event_queue = new EventQueue(size);
|
||||
} catch (IOException e) {
|
||||
ControllerEnvironment.logln("Failed to create new event queue of size " + size + ": " + e);
|
||||
ControllerEnvironment.log("Failed to create new event queue of size " + size + ": " + e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -233,7 +225,7 @@ public abstract class AbstractController implements Controller {
|
|||
}
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
ControllerEnvironment.logln("Failed to poll device: " + e.getMessage());
|
||||
ControllerEnvironment.log("Failed to poll device: " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ import java.security.AccessController;
|
|||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
|
|
@ -70,9 +71,6 @@ import java.util.logging.Logger;
|
|||
*
|
||||
*/
|
||||
public abstract class ControllerEnvironment {
|
||||
static void logln(String msg) {
|
||||
log(msg + "\n");
|
||||
}
|
||||
|
||||
static void log(String msg) {
|
||||
Logger.getLogger(ControllerEnvironment.class.getName()).info(msg);
|
||||
|
|
@ -87,12 +85,17 @@ public abstract class ControllerEnvironment {
|
|||
/**
|
||||
* List of controller listeners
|
||||
*/
|
||||
protected final ArrayList controllerListeners = new ArrayList();
|
||||
protected final ArrayList<ControllerListener> controllerListeners = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Protected constructor for subclassing.
|
||||
*/
|
||||
protected ControllerEnvironment() {
|
||||
if(System.getProperty("jinput.loglevel") != null) {
|
||||
String loggerName = ControllerEnvironment.class.getPackage().getName();
|
||||
Level level = Level.parse(System.getProperty("jinput.loglevel"));
|
||||
Logger.getLogger(loggerName).setLevel(level);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -130,9 +133,9 @@ public abstract class ControllerEnvironment {
|
|||
*/
|
||||
protected void fireControllerAdded(Controller c) {
|
||||
ControllerEvent ev = new ControllerEvent(c);
|
||||
Iterator it = controllerListeners.iterator();
|
||||
Iterator<ControllerListener> it = controllerListeners.iterator();
|
||||
while (it.hasNext()) {
|
||||
((ControllerListener)it.next()).controllerAdded(ev);
|
||||
it.next().controllerAdded(ev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -142,9 +145,9 @@ public abstract class ControllerEnvironment {
|
|||
*/
|
||||
protected void fireControllerRemoved(Controller c) {
|
||||
ControllerEvent ev = new ControllerEvent(c);
|
||||
Iterator it = controllerListeners.iterator();
|
||||
Iterator<ControllerListener> it = controllerListeners.iterator();
|
||||
while (it.hasNext()) {
|
||||
((ControllerListener)it.next()).controllerRemoved(ev);
|
||||
it.next().controllerRemoved(ev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -155,4 +158,4 @@ public abstract class ControllerEnvironment {
|
|||
public static ControllerEnvironment getDefaultEnvironment() {
|
||||
return defaultEnvironment;
|
||||
}
|
||||
} // ControllerEnvironment
|
||||
}
|
||||
|
|
@ -1,10 +1,4 @@
|
|||
/*
|
||||
* %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:
|
||||
|
|
@ -35,24 +29,20 @@
|
|||
* 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.util.plugins.Plugins;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.java.games.util.plugins.*;
|
||||
|
||||
/**
|
||||
* The default controller environment.
|
||||
*
|
||||
|
|
@ -72,42 +62,31 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
*
|
||||
*/
|
||||
static void loadLibrary(final String lib_name) {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<String>) () -> {
|
||||
String lib_path = System.getProperty("net.java.games.input.librarypath");
|
||||
if (lib_path != null)
|
||||
System.load(lib_path + File.separator + System.mapLibraryName(lib_name));
|
||||
else
|
||||
System.loadLibrary(lib_name);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static String getPrivilegedProperty(final String property) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property));
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property, default_value));
|
||||
}
|
||||
|
||||
/**
|
||||
* List of all controllers in this environment
|
||||
*/
|
||||
private ArrayList controllers;
|
||||
private ArrayList<Controller> controllers;
|
||||
|
||||
private Collection loadedPlugins = new ArrayList();
|
||||
private Collection<String> loadedPluginNames = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Public no-arg constructor.
|
||||
|
|
@ -122,13 +101,8 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
public Controller[] getControllers() {
|
||||
if (controllers == null) {
|
||||
// Controller list has not been scanned.
|
||||
controllers = new ArrayList();
|
||||
AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
scanControllers();
|
||||
return null;
|
||||
}
|
||||
});
|
||||
controllers = new ArrayList<>();
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> scanControllers());
|
||||
//Check the properties for specified controller classes
|
||||
String pluginClasses = getPrivilegedProperty("jinput.plugins", "") + " " + getPrivilegedProperty("net.java.games.input.plugins", "");
|
||||
if(!getPrivilegedProperty("jinput.useDefaultPlugin", "true").toLowerCase().trim().equals("false") && !getPrivilegedProperty("net.java.games.input.useDefaultPlugin", "true").toLowerCase().trim().equals("false")) {
|
||||
|
|
@ -154,15 +128,15 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
while(pluginClassTok.hasMoreTokens()) {
|
||||
String className = pluginClassTok.nextToken();
|
||||
try {
|
||||
if(!loadedPlugins.contains(className)) {
|
||||
if(!loadedPluginNames.contains(className)) {
|
||||
log.fine("Loading: " + className);
|
||||
Class ceClass = Class.forName(className);
|
||||
Class<?> ceClass = Class.forName(className);
|
||||
ControllerEnvironment ce = (ControllerEnvironment) ceClass.getDeclaredConstructor().newInstance();
|
||||
if(ce.isSupported()) {
|
||||
addControllers(ce.getControllers());
|
||||
loadedPlugins.add(ce.getClass().getName());
|
||||
loadedPluginNames.add(ce.getClass().getName());
|
||||
} else {
|
||||
logln(ceClass.getName() + " is not supported");
|
||||
log(ceClass.getName() + " is not supported");
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
|
|
@ -171,17 +145,17 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
}
|
||||
}
|
||||
Controller[] ret = new Controller[controllers.size()];
|
||||
Iterator it = controllers.iterator();
|
||||
Iterator<Controller> it = controllers.iterator();
|
||||
int i = 0;
|
||||
while (it.hasNext()) {
|
||||
ret[i] = (Controller)it.next();
|
||||
ret[i] = it.next();
|
||||
i++;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* This is jeff's new plugin code using Jeff's Plugin manager */
|
||||
private void scanControllers() {
|
||||
private Void scanControllers() {
|
||||
String pluginPathName = getPrivilegedProperty("jinput.controllerPluginPath");
|
||||
if(pluginPathName == null) {
|
||||
pluginPathName = "controller";
|
||||
|
|
@ -191,6 +165,8 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
File.separator + "lib"+File.separator + pluginPathName);
|
||||
scanControllersAt(getPrivilegedProperty("user.dir")+
|
||||
File.separator + pluginPathName);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void scanControllersAt(String path) {
|
||||
|
|
@ -200,19 +176,19 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
}
|
||||
try {
|
||||
Plugins plugins = new Plugins(file);
|
||||
Class[] envClasses = plugins.getExtends(ControllerEnvironment.class);
|
||||
@SuppressWarnings("unchecked")
|
||||
Class<ControllerEnvironment>[] envClasses = plugins.getExtends(ControllerEnvironment.class);
|
||||
for(int i=0;i<envClasses.length;i++){
|
||||
try {
|
||||
ControllerEnvironment.logln("ControllerEnvironment "+
|
||||
ControllerEnvironment.log("ControllerEnvironment "+
|
||||
envClasses[i].getName()
|
||||
+" loaded by "+envClasses[i].getClassLoader());
|
||||
ControllerEnvironment ce = (ControllerEnvironment)
|
||||
envClasses[i].getDeclaredConstructor().newInstance();
|
||||
ControllerEnvironment ce = envClasses[i].getDeclaredConstructor().newInstance();
|
||||
if(ce.isSupported()) {
|
||||
addControllers(ce.getControllers());
|
||||
loadedPlugins.add(ce.getClass().getName());
|
||||
loadedPluginNames.add(ce.getClass().getName());
|
||||
} else {
|
||||
logln(envClasses[i].getName() + " is not supported");
|
||||
log(envClasses[i].getName() + " is not supported");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
/*
|
||||
* %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:
|
||||
|
|
@ -35,7 +29,7 @@
|
|||
* 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;
|
||||
|
|
@ -77,7 +71,7 @@ class PluginClassLoader extends ClassLoader {
|
|||
* 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)
|
||||
protected Class<?> findClass(String name)
|
||||
throws ClassNotFoundException {
|
||||
// Try loading the class from the file system.
|
||||
byte[] b = loadClassData(name);
|
||||
|
|
|
|||
|
|
@ -9,5 +9,6 @@ Top level package for JInput.
|
|||
Use -Djinput.useDefaultPlugin=false (or net.java.games.input.useDefaultPlugin=false) to disable automatic loading of the default plugin for the platform.<BR/>
|
||||
Use -Djinput.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 -Djinput.controllerPluginPath to change the path the plugins mechanism will use to search for plugin Jars.
|
||||
Use -Djinput.loglevel to change the logging level using Java util logging level strings.
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
@ -21,54 +21,11 @@
|
|||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>coreapi</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>windows-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-windows</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>osx-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-osx</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>wintab-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-wintab</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>linux-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-linux</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>windows-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>osx-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>wintab-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>linux-plugin</artifactId>
|
||||
<artifactId>jinput</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>pom</type>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
@ -109,6 +66,7 @@
|
|||
<argument>-classpath</argument>
|
||||
<classpath/>
|
||||
<argument>-Djava.library.path=${project.build.directory}/natives</argument>
|
||||
<argument>-Djinput.loglevel=OFF</argument>
|
||||
<argument>net.java.games.input.example.ReadAllEvents</argument>
|
||||
</arguments>
|
||||
</configuration>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>plugins</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
@ -29,12 +29,6 @@
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<compilerArgs>
|
||||
<arg>-h</arg>
|
||||
<arg>${project.build.directory}/generated-sources/natives</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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.Map;
|
||||
|
|
@ -46,13 +40,13 @@ import java.util.HashMap;
|
|||
* @version 1.0
|
||||
*/
|
||||
final class ButtonUsage implements Usage {
|
||||
private final static Map map = new HashMap();
|
||||
private final static Map<Integer, ButtonUsage> map = new HashMap<>();
|
||||
|
||||
private final int button_id;
|
||||
|
||||
public final static ButtonUsage map(int button_id) {
|
||||
Integer button_id_obj = new Integer(button_id);
|
||||
ButtonUsage existing = (ButtonUsage)map.get(button_id_obj);
|
||||
Integer button_id_obj = button_id;
|
||||
ButtonUsage existing = map.get(button_id_obj);
|
||||
if (existing != null)
|
||||
return existing;
|
||||
ButtonUsage new_button = new ButtonUsage(button_id);
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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;
|
||||
|
||||
/** Generic Desktop Usages
|
||||
|
|
|
|||
|
|
@ -1,46 +1,37 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
/** Mapping from Keyboard HID usages to Component.Identifier.Key
|
||||
* @author elias
|
||||
* @version 1.0
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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;
|
||||
|
|
@ -67,9 +61,7 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
*
|
||||
*/
|
||||
static void loadLibrary(final String lib_name) {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
try {
|
||||
String lib_path = System.getProperty("net.java.games.input.librarypath");
|
||||
if (lib_path != null)
|
||||
|
|
@ -81,25 +73,16 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
supported = false;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static String getPrivilegedProperty(final String property) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty(property));
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty(property, default_value));
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
@ -122,7 +105,7 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
major = Integer.parseInt(major_str);
|
||||
minor = Integer.parseInt(minor_str);
|
||||
} catch (Exception e) {
|
||||
logln("Exception occurred while trying to determine OS version: " + e);
|
||||
log("Exception occurred while trying to determine OS version: " + e);
|
||||
// Best guess, no
|
||||
return false;
|
||||
}
|
||||
|
|
@ -147,10 +130,10 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
return supported;
|
||||
}
|
||||
|
||||
private final static void addElements(OSXHIDQueue queue, List elements, List components, boolean map_mouse_buttons) throws IOException {
|
||||
Iterator it = elements.iterator();
|
||||
private final static void addElements(OSXHIDQueue queue, List<OSXHIDElement> elements, List<OSXComponent> components, boolean map_mouse_buttons) throws IOException {
|
||||
Iterator<OSXHIDElement> it = elements.iterator();
|
||||
while (it.hasNext()) {
|
||||
OSXHIDElement element = (OSXHIDElement)it.next();
|
||||
OSXHIDElement element = it.next();
|
||||
Component.Identifier id = element.getIdentifier();
|
||||
if (id == null)
|
||||
continue;
|
||||
|
|
@ -169,8 +152,8 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
}
|
||||
}
|
||||
|
||||
private final static Keyboard createKeyboardFromDevice(OSXHIDDevice device, List elements) throws IOException {
|
||||
List components = new ArrayList();
|
||||
private final static Keyboard createKeyboardFromDevice(OSXHIDDevice device, List<OSXHIDElement> elements) throws IOException {
|
||||
List<OSXComponent> components = new ArrayList<>();
|
||||
OSXHIDQueue queue = device.createQueue(AbstractController.EVENT_QUEUE_DEPTH);
|
||||
try {
|
||||
addElements(queue, elements, components, false);
|
||||
|
|
@ -180,12 +163,11 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
}
|
||||
Component[] components_array = new Component[components.size()];
|
||||
components.toArray(components_array);
|
||||
Keyboard keyboard = new OSXKeyboard(device, queue, components_array, new Controller[]{}, new Rumbler[]{});
|
||||
return keyboard;
|
||||
return new OSXKeyboard(device, queue, components_array, new Controller[]{}, new Rumbler[]{});
|
||||
}
|
||||
|
||||
private final static Mouse createMouseFromDevice(OSXHIDDevice device, List elements) throws IOException {
|
||||
List components = new ArrayList();
|
||||
private final static Mouse createMouseFromDevice(OSXHIDDevice device, List<OSXHIDElement> elements) throws IOException {
|
||||
List<OSXComponent> components = new ArrayList<>();
|
||||
OSXHIDQueue queue = device.createQueue(AbstractController.EVENT_QUEUE_DEPTH);
|
||||
try {
|
||||
addElements(queue, elements, components, true);
|
||||
|
|
@ -204,8 +186,8 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
}
|
||||
}
|
||||
|
||||
private final static AbstractController createControllerFromDevice(OSXHIDDevice device, List elements, Controller.Type type) throws IOException {
|
||||
List components = new ArrayList();
|
||||
private final static AbstractController createControllerFromDevice(OSXHIDDevice device, List<OSXHIDElement> elements, Controller.Type type) throws IOException {
|
||||
List<OSXComponent> components = new ArrayList<>();
|
||||
OSXHIDQueue queue = device.createQueue(AbstractController.EVENT_QUEUE_DEPTH);
|
||||
try {
|
||||
addElements(queue, elements, components, false);
|
||||
|
|
@ -215,15 +197,14 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
}
|
||||
Component[] components_array = new Component[components.size()];
|
||||
components.toArray(components_array);
|
||||
AbstractController controller = new OSXAbstractController(device, queue, components_array, new Controller[]{}, new Rumbler[]{}, type);
|
||||
return controller;
|
||||
return new OSXAbstractController(device, queue, components_array, new Controller[]{}, new Rumbler[]{}, type);
|
||||
}
|
||||
|
||||
private final static void createControllersFromDevice(OSXHIDDevice device, List controllers) throws IOException {
|
||||
private final static void createControllersFromDevice(OSXHIDDevice device, List<Controller> controllers) throws IOException {
|
||||
UsagePair usage_pair = device.getUsagePair();
|
||||
if (usage_pair == null)
|
||||
return;
|
||||
List elements = device.getElements();
|
||||
List<OSXHIDElement> elements = device.getElements();
|
||||
if (usage_pair.getUsagePage() == UsagePage.GENERIC_DESKTOP && (usage_pair.getUsage() == GenericDesktopUsage.MOUSE ||
|
||||
usage_pair.getUsage() == GenericDesktopUsage.POINTER)) {
|
||||
Controller mouse = createMouseFromDevice(device, elements);
|
||||
|
|
@ -231,26 +212,18 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
controllers.add(mouse);
|
||||
} else if (usage_pair.getUsagePage() == UsagePage.GENERIC_DESKTOP && (usage_pair.getUsage() == GenericDesktopUsage.KEYBOARD ||
|
||||
usage_pair.getUsage() == GenericDesktopUsage.KEYPAD)) {
|
||||
Controller keyboard = createKeyboardFromDevice(device, elements);
|
||||
if (keyboard != null)
|
||||
controllers.add(keyboard);
|
||||
controllers.add(createKeyboardFromDevice(device, elements));
|
||||
} else if (usage_pair.getUsagePage() == UsagePage.GENERIC_DESKTOP && usage_pair.getUsage() == GenericDesktopUsage.JOYSTICK) {
|
||||
Controller joystick = createControllerFromDevice(device, elements, Controller.Type.STICK);
|
||||
if (joystick != null)
|
||||
controllers.add(joystick);
|
||||
controllers.add(createControllerFromDevice(device, elements, Controller.Type.STICK));
|
||||
} else if (usage_pair.getUsagePage() == UsagePage.GENERIC_DESKTOP && usage_pair.getUsage() == GenericDesktopUsage.MULTI_AXIS_CONTROLLER) {
|
||||
Controller multiaxis = createControllerFromDevice(device, elements, Controller.Type.STICK);
|
||||
if (multiaxis != null)
|
||||
controllers.add(multiaxis);
|
||||
controllers.add(createControllerFromDevice(device, elements, Controller.Type.STICK));
|
||||
} else if (usage_pair.getUsagePage() == UsagePage.GENERIC_DESKTOP && usage_pair.getUsage() == GenericDesktopUsage.GAME_PAD) {
|
||||
Controller game_pad = createControllerFromDevice(device, elements, Controller.Type.GAMEPAD);
|
||||
if (game_pad != null)
|
||||
controllers.add(game_pad);
|
||||
controllers.add(createControllerFromDevice(device, elements, Controller.Type.GAMEPAD));
|
||||
}
|
||||
}
|
||||
|
||||
private final static Controller[] enumerateControllers() {
|
||||
List controllers = new ArrayList();
|
||||
List<Controller> controllers = new ArrayList<>();
|
||||
try {
|
||||
OSXHIDDeviceIterator it = new OSXHIDDeviceIterator();
|
||||
try {
|
||||
|
|
@ -266,12 +239,12 @@ public final class OSXEnvironmentPlugin extends ControllerEnvironment implements
|
|||
createControllersFromDevice(device, controllers);
|
||||
device_used = old_size != controllers.size();
|
||||
} catch (IOException e) {
|
||||
logln("Failed to create controllers from device: " + device.getProductName());
|
||||
log("Failed to create controllers from device: " + device.getProductName());
|
||||
}
|
||||
if (!device_used)
|
||||
device.release();
|
||||
} catch (IOException e) {
|
||||
logln("Failed to enumerate device: " + e.getMessage());
|
||||
log("Failed to enumerate device: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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.IOException;
|
||||
|
|
@ -104,7 +98,7 @@ final class OSXHIDDevice {
|
|||
|
||||
private final long device_address;
|
||||
private final long device_interface_address;
|
||||
private final Map properties;
|
||||
private final Map<String,?> properties;
|
||||
|
||||
private boolean released;
|
||||
|
||||
|
|
@ -130,7 +124,7 @@ final class OSXHIDDevice {
|
|||
return (String)properties.get(kIOHIDProductKey);
|
||||
}
|
||||
|
||||
private final OSXHIDElement createElementFromElementProperties(Map element_properties) {
|
||||
private final OSXHIDElement createElementFromElementProperties(Map<String,?> element_properties) {
|
||||
/* long size = getLongFromProperties(element_properties, kIOHIDElementSizeKey);
|
||||
// ignore elements that can't fit into the 32 bit value field of a hid event
|
||||
if (size > 32)
|
||||
|
|
@ -161,12 +155,13 @@ final class OSXHIDDevice {
|
|||
}
|
||||
}
|
||||
|
||||
private final void addElements(List elements, Map properties) {
|
||||
@SuppressWarnings("unchecked")
|
||||
private final void addElements(List<OSXHIDElement> elements, Map<String,?> properties) {
|
||||
Object[] elements_properties = (Object[])properties.get(kIOHIDElementKey);
|
||||
if (elements_properties == null)
|
||||
return;
|
||||
for (int i = 0; i < elements_properties.length; i++) {
|
||||
Map element_properties = (Map)elements_properties[i];
|
||||
Map<String,?> element_properties = (Map<String,?>)elements_properties[i];
|
||||
OSXHIDElement element = createElementFromElementProperties(element_properties);
|
||||
if (element != null) {
|
||||
elements.add(element);
|
||||
|
|
@ -175,28 +170,28 @@ final class OSXHIDDevice {
|
|||
}
|
||||
}
|
||||
|
||||
public final List getElements() {
|
||||
List elements = new ArrayList();
|
||||
public final List<OSXHIDElement> getElements() {
|
||||
List<OSXHIDElement> elements = new ArrayList<>();
|
||||
addElements(elements, properties);
|
||||
return elements;
|
||||
}
|
||||
|
||||
private final static long getLongFromProperties(Map properties, String key, long default_value) {
|
||||
private final static long getLongFromProperties(Map<String,?> properties, String key, long default_value) {
|
||||
Long long_obj = (Long)properties.get(key);
|
||||
if (long_obj == null)
|
||||
return default_value;
|
||||
return long_obj.longValue();
|
||||
}
|
||||
|
||||
private final static boolean getBooleanFromProperties(Map properties, String key, boolean default_value) {
|
||||
private final static boolean getBooleanFromProperties(Map<String,?> properties, String key, boolean default_value) {
|
||||
return getLongFromProperties(properties, key, default_value ? 1 : 0) != 0;
|
||||
}
|
||||
|
||||
private final static int getIntFromProperties(Map properties, String key) {
|
||||
private final static int getIntFromProperties(Map<String,?> properties, String key) {
|
||||
return (int)getLongFromProperties(properties, key);
|
||||
}
|
||||
|
||||
private final static long getLongFromProperties(Map properties, String key) {
|
||||
private final static long getLongFromProperties(Map<String,?> properties, String key) {
|
||||
Long long_obj = (Long)properties.get(key);
|
||||
return long_obj.longValue();
|
||||
}
|
||||
|
|
@ -217,28 +212,6 @@ final class OSXHIDDevice {
|
|||
return createUsagePair(usage_page_id, usage_id);
|
||||
}
|
||||
|
||||
/*
|
||||
public final List getUsagePairs() {
|
||||
List usage_pairs_list = new ArrayList();
|
||||
Object[] usage_pairs = (Object[])properties.get(kIOHIDDeviceUsagePairsKey);
|
||||
if (usage_pairs == null) {
|
||||
int usage_page_id = getIntFromProperties(properties, kIOHIDPrimaryUsagePageKey);
|
||||
int usage_id = getIntFromProperties(properties, kIOHIDPrimaryUsageKey);
|
||||
UsagePair pair = createUsagePair(usage_page_id, usage_id);
|
||||
if (pair != null)
|
||||
usage_pairs_list.add(pair);
|
||||
}
|
||||
for (int i = 0; i < usage_pairs.length; i++) {
|
||||
Map usage_pair = (Map)usage_pairs[i];
|
||||
int usage_page_id = getIntFromProperties(usage_pair, kIOHIDDeviceUsagePageKey);
|
||||
int usage_id = getIntFromProperties(usage_pair, kIOHIDDeviceUsageKey);
|
||||
UsagePair pair = createUsagePair(usage_page_id, usage_id);
|
||||
if (pair != null)
|
||||
usage_pairs_list.add(pair);
|
||||
}
|
||||
return usage_pairs_list;
|
||||
}
|
||||
*/
|
||||
private final void dumpProperties() {
|
||||
log.info(toString());
|
||||
dumpMap("", properties);
|
||||
|
|
@ -253,8 +226,8 @@ final class OSXHIDDevice {
|
|||
log.info(prefix + "}");
|
||||
}
|
||||
|
||||
private final static void dumpMap(String prefix, Map map) {
|
||||
Iterator keys = map.keySet().iterator();
|
||||
private final static void dumpMap(String prefix, Map<String,?> map) {
|
||||
Iterator<String> keys = map.keySet().iterator();
|
||||
while (keys.hasNext()) {
|
||||
Object key = keys.next();
|
||||
Object value = map.get(key);
|
||||
|
|
@ -262,23 +235,24 @@ final class OSXHIDDevice {
|
|||
dumpObject(prefix + "\t", value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private final static void dumpObject(String prefix, Object obj) {
|
||||
if (obj instanceof Long) {
|
||||
Long l = (Long)obj;
|
||||
log.info(prefix + "0x" + Long.toHexString(l.longValue()));
|
||||
} else if (obj instanceof Map)
|
||||
dumpMap(prefix, (Map)obj);
|
||||
dumpMap(prefix, (Map<String,?>)obj);
|
||||
else if (obj.getClass().isArray())
|
||||
dumpArray(prefix, (Object[])obj);
|
||||
else
|
||||
log.info(prefix + obj);
|
||||
}
|
||||
|
||||
private final Map getDeviceProperties() throws IOException {
|
||||
private final Map<String,?> getDeviceProperties() throws IOException {
|
||||
return nGetDeviceProperties(device_address);
|
||||
}
|
||||
private final static native Map nGetDeviceProperties(long device_address) throws IOException;
|
||||
private final static native Map<String,?> nGetDeviceProperties(long device_address) throws IOException;
|
||||
|
||||
public final synchronized void release() throws IOException {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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.IOException;
|
||||
|
|
@ -47,7 +41,7 @@ import java.util.HashMap;
|
|||
* @version 1.0
|
||||
*/
|
||||
final class OSXHIDQueue {
|
||||
private final Map map = new HashMap();
|
||||
private final Map<Long,OSXComponent> map = new HashMap<>();
|
||||
private final long queue_address;
|
||||
|
||||
private boolean released;
|
||||
|
|
@ -80,7 +74,7 @@ final class OSXHIDQueue {
|
|||
}
|
||||
|
||||
public final OSXComponent mapEvent(OSXEvent event) {
|
||||
return (OSXComponent)map.get(new Long(event.getCookie()));
|
||||
return map.get(event.getCookie());
|
||||
}
|
||||
|
||||
private final void open(int queue_depth) throws IOException {
|
||||
|
|
@ -118,13 +112,13 @@ final class OSXHIDQueue {
|
|||
|
||||
public final void addElement(OSXHIDElement element, OSXComponent component) throws IOException {
|
||||
nAddElement(queue_address, element.getCookie());
|
||||
map.put(new Long(element.getCookie()), component);
|
||||
map.put(element.getCookie(), component);
|
||||
}
|
||||
private final static native void nAddElement(long queue_address, long cookie) throws IOException;
|
||||
|
||||
public final void removeElement(OSXHIDElement element) throws IOException {
|
||||
nRemoveElement(queue_address, element.getCookie());
|
||||
map.remove(new Long(element.getCookie()));
|
||||
map.remove(element.getCookie());
|
||||
}
|
||||
private final static native void nRemoveElement(long queue_address, long cookie) throws IOException;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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;
|
||||
|
||||
/** Generic Desktop Usages
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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.lang.reflect.Method;
|
||||
|
|
@ -77,7 +71,7 @@ final class UsagePage {
|
|||
/* ReservedPointofSalepages 0x8E - 0X8F */
|
||||
public final static UsagePage CAMERACONTROL= new UsagePage(0x90); /* USB Device Class Definition for Image Class Devices */
|
||||
public final static UsagePage ARCADE = new UsagePage(0x91); /* OAAF Definitions for arcade and coinop related Devices */
|
||||
private final Class usage_class;
|
||||
private final Class<? extends Usage> usage_class;
|
||||
private final int usage_page_id;
|
||||
|
||||
public final static UsagePage map(int page_id) {
|
||||
|
|
@ -86,7 +80,7 @@ final class UsagePage {
|
|||
return map[page_id];
|
||||
}
|
||||
|
||||
private UsagePage(int page_id, Class usage_class) {
|
||||
private UsagePage(int page_id, Class<? extends Usage> usage_class) {
|
||||
map[page_id] = this;
|
||||
this.usage_class = usage_class;
|
||||
this.usage_page_id = page_id;
|
||||
|
|
@ -104,8 +98,8 @@ final class UsagePage {
|
|||
if (usage_class == null)
|
||||
return null;
|
||||
try {
|
||||
Method map_method = usage_class.getMethod("map", new Class[]{int.class});
|
||||
Object result = map_method.invoke(null, new Object[]{new Integer(usage_id)});
|
||||
Method map_method = usage_class.getMethod("map", int.class);
|
||||
Object result = map_method.invoke(null, usage_id);
|
||||
return (Usage)result;
|
||||
} catch (Exception e) {
|
||||
throw new Error(e);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>plugins</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2004 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -43,7 +43,7 @@ import java.lang.reflect.Modifier;
|
|||
* @author elias
|
||||
*/
|
||||
final class AWTKeyboard extends Keyboard implements AWTEventListener {
|
||||
private final List awt_events = new ArrayList();
|
||||
private final List<KeyEvent> awt_events = new ArrayList<>();
|
||||
private Event[] processed_events;
|
||||
private int processed_events_index;
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
|
|||
}
|
||||
|
||||
private final static Component[] createComponents() {
|
||||
List components = new ArrayList();
|
||||
List<Component> components = new ArrayList<>();
|
||||
Field[] vkey_fields = KeyEvent.class.getFields();
|
||||
for (int i = 0; i < vkey_fields.length; i++) {
|
||||
Field vkey_field = vkey_fields[i];
|
||||
|
|
@ -80,7 +80,7 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
|
|||
components.add(new Key(Component.Identifier.Key.RETURN));
|
||||
components.add(new Key(Component.Identifier.Key.NUMPADCOMMA));
|
||||
components.add(new Key(Component.Identifier.Key.COMMA));
|
||||
return (Component[])components.toArray(new Component[]{});
|
||||
return components.toArray(new Component[]{});
|
||||
}
|
||||
|
||||
private final void resizeEventQueue(int size) {
|
||||
|
|
@ -96,13 +96,12 @@ final class AWTKeyboard extends Keyboard implements AWTEventListener {
|
|||
|
||||
public final synchronized void eventDispatched(AWTEvent event) {
|
||||
if (event instanceof KeyEvent)
|
||||
awt_events.add(event);
|
||||
awt_events.add((KeyEvent)event);
|
||||
}
|
||||
|
||||
public final synchronized void pollDevice() throws IOException {
|
||||
for (int i = 0; i < awt_events.size(); i++) {
|
||||
KeyEvent event = (KeyEvent)awt_events.get(i);
|
||||
processEvent(event);
|
||||
processEvent(awt_events.get(i));
|
||||
}
|
||||
awt_events.clear();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2004 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -27,7 +27,6 @@
|
|||
package net.java.games.input;
|
||||
|
||||
import java.awt.AWTEvent;
|
||||
import java.awt.Point;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.AWTEventListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
|
@ -47,8 +46,8 @@ final class AWTMouse extends Mouse implements AWTEventListener {
|
|||
private final static int EVENT_Y = 2;
|
||||
private final static int EVENT_BUTTON = 4;
|
||||
|
||||
private final List awt_events = new ArrayList();
|
||||
private final List processed_awt_events = new ArrayList();
|
||||
private final List<AWTEvent> awt_events = new ArrayList<>();
|
||||
private final List<AWTEvent> processed_awt_events = new ArrayList<>();
|
||||
|
||||
private int event_state = EVENT_X;
|
||||
|
||||
|
|
@ -115,7 +114,7 @@ final class AWTMouse extends Mouse implements AWTEventListener {
|
|||
Axis wheel = (Axis)getWheel();
|
||||
wheel.setValue(0);
|
||||
for (int i = 0; i < awt_events.size(); i++) {
|
||||
AWTEvent event = (AWTEvent)awt_events.get(i);
|
||||
AWTEvent event = awt_events.get(i);
|
||||
processEvent(event);
|
||||
processed_awt_events.add(event);
|
||||
}
|
||||
|
|
@ -126,7 +125,7 @@ final class AWTMouse extends Mouse implements AWTEventListener {
|
|||
while (true) {
|
||||
if (processed_awt_events.isEmpty())
|
||||
return false;
|
||||
AWTEvent awt_event = (AWTEvent)processed_awt_events.get(0);
|
||||
AWTEvent awt_event = processed_awt_events.get(0);
|
||||
if (awt_event instanceof MouseWheelEvent) {
|
||||
MouseWheelEvent awt_wheel_event = (MouseWheelEvent)awt_event;
|
||||
long nanos = awt_wheel_event.getWhen()*1000000L;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>plugins</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
@ -29,12 +29,6 @@
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<compilerArgs>
|
||||
<arg>-h</arg>
|
||||
<arg>${project.build.directory}/generated-sources/natives</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import java.util.ArrayList;
|
|||
* is run on a single thread.
|
||||
*/
|
||||
final class LinuxDeviceThread extends Thread {
|
||||
private final List tasks = new ArrayList();
|
||||
private final List<LinuxDeviceTask> tasks = new ArrayList<>();
|
||||
|
||||
public LinuxDeviceThread() {
|
||||
setDaemon(true);
|
||||
|
|
@ -50,7 +50,7 @@ final class LinuxDeviceThread extends Thread {
|
|||
public synchronized final void run() {
|
||||
while (true) {
|
||||
if (!tasks.isEmpty()) {
|
||||
LinuxDeviceTask task = (LinuxDeviceTask)tasks.remove(0);
|
||||
LinuxDeviceTask task = tasks.remove(0);
|
||||
task.doExecute();
|
||||
synchronized (task) {
|
||||
task.notify();
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
private static boolean supported = false;
|
||||
|
||||
private final Controller[] controllers;
|
||||
private final List devices = new ArrayList();
|
||||
private final List<LinuxDevice> devices = new ArrayList<LinuxDevice>();
|
||||
private final static LinuxDeviceThread device_thread = new LinuxDeviceThread();
|
||||
|
||||
/**
|
||||
|
|
@ -58,9 +58,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
*
|
||||
*/
|
||||
static void loadLibrary(final String lib_name) {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
String lib_path = System.getProperty("net.java.games.input.librarypath");
|
||||
try {
|
||||
if(lib_path != null)
|
||||
|
|
@ -68,30 +66,21 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
else
|
||||
System.loadLibrary(lib_name);
|
||||
} catch(UnsatisfiedLinkError e) {
|
||||
logln("Failed to load library: " + e.getMessage());
|
||||
log("Failed to load library: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
supported = false;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static String getPrivilegedProperty(final String property) {
|
||||
return (String) AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty(property));
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String) AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty(property, default_value));
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
@ -113,13 +102,10 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
public LinuxEnvironmentPlugin() {
|
||||
if(isSupported()) {
|
||||
this.controllers = enumerateControllers();
|
||||
logln("Linux plugin claims to have found " + controllers.length + " controllers");
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
log("Linux plugin claims to have found " + controllers.length + " controllers");
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>)() -> {
|
||||
Runtime.getRuntime().addShutdownHook(new ShutdownHook());
|
||||
return null;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
controllers = new Controller[0];
|
||||
|
|
@ -135,11 +121,11 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
return controllers;
|
||||
}
|
||||
|
||||
private final static Component[] createComponents(List event_components, LinuxEventDevice device) {
|
||||
private final static Component[] createComponents(List<LinuxEventComponent> event_components, LinuxEventDevice device) {
|
||||
LinuxEventComponent[][] povs = new LinuxEventComponent[4][2];
|
||||
List components = new ArrayList();
|
||||
List<LinuxComponent> components = new ArrayList<>();
|
||||
for(int i = 0; i < event_components.size(); i++) {
|
||||
LinuxEventComponent event_component = (LinuxEventComponent) event_components.get(i);
|
||||
LinuxEventComponent event_component = event_components.get(i);
|
||||
Component.Identifier identifier = event_component.getIdentifier();
|
||||
|
||||
if(identifier == Component.Identifier.Axis.POV) {
|
||||
|
|
@ -170,7 +156,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
povs[3][1] = event_component;
|
||||
break;
|
||||
default:
|
||||
logln("Unknown POV instance: " + native_code);
|
||||
log("Unknown POV instance: " + native_code);
|
||||
break;
|
||||
}
|
||||
} else if(identifier != null) {
|
||||
|
|
@ -213,7 +199,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
}
|
||||
|
||||
private final static Controller createControllerFromDevice(LinuxEventDevice device) throws IOException {
|
||||
List event_components = device.getComponents();
|
||||
List<LinuxEventComponent> event_components = device.getComponents();
|
||||
Component[] components = createComponents(event_components, device);
|
||||
Controller.Type type = device.getType();
|
||||
|
||||
|
|
@ -228,16 +214,16 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
}
|
||||
|
||||
private final Controller[] enumerateControllers() {
|
||||
List controllers = new ArrayList();
|
||||
List eventControllers = new ArrayList();
|
||||
List jsControllers = new ArrayList();
|
||||
List<Controller> controllers = new ArrayList<>();
|
||||
List<Controller> eventControllers = new ArrayList<>();
|
||||
List<Controller> jsControllers = new ArrayList<>();
|
||||
enumerateEventControllers(eventControllers);
|
||||
enumerateJoystickControllers(jsControllers);
|
||||
|
||||
for(int i = 0; i < eventControllers.size(); i++) {
|
||||
for(int j = 0; j < jsControllers.size(); j++) {
|
||||
Controller evController = (Controller) eventControllers.get(i);
|
||||
Controller jsController = (Controller) jsControllers.get(j);
|
||||
Controller evController = eventControllers.get(i);
|
||||
Controller jsController = jsControllers.get(j);
|
||||
|
||||
// compare
|
||||
// Check if the nodes have the same name
|
||||
|
|
@ -345,13 +331,13 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
}
|
||||
|
||||
private final static Controller createJoystickFromJoystickDevice(LinuxJoystickDevice device) {
|
||||
List components = new ArrayList();
|
||||
List<AbstractComponent> components = new ArrayList<>();
|
||||
byte[] axisMap = device.getAxisMap();
|
||||
char[] buttonMap = device.getButtonMap();
|
||||
LinuxJoystickAxis[] hatBits = new LinuxJoystickAxis[6];
|
||||
|
||||
for(int i = 0; i < device.getNumButtons(); i++) {
|
||||
Component.Identifier button_id = (Component.Identifier) LinuxNativeTypesMap.getButtonID(buttonMap[i]);
|
||||
Component.Identifier button_id = LinuxNativeTypesMap.getButtonID(buttonMap[i]);
|
||||
if(button_id != null) {
|
||||
LinuxJoystickButton button = new LinuxJoystickButton(button_id);
|
||||
device.registerButton(i, button);
|
||||
|
|
@ -391,10 +377,10 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
}
|
||||
}
|
||||
|
||||
return new LinuxJoystickAbstractController(device, (Component[]) components.toArray(new Component[]{}), new Controller[]{}, new Rumbler[]{});
|
||||
return new LinuxJoystickAbstractController(device, components.toArray(new Component[]{}), new Controller[]{}, new Rumbler[]{});
|
||||
}
|
||||
|
||||
private final void enumerateJoystickControllers(List controllers) {
|
||||
private final void enumerateJoystickControllers(List<Controller> controllers) {
|
||||
File[] joystick_device_files = enumerateJoystickDeviceFiles("/dev/input");
|
||||
if(joystick_device_files == null || joystick_device_files.length == 0) {
|
||||
joystick_device_files = enumerateJoystickDeviceFiles("/dev");
|
||||
|
|
@ -413,7 +399,7 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
} else
|
||||
device.close();
|
||||
} catch(IOException e) {
|
||||
logln("Failed to open device (" + event_file + "): " + e.getMessage());
|
||||
log("Failed to open device (" + event_file + "): " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -428,39 +414,26 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
}
|
||||
|
||||
private static String getAbsolutePathPrivileged(final File file) {
|
||||
return (String) AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return file.getAbsolutePath();
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> file.getAbsolutePath());
|
||||
}
|
||||
|
||||
private static File[] listFilesPrivileged(final File dir, final FilenameFilter filter) {
|
||||
return (File[]) AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return AccessController.doPrivileged((PrivilegedAction<File[]>) () -> {
|
||||
File[] files = dir.listFiles(filter);
|
||||
if(files == null) {
|
||||
logln("dir " + dir.getName() + " exists: " + dir.exists() + ", is writable: " + dir.isDirectory());
|
||||
log("dir " + dir.getName() + " exists: " + dir.exists() + ", is writable: " + dir.isDirectory());
|
||||
files = new File[]{};
|
||||
} else {
|
||||
Arrays.sort(files, new Comparator() {
|
||||
public int compare(Object f1, Object f2) {
|
||||
return ((File) f1).getName().compareTo(((File) f2).getName());
|
||||
}
|
||||
});
|
||||
Arrays.sort(files, Comparator.comparing(File::getName));
|
||||
}
|
||||
return files;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private final void enumerateEventControllers(List controllers) {
|
||||
private final void enumerateEventControllers(List<Controller> controllers) {
|
||||
final File dev = new File("/dev/input");
|
||||
File[] event_device_files = listFilesPrivileged(dev, new FilenameFilter() {
|
||||
public final boolean accept(File dir, String name) {
|
||||
return name.startsWith("event");
|
||||
}
|
||||
});
|
||||
File[] event_device_files = listFilesPrivileged(dev, (File dir, String name) -> name.startsWith("event"));
|
||||
|
||||
if(event_device_files == null)
|
||||
return;
|
||||
for(int i = 0; i < event_device_files.length; i++) {
|
||||
|
|
@ -476,11 +449,11 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
} else
|
||||
device.close();
|
||||
} catch(IOException e) {
|
||||
logln("Failed to create Controller: " + e.getMessage());
|
||||
log("Failed to create Controller: " + e.getMessage());
|
||||
device.close();
|
||||
}
|
||||
} catch(IOException e) {
|
||||
logln("Failed to open device (" + event_file + "): " + e.getMessage());
|
||||
log("Failed to open device (" + event_file + "): " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -489,10 +462,10 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
public final void run() {
|
||||
for(int i = 0; i < devices.size(); i++) {
|
||||
try {
|
||||
LinuxDevice device = (LinuxDevice) devices.get(i);
|
||||
LinuxDevice device = devices.get(i);
|
||||
device.close();
|
||||
} catch(IOException e) {
|
||||
logln("Failed to close device: " + e.getMessage());
|
||||
log("Failed to close device: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -35,12 +35,12 @@ import java.util.ArrayList;
|
|||
* @author elias
|
||||
*/
|
||||
final class LinuxEventDevice implements LinuxDevice {
|
||||
private final Map component_map = new HashMap();
|
||||
private final Map<LinuxAxisDescriptor, LinuxComponent> component_map = new HashMap<>();
|
||||
private final Rumbler[] rumblers;
|
||||
private final long fd;
|
||||
private final String name;
|
||||
private final LinuxInputID input_id;
|
||||
private final List components;
|
||||
private final List<LinuxEventComponent> components;
|
||||
private final Controller.Type type;
|
||||
|
||||
/* Closed state variable that protects the validity of the file descriptor.
|
||||
|
|
@ -83,10 +83,10 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
return type;
|
||||
}
|
||||
|
||||
private final static int countComponents(List components, Class id_type, boolean relative) {
|
||||
private final static int countComponents(List<LinuxEventComponent> components, Class<?> id_type, boolean relative) {
|
||||
int count = 0;
|
||||
for (int i = 0; i < components.size(); i++) {
|
||||
LinuxEventComponent component = (LinuxEventComponent)components.get(i);
|
||||
LinuxEventComponent component = components.get(i);
|
||||
if (id_type.isInstance(component.getIdentifier()) && relative == component.isRelative())
|
||||
count++;
|
||||
}
|
||||
|
|
@ -94,7 +94,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
|
||||
private final Controller.Type guessType() throws IOException {
|
||||
List components = getComponents();
|
||||
List<LinuxEventComponent> components = getComponents();
|
||||
if (components.size() == 0)
|
||||
return Controller.Type.UNKNOWN;
|
||||
int num_rel_axes = countComponents(components, Component.Identifier.Axis.class, true);
|
||||
|
|
@ -118,7 +118,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
int num_gamepad_button_traits = 0;
|
||||
// count button traits
|
||||
for (int i = 0; i < components.size(); i++) {
|
||||
LinuxEventComponent component = (LinuxEventComponent)components.get(i);
|
||||
LinuxEventComponent component = components.get(i);
|
||||
if (component.getButtonTrait() == Controller.Type.MOUSE)
|
||||
num_mouse_button_traits++;
|
||||
else if (component.getButtonTrait() == Controller.Type.KEYBOARD)
|
||||
|
|
@ -158,19 +158,19 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
|
||||
private final Rumbler[] enumerateRumblers() {
|
||||
List rumblers = new ArrayList();
|
||||
List<Rumbler> rumblers = new ArrayList<>();
|
||||
try {
|
||||
int num_effects = getNumEffects();
|
||||
if (num_effects <= 0)
|
||||
return (Rumbler[])rumblers.toArray(new Rumbler[]{});
|
||||
return rumblers.toArray(new Rumbler[]{});
|
||||
byte[] ff_bits = getForceFeedbackBits();
|
||||
if (isBitSet(ff_bits, NativeDefinitions.FF_RUMBLE) && num_effects > rumblers.size()) {
|
||||
rumblers.add(new LinuxRumbleFF(this));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
LinuxEnvironmentPlugin.logln("Failed to enumerate rumblers: " + e.getMessage());
|
||||
LinuxEnvironmentPlugin.log("Failed to enumerate rumblers: " + e.getMessage());
|
||||
}
|
||||
return (Rumbler[])rumblers.toArray(new Rumbler[]{});
|
||||
return rumblers.toArray(new Rumbler[]{});
|
||||
}
|
||||
|
||||
public final Rumbler[] getRumblers() {
|
||||
|
|
@ -205,7 +205,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
|
||||
public final LinuxComponent mapDescriptor(LinuxAxisDescriptor desc) {
|
||||
return (LinuxComponent)component_map.get(desc);
|
||||
return component_map.get(desc);
|
||||
}
|
||||
|
||||
public final Controller.PortType getPortType() throws IOException {
|
||||
|
|
@ -243,7 +243,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
private final static native void nGetAbsInfo(long fd, int abs_axis, LinuxAbsInfo abs_info) throws IOException;
|
||||
|
||||
private final void addKeys(List components) throws IOException {
|
||||
private final void addKeys(List<LinuxEventComponent> components) throws IOException {
|
||||
byte[] bits = getKeysBits();
|
||||
for (int i = 0; i < bits.length*8; i++) {
|
||||
if (isBitSet(bits, i)) {
|
||||
|
|
@ -253,7 +253,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
}
|
||||
|
||||
private final void addAbsoluteAxes(List components) throws IOException {
|
||||
private final void addAbsoluteAxes(List<LinuxEventComponent> components) throws IOException {
|
||||
byte[] bits = getAbsoluteAxesBits();
|
||||
for (int i = 0; i < bits.length*8; i++) {
|
||||
if (isBitSet(bits, i)) {
|
||||
|
|
@ -263,7 +263,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
}
|
||||
|
||||
private final void addRelativeAxes(List components) throws IOException {
|
||||
private final void addRelativeAxes(List<LinuxEventComponent> components) throws IOException {
|
||||
byte[] bits = getRelativeAxesBits();
|
||||
for (int i = 0; i < bits.length*8; i++) {
|
||||
if (isBitSet(bits, i)) {
|
||||
|
|
@ -273,12 +273,12 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
}
|
||||
}
|
||||
|
||||
public final List getComponents() {
|
||||
public final List<LinuxEventComponent> getComponents() {
|
||||
return components;
|
||||
}
|
||||
|
||||
private final List getDeviceComponents() throws IOException {
|
||||
List components = new ArrayList();
|
||||
private final List<LinuxEventComponent> getDeviceComponents() throws IOException {
|
||||
List<LinuxEventComponent> components = new ArrayList<>();
|
||||
byte[] evtype_bits = getEventTypeBits();
|
||||
if (isBitSet(evtype_bits, NativeDefinitions.EV_KEY))
|
||||
addKeys(components);
|
||||
|
|
@ -360,6 +360,7 @@ final class LinuxEventDevice implements LinuxDevice {
|
|||
throw new IOException("Device is closed");
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
protected void finalize() throws IOException {
|
||||
close();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ abstract class LinuxForceFeedbackEffect implements Rumbler {
|
|||
write_task.write(0);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
LinuxEnvironmentPlugin.logln("Failed to rumble: " + e);
|
||||
LinuxEnvironmentPlugin.log("Failed to rumble: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -28,8 +28,6 @@ package net.java.games.input;
|
|||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author elias
|
||||
|
|
@ -48,8 +46,8 @@ final class LinuxJoystickDevice implements LinuxDevice {
|
|||
private final Event event = new Event();
|
||||
private final LinuxJoystickButton[] buttons;
|
||||
private final LinuxJoystickAxis[] axes;
|
||||
private final Map povXs = new HashMap();
|
||||
private final Map povYs = new HashMap();
|
||||
private final Map<Integer, LinuxJoystickPOV> povXs = new HashMap<>();
|
||||
private final Map<Integer, LinuxJoystickPOV> povYs = new HashMap<>();
|
||||
private final byte[] axisMap;
|
||||
private final char[] buttonMap;
|
||||
|
||||
|
|
@ -102,12 +100,12 @@ final class LinuxJoystickDevice implements LinuxDevice {
|
|||
if (axis != null) {
|
||||
float value = (float)joystick_event.getValue()/AXIS_MAX_VALUE;
|
||||
axis.setValue(value);
|
||||
if(povXs.containsKey(new Integer(index))) {
|
||||
LinuxJoystickPOV pov = (LinuxJoystickPOV)(povXs.get(new Integer(index)));
|
||||
if(povXs.containsKey(index)) {
|
||||
LinuxJoystickPOV pov = povXs.get(index);
|
||||
pov.updateValue();
|
||||
event.set(pov, pov.getPollData(), joystick_event.getNanos());
|
||||
} else if(povYs.containsKey(new Integer(index))) {
|
||||
LinuxJoystickPOV pov = (LinuxJoystickPOV)(povYs.get(new Integer(index)));
|
||||
} else if(povYs.containsKey(index)) {
|
||||
LinuxJoystickPOV pov = povYs.get(index);
|
||||
pov.updateValue();
|
||||
event.set(pov, pov.getPollData(), joystick_event.getNanos());
|
||||
} else {
|
||||
|
|
@ -150,8 +148,8 @@ final class LinuxJoystickDevice implements LinuxDevice {
|
|||
break;
|
||||
}
|
||||
}
|
||||
povXs.put(new Integer(xIndex),pov);
|
||||
povYs.put(new Integer(yIndex),pov);
|
||||
povXs.put(xIndex,pov);
|
||||
povYs.put(yIndex,pov);
|
||||
}
|
||||
|
||||
public final synchronized boolean getNextEvent(Event event) throws IOException {
|
||||
|
|
@ -233,6 +231,7 @@ final class LinuxJoystickDevice implements LinuxDevice {
|
|||
throw new IOException("Device is closed");
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
protected void finalize() throws IOException {
|
||||
close();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public class LinuxJoystickPOV extends LinuxJoystickAxis {
|
|||
else if (last_x == 1 && last_y == 1)
|
||||
setValue(Component.POV.DOWN_RIGHT);
|
||||
else {
|
||||
LinuxEnvironmentPlugin.logln("Unknown values x = " + last_x + " | y = " + last_y);
|
||||
LinuxEnvironmentPlugin.log("Unknown values x = " + last_x + " | y = " + last_y);
|
||||
setValue(Component.POV.OFF);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ final class LinuxPOV extends LinuxComponent {
|
|||
else if (last_x == 1 && last_y == 1)
|
||||
return Component.POV.DOWN_RIGHT;
|
||||
else {
|
||||
LinuxEnvironmentPlugin.logln("Unknown values x = " + last_x + " | y = " + last_y);
|
||||
LinuxEnvironmentPlugin.log("Unknown values x = " + last_x + " | y = " + last_y);
|
||||
return Component.POV.OFF;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -43,9 +43,9 @@ final class LinuxRumbleFF extends LinuxForceFeedbackEffect {
|
|||
weak_magnitude = (int)(0xc000*intensity);
|
||||
} else if (intensity > 0.3333333f) {
|
||||
strong_magnitude = (int)(0x8000*intensity);
|
||||
weak_magnitude = (int)(0xc000*0);
|
||||
weak_magnitude = 0;
|
||||
} else {
|
||||
strong_magnitude = (int)(0x8000*0);
|
||||
strong_magnitude = 0;
|
||||
weak_magnitude = (int)(0xc000*intensity);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>plugins</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
@ -29,12 +29,6 @@
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<compilerArgs>
|
||||
<arg>-h</arg>
|
||||
<arg>${project.build.directory}/generated-sources/natives</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
/*
|
||||
* %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:
|
||||
|
|
@ -38,23 +32,25 @@
|
|||
*****************************************************************************/
|
||||
package net.java.games.input;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
/**
|
||||
* @author elias
|
||||
* @version 1.0
|
||||
*/
|
||||
final class DataQueue {
|
||||
private final Object[] elements;
|
||||
final class DataQueue<T> {
|
||||
private final T[] elements;
|
||||
private int position;
|
||||
private int limit;
|
||||
|
||||
public DataQueue(int size, Class element_type) {
|
||||
this.elements= new Object[size];
|
||||
@SuppressWarnings("unchecked")
|
||||
public DataQueue(int size, Class<T> element_type) {
|
||||
this.elements= (T[])Array.newInstance(element_type, size);
|
||||
for (int i = 0; i < elements.length; i++) {
|
||||
try {
|
||||
elements[i] = element_type.newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (IllegalAccessException e) {
|
||||
elements[i] = element_type.getDeclaredConstructor().newInstance();
|
||||
} catch (InstantiationException|IllegalAccessException|NoSuchMethodException|InvocationTargetException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
|
@ -74,12 +70,12 @@ final class DataQueue {
|
|||
return limit;
|
||||
}
|
||||
|
||||
public final Object get(int index) {
|
||||
public final T get(int index) {
|
||||
assert index < limit;
|
||||
return elements[index];
|
||||
}
|
||||
|
||||
public final Object get() {
|
||||
public final T get() {
|
||||
if (!hasRemaining())
|
||||
return null;
|
||||
return get(position++);
|
||||
|
|
@ -97,7 +93,7 @@ final class DataQueue {
|
|||
}
|
||||
|
||||
private final void swap(int index1, int index2) {
|
||||
Object temp = elements[index1];
|
||||
T temp = elements[index1];
|
||||
elements[index1] = elements[index2];
|
||||
elements[index2] = temp;
|
||||
}
|
||||
|
|
@ -119,7 +115,7 @@ final class DataQueue {
|
|||
this.position = position;
|
||||
}
|
||||
|
||||
public final Object[] getElements() {
|
||||
public final T[] getElements() {
|
||||
return elements;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class DirectAndRawInputEnvironmentPlugin extends ControllerEnvironment {
|
|||
if(controllers == null) {
|
||||
boolean rawKeyboardFound = false;
|
||||
boolean rawMouseFound = false;
|
||||
List tempControllers = new ArrayList();
|
||||
List<Controller> tempControllers = new ArrayList<>();
|
||||
Controller[] dinputControllers = dinputPlugin.getControllers();
|
||||
Controller[] rawControllers = rawPlugin.getControllers();
|
||||
for(int i=0;i<rawControllers.length;i++) {
|
||||
|
|
@ -78,7 +78,7 @@ public class DirectAndRawInputEnvironmentPlugin extends ControllerEnvironment {
|
|||
}
|
||||
}
|
||||
|
||||
controllers = (Controller[]) tempControllers.toArray(new Controller[]{});
|
||||
controllers = tempControllers.toArray(new Controller[]{});
|
||||
}
|
||||
|
||||
return controllers;
|
||||
|
|
|
|||
|
|
@ -64,10 +64,8 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
*
|
||||
*/
|
||||
static void loadLibrary(final String lib_name) {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
try {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
try {
|
||||
String lib_path = System.getProperty("net.java.games.input.librarypath");
|
||||
if (lib_path != null)
|
||||
System.load(lib_path + File.separator + System.mapLibraryName(lib_name));
|
||||
|
|
@ -78,25 +76,16 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
supported = false;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static String getPrivilegedProperty(final String property) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property));
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property, default_value));
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
@ -112,7 +101,7 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
}
|
||||
|
||||
private final Controller[] controllers;
|
||||
private final List active_devices = new ArrayList();
|
||||
private final List<IDirectInputDevice> active_devices = new ArrayList<>();
|
||||
private final DummyWindow window;
|
||||
|
||||
/** Creates new DirectInputEnvironment */
|
||||
|
|
@ -129,16 +118,13 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
throw e;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
logln("Failed to enumerate devices: " + e.getMessage());
|
||||
log("Failed to enumerate devices: " + e.getMessage());
|
||||
}
|
||||
this.window = window;
|
||||
this.controllers = controllers;
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
Runtime.getRuntime().addShutdownHook(new ShutdownHook());
|
||||
return null;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// These are final fields, so can't set them, then over ride
|
||||
|
|
@ -153,10 +139,10 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
}
|
||||
|
||||
private final Component[] createComponents(IDirectInputDevice device, boolean map_mouse_buttons) {
|
||||
List device_objects = device.getObjects();
|
||||
List controller_components = new ArrayList();
|
||||
List<DIDeviceObject> device_objects = device.getObjects();
|
||||
List<DIComponent> controller_components = new ArrayList<>();
|
||||
for (int i = 0; i < device_objects.size(); i++) {
|
||||
DIDeviceObject device_object = (DIDeviceObject)device_objects.get(i);
|
||||
DIDeviceObject device_object = device_objects.get(i);
|
||||
Component.Identifier identifier = device_object.getIdentifier();
|
||||
if (identifier == null)
|
||||
continue;
|
||||
|
|
@ -214,12 +200,12 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
}
|
||||
|
||||
private final Controller[] enumControllers(DummyWindow window) throws IOException {
|
||||
List controllers = new ArrayList();
|
||||
List<Controller> controllers = new ArrayList<>();
|
||||
IDirectInput dinput = new IDirectInput(window);
|
||||
try {
|
||||
List devices = dinput.getDevices();
|
||||
List<IDirectInputDevice> devices = dinput.getDevices();
|
||||
for (int i = 0; i < devices.size(); i++) {
|
||||
IDirectInputDevice device = (IDirectInputDevice)devices.get(i);
|
||||
IDirectInputDevice device = devices.get(i);
|
||||
Controller controller = createControllerFromDevice(device);
|
||||
if (controller != null) {
|
||||
controllers.add(controller);
|
||||
|
|
@ -239,7 +225,7 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
public final void run() {
|
||||
/* Release the devices to kill off active force feedback effects */
|
||||
for (int i = 0; i < active_devices.size(); i++) {
|
||||
IDirectInputDevice device = (IDirectInputDevice)active_devices.get(i);
|
||||
IDirectInputDevice device = active_devices.get(i);
|
||||
device.release();
|
||||
}
|
||||
/* We won't release the window since it is
|
||||
|
|
@ -251,4 +237,4 @@ public final class DirectInputEnvironmentPlugin extends ControllerEnvironment im
|
|||
public boolean isSupported() {
|
||||
return supported;
|
||||
}
|
||||
} // class DirectInputEnvironment
|
||||
}
|
||||
|
|
@ -48,7 +48,7 @@ import java.util.ArrayList;
|
|||
* @version 1.0
|
||||
*/
|
||||
final class IDirectInput {
|
||||
private final List devices = new ArrayList();
|
||||
private final List<IDirectInputDevice> devices = new ArrayList<>();
|
||||
private final long idirectinput_address;
|
||||
private final DummyWindow window;
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ final class IDirectInput {
|
|||
}
|
||||
private final static native long createIDirectInput() throws IOException;
|
||||
|
||||
public final List getDevices() {
|
||||
public final List<IDirectInputDevice> getDevices() {
|
||||
return devices;
|
||||
}
|
||||
|
||||
|
|
@ -82,13 +82,13 @@ final class IDirectInput {
|
|||
IDirectInputDevice device = new IDirectInputDevice(window, address, instance_guid, product_guid, dev_type, dev_subtype, instance_name, product_name);
|
||||
devices.add(device);
|
||||
} catch (IOException e) {
|
||||
DirectInputEnvironmentPlugin.logln("Failed to initialize device " + product_name + " because of: " + e);
|
||||
DirectInputEnvironmentPlugin.log("Failed to initialize device " + product_name + " because of: " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public final void releaseDevices() {
|
||||
for (int i = 0; i < devices.size(); i++) {
|
||||
IDirectInputDevice device = (IDirectInputDevice)devices.get(i);
|
||||
IDirectInputDevice device = devices.get(i);
|
||||
device.release();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
/*
|
||||
* %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:
|
||||
|
|
@ -201,16 +195,16 @@ final class IDirectInputDevice {
|
|||
private final int dev_subtype;
|
||||
private final String instance_name;
|
||||
private final String product_name;
|
||||
private final List objects = new ArrayList();
|
||||
private final List effects = new ArrayList();
|
||||
private final List rumblers = new ArrayList();
|
||||
private final List<DIDeviceObject> objects = new ArrayList<>();
|
||||
private final List<DIEffectInfo> effects = new ArrayList<>();
|
||||
private final List<Rumbler> rumblers = new ArrayList<>();
|
||||
private final int[] device_state;
|
||||
private final Map object_to_component = new HashMap();
|
||||
private final Map<DIDeviceObject,DIComponent> object_to_component = new HashMap<>();
|
||||
private final boolean axes_in_relative_mode;
|
||||
|
||||
|
||||
private boolean released;
|
||||
private DataQueue queue;
|
||||
private DataQueue<DIDeviceObjectData> queue;
|
||||
|
||||
private int button_counter;
|
||||
private int current_format_offset;
|
||||
|
|
@ -228,7 +222,7 @@ final class IDirectInputDevice {
|
|||
enumEffects();
|
||||
createRumblers();
|
||||
} catch (IOException e) {
|
||||
DirectInputEnvironmentPlugin.logln("Failed to create rumblers: " + e.getMessage());
|
||||
DirectInputEnvironmentPlugin.log("Failed to create rumblers: " + e.getMessage());
|
||||
}
|
||||
/* Some DirectInput lamer-designer made the device state
|
||||
* axis mode be per-device not per-axis, so I'll just
|
||||
|
|
@ -242,7 +236,7 @@ final class IDirectInputDevice {
|
|||
boolean all_relative = true;
|
||||
boolean has_axis = false;
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
DIDeviceObject obj = (DIDeviceObject)objects.get(i);
|
||||
DIDeviceObject obj = objects.get(i);
|
||||
if (obj.isAxis()) {
|
||||
has_axis = true;
|
||||
if (!obj.isRelative()) {
|
||||
|
|
@ -272,10 +266,10 @@ final class IDirectInputDevice {
|
|||
}
|
||||
|
||||
public final Rumbler[] getRumblers() {
|
||||
return (Rumbler[])rumblers.toArray(new Rumbler[]{});
|
||||
return rumblers.toArray(new Rumbler[]{});
|
||||
}
|
||||
|
||||
private final List createRumblers() throws IOException {
|
||||
private final List<Rumbler> createRumblers() throws IOException {
|
||||
DIDeviceObject x_axis = lookupObjectByGUID(GUID_XAxis);
|
||||
// DIDeviceObject y_axis = lookupObjectByGUID(GUID_YAxis);
|
||||
if(x_axis == null/* || y_axis == null*/)
|
||||
|
|
@ -283,7 +277,7 @@ final class IDirectInputDevice {
|
|||
DIDeviceObject[] axes = {x_axis/*, y_axis*/};
|
||||
long[] directions = {0/*, 0*/};
|
||||
for (int i = 0; i < effects.size(); i++) {
|
||||
DIEffectInfo info = (DIEffectInfo)effects.get(i);
|
||||
DIEffectInfo info = effects.get(i);
|
||||
if ((info.getEffectType() & 0xff) == DIEFT_PERIODIC &&
|
||||
(info.getDynamicParams() & DIEP_GAIN) != 0) {
|
||||
rumblers.add(createPeriodicRumbler(axes, directions, info));
|
||||
|
|
@ -304,7 +298,7 @@ final class IDirectInputDevice {
|
|||
|
||||
private final DIDeviceObject lookupObjectByGUID(int guid_id) {
|
||||
for (int i = 0; i < objects.size(); i++) {
|
||||
DIDeviceObject object = (DIDeviceObject)objects.get(i);
|
||||
DIDeviceObject object = objects.get(i);
|
||||
if (guid_id == object.getGUIDType())
|
||||
return object;
|
||||
}
|
||||
|
|
@ -321,11 +315,11 @@ final class IDirectInputDevice {
|
|||
* for the int size (4 bytes)
|
||||
*/
|
||||
int format_offset = event.getFormatOffset()/4;
|
||||
return (DIDeviceObject)objects.get(format_offset);
|
||||
return objects.get(format_offset);
|
||||
}
|
||||
|
||||
public final DIComponent mapObject(DIDeviceObject object) {
|
||||
return (DIComponent)object_to_component.get(object);
|
||||
return object_to_component.get(object);
|
||||
}
|
||||
|
||||
public final void registerComponent(DIDeviceObject object, DIComponent component) {
|
||||
|
|
@ -342,7 +336,7 @@ final class IDirectInputDevice {
|
|||
}
|
||||
|
||||
public synchronized final boolean getNextEvent(DIDeviceObjectData data) {
|
||||
DIDeviceObjectData next_event = (DIDeviceObjectData)queue.get();
|
||||
DIDeviceObjectData next_event = queue.get();
|
||||
if (next_event == null)
|
||||
return false;
|
||||
data.set(next_event);
|
||||
|
|
@ -375,7 +369,7 @@ final class IDirectInputDevice {
|
|||
}
|
||||
private final static native int nUnacquire(long address);
|
||||
|
||||
private final boolean getDeviceData(DataQueue queue) throws IOException {
|
||||
private final boolean getDeviceData(DataQueue<DIDeviceObjectData> queue) throws IOException {
|
||||
int res = nGetDeviceData(address, 0, queue, queue.getElements(), queue.position(), queue.remaining());
|
||||
if (res != DI_OK && res != DI_BUFFEROVERFLOW) {
|
||||
if (res == DIERR_NOTACQUIRED) {
|
||||
|
|
@ -386,7 +380,7 @@ final class IDirectInputDevice {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
private final static native int nGetDeviceData(long address, int flags, DataQueue queue, Object[] queue_elements, int position, int remaining);
|
||||
private final static native int nGetDeviceData(long address, int flags, DataQueue<DIDeviceObjectData> queue, Object[] queue_elements, int position, int remaining);
|
||||
|
||||
private final void getDeviceState(int[] device_state) throws IOException {
|
||||
int res = nGetDeviceState(address, device_state);
|
||||
|
|
@ -420,7 +414,7 @@ final class IDirectInputDevice {
|
|||
return dev_type;
|
||||
}
|
||||
|
||||
public final List getObjects() {
|
||||
public final List<DIDeviceObject> getObjects() {
|
||||
return objects;
|
||||
}
|
||||
|
||||
|
|
@ -509,7 +503,7 @@ final class IDirectInputDevice {
|
|||
int res = nSetBufferSize(address, size);
|
||||
if (res != DI_OK && res != DI_PROPNOEFFECT && res != DI_POLLEDDEVICE)
|
||||
throw new IOException("Failed to set buffer size (" + Integer.toHexString(res) + ")");
|
||||
queue = new DataQueue(size, DIDeviceObjectData.class);
|
||||
queue = new DataQueue<>(size, DIDeviceObjectData.class);
|
||||
queue.position(queue.limit());
|
||||
acquire();
|
||||
}
|
||||
|
|
@ -540,6 +534,7 @@ final class IDirectInputDevice {
|
|||
throw new IOException("Device is released");
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
protected void finalize() {
|
||||
release();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,13 +58,13 @@ final class IDirectInputEffect implements Rumbler {
|
|||
try {
|
||||
checkReleased();
|
||||
if (intensity > 0) {
|
||||
int int_gain = (int)Math.round(intensity*IDirectInputDevice.DI_FFNOMINALMAX);
|
||||
int int_gain = Math.round(intensity*IDirectInputDevice.DI_FFNOMINALMAX);
|
||||
setGain(int_gain);
|
||||
start(1, 0);
|
||||
} else
|
||||
stop();
|
||||
} catch (IOException e) {
|
||||
DirectInputEnvironmentPlugin.logln("Failed to set rumbler gain: " + e.getMessage());
|
||||
DirectInputEnvironmentPlugin.log("Failed to set rumbler gain: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -115,6 +115,7 @@ final class IDirectInputEffect implements Rumbler {
|
|||
}
|
||||
private final static native int nStop(long address);
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
protected void finalize() {
|
||||
release();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,12 +89,12 @@ final class RawDevice {
|
|||
private final int type;
|
||||
|
||||
/* Events from the event queue thread end here */
|
||||
private DataQueue keyboard_events;
|
||||
private DataQueue mouse_events;
|
||||
private DataQueue<RawKeyboardEvent> keyboard_events;
|
||||
private DataQueue<RawMouseEvent> mouse_events;
|
||||
|
||||
/* After processing in poll*(), the events are placed here */
|
||||
private DataQueue processed_keyboard_events;
|
||||
private DataQueue processed_mouse_events;
|
||||
private DataQueue<RawKeyboardEvent> processed_keyboard_events;
|
||||
private DataQueue<RawMouseEvent> processed_mouse_events;
|
||||
|
||||
/* mouse state */
|
||||
private final boolean[] button_states = new boolean[5];
|
||||
|
|
@ -123,7 +123,7 @@ final class RawDevice {
|
|||
/* Careful, this is called from the event queue thread */
|
||||
public final synchronized void addMouseEvent(long millis, int flags, int button_flags, int button_data, long raw_buttons, long last_x, long last_y, long extra_information) {
|
||||
if (mouse_events.hasRemaining()) {
|
||||
RawMouseEvent event = (RawMouseEvent)mouse_events.get();
|
||||
RawMouseEvent event = mouse_events.get();
|
||||
event.set(millis, flags, button_flags, button_data, raw_buttons, last_x, last_y, extra_information);
|
||||
}
|
||||
}
|
||||
|
|
@ -131,7 +131,7 @@ final class RawDevice {
|
|||
/* Careful, this is called from the event queue thread */
|
||||
public final synchronized void addKeyboardEvent(long millis, int make_code, int flags, int vkey, int message, long extra_information) {
|
||||
if (keyboard_events.hasRemaining()) {
|
||||
RawKeyboardEvent event = (RawKeyboardEvent)keyboard_events.get();
|
||||
RawKeyboardEvent event = keyboard_events.get();
|
||||
event.set(millis, make_code, flags, vkey, message, extra_information);
|
||||
}
|
||||
}
|
||||
|
|
@ -140,10 +140,10 @@ final class RawDevice {
|
|||
relative_x = relative_y = wheel = 0;
|
||||
mouse_events.flip();
|
||||
while (mouse_events.hasRemaining()) {
|
||||
RawMouseEvent event = (RawMouseEvent)mouse_events.get();
|
||||
RawMouseEvent event = mouse_events.get();
|
||||
boolean has_update = processMouseEvent(event);
|
||||
if (has_update && processed_mouse_events.hasRemaining()) {
|
||||
RawMouseEvent processed_event = (RawMouseEvent)processed_mouse_events.get();
|
||||
RawMouseEvent processed_event = processed_mouse_events.get();
|
||||
processed_event.set(event);
|
||||
}
|
||||
}
|
||||
|
|
@ -153,10 +153,10 @@ final class RawDevice {
|
|||
public final synchronized void pollKeyboard() {
|
||||
keyboard_events.flip();
|
||||
while (keyboard_events.hasRemaining()) {
|
||||
RawKeyboardEvent event = (RawKeyboardEvent)keyboard_events.get();
|
||||
RawKeyboardEvent event = keyboard_events.get();
|
||||
boolean has_update = processKeyboardEvent(event);
|
||||
if (has_update && processed_keyboard_events.hasRemaining()) {
|
||||
RawKeyboardEvent processed_event = (RawKeyboardEvent)processed_keyboard_events.get();
|
||||
RawKeyboardEvent processed_event = processed_keyboard_events.get();
|
||||
processed_event.set(event);
|
||||
}
|
||||
}
|
||||
|
|
@ -250,7 +250,7 @@ final class RawDevice {
|
|||
processed_keyboard_events.compact();
|
||||
return false;
|
||||
}
|
||||
RawKeyboardEvent next_event = (RawKeyboardEvent)processed_keyboard_events.get();
|
||||
RawKeyboardEvent next_event = processed_keyboard_events.get();
|
||||
event.set(next_event);
|
||||
processed_keyboard_events.compact();
|
||||
return true;
|
||||
|
|
@ -262,7 +262,7 @@ final class RawDevice {
|
|||
processed_mouse_events.compact();
|
||||
return false;
|
||||
}
|
||||
RawMouseEvent next_event = (RawMouseEvent)processed_mouse_events.get();
|
||||
RawMouseEvent next_event = processed_mouse_events.get();
|
||||
if ((next_event.getFlags() & MOUSE_MOVE_ABSOLUTE) != 0) {
|
||||
event_relative_x = next_event.getLastX() - event_last_x;
|
||||
event_relative_y = next_event.getLastY() - event_last_y;
|
||||
|
|
@ -284,10 +284,10 @@ final class RawDevice {
|
|||
}
|
||||
|
||||
public final void setBufferSize(int size) {
|
||||
keyboard_events = new DataQueue(size, RawKeyboardEvent.class);
|
||||
mouse_events = new DataQueue(size, RawMouseEvent.class);
|
||||
processed_keyboard_events = new DataQueue(size, RawKeyboardEvent.class);
|
||||
processed_mouse_events = new DataQueue(size, RawMouseEvent.class);
|
||||
keyboard_events = new DataQueue<>(size, RawKeyboardEvent.class);
|
||||
mouse_events = new DataQueue<>(size, RawMouseEvent.class);
|
||||
processed_keyboard_events = new DataQueue<>(size, RawKeyboardEvent.class);
|
||||
processed_mouse_events = new DataQueue<>(size, RawMouseEvent.class);
|
||||
}
|
||||
|
||||
public final int getType() {
|
||||
|
|
|
|||
|
|
@ -64,9 +64,7 @@ public final class RawInputEnvironmentPlugin extends ControllerEnvironment imple
|
|||
*
|
||||
*/
|
||||
static void loadLibrary(final String lib_name) {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
try {
|
||||
String lib_path = System.getProperty("net.java.games.input.librarypath");
|
||||
if (lib_path != null)
|
||||
|
|
@ -78,25 +76,16 @@ public final class RawInputEnvironmentPlugin extends ControllerEnvironment imple
|
|||
supported = false;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static String getPrivilegedProperty(final String property) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property));
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty(property, default_value));
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
@ -122,7 +111,7 @@ public final class RawInputEnvironmentPlugin extends ControllerEnvironment imple
|
|||
queue = new RawInputEventQueue();
|
||||
controllers = enumControllers(queue);
|
||||
} catch (IOException e) {
|
||||
logln("Failed to enumerate devices: " + e.getMessage());
|
||||
log("Failed to enumerate devices: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
this.controllers = controllers;
|
||||
|
|
@ -132,23 +121,23 @@ public final class RawInputEnvironmentPlugin extends ControllerEnvironment imple
|
|||
return controllers;
|
||||
}
|
||||
|
||||
private final static SetupAPIDevice lookupSetupAPIDevice(String device_name, List setupapi_devices) {
|
||||
private final static SetupAPIDevice lookupSetupAPIDevice(String device_name, List<SetupAPIDevice> setupapi_devices) {
|
||||
/* First, replace # with / in the device name, since that
|
||||
* seems to be the format in raw input device name
|
||||
*/
|
||||
device_name = device_name.replaceAll("#", "\\\\").toUpperCase();
|
||||
for (int i = 0; i < setupapi_devices.size(); i++) {
|
||||
SetupAPIDevice device = (SetupAPIDevice)setupapi_devices.get(i);
|
||||
if (device_name.indexOf(device.getInstanceId().toUpperCase()) != -1)
|
||||
SetupAPIDevice device = setupapi_devices.get(i);
|
||||
if (device_name.contains(device.getInstanceId().toUpperCase()))
|
||||
return device;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private final static void createControllersFromDevices(RawInputEventQueue queue, List controllers, List devices, List setupapi_devices) throws IOException {
|
||||
List active_devices = new ArrayList();
|
||||
private final static void createControllersFromDevices(RawInputEventQueue queue, List<Controller> controllers, List<RawDevice> devices, List<SetupAPIDevice> setupapi_devices) throws IOException {
|
||||
List<RawDevice> active_devices = new ArrayList<>();
|
||||
for (int i = 0; i < devices.size(); i++) {
|
||||
RawDevice device = (RawDevice)devices.get(i);
|
||||
RawDevice device = devices.get(i);
|
||||
SetupAPIDevice setupapi_device = lookupSetupAPIDevice(device.getName(), setupapi_devices);
|
||||
if (setupapi_device == null) {
|
||||
/* Either the device is an RDP or we failed to locate the
|
||||
|
|
@ -166,13 +155,13 @@ public final class RawInputEnvironmentPlugin extends ControllerEnvironment imple
|
|||
queue.start(active_devices);
|
||||
}
|
||||
|
||||
private final static native void enumerateDevices(RawInputEventQueue queue, List devices) throws IOException;
|
||||
private final static native void enumerateDevices(RawInputEventQueue queue, List<RawDevice> devices) throws IOException;
|
||||
|
||||
private final Controller[] enumControllers(RawInputEventQueue queue) throws IOException {
|
||||
List controllers = new ArrayList();
|
||||
List devices = new ArrayList();
|
||||
List<Controller> controllers = new ArrayList<>();
|
||||
List<RawDevice> devices = new ArrayList<>();
|
||||
enumerateDevices(queue, devices);
|
||||
List setupapi_devices = enumSetupAPIDevices();
|
||||
List<SetupAPIDevice> setupapi_devices = enumSetupAPIDevices();
|
||||
createControllersFromDevices(queue, controllers, devices, setupapi_devices);
|
||||
Controller[] controllers_array = new Controller[controllers.size()];
|
||||
controllers.toArray(controllers_array);
|
||||
|
|
@ -202,13 +191,13 @@ public final class RawInputEnvironmentPlugin extends ControllerEnvironment imple
|
|||
* descriptive names and at the same time filter out the unwanted
|
||||
* RDP devices.
|
||||
*/
|
||||
private final static List enumSetupAPIDevices() throws IOException {
|
||||
List devices = new ArrayList();
|
||||
private final static List<SetupAPIDevice> enumSetupAPIDevices() throws IOException {
|
||||
List<SetupAPIDevice> devices = new ArrayList<>();
|
||||
nEnumSetupAPIDevices(getKeyboardClassGUID(), devices);
|
||||
nEnumSetupAPIDevices(getMouseClassGUID(), devices);
|
||||
return devices;
|
||||
}
|
||||
private final static native void nEnumSetupAPIDevices(byte[] guid, List devices) throws IOException;
|
||||
private final static native void nEnumSetupAPIDevices(byte[] guid, List<SetupAPIDevice> devices) throws IOException;
|
||||
|
||||
private final static native byte[] getKeyboardClassGUID();
|
||||
private final static native byte[] getMouseClassGUID();
|
||||
|
|
|
|||
|
|
@ -1,10 +1,4 @@
|
|||
/*
|
||||
* %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:
|
||||
|
|
@ -35,12 +29,11 @@
|
|||
* 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.IOException;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
import java.util.HashSet;
|
||||
|
||||
|
|
@ -51,9 +44,9 @@ import java.util.HashSet;
|
|||
final class RawInputEventQueue {
|
||||
private final Object monitor = new Object();
|
||||
|
||||
private List devices;
|
||||
private List<RawDevice> devices;
|
||||
|
||||
public final void start(List devices) throws IOException {
|
||||
public final void start(List<RawDevice> devices) throws IOException {
|
||||
this.devices = devices;
|
||||
QueueThread queue = new QueueThread();
|
||||
synchronized (monitor) {
|
||||
|
|
@ -71,7 +64,7 @@ final class RawInputEventQueue {
|
|||
|
||||
private final RawDevice lookupDevice(long handle) {
|
||||
for (int i = 0; i < devices.size(); i++) {
|
||||
RawDevice device = (RawDevice)devices.get(i);
|
||||
RawDevice device = devices.get(i);
|
||||
if (device.getHandle() == handle)
|
||||
return device;
|
||||
}
|
||||
|
|
@ -133,10 +126,10 @@ final class RawInputEventQueue {
|
|||
}
|
||||
if (exception != null)
|
||||
return;
|
||||
Set active_infos = new HashSet();
|
||||
Set<RawDeviceInfo> active_infos = new HashSet<>();
|
||||
try {
|
||||
for (int i = 0; i < devices.size(); i++) {
|
||||
RawDevice device = (RawDevice)devices.get(i);
|
||||
RawDevice device = devices.get(i);
|
||||
active_infos.add(device.getInfo());
|
||||
}
|
||||
RawDeviceInfo[] active_infos_array = new RawDeviceInfo[active_infos.size()];
|
||||
|
|
|
|||
|
|
@ -1,41 +1,35 @@
|
|||
/*
|
||||
* %W% %E%
|
||||
* 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
|
||||
*
|
||||
* 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.IOException;
|
||||
|
|
@ -59,7 +53,7 @@ final class RawKeyboard extends Keyboard {
|
|||
}
|
||||
|
||||
private final static Component[] createKeyboardComponents(RawDevice device) {
|
||||
List components = new ArrayList();
|
||||
List<Component> components = new ArrayList<>();
|
||||
Field[] vkey_fields = RawIdentifierMap.class.getFields();
|
||||
for (int i = 0; i < vkey_fields.length; i++) {
|
||||
Field vkey_field = vkey_fields[i];
|
||||
|
|
@ -74,7 +68,7 @@ final class RawKeyboard extends Keyboard {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
return (Component[])components.toArray(new Component[]{});
|
||||
return components.toArray(new Component[]{});
|
||||
}
|
||||
|
||||
protected final synchronized boolean getNextDeviceEvent(Event event) throws IOException {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>plugins</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
@ -29,12 +29,6 @@
|
|||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<compilerArgs>
|
||||
<arg>-h</arg>
|
||||
<arg>${project.build.directory}/generated-sources/natives</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2006 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2006 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -65,8 +65,8 @@ public class WinTabComponent extends AbstractComponent {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static List createComponents(WinTabContext context, int parentDevice, int axisId, int[] axisRanges) {
|
||||
List components = new ArrayList();
|
||||
public static List<WinTabComponent> createComponents(WinTabContext context, int parentDevice, int axisId, int[] axisRanges) {
|
||||
List<WinTabComponent> components = new ArrayList<>();
|
||||
Identifier id;
|
||||
switch(axisId) {
|
||||
case WinTabDevice.XAxis:
|
||||
|
|
@ -110,26 +110,17 @@ public class WinTabComponent extends AbstractComponent {
|
|||
return components;
|
||||
}
|
||||
|
||||
public static Collection createButtons(WinTabContext context, int deviceIndex, int numberOfButtons) {
|
||||
List buttons = new ArrayList();
|
||||
public static Collection<WinTabButtonComponent> createButtons(WinTabContext context, int deviceIndex, int numberOfButtons) {
|
||||
List<WinTabButtonComponent> buttons = new ArrayList<>();
|
||||
Identifier id;
|
||||
|
||||
for(int i=0;i<numberOfButtons;i++) {
|
||||
try {
|
||||
Class buttonIdClass = Identifier.Button.class;
|
||||
Class<Identifier.Button> buttonIdClass = Identifier.Button.class;
|
||||
Field idField = buttonIdClass.getField("_" + i);
|
||||
id = (Identifier)idField.get(null);
|
||||
buttons.add(new WinTabButtonComponent(context, deviceIndex, id.getName(), id, i));
|
||||
} catch (SecurityException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchFieldException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (IllegalArgumentException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
} catch (SecurityException|NoSuchFieldException|IllegalArgumentException|IllegalAccessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -184,9 +175,9 @@ public class WinTabComponent extends AbstractComponent {
|
|||
return (value - min)/bottom;
|
||||
}
|
||||
|
||||
public static Collection createCursors(WinTabContext context, int deviceIndex, String[] cursorNames) {
|
||||
public static Collection<WinTabCursorComponent> createCursors(WinTabContext context, int deviceIndex, String[] cursorNames) {
|
||||
Identifier id;
|
||||
List cursors = new ArrayList();
|
||||
List<WinTabCursorComponent> cursors = new ArrayList<>();
|
||||
|
||||
for(int i=0;i<cursorNames.length;i++) {
|
||||
if(cursorNames[i].matches("Puck")) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2006 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -47,17 +47,14 @@ public class WinTabContext {
|
|||
|
||||
public synchronized void open() {
|
||||
this.hCTX = nOpen(window.getHwnd());
|
||||
List devices = new ArrayList();
|
||||
List<WinTabDevice> devices = new ArrayList<>();
|
||||
|
||||
int numSupportedDevices = nGetNumberOfSupportedDevices();
|
||||
for(int i=0;i<numSupportedDevices;i++) {
|
||||
WinTabDevice newDevice = WinTabDevice.createDevice(this,i);
|
||||
if(newDevice!=null) {
|
||||
devices.add(newDevice);
|
||||
}
|
||||
devices.add(WinTabDevice.createDevice(this,i));
|
||||
}
|
||||
|
||||
controllers = (Controller[])devices.toArray(new Controller[0]);
|
||||
controllers = devices.toArray(new Controller[0]);
|
||||
}
|
||||
|
||||
public synchronized void close() {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2006 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -39,7 +39,7 @@ public class WinTabDevice extends AbstractController {
|
|||
public final static int RotationAxis = 7;
|
||||
|
||||
private WinTabContext context;
|
||||
private List eventList = new ArrayList();
|
||||
private List<Event> eventList = new ArrayList<>();
|
||||
|
||||
private WinTabDevice(WinTabContext context, int index, String name, Component[] components) {
|
||||
super(name, components, new Controller[0], new Rumbler[0]);
|
||||
|
|
@ -48,7 +48,7 @@ public class WinTabDevice extends AbstractController {
|
|||
|
||||
protected boolean getNextDeviceEvent(Event event) throws IOException {
|
||||
if(eventList.size()>0) {
|
||||
Event ourEvent = (Event)eventList.remove(0);
|
||||
Event ourEvent = eventList.remove(0);
|
||||
event.set(ourEvent);
|
||||
return true;
|
||||
} else {
|
||||
|
|
@ -79,76 +79,76 @@ public class WinTabDevice extends AbstractController {
|
|||
|
||||
public static WinTabDevice createDevice(WinTabContext context, int deviceIndex) {
|
||||
String name = nGetName(deviceIndex);
|
||||
WinTabEnvironmentPlugin.logln("Device " + deviceIndex + ", name: " + name);
|
||||
List componentsList = new ArrayList();
|
||||
WinTabEnvironmentPlugin.log("Device " + deviceIndex + ", name: " + name);
|
||||
List<WinTabComponent> componentsList = new ArrayList<>();
|
||||
|
||||
int[] axisDetails = nGetAxisDetails(deviceIndex, XAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("ZAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("ZAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("Xmin: " + axisDetails[0] + ", Xmax: " + axisDetails[1]);
|
||||
WinTabEnvironmentPlugin.log("Xmin: " + axisDetails[0] + ", Xmax: " + axisDetails[1]);
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, XAxis, axisDetails));
|
||||
}
|
||||
|
||||
axisDetails = nGetAxisDetails(deviceIndex, YAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("YAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("YAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("Ymin: " + axisDetails[0] + ", Ymax: " + axisDetails[1]);
|
||||
WinTabEnvironmentPlugin.log("Ymin: " + axisDetails[0] + ", Ymax: " + axisDetails[1]);
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, YAxis, axisDetails));
|
||||
}
|
||||
|
||||
axisDetails = nGetAxisDetails(deviceIndex, ZAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("ZAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("ZAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("Zmin: " + axisDetails[0] + ", Zmax: " + axisDetails[1]);
|
||||
WinTabEnvironmentPlugin.log("Zmin: " + axisDetails[0] + ", Zmax: " + axisDetails[1]);
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, ZAxis, axisDetails));
|
||||
}
|
||||
|
||||
axisDetails = nGetAxisDetails(deviceIndex, NPressureAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("NPressureAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("NPressureAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("NPressMin: " + axisDetails[0] + ", NPressMax: " + axisDetails[1]);
|
||||
WinTabEnvironmentPlugin.log("NPressMin: " + axisDetails[0] + ", NPressMax: " + axisDetails[1]);
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, NPressureAxis, axisDetails));
|
||||
}
|
||||
|
||||
axisDetails = nGetAxisDetails(deviceIndex, TPressureAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("TPressureAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("TPressureAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("TPressureAxismin: " + axisDetails[0] + ", TPressureAxismax: " + axisDetails[1]);
|
||||
WinTabEnvironmentPlugin.log("TPressureAxismin: " + axisDetails[0] + ", TPressureAxismax: " + axisDetails[1]);
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, TPressureAxis, axisDetails));
|
||||
}
|
||||
|
||||
axisDetails = nGetAxisDetails(deviceIndex, OrientationAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("OrientationAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("OrientationAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("OrientationAxis mins/maxs: " + axisDetails[0] + "," + axisDetails[1] + ", " + axisDetails[2] + "," + axisDetails[3] + ", " + axisDetails[4] + "," + axisDetails[5]);
|
||||
WinTabEnvironmentPlugin.log("OrientationAxis mins/maxs: " + axisDetails[0] + "," + axisDetails[1] + ", " + axisDetails[2] + "," + axisDetails[3] + ", " + axisDetails[4] + "," + axisDetails[5]);
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, OrientationAxis, axisDetails));
|
||||
}
|
||||
|
||||
axisDetails = nGetAxisDetails(deviceIndex, RotationAxis);
|
||||
if(axisDetails.length==0) {
|
||||
WinTabEnvironmentPlugin.logln("RotationAxis not supported");
|
||||
WinTabEnvironmentPlugin.log("RotationAxis not supported");
|
||||
} else {
|
||||
WinTabEnvironmentPlugin.logln("RotationAxis is supported (by the device, not by this plugin)");
|
||||
WinTabEnvironmentPlugin.log("RotationAxis is supported (by the device, not by this plugin)");
|
||||
componentsList.addAll(WinTabComponent.createComponents(context, deviceIndex, RotationAxis, axisDetails));
|
||||
}
|
||||
|
||||
String[] cursorNames = nGetCursorNames(deviceIndex);
|
||||
componentsList.addAll(WinTabComponent.createCursors(context, deviceIndex, cursorNames));
|
||||
for(int i=0;i<cursorNames.length;i++) {
|
||||
WinTabEnvironmentPlugin.logln("Cursor " + i + "'s name: " + cursorNames[i]);
|
||||
WinTabEnvironmentPlugin.log("Cursor " + i + "'s name: " + cursorNames[i]);
|
||||
}
|
||||
|
||||
int numberOfButtons = nGetMaxButtonCount(deviceIndex);
|
||||
WinTabEnvironmentPlugin.logln("Device has " + numberOfButtons + " buttons");
|
||||
WinTabEnvironmentPlugin.log("Device has " + numberOfButtons + " buttons");
|
||||
componentsList.addAll(WinTabComponent.createButtons(context, deviceIndex, numberOfButtons));
|
||||
|
||||
Component[] components = (Component[])componentsList.toArray(new Component[0]);
|
||||
Component[] components = componentsList.toArray(new Component[0]);
|
||||
|
||||
return new WinTabDevice(context, deviceIndex, name, components);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2006 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -44,9 +44,7 @@ public class WinTabEnvironmentPlugin extends ControllerEnvironment implements Pl
|
|||
*
|
||||
*/
|
||||
static void loadLibrary(final String lib_name) {
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
try {
|
||||
String lib_path = System.getProperty("net.java.games.input.librarypath");
|
||||
if (lib_path != null)
|
||||
|
|
@ -58,25 +56,16 @@ public class WinTabEnvironmentPlugin extends ControllerEnvironment implements Pl
|
|||
supported = false;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty(property));
|
||||
}
|
||||
|
||||
|
||||
static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
return AccessController.doPrivileged((PrivilegedAction<String>)() -> System.getProperty(property, default_value));
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
@ -88,13 +77,13 @@ public class WinTabEnvironmentPlugin extends ControllerEnvironment implements Pl
|
|||
}
|
||||
|
||||
private final Controller[] controllers;
|
||||
private final List active_devices = new ArrayList();
|
||||
private final List<WinTabDevice> active_devices = new ArrayList<>();
|
||||
private final WinTabContext winTabContext;
|
||||
|
||||
/** Creates new DirectInputEnvironment */
|
||||
public WinTabEnvironmentPlugin() {
|
||||
if(isSupported()) {
|
||||
DummyWindow window = null;
|
||||
DummyWindow window;
|
||||
WinTabContext winTabContext = null;
|
||||
Controller[] controllers = new Controller[]{};
|
||||
try {
|
||||
|
|
@ -108,17 +97,14 @@ public class WinTabEnvironmentPlugin extends ControllerEnvironment implements Pl
|
|||
throw e;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logln("Failed to enumerate devices: " + e.getMessage());
|
||||
log("Failed to enumerate devices: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.controllers = controllers;
|
||||
this.winTabContext = winTabContext;
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public final Object run() {
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>)() -> {
|
||||
Runtime.getRuntime().addShutdownHook(new ShutdownHook());
|
||||
return null;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
winTabContext = null;
|
||||
|
|
|
|||
55
pom.xml
55
pom.xml
|
|
@ -4,7 +4,7 @@
|
|||
<artifactId>jinput-parent</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>JInput</name>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<description>Library for access to input devices.</description>
|
||||
<url>https://github.com/jinput/jinput</url>
|
||||
<licenses>
|
||||
|
|
@ -39,8 +39,8 @@
|
|||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>1.6</maven.compiler.source>
|
||||
<maven.compiler.target>1.6</maven.compiler.target>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
|
@ -57,6 +57,7 @@
|
|||
<module>coreAPI</module>
|
||||
<module>plugins</module>
|
||||
<module>applet</module>
|
||||
<module>uberjar</module>
|
||||
<module>examples</module>
|
||||
<module>tests</module>
|
||||
</modules>
|
||||
|
|
@ -70,6 +71,12 @@
|
|||
<configuration>
|
||||
<showDeprecation>true</showDeprecation>
|
||||
<showWarnings>true</showWarnings>
|
||||
<compilerArgs>
|
||||
<arg>-Werror</arg>
|
||||
<arg>-Xlint:all,-options</arg>
|
||||
<arg>-h</arg>
|
||||
<arg>${project.build.directory}/generated-sources/natives</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
|
|
@ -128,6 +135,22 @@
|
|||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>true</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
|
|
@ -137,7 +160,7 @@
|
|||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<phase>deploy</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
|
|
@ -147,14 +170,24 @@
|
|||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>true</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>release</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.8-SNAPSHOT</version>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ import javax.swing.JFrame;
|
|||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.WindowConstants;
|
||||
|
||||
import net.java.games.input.Component;
|
||||
import net.java.games.input.Controller;
|
||||
|
|
@ -55,7 +56,10 @@ import net.java.games.input.Event;
|
|||
import net.java.games.input.Version;
|
||||
|
||||
public class ControllerEventTest extends JFrame{
|
||||
private static final long serialVersionUID = -8266185848160199092L;
|
||||
|
||||
private static abstract class AxisPanel extends JPanel{
|
||||
private static final long serialVersionUID = -6200599064870672000L;
|
||||
Component axis;
|
||||
float data;
|
||||
|
||||
|
|
@ -79,6 +83,7 @@ public class ControllerEventTest extends JFrame{
|
|||
}
|
||||
|
||||
private static class DigitalAxisPanel extends AxisPanel {
|
||||
private static final long serialVersionUID = -4729666037860134626L;
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalAxisPanel(Component ax) {
|
||||
|
|
@ -102,6 +107,7 @@ public class ControllerEventTest extends JFrame{
|
|||
}
|
||||
|
||||
private static class DigitalHatPanel extends AxisPanel {
|
||||
private static final long serialVersionUID = -6582605379682496832L;
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalHatPanel(Component ax) {
|
||||
|
|
@ -145,6 +151,7 @@ public class ControllerEventTest extends JFrame{
|
|||
}
|
||||
}
|
||||
private static class AnalogAxisPanel extends AxisPanel {
|
||||
private static final long serialVersionUID = 7536173405896285590L;
|
||||
JLabel analogState = new JLabel("<unread>");
|
||||
|
||||
public AnalogAxisPanel(Component ax) {
|
||||
|
|
@ -164,8 +171,9 @@ public class ControllerEventTest extends JFrame{
|
|||
|
||||
|
||||
private static class ControllerWindow extends JFrame {
|
||||
private static final long serialVersionUID = 8623977198558568961L;
|
||||
Controller ca;
|
||||
Map axes_to_panels = new HashMap();
|
||||
Map<Component, AxisPanel> axes_to_panels = new HashMap<>();
|
||||
boolean disabled = false;
|
||||
|
||||
public ControllerWindow(JFrame frame,Controller ca){
|
||||
|
|
@ -207,7 +215,7 @@ public class ControllerEventTest extends JFrame{
|
|||
}
|
||||
|
||||
private void addAxis(JPanel p, Component ax){
|
||||
JPanel p2;
|
||||
AxisPanel p2;
|
||||
if (ax.isAnalog()) {
|
||||
p2 = new AnalogAxisPanel(ax);
|
||||
} else {
|
||||
|
|
@ -234,14 +242,14 @@ public class ControllerEventTest extends JFrame{
|
|||
EventQueue event_queue = ca.getEventQueue();
|
||||
Event event = new Event();
|
||||
while (event_queue.getNextEvent(event)) {
|
||||
AxisPanel panel = (AxisPanel)axes_to_panels.get(event.getComponent());
|
||||
AxisPanel panel = axes_to_panels.get(event.getComponent());
|
||||
panel.setPollData(event.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static final long HEARTBEATMS =100; // 10th of a second
|
||||
List controllers = new ArrayList();
|
||||
List<ControllerWindow> controllers = new ArrayList<>();
|
||||
|
||||
public ControllerEventTest() {
|
||||
super("Controller Event Test. Version: " + Version.getVersion());
|
||||
|
|
@ -251,14 +259,12 @@ public class ControllerEventTest extends JFrame{
|
|||
makeController(ca[i]);
|
||||
}
|
||||
|
||||
new Thread(new Runnable() {
|
||||
public void run(){
|
||||
new Thread(() -> {
|
||||
try {
|
||||
while(true){
|
||||
for(Iterator i=controllers.iterator();i.hasNext();){
|
||||
for(Iterator<ControllerWindow> i=controllers.iterator();i.hasNext();){
|
||||
try {
|
||||
ControllerWindow cw = (ControllerWindow)i.next();
|
||||
cw.poll();
|
||||
i.next().poll();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -268,11 +274,10 @@ public class ControllerEventTest extends JFrame{
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
pack();
|
||||
setSize(400,400);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,13 +49,17 @@ import javax.swing.JFrame;
|
|||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.WindowConstants;
|
||||
|
||||
import net.java.games.input.Component;
|
||||
import net.java.games.input.Controller;
|
||||
import net.java.games.input.ControllerEnvironment;
|
||||
|
||||
public class ControllerReadTest extends JFrame{
|
||||
private static final long serialVersionUID = -7129976919159465311L;
|
||||
|
||||
private abstract static class AxisPanel extends JPanel{
|
||||
private static final long serialVersionUID = -2117191506803328790L;
|
||||
Component axis;
|
||||
float data;
|
||||
|
||||
|
|
@ -79,6 +83,7 @@ public class ControllerReadTest extends JFrame{
|
|||
}
|
||||
|
||||
private static class DigitalAxisPanel extends AxisPanel {
|
||||
private static final long serialVersionUID = -4006900519933869168L;
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalAxisPanel(Component ax) {
|
||||
|
|
@ -102,6 +107,7 @@ public class ControllerReadTest extends JFrame{
|
|||
}
|
||||
|
||||
private static class DigitalHatPanel extends AxisPanel {
|
||||
private static final long serialVersionUID = -3293100130201231029L;
|
||||
JLabel digitalState = new JLabel("<unread>");
|
||||
|
||||
public DigitalHatPanel(Component ax) {
|
||||
|
|
@ -145,6 +151,7 @@ public class ControllerReadTest extends JFrame{
|
|||
}
|
||||
}
|
||||
private static class AnalogAxisPanel extends AxisPanel {
|
||||
private static final long serialVersionUID = -3220244985697453835L;
|
||||
JLabel analogState = new JLabel("<unread>");
|
||||
|
||||
public AnalogAxisPanel(Component ax) {
|
||||
|
|
@ -164,8 +171,9 @@ public class ControllerReadTest extends JFrame{
|
|||
|
||||
|
||||
private static class ControllerWindow extends JFrame {
|
||||
private static final long serialVersionUID = 5812903945250431578L;
|
||||
Controller ca;
|
||||
List axisList = new ArrayList();
|
||||
List<AxisPanel> axisList = new ArrayList<>();
|
||||
boolean disabled = false;
|
||||
|
||||
public ControllerWindow(JFrame frame,Controller ca){
|
||||
|
|
@ -207,7 +215,7 @@ public class ControllerReadTest extends JFrame{
|
|||
}
|
||||
|
||||
private void addAxis(JPanel p, Component ax){
|
||||
JPanel p2;
|
||||
AxisPanel p2;
|
||||
if (ax.isAnalog()) {
|
||||
p2 = new AnalogAxisPanel(ax);
|
||||
} else {
|
||||
|
|
@ -233,9 +241,9 @@ public class ControllerReadTest extends JFrame{
|
|||
setDisabled(false);
|
||||
}
|
||||
//System.out.println("Polled "+ca.getName());
|
||||
for(Iterator i =axisList.iterator();i.hasNext();){
|
||||
for(Iterator<AxisPanel> i =axisList.iterator();i.hasNext();){
|
||||
try {
|
||||
((AxisPanel)i.next()).poll();
|
||||
i.next().poll();
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
@ -244,7 +252,7 @@ public class ControllerReadTest extends JFrame{
|
|||
}
|
||||
|
||||
static final long HEARTBEATMS =100; // 10th of a second
|
||||
List controllers = new ArrayList();
|
||||
List<ControllerWindow> controllers = new ArrayList<>();
|
||||
|
||||
public ControllerReadTest() {
|
||||
super("Controller Read Test. Version: " + Version.getVersion());
|
||||
|
|
@ -254,13 +262,12 @@ public class ControllerReadTest extends JFrame{
|
|||
makeController(ca[i]);
|
||||
}
|
||||
|
||||
new Thread(new Runnable() {
|
||||
public void run(){
|
||||
new Thread(() ->{
|
||||
try {
|
||||
while(true){
|
||||
for(Iterator i=controllers.iterator();i.hasNext();){
|
||||
for(Iterator<ControllerWindow> i=controllers.iterator();i.hasNext();){
|
||||
try {
|
||||
ControllerWindow cw = (ControllerWindow)i.next();
|
||||
ControllerWindow cw = i.next();
|
||||
cw.poll();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
|
@ -271,11 +278,10 @@ public class ControllerReadTest extends JFrame{
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
pack();
|
||||
setSize(400,400);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,12 +37,6 @@
|
|||
*****************************************************************************/
|
||||
package net.java.games.input;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author administrator
|
||||
*/
|
||||
import net.java.games.input.*;
|
||||
|
||||
public class ControllerTextTest {
|
||||
ControllerEnvironment ce;
|
||||
/** Creates a new instance of ControllerScanner */
|
||||
|
|
|
|||
|
|
@ -1,19 +1,30 @@
|
|||
/*
|
||||
* RumbleTest.java
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Created on 01 December 2003, 23:02
|
||||
* 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;
|
||||
|
||||
import net.java.games.input.ControllerEnvironment;
|
||||
import net.java.games.input.Controller;
|
||||
import net.java.games.input.Rumbler;
|
||||
import net.java.games.input.Version;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Jeremy
|
||||
*/
|
||||
public class RumbleTest {
|
||||
|
||||
/** Creates a new instance of RumbleTest */
|
||||
|
|
|
|||
|
|
@ -1,12 +1,32 @@
|
|||
/*
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer. Redistributions in binary
|
||||
* form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided
|
||||
* with the distribution.
|
||||
* The name of the author may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
|
||||
*/
|
||||
package net.java.games.input;
|
||||
|
||||
import net.java.games.input.Version;
|
||||
|
||||
public class VersionTest {
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
System.out.println("JInput version: " + Version.getVersion());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -25,15 +25,16 @@
|
|||
*/
|
||||
package net.java.games.input.applet;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.io.IOException;
|
||||
|
||||
import net.java.games.input.ControllerEventTest;
|
||||
import net.java.games.input.applet.JInputAppletResourceLoader;
|
||||
|
||||
public class ControllerEventTestApplet extends Applet {
|
||||
@SuppressWarnings("deprecation")
|
||||
public class ControllerEventTestApplet extends java.applet.Applet {
|
||||
|
||||
public void init() {
|
||||
private static final long serialVersionUID = 4250817143444220400L;
|
||||
|
||||
public void init() {
|
||||
try {
|
||||
new JInputAppletResourceLoader().loadResources(getCodeBase());
|
||||
} catch (IOException e) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/*
|
||||
* Copyright (C) 2003 Jeremy Booth (jeremy@newdawnsoftware.com)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -25,13 +25,14 @@
|
|||
*/
|
||||
package net.java.games.input.applet;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.io.IOException;
|
||||
|
||||
import net.java.games.input.ControllerReadTest;
|
||||
import net.java.games.input.applet.JInputAppletResourceLoader;
|
||||
|
||||
public class ControllerReadTestApplet extends Applet {
|
||||
@SuppressWarnings("deprecation")
|
||||
public class ControllerReadTestApplet extends java.applet.Applet {
|
||||
|
||||
private static final long serialVersionUID = -2558493887683964119L;
|
||||
|
||||
public void init() {
|
||||
try {
|
||||
|
|
|
|||
150
uberjar/pom.xml
Normal file
150
uberjar/pom.xml
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>jinput</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>JInput - Uber jar</name>
|
||||
|
||||
<parent>
|
||||
<groupId>net.java.jinput</groupId>
|
||||
<artifactId>jinput-parent</artifactId>
|
||||
<version>2.0.9-SNAPSHOT</version>
|
||||
<relativePath>../</relativePath>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>coreapi</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>windows-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-windows</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>osx-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-osx</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>wintab-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-wintab</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>linux-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>natives-linux</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>windows-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>osx-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>wintab-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>linux-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.googlecode.mavennatives</groupId>
|
||||
<artifactId>maven-nativedependencies-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactSet>
|
||||
<excludes>
|
||||
<exclude>net.java.jinput:osx-plugin:jar:natives-osx</exclude>
|
||||
<exclude>net.java.jinput:linux-plugin:jar:natives-linux</exclude>
|
||||
<exclude>net.java.jinput:windows-plugin:jar:natives-windows</exclude>
|
||||
<exclude>net.java.jinput:wintab-plugin:jar:natives-wintab</exclude>
|
||||
</excludes>
|
||||
</artifactSet>
|
||||
<createSourcesJar>true</createSourcesJar>
|
||||
<shadedArtifactAttached>false</shadedArtifactAttached>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>natives</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<filters>
|
||||
<filter>
|
||||
<artifact>net.java.jinput:osx-plugin</artifact>
|
||||
<includes>
|
||||
<include>**/*.jnilib</include>
|
||||
<include>META-INF/**/*</include>
|
||||
</includes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>net.java.jinput:linux-plugin</artifact>
|
||||
<includes>
|
||||
<include>**/*.so</include>
|
||||
<include>META-INF/**/*</include>
|
||||
</includes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>net.java.jinput:windows-plugin</artifact>
|
||||
<includes>
|
||||
<include>**/*.dll</include>
|
||||
<include>META-INF/**/*</include>
|
||||
</includes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>net.java.jinput:wintab-plugin</artifact>
|
||||
<includes>
|
||||
<include>**/*.dll</include>
|
||||
<include>META-INF/**/*</include>
|
||||
</includes>
|
||||
</filter>
|
||||
</filters>
|
||||
<artifactSet>
|
||||
<excludes>
|
||||
<exclude>net.java.jutils:jutils</exclude>
|
||||
<exclude>net.java.jinput:jinput</exclude>
|
||||
<exclude>net.java.jinput:coreapi</exclude>
|
||||
</excludes>
|
||||
</artifactSet>
|
||||
<shadedArtifactAttached>true</shadedArtifactAttached>
|
||||
<shadedClassifierName>natives-all</shadedClassifierName>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
Loading…
Reference in a new issue