23 package com.realtime.crossfire.jxclient.gui.keybindings;
25 import java.awt.event.KeyEvent;
26 import java.lang.reflect.Field;
27 import java.util.HashMap;
29 import org.jetbrains.annotations.NotNull;
41 private final Map<String, Integer>
keyCodes =
new HashMap<>();
47 private final Map<Integer, String>
keyNames =
new HashMap<>();
53 for (Field field : KeyEvent.class.getDeclaredFields()) {
54 if (field.getName().startsWith(
"VK_")) {
58 keyCode = field.getInt(
null);
59 }
catch (
final ExceptionInInitializerError|IllegalAccessException|IllegalArgumentException|NullPointerException|SecurityException ignored) {
62 final String keyName = field.getName().substring(3);
82 return Integer.parseInt(keyName);
83 }
catch (
final NumberFormatException ex) {
85 noSuchKeyCodeException.initCause(ex);
86 throw noSuchKeyCodeException;
97 final String keyName =
keyNames.get(keyCode);
98 if (keyName !=
null) {
102 return Integer.toString(keyCode);