Java с использованием контроллера Xbox

Какую библиотеку вы бы порекомендовали подключить мой контроллер Xbox 360 к Java и иметь возможность считывать вводимые данные в KeyPressed Event как KeyEvent.

Так что хотелось бы что то подобное

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

И я хочу, чтобы все нажатия контроллера перешли в keyPressed.

Я был бы признателен, если бы вы могли также предоставить хорошие библиотеки для контроллеров PS3.

Ответы на вопрос(2)

Существует проект с открытым исходным кодом под названиемJamepad, Скачайте проект и добавьте его в зависимости вашего проекта. Он работает "из коробки" с моим беспроводным контроллером Xbox 360.

Я сделал игру со следующими типами ввода:

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

Следующий класс будет обрабатывать ваш контроллер и преобразовывать входные данные в ваше собственное внутреннее представление.

public class GamepadInput {
    private final ControllerManager controllers;

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

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

        Set 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;
    }
}

Проводной контроллер XBox 360 будет представлен в качестве джойстика в Windows, поэтому библиотека, такая как JXInput, позволит вам принимать входные данные от него.

Простой пример

Сайт JXInput

 Zabuza24 февр. 2018 г., 02:20
@JohnP Нет. Сама Java, по своей сути, также использует не-Java-код для реализации команд Java в ОС. Дело в том, что ОС (Windows) не предлагает Java-доступ к таким вещам. Библиотеки WindowsC-код (dllс). Таким образом, в какой-то момент вам всегда нужно будет использоватьJNI чтобы получить доступ кdllизнутри Java, если вы хотите поговорить с Windows.
 John P28 февр. 2014 г., 15:11
Отлично! Я'Я долго искал что-то подобное, я подумал, что мне придется написать это самому. Единственное, что ... это говорит "s 100% Java, но затем говорит, что использует JNI для вызова не-Java-кода. Есть ли способ обойти это?
 John P24 февр. 2018 г., 02:54
@Zabuza That 'очень интуитивно теперь, когда яЯ провел пару лет с C и C ++, хотя я думаю, что я знаю, на чем я был одержим. JVM уже использовала нативные библиотеки, потому что это была ее работа, позволяющая разработчику писать код, не зависящий от платформы. Если чего-то не хватало в JVM для этого, я чувствовал, что либо JVM способна и должна быть обновлена или расширена, либо нет.не способен, поэтому со всем доступным для JVM я бы нетоже не способен. --- "Не известно, что JNI работает слишком быстро, поэтому количество вызовов было минимизировано: 1. " Это само по себе могло поколебать меня!

Ваш ответ на вопрос