import org.cef.browser.CefBrowser_N;
| 7 | import java.util.HashMap |
| 8 | import field.graphics.util.KeyEventMapping |
| 9 | import org.lwjgl.glfw.GLFW |
| 10 | import java.awt.event.KeyEvent |
| 11 | import java.lang.IllegalAccessException |
| 12 | import java.lang.ClassCastException |
| 13 | |
| 14 | //import org.cef.browser.CefBrowser_N; |
| 15 | class KeyEventMapping { |
| 16 | var keyCodes: BiMap<Int, Int> = HashBiMap.create() |
| 17 | var glfwModifiers: MutableSet<Int> = LinkedHashSet() |
| 18 | var forceTyped: Map<Int, Char> = LinkedHashMap() |
| 19 | fun translateCode(glfwcode: Int): Int? { |
| 20 | return keyCodes.inverse()[glfwcode] |
| 21 | } |
| 22 | |
| 23 | fun isModifier(glfwcode: Int): Boolean { |
| 24 | return glfwModifiers.contains(glfwcode) |
| 25 | } |
| 26 | |
| 27 | fun isForcedTyped(glfwcode: Int): Char? { |
| 28 | return forceTyped[glfwcode] |
| 29 | } |
| 30 | |
| 31 | companion object { |
| 32 | var lookupMap: HashMap<Int, String>? = null |
| 33 | @JvmStatic |
| 34 | fun lookup(num: Int): String? { |
| 35 | if (lookupMap == null) { |
| 36 | lookupMap = HashMap() |
| 37 | val ff = GLFW::class.java.fields |
| 38 | for (fff in ff) { |
| 39 | try { |
| 40 | if (fff.name |
| 41 | .startsWith("GLFW_KEY") |
| 42 | ) lookupMap!![(fff[null] as Number).toInt()] = fff.name |
| 43 | } catch (e: IllegalAccessException) { |
| 44 | } catch (e: ClassCastException) { |
| 45 | } |
| 46 | } |
| 47 | } |
| 48 | return lookupMap!![num] |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | init { |
| 53 | keyCodes[KeyEvent.VK_ENTER] = GLFW.GLFW_KEY_ENTER |
| 54 | keyCodes[KeyEvent.VK_UP] = GLFW.GLFW_KEY_UP |
| 55 | keyCodes[KeyEvent.VK_DOWN] = GLFW.GLFW_KEY_DOWN |
| 56 | keyCodes[KeyEvent.VK_LEFT] = GLFW.GLFW_KEY_LEFT |
| 57 | keyCodes[KeyEvent.VK_RIGHT] = GLFW.GLFW_KEY_RIGHT |
| 58 | keyCodes[KeyEvent.VK_PAGE_UP] = GLFW.GLFW_KEY_PAGE_UP |
| 59 | keyCodes[KeyEvent.VK_PAGE_DOWN] = GLFW.GLFW_KEY_PAGE_DOWN |
| 60 | keyCodes[KeyEvent.VK_ESCAPE] = GLFW.GLFW_KEY_ESCAPE |
| 61 | keyCodes[KeyEvent.VK_END] = GLFW.GLFW_KEY_END |
| 62 | keyCodes[KeyEvent.VK_HOME] = GLFW.GLFW_KEY_HOME |
| 63 | keyCodes[KeyEvent.VK_BACK_SPACE] = GLFW.GLFW_KEY_BACKSPACE |
| 64 | keyCodes[KeyEvent.VK_DELETE] = GLFW.GLFW_KEY_DELETE |
| 65 | keyCodes[KeyEvent.VK_TAB] = GLFW.GLFW_KEY_TAB |
| 66 | keyCodes[KeyEvent.VK_CONTROL] = GLFW.GLFW_KEY_LEFT_CONTROL |
no test coverage detected