Get the VK int from an arbitrary char in java

Myer picture Myer · Mar 20, 2009 · Viewed 9.5k times · Source

How do you get the VK code from a char that is a letter? It seems like you should be able to do something like javax.swing.KeyStroke.getKeyStroke('c').getKeyCode(), but that doesn't work (the result is zero). Everyone knows how to get the key code if you already have a KeyEvent, but what if you just want to turn chars into VK ints? I'm not interested in getting the FK code for strange characters, only [A-Z],[a-z],[0-9].

Context of this problem -------- All of the Robot tutorials I've seen assume programmers love to spell out words by sending keypresses with VK codes:

int keyInput[] = {
      KeyEvent.VK_D,
      KeyEvent.VK_O,
      KeyEvent.VK_N,
      KeyEvent.VK_E
  };//end keyInput array

Call me lazy, but even with Eclipse this is no way to go about using TDD on GUIs. If anyone happens to know of a Robot-like class that takes strings and then simulates user input for those strings (I'm using FEST), I'd love to know.

Answer

pR0Ps picture pR0Ps · Nov 5, 2010
AWTKeyStroke.getAWTKeyStroke('c').getKeyCode();

Slight clarification of Pace's answer. It should be single quotes (representing a character), not double quotes (representing a string).

Using double quotes will throw a java.lang.IllegalArgumentException (String formatted incorrectly).