2009-06-13 6 views
9

Dans mon jeu, je veux pouvoir utiliser les touches shift droite et gauche pour différentes fonctions. En Java (ou dans une autre langue), existe-t-il un moyen de distinguer ces deux-là?Comment savoir quelle touche SHIFT a été enfoncée?

La classe KeyEvent a uniquement VK_SHIFT, qui correspond aux deux touches Maj gauche et droite. Même avec contrôle, Alt, Entrez, etc.

Ma principale préoccupation est quelqu'un peut être en mesure d'utiliser deux doigts pour appuyer rapidement sur les deux touches en même temps, obtenir un avantage injuste. Devrais-je être préoccupé par cela?

+5

* remappe les touches Maj de j et k * Non, rien à craindre, plan impeccable ... – Shog9

+0

Si la langue ne fournit pas cette fonction (comme java), elle nécessitera des contorsions spécifiques au système d'exploitation ... – dmckee

+0

Veuillez spécifier le SDK/API que vous utilisez. –

Répondre

18

J'ai trouvé un didacticiel Java comprenant un exemple Java WebStart et le code source. On dirait que le gagnant est KeyEvent.getKeyLocation()

  • KeyEvent.KEY_LOCATION_STANDARD
  • KeyEvent.KEY_LOCATION_LEFT
  • KeyEvent.KEY_LOCATION_RIGHT
  • KeyEvent.KEY_LOCATION_NUMPAD
  • KeyEvent.KEY_LOCATION_UNKNOWN

Références:

Key Listener Demo and Source Code

1
KeyEvent(Component source, int id, long when, int modifiers, int keyCode, char keyChar, int keyLocation) 

Méthode:

int getKeyLocation() 

Renvoie l'emplacement de la clé qui a pris naissance à cet événement clé.

public static final int KEY_LOCATION_LEFT 

A constant indicating that the key pressed or released is in the left key location (there is more than one possible location for this key). Example: the left shift key. 
0

Vous pouvez également jeter un oeil à jinput, une bibliothèque qui vous donne un accès direct à tous les périphériques d'entrée, vous donnant beaucoup plus de contrôle. Si vous avez décidé d'utiliser LWJGL pour votre jeu, cela vient déjà avec jinput.

Questions connexes