diff --git a/src/main/java/li/cil/oc2/client/gui/terminal/TerminalInput.java b/src/main/java/li/cil/oc2/client/gui/terminal/TerminalInput.java index 6de39001..5ece20d5 100644 --- a/src/main/java/li/cil/oc2/client/gui/terminal/TerminalInput.java +++ b/src/main/java/li/cil/oc2/client/gui/terminal/TerminalInput.java @@ -9,7 +9,7 @@ public final class TerminalInput { private static final Int2ObjectArrayMap> KEYCODE_SEQUENCES = new Int2ObjectArrayMap<>(); static { - addSequence(GLFW.GLFW_KEY_ENTER, '\n'); + addSequence(GLFW.GLFW_KEY_ENTER, '\r'); addSequence(GLFW.GLFW_KEY_TAB, '\t'); addSequence(GLFW.GLFW_KEY_BACKSPACE, '\b'); @@ -21,26 +21,54 @@ public final class TerminalInput { addSequence(GLFW.GLFW_KEY_PAGE_UP, "\033[5~"); addSequence(GLFW.GLFW_KEY_PAGE_DOWN, "\033[6~"); + addSequence(GLFW.GLFW_KEY_F1, "\033[11~"); + addSequence(GLFW.GLFW_KEY_F2, "\033[12~"); + addSequence(GLFW.GLFW_KEY_F3, "\033[13~"); + addSequence(GLFW.GLFW_KEY_F4, "\033[14~"); + addSequence(GLFW.GLFW_KEY_F5, "\033[15~"); + addSequence(GLFW.GLFW_KEY_F6, "\033[17~"); + addSequence(GLFW.GLFW_KEY_F7, "\033[18~"); + addSequence(GLFW.GLFW_KEY_F8, "\033[19~"); + addSequence(GLFW.GLFW_KEY_F9, "\033[20~"); + addSequence(GLFW.GLFW_KEY_F10, "\033[21~"); + addSequence(GLFW.GLFW_KEY_F11, "\033[23~"); + addSequence(GLFW.GLFW_KEY_F12, "\033[24~"); + addSequence(GLFW.GLFW_KEY_UP, "\033[A"); addSequence(GLFW.GLFW_KEY_DOWN, "\033[B"); addSequence(GLFW.GLFW_KEY_RIGHT, "\033[C"); addSequence(GLFW.GLFW_KEY_LEFT, "\033[D"); for (int i = 'A'; i <= 'Z'; i++) { - addSequence(GLFW.GLFW_MOD_CONTROL, + addSequence( + GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_A + (i - 'A'), - (byte) (1 + i - 'A')); - addSequence(GLFW.GLFW_MOD_CONTROL | GLFW.GLFW_MOD_ALT, + (byte) (1 + i - 'A') + ); + addSequence( + GLFW.GLFW_MOD_CONTROL | GLFW.GLFW_MOD_SHIFT, GLFW.GLFW_KEY_A + (i - 'A'), - (byte) 27, (byte) ('a' + i - 'A')); - addSequence(GLFW.GLFW_MOD_CONTROL | GLFW.GLFW_MOD_ALT | GLFW.GLFW_MOD_SHIFT, + (byte) (1 + i - 'A') + ); + + addSequence( + GLFW.GLFW_MOD_ALT, GLFW.GLFW_KEY_A + (i - 'A'), - (byte) 27, (byte) i); + (byte) '\033', (byte) ('a' + i - 'A') + ); + addSequence( + GLFW.GLFW_MOD_ALT | GLFW.GLFW_MOD_SHIFT, + GLFW.GLFW_KEY_A + (i - 'A'), + (byte) '\033', (byte) (i + 128) + ); } - addSequence(GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_LEFT_BRACKET, (byte) 27); - addSequence(GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_BACKSLASH, (byte) 28); - addSequence(GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_RIGHT_BRACKET, (byte) 29); + addSequence(GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_LEFT_BRACKET, (byte) '\033'); + addSequence(GLFW.GLFW_MOD_CONTROL | GLFW.GLFW_MOD_SHIFT, GLFW.GLFW_KEY_LEFT_BRACKET, (byte) '\033'); + addSequence(GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_BACKSLASH, (byte) '\034'); + addSequence(GLFW.GLFW_MOD_CONTROL | GLFW.GLFW_MOD_SHIFT, GLFW.GLFW_KEY_BACKSLASH, (byte) '\034'); + addSequence(GLFW.GLFW_MOD_CONTROL, GLFW.GLFW_KEY_RIGHT_BRACKET, (byte) '\035'); + addSequence(GLFW.GLFW_MOD_CONTROL | GLFW.GLFW_MOD_SHIFT, GLFW.GLFW_KEY_RIGHT_BRACKET, (byte) '\035'); } ///////////////////////////////////////////////////////////////////