2018-05-23 15:58:39 +02:00
---
layout: default
---
2018-06-01 17:44:38 +02:00
[](https://maven-badges.herokuapp.com/maven-central/net.java.jinput/coreapi)
[](http://www.javadoc.io/doc/net.java.jinput/coreapi)
2018-05-23 16:20:15 +02:00
# Welcome to the Java Input API Project!
< p > The JInput Project hosts an implementation of an API for game controller
discovery and polled input. It is part of a suite of open-source technologies
initiated by the Game Technology Group at Sun Microsystems with intention of
making the development of high performance games in Java a reality.< / p >
< p > The API itself is pure Java and presents a platform-neutral
completely portable model of controller discovery and polling.
It can handle arbitrary controllers and returns both human and
machine understandable descriptions of the inputs available.< / p >
< p > The implementation hosted here also includes plug-ins to allow
the API to adapt to various specific platforms. These plug-ins
often contain a native code portion to interface to the host system.
< / p >
2018-05-23 16:23:36 +02:00
## Getting Started
2018-05-23 16:20:15 +02:00
2018-06-01 19:27:05 +02:00
Include the dependency in your project:
2018-05-23 16:20:15 +02:00
2018-05-23 16:23:36 +02:00
```xml
< dependency >
< groupId > net.java.jinput< / groupId >
< artifactId > jinput< / artifactId >
2018-06-01 18:26:01 +02:00
< version > {{site.jinput_version}}< / version >
2018-06-01 19:27:05 +02:00
< / dependency >
< dependency >
< groupId > net.java.jinput< / groupId >
< artifactId > jinput< / artifactId >
< version > {{site.jinput_version}}< / version >
< classifier > natives-all< / classifier >
2018-05-23 16:23:36 +02:00
< / dependency >
```
2018-06-01 17:29:56 +02:00
You'll also need to add the build plugin in your `build/plugins` section of your pom
```xml
2018-06-01 17:40:35 +02:00
< plugin >
< groupId > com.googlecode.mavennatives< / groupId >
< artifactId > maven-nativedependencies-plugin< / artifactId >
< / plugin >
2018-06-01 17:29:56 +02:00
```
2018-06-01 18:42:33 +02:00
A full pom might look like [this one ](https://github.com/jinput/jinput/blob/master/examples/example.pom.xml )
2018-06-01 17:29:56 +02:00
2018-06-01 19:27:05 +02:00
## Running
Add the jinput jar to your classpath, assuming you are using maven and have the native dependencies plugin working, it will have unpacked the native binaries to `target/natives` , you must specify the `java.library.path` property to point to this directy.
Example
```
java -cp ~/.m2/repository/net/java/jinput/jinput/{{site.jinput_version}}/jinput-{{site.jinput_version}}.jar:target/examples-pom-{{site.jinput_version}}.jar -Djava.library.path=target/natives net.java.games.input.example.ReadFirstMouse
```
2018-05-23 16:20:15 +02:00
2018-05-23 16:23:36 +02:00
## Usage
2018-05-23 16:20:15 +02:00
2018-05-23 16:34:50 +02:00
```java
/* Create an event object for the underlying plugin to populate */
Event event = new Event();
2018-05-23 16:32:42 +02:00
2018-05-23 16:34:50 +02:00
/* Get the available controllers */
Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();
for (int i = 0; i < controllers.length ; i + + ) {
/* Remember to poll each one */
controllers[i].poll();
2018-05-23 16:32:42 +02:00
2018-05-23 16:34:50 +02:00
/* Get the controllers event queue */
EventQueue queue = controllers[i].getEventQueue();
2018-05-23 16:32:42 +02:00
2018-05-23 16:34:50 +02:00
/* For each object in the queue */
while (queue.getNextEvent(event)) {
/* Get event component */
Component comp = event.getComponent();
2018-05-23 16:32:42 +02:00
2018-05-23 16:34:50 +02:00
/* Process event (your awesome code) */
...
2018-05-23 16:32:42 +02:00
}
2018-05-23 16:34:50 +02:00
}
```
2018-05-23 16:32:42 +02:00
2018-05-23 16:34:50 +02:00
[More examples here ](https://github.com/jinput/jinput/tree/master/examples/src/main/java/net/java/games/input/example ).