22 package com.realtime.crossfire.jxclient.gui.keybindings;
24 import java.awt.event.KeyEvent;
25 import java.lang.reflect.Field;
26 import java.util.HashMap;
28 import org.jetbrains.annotations.NotNull;
40 private final Map<String, Integer>
keyCodes =
new HashMap<>();
46 private final Map<Integer, String>
keyNames =
new HashMap<>();
52 for (
final Field field : KeyEvent.class.getDeclaredFields()) {
53 if (field.getName().startsWith(
"VK_")) {
57 keyCode = field.getInt(null);
58 }
catch (
final SecurityException ignored) {
60 }
catch (
final IllegalArgumentException ignored) {
62 }
catch (
final IllegalAccessException ignored) {
64 }
catch (
final NullPointerException ignored) {
66 }
catch (
final ExceptionInInitializerError ignored) {
69 final String keyName = field.getName().substring(3);
71 keyCodes.put(keyName, keyCode);
72 keyNames.put(keyCode, keyName);
84 if (keyCodes.containsKey(keyName)) {
85 return keyCodes.get(keyName);
89 return Integer.parseInt(keyName);
90 }
catch (
final NumberFormatException ex) {
92 noSuchKeyCodeException.initCause(ex);
93 throw noSuchKeyCodeException;
104 final String keyName = keyNames.get(keyCode);
105 if (keyName != null) {
109 return Integer.toString(keyCode);
final Map< Integer, String > keyNames
Maps key code to key name.
KeyCodeMap()
Creates a new instance.
String getKeyName(final int keyCode)
Returns the key name for a key code.
Maps between key codes integer constants and string representations.
int getKeyCode(@NotNull final String keyName)
Returns the key code for a key name.
Indicates that a key code does not exist.
final Map< String, Integer > keyCodes
Maps key name to key code.