Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java using Xbox controller [closed]

Tags:

java

xbox360

What library would you recommend to hook up my Xbox 360 controller to Java, and be able to read key inputs into keyPressed Event as a KeyEvent.

So I would like something like this

private class KeyInputHandler extends KeyAdapter {
    public void keyPressed(KeyEvent e) {
    }
}

And I want all the controller presses to go into keyPressed.

I would appreciate it even further if you can provide good libraries for PS3 controllers too.

like image 426
Quillion Avatar asked Jun 14 '13 01:06

Quillion


People also ask

Can you use Xbox controller on Minecraft Java?

As mentioned above, Minecraft Java Edition doesn't have native controller support. Thus, to use it in the game, you have to install third-party mods. One of the most popular mods for this purpose is Controllable.

Can you play Java with a controller?

You can play Minecraft Java Edition with an Xbox, PS4, or PS5 controller by way of launching the game on Steam and then configuring the buttons via its Big Picture mode. Here's the simple process of setting up a controller to use with Minecraft Java on PC: Open Steam and add Minecraft as a non-Steam game.


2 Answers

The wired XBox 360 controller will present as a joystick in Windows, so a library like JXInput will allow you to accept inputs from it.

Simple example

JXInput site

like image 178
Corey Cole Avatar answered Sep 17 '22 17:09

Corey Cole


There is an open-source project called Jamepad. Download the project and add it to the dependencies of your project. It works out-of-the-box with my wireless Xbox 360 controller.

I made a game with the following input types:

public enum InputAction {
    MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT
}

The following class will then handle your controller and convert the input to your own internal representation.

public class GamepadInput {
    private final ControllerManager controllers;

    public GamepadInput() {
        controllers = new ControllerManager();
        controllers.initSDLGamepad();
    }

    Set<InputAction> actions() {
        ControllerState currState = controllers.getState(0);
        if (!currState.isConnected) {
            return Collections.emptySet();
        }

        Set<InputAction> actions = new HashSet<>();
        if (currState.dpadLeft) {
            actions.add(InputAction.MOVE_LEFT);
        }
        if (currState.dpadRight) {
            actions.add(InputAction.MOVE_RIGHT);
        }
        if (currState.dpadUp) {
            actions.add(InputAction.MOVE_UP);
        }
        if (currState.dpadDown) {
            actions.add(InputAction.MOVE_DOWN);
        }
        return actions;
    }
}
like image 42
Little Helper Avatar answered Sep 18 '22 17:09

Little Helper