From 1a164479862379372ca08b540f1fbc9214e3db87 Mon Sep 17 00:00:00 2001 From: Simen Sandvaer Date: Sun, 3 Jun 2012 00:34:09 +0200 Subject: [PATCH] Made Key enum more abstract so it's platform agnostic, first step in abstracting out lwjgl stuff from core --- .../java/se/fearlessgames/fear/input/Key.java | 272 ++++++++---------- .../se/fearlessgames/fear/input/LwjglKey.java | 139 +++++++++ .../fear/input/hw/HardwareKeyboard.java | 4 +- .../input/hw/HardwareKeyboardController.java | 4 +- .../input/hw/lwjgl/LwjglHardwareKeyboard.java | 6 +- 5 files changed, 271 insertions(+), 154 deletions(-) create mode 100644 fearless-render-core/src/main/java/se/fearlessgames/fear/input/LwjglKey.java diff --git a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/Key.java b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/Key.java index 4fb6600..d0a4b39 100644 --- a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/Key.java +++ b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/Key.java @@ -1,153 +1,129 @@ package se.fearlessgames.fear.input; -import org.lwjgl.input.Keyboard; - -import java.util.HashMap; -import java.util.Map; - public enum Key { - ZERO(Keyboard.KEY_0), // - ONE(Keyboard.KEY_1), // - TWO(Keyboard.KEY_2), // - THREE(Keyboard.KEY_3), // - FOUR(Keyboard.KEY_4), // - FIVE(Keyboard.KEY_5), // - SIX(Keyboard.KEY_6), // - SEVEN(Keyboard.KEY_7), // - EIGHT(Keyboard.KEY_8), // - NINE(Keyboard.KEY_9), // - A(Keyboard.KEY_A), // - ADD(Keyboard.KEY_ADD), // - APOSTROPHE(Keyboard.KEY_APOSTROPHE), // - APPS(Keyboard.KEY_APPS), // - AT(Keyboard.KEY_AT), // - AX(Keyboard.KEY_AX), // - B(Keyboard.KEY_B), // - BACK(Keyboard.KEY_BACK), // - BACKSLASH(Keyboard.KEY_BACKSLASH), // - C(Keyboard.KEY_C), // - CAPITAL(Keyboard.KEY_CAPITAL), // - CIRCUMFLEX(Keyboard.KEY_CIRCUMFLEX), // - COLON(Keyboard.KEY_COLON), // - COMMA(Keyboard.KEY_COMMA), // - CONVERT(Keyboard.KEY_CONVERT), // - D(Keyboard.KEY_D), // - DECIMAL(Keyboard.KEY_DECIMAL), // - DELETE(Keyboard.KEY_DELETE), // - DIVIDE(Keyboard.KEY_DIVIDE), // - DOWN(Keyboard.KEY_DOWN), // - E(Keyboard.KEY_E), // - END(Keyboard.KEY_END), // - EQUALS(Keyboard.KEY_EQUALS), // - ESCAPE(Keyboard.KEY_ESCAPE), // - F(Keyboard.KEY_F), // - F1(Keyboard.KEY_F1), // - F2(Keyboard.KEY_F2), // - F3(Keyboard.KEY_F3), // - F4(Keyboard.KEY_F4), // - F5(Keyboard.KEY_F5), // - F6(Keyboard.KEY_F6), // - F7(Keyboard.KEY_F7), // - F8(Keyboard.KEY_F8), // - F9(Keyboard.KEY_F9), // - F10(Keyboard.KEY_F10), // - F11(Keyboard.KEY_F11), // - F12(Keyboard.KEY_F12), // - F13(Keyboard.KEY_F13), // - F14(Keyboard.KEY_F14), // - F15(Keyboard.KEY_F15), // - G(Keyboard.KEY_G), // - GRAVE(Keyboard.KEY_GRAVE), // - H(Keyboard.KEY_H), // - HOME(Keyboard.KEY_HOME), // - I(Keyboard.KEY_I), // - INSERT(Keyboard.KEY_INSERT), // - J(Keyboard.KEY_J), // - K(Keyboard.KEY_K), // - KANA(Keyboard.KEY_KANA), // - KANJI(Keyboard.KEY_KANJI), // - L(Keyboard.KEY_L), // - LBRACKET(Keyboard.KEY_LBRACKET), // - LCONTROL(Keyboard.KEY_LCONTROL), // - LEFT(Keyboard.KEY_LEFT), // - LMENU(Keyboard.KEY_LMENU), // - LMETA(Keyboard.KEY_LMETA), // - LSHIFT(Keyboard.KEY_LSHIFT), // - M(Keyboard.KEY_M), // - MINUS(Keyboard.KEY_MINUS), // - MULTIPLY(Keyboard.KEY_MULTIPLY), // - N(Keyboard.KEY_N), // - NEXT(Keyboard.KEY_NEXT), // - NOCONVERT(Keyboard.KEY_NOCONVERT), // - NUMLOCK(Keyboard.KEY_NUMLOCK), // - NUMPAD0(Keyboard.KEY_NUMPAD0), // - NUMPAD1(Keyboard.KEY_NUMPAD1), // - NUMPAD2(Keyboard.KEY_NUMPAD2), // - NUMPAD3(Keyboard.KEY_NUMPAD3), // - NUMPAD4(Keyboard.KEY_NUMPAD4), // - NUMPAD5(Keyboard.KEY_NUMPAD5), // - NUMPAD6(Keyboard.KEY_NUMPAD6), // - NUMPAD7(Keyboard.KEY_NUMPAD7), // - NUMPAD8(Keyboard.KEY_NUMPAD8), // - NUMPAD9(Keyboard.KEY_NUMPAD9), // - NUMPADCOMMA(Keyboard.KEY_NUMPADCOMMA), // - NUMPADENTER(Keyboard.KEY_NUMPADENTER), // - NUMPADEQUALS(Keyboard.KEY_NUMPADEQUALS), // - O(Keyboard.KEY_O), // - P(Keyboard.KEY_P), // - PAUSE(Keyboard.KEY_PAUSE), // - POWER(Keyboard.KEY_POWER), // - PERIOD(Keyboard.KEY_PERIOD), // - PRIOR(Keyboard.KEY_PRIOR), // - Q(Keyboard.KEY_Q), // - R(Keyboard.KEY_R), // - RBRACKET(Keyboard.KEY_RBRACKET), // - RCONTROL(Keyboard.KEY_RCONTROL), // - RETURN(Keyboard.KEY_RETURN), // - RIGHT(Keyboard.KEY_RIGHT), // - RMENU(Keyboard.KEY_RMENU), // - RMETA(Keyboard.KEY_RMETA), // - RSHIFT(Keyboard.KEY_RSHIFT), // - S(Keyboard.KEY_S), // - SCROLL(Keyboard.KEY_SCROLL), // - SEMICOLON(Keyboard.KEY_SEMICOLON), // - SLASH(Keyboard.KEY_SLASH), // - SLEEP(Keyboard.KEY_SLEEP), // - SPACE(Keyboard.KEY_SPACE), // - STOP(Keyboard.KEY_STOP), // - NUMPADSUBTRACT(Keyboard.KEY_SUBTRACT), - SYSRQ(Keyboard.KEY_SYSRQ), // - T(Keyboard.KEY_T), // - TAB(Keyboard.KEY_TAB), // - U(Keyboard.KEY_U), // - UNDERLINE(Keyboard.KEY_UNDERLINE), // - UNLABELED(Keyboard.KEY_UNLABELED), // - UP(Keyboard.KEY_UP), // - V(Keyboard.KEY_V), // - W(Keyboard.KEY_W), // - X(Keyboard.KEY_X), // - Y(Keyboard.KEY_Y), // - YEN(Keyboard.KEY_YEN), // - Z(Keyboard.KEY_Z), // - NONE(Keyboard.KEY_NONE); - - private final int lwjglCode; - - private final static Map lookupMap = new HashMap(); - - private Key(final int lwjglCode) { - this.lwjglCode = lwjglCode; - - } - - public static Key findByKeyEventCode(int lwjglCode) { - return lookupMap.get(lwjglCode); - } - - static { - for (Key key : Key.values()) { - lookupMap.put(key.lwjglCode, key); - } - } + ZERO, + ONE, + TWO, + THREE, + FOUR, + FIVE, + SIX, + SEVEN, + EIGHT, + NINE, + A, + ADD, + APOSTROPHE, + APPS, + AT, + AX, + B, + BACK, + BACKSLASH, + C, + CAPITAL, + CIRCUMFLEX, + COLON, + COMMA, + CONVERT, + D, + DECIMAL, + DELETE, + DIVIDE, + DOWN, + E, + END, + EQUALS, + ESCAPE, + F, + F1, + F2, + F3, + F4, + F5, + F6, + F7, + F8, + F9, + F10, + F11, + F12, + F13, + F14, + F15, + G, + GRAVE, + H, + HOME, + I, + INSERT, + J, + K, + KANA, + KANJI, + L, + LBRACKET, + LCONTROL, + LEFT, + LMENU, + LMETA, + LSHIFT, + M, + MINUS, + MULTIPLY, + N, + NEXT, + NOCONVERT, + NUMLOCK, + NUMPAD0, + NUMPAD1, + NUMPAD2, + NUMPAD3, + NUMPAD4, + NUMPAD5, + NUMPAD6, + NUMPAD7, + NUMPAD8, + NUMPAD9, + NUMPADCOMMA, + NUMPADENTER, + NUMPADEQUALS, + O, + P, + PAUSE, + POWER, + PERIOD, + PRIOR, + Q, + R, + RBRACKET, + RCONTROL, + RETURN, + RIGHT, + RMENU, + RMETA, + RSHIFT, + S, + SCROLL, + SEMICOLON, + SLASH, + SLEEP, + SPACE, + STOP, + NUMPADSUBTRACT, + SYSRQ, + T, + TAB, + U, + UNDERLINE, + UNLABELED, + UP, + V, + W, + X, + Y, + YEN, + Z, + NONE } diff --git a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/LwjglKey.java b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/LwjglKey.java new file mode 100644 index 0000000..a2fa0b7 --- /dev/null +++ b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/LwjglKey.java @@ -0,0 +1,139 @@ +package se.fearlessgames.fear.input; + +import com.google.common.collect.ImmutableMap; +import org.lwjgl.input.Keyboard; + +import java.util.Map; + +public class LwjglKey { + private final static Map lookupMap = ImmutableMap.builder() + .put(Keyboard.KEY_0, Key.ZERO) + .put(Keyboard.KEY_1, Key.ONE) + .put(Keyboard.KEY_2, Key.TWO) + .put(Keyboard.KEY_3, Key.THREE) + .put(Keyboard.KEY_4, Key.FOUR) + .put(Keyboard.KEY_5, Key.FIVE) + .put(Keyboard.KEY_6, Key.SIX) + .put(Keyboard.KEY_7, Key.SEVEN) + .put(Keyboard.KEY_8, Key.EIGHT) + .put(Keyboard.KEY_9, Key.NINE) + .put(Keyboard.KEY_A, Key.A) + .put(Keyboard.KEY_ADD, Key.ADD) + .put(Keyboard.KEY_APOSTROPHE, Key.APOSTROPHE) + .put(Keyboard.KEY_APPS, Key.APPS) + .put(Keyboard.KEY_AT, Key.AT) + .put(Keyboard.KEY_AX, Key.AX) + .put(Keyboard.KEY_B, Key.B) + .put(Keyboard.KEY_BACK, Key.BACK) + .put(Keyboard.KEY_BACKSLASH, Key.BACKSLASH) + .put(Keyboard.KEY_C, Key.C) + .put(Keyboard.KEY_CAPITAL, Key.CAPITAL) + .put(Keyboard.KEY_CIRCUMFLEX, Key.CIRCUMFLEX) + .put(Keyboard.KEY_COLON, Key.COLON) + .put(Keyboard.KEY_COMMA, Key.COMMA) + .put(Keyboard.KEY_CONVERT, Key.CONVERT) + .put(Keyboard.KEY_D, Key.D) + .put(Keyboard.KEY_DECIMAL, Key.DECIMAL) + .put(Keyboard.KEY_DELETE, Key.DELETE) + .put(Keyboard.KEY_DIVIDE, Key.DIVIDE) + .put(Keyboard.KEY_DOWN, Key.DOWN) + .put(Keyboard.KEY_E, Key.E) + .put(Keyboard.KEY_END, Key.END) + .put(Keyboard.KEY_EQUALS, Key.EQUALS) + .put(Keyboard.KEY_ESCAPE, Key.ESCAPE) + .put(Keyboard.KEY_F, Key.F) + .put(Keyboard.KEY_F1, Key.F1) + .put(Keyboard.KEY_F2, Key.F2) + .put(Keyboard.KEY_F3, Key.F3) + .put(Keyboard.KEY_F4, Key.F4) + .put(Keyboard.KEY_F5, Key.F5) + .put(Keyboard.KEY_F6, Key.F6) + .put(Keyboard.KEY_F7, Key.F7) + .put(Keyboard.KEY_F8, Key.F8) + .put(Keyboard.KEY_F9, Key.F9) + .put(Keyboard.KEY_F10, Key.F10) + .put(Keyboard.KEY_F11, Key.F11) + .put(Keyboard.KEY_F12, Key.F12) + .put(Keyboard.KEY_F13, Key.F13) + .put(Keyboard.KEY_F14, Key.F14) + .put(Keyboard.KEY_F15, Key.F15) + .put(Keyboard.KEY_G, Key.G) + .put(Keyboard.KEY_GRAVE, Key.GRAVE) + .put(Keyboard.KEY_H, Key.H) + .put(Keyboard.KEY_HOME, Key.HOME) + .put(Keyboard.KEY_I, Key.I) + .put(Keyboard.KEY_INSERT, Key.INSERT) + .put(Keyboard.KEY_J, Key.J) + .put(Keyboard.KEY_K, Key.K) + .put(Keyboard.KEY_KANA, Key.KANA) + .put(Keyboard.KEY_KANJI, Key.KANJI) + .put(Keyboard.KEY_L, Key.L) + .put(Keyboard.KEY_LBRACKET, Key.LBRACKET) + .put(Keyboard.KEY_LCONTROL, Key.LCONTROL) + .put(Keyboard.KEY_LEFT, Key.LEFT) + .put(Keyboard.KEY_LMENU, Key.LMENU) + .put(Keyboard.KEY_LMETA, Key.LMETA) + .put(Keyboard.KEY_LSHIFT, Key.LSHIFT) + .put(Keyboard.KEY_M, Key.M) + .put(Keyboard.KEY_MINUS, Key.MINUS) + .put(Keyboard.KEY_MULTIPLY, Key.MULTIPLY) + .put(Keyboard.KEY_N, Key.N) + .put(Keyboard.KEY_NEXT, Key.NEXT) + .put(Keyboard.KEY_NOCONVERT, Key.NOCONVERT) + .put(Keyboard.KEY_NUMLOCK, Key.NUMLOCK) + .put(Keyboard.KEY_NUMPAD0, Key.NUMPAD0) + .put(Keyboard.KEY_NUMPAD1, Key.NUMPAD1) + .put(Keyboard.KEY_NUMPAD2, Key.NUMPAD2) + .put(Keyboard.KEY_NUMPAD3, Key.NUMPAD3) + .put(Keyboard.KEY_NUMPAD4, Key.NUMPAD4) + .put(Keyboard.KEY_NUMPAD5, Key.NUMPAD5) + .put(Keyboard.KEY_NUMPAD6, Key.NUMPAD6) + .put(Keyboard.KEY_NUMPAD7, Key.NUMPAD7) + .put(Keyboard.KEY_NUMPAD8, Key.NUMPAD8) + .put(Keyboard.KEY_NUMPAD9, Key.NUMPAD9) + .put(Keyboard.KEY_NUMPADCOMMA, Key.NUMPADCOMMA) + .put(Keyboard.KEY_NUMPADENTER, Key.NUMPADENTER) + .put(Keyboard.KEY_NUMPADEQUALS, Key.NUMPADEQUALS) + .put(Keyboard.KEY_O, Key.O) + .put(Keyboard.KEY_P, Key.P) + .put(Keyboard.KEY_PAUSE, Key.PAUSE) + .put(Keyboard.KEY_POWER, Key.POWER) + .put(Keyboard.KEY_PERIOD, Key.PERIOD) + .put(Keyboard.KEY_PRIOR, Key.PRIOR) + .put(Keyboard.KEY_Q, Key.Q) + .put(Keyboard.KEY_R, Key.R) + .put(Keyboard.KEY_RBRACKET, Key.RBRACKET) + .put(Keyboard.KEY_RCONTROL, Key.RCONTROL) + .put(Keyboard.KEY_RETURN, Key.RETURN) + .put(Keyboard.KEY_RIGHT, Key.RIGHT) + .put(Keyboard.KEY_RMENU, Key.RMENU) + .put(Keyboard.KEY_RMETA, Key.RMETA) + .put(Keyboard.KEY_RSHIFT, Key.RSHIFT) + .put(Keyboard.KEY_S, Key.S) + .put(Keyboard.KEY_SCROLL, Key.SCROLL) + .put(Keyboard.KEY_SEMICOLON, Key.SEMICOLON) + .put(Keyboard.KEY_SLASH, Key.SLASH) + .put(Keyboard.KEY_SLEEP, Key.SLEEP) + .put(Keyboard.KEY_SPACE, Key.SPACE) + .put(Keyboard.KEY_STOP, Key.STOP) + .put(Keyboard.KEY_SUBTRACT, Key.NUMPADSUBTRACT) + .put(Keyboard.KEY_SYSRQ, Key.SYSRQ) + .put(Keyboard.KEY_T, Key.T) + .put(Keyboard.KEY_TAB, Key.TAB) + .put(Keyboard.KEY_U, Key.U) + .put(Keyboard.KEY_UNDERLINE, Key.UNDERLINE) + .put(Keyboard.KEY_UNLABELED, Key.UNLABELED) + .put(Keyboard.KEY_UP, Key.UP) + .put(Keyboard.KEY_V, Key.V) + .put(Keyboard.KEY_W, Key.W) + .put(Keyboard.KEY_X, Key.X) + .put(Keyboard.KEY_Y, Key.Y) + .put(Keyboard.KEY_YEN, Key.YEN) + .put(Keyboard.KEY_Z, Key.Z) + .put(Keyboard.KEY_NONE, Key.NONE) + .build(); + + public static Key findByKeyEventCode(int lwjglCode) { + return lookupMap.get(lwjglCode); + } +} diff --git a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboard.java b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboard.java index 7273da5..c5e9bf0 100644 --- a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboard.java +++ b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboard.java @@ -1,9 +1,11 @@ package se.fearlessgames.fear.input.hw; +import se.fearlessgames.fear.input.Key; + public interface HardwareKeyboard { boolean next(); - int eventKey(); + Key eventKey(); boolean eventKeyState(); diff --git a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboardController.java b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboardController.java index 23500aa..af4fe99 100644 --- a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboardController.java +++ b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/HardwareKeyboardController.java @@ -33,12 +33,10 @@ protected KeyEvent computeNext() { return endOfData(); } - final int keyCode = hardwareKeyboard.eventKey(); + final Key key = hardwareKeyboard.eventKey(); final boolean pressed = hardwareKeyboard.eventKeyState(); final char keyChar = hardwareKeyboard.eventCharacter(); - final Key key = Key.findByKeyEventCode(keyCode); - return new KeyEvent(key, pressed ? KeyState.DOWN : KeyState.UP, keyChar); } } diff --git a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/lwjgl/LwjglHardwareKeyboard.java b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/lwjgl/LwjglHardwareKeyboard.java index b88ca47..9c69ac8 100644 --- a/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/lwjgl/LwjglHardwareKeyboard.java +++ b/fearless-render-core/src/main/java/se/fearlessgames/fear/input/hw/lwjgl/LwjglHardwareKeyboard.java @@ -2,6 +2,8 @@ import org.lwjgl.LWJGLException; import org.lwjgl.input.Keyboard; +import se.fearlessgames.fear.input.Key; +import se.fearlessgames.fear.input.LwjglKey; import se.fearlessgames.fear.input.hw.HardwareKeyboard; public class LwjglHardwareKeyboard implements HardwareKeyboard { @@ -22,8 +24,8 @@ public boolean next() { } @Override - public int eventKey() { - return Keyboard.getEventKey(); + public Key eventKey() { + return LwjglKey.findByKeyEventCode(Keyboard.getEventKey()); } @Override