Java Jinput: rescan / reload controllers
Estou usando javajinput
biblioteca para ler dados do joypad, e eu tenho problemas para recarregarControllers
, Eu uso isso para carregá-los:
public Controller[] findStickControllers() {
ControllerEnvironment ce =
ControllerEnvironment.getDefaultEnvironment();
Controller[] cs = ce.getControllers();
System.out.println(cs.length); //test
ArrayList<Controller> sel = new ArrayList<>();
for (Controller c: cs) {
if(c.getType() == Type.STICK) {
sel.add(c);
}
}
return sel.toArray(new Controller[]{});
}
Isso funciona bem, mas se eu desconectar o meu controlador, chamando isso vai encontrá-lo novamente, e vice-versa (conectá-lo após a primeira verificação não vai encontrá-lo em tudo).
Eu tentei colocar o sono antes da primeira consulta, com estes resultados:
Os controladores são verificados de forma prática quando esse método é chamado pela primeira vez (não no início do programa)Quando chamado novamente, isso sempre retorna os mesmos controladores que retornaram pela primeira vez.Primeira chamada também irá escrever aviso abaixoMesmo quando o controlador está conectado (e funciona), em seguida, desconectado (ele ainda vai encontrá-lo embora) e reconectado, ele não vai funcionarAviso do ponto 3: (não formatou bem na lista)
WARNING: Found unknown Windows version: Windows 8
Attempting to use default windows plug-in.
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin
Eu estou usando o Win 8, e tive o mesmo problema no Win 7. Eu também tentei isso com o mouse, os mesmos resultados.
Como posso recarregar os controladores para o segundo, terceiro e assim por diante?