Como capturar eventos de gamepad e fazer mapeamento entre gamepad e teclado?

Gostaria de criar uma ferramenta de mapeamento entre um controlador de jogos e o teclado. O usuário pressiona um botão do controle, por exemplo, e a aplicação simula o pressionar de uma tecla do teclado para usar em jogos que não suportam gamepad.

Note que não estou falando de fazer essa captura apenas na aplicação Java e sim em qualquer outra aplicação, mesmo as não java. Portanto a aplicação Java de mapeamento poderia ficar rodando em plano de fundo enquanto um jogo, escrito em C++, por exemplo, rodaria em primeiro plano mas a primeira continuaria capturando e traduzindo evendos de gamepad.

Bom, não use Java:

  • O java é incapaz de ler controladores de jogos. Você teria que recorrer a uma API que usa JNI, como a JInput;
  • O java é incapaz de enviar teclas ou pressionar de botões para outra aplicação. Para isso, você também teria que usar JNI.

Se quer fazer algo assim, pense em usar C++ e conhecer um pouco mais à fundo a API do Windows.

O que você quer fazer já existe: http://www.baixaki.com.br/download/joytokey.htm