Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to tell which SHIFT key was pressed?

Tags:

java

keyboard

In my game, I want to be able to use the right and left shift keys for different functions. In Java (or another language), is there any way to distinguish between those two?

The KeyEvent class has only VK_SHIFT, which corresponds to both left and right shift keys. Same with Control, Alt, Enter, etc.

My primary concern is someone may be able to use two fingers to rapidly press both keys at the same time, gaining an unfair advantage. Should I be concerned about this?

like image 277
Lucky Avatar asked Jun 13 '09 23:06

Lucky


2 Answers

I found a Java tutorial that includes a Java WebStart sample and the source code. Looks like the winner is KeyEvent.getKeyLocation()

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

References:

Key Listener Demo and Source Code

like image 196
burtlo Avatar answered Nov 08 '22 15:11

burtlo


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

Method:

 int    getKeyLocation()

Returns the location of the key that originated this key event.

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.
like image 40
Nick Dandoulakis Avatar answered Nov 08 '22 14:11

Nick Dandoulakis