package gui.input;
import jline.ConsoleOperations;
import java.util.HashMap;
import java.util.Map;
public class GdxInputDecoder {
private static Map<Integer, Integer> gdxToJlineCodes = new HashMap<Integer, Integer>(); // holds the conversions of gdx input codes(keys) to jline codes(values)
private static final int modValue = 65536; // used to give each modifier key its own block of codes
static {
gdxToJlineCodes();
}
private static void gdxToJlineCodes() {
gdxToJlineCodes.put(19, (int) ConsoleOperations.PREV_HISTORY); //UP = 19
gdxToJlineCodes.put(20, (int) ConsoleOperations.NEXT_HISTORY); //DOWN = 20
gdxToJlineCodes.put(21, (int) ConsoleOperations.PREV_CHAR); //LEFT = 21
gdxToJlineCodes.put(22, (int) ConsoleOperations.NEXT_CHAR); //RIGHT = 22
gdxToJlineCodes.put(67, (int) ConsoleOperations.BACKSPACE); //BACKSPACE = 67
gdxToJlineCodes.put(61, (int) ConsoleOperations.COMPLETE); //TAB = 61
// gdxToJlineCodes.put(31 + ModifierKeys.CONTROL.value * modValue, ...); // example of using modifiers and modvalue for control-c
}
public static int getJlineCode(int gdxCode, int modifiers) {
return (gdxToJlineCodes.containsKey(gdxCode + modifiers * modValue)) ? gdxToJlineCodes.get(gdxCode) : ConsoleOperations.UNKNOWN;
}
public static boolean contains(int keycode, int modifiers) {
return getJlineCode(keycode, modifiers) != ConsoleOperations.UNKNOWN;
}
public enum ModifierKeys {
SHIFT(1), ALT(2), CONTROL(4);
public int value;
ModifierKeys(int value) {
this.value = value;
}
}
}