123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- using System.Collections.Generic;
- using UnityEngine;
- namespace ZenFulcrum.EmbeddedBrowser {
- static class KeyMappings {
- private static Dictionary<KeyCode, int> mappings = new Dictionary<KeyCode, int>() {
- //I'm not gonna lie. I just opened http://www.w3.org/2002/09/tests/keys.html
- //and copied down the values my keyboard produced. >_<
- {KeyCode.Escape, 27},
- {KeyCode.F1, 112},
- {KeyCode.F2, 113},
- {KeyCode.F3, 114},
- {KeyCode.F4, 115},
- {KeyCode.F5, 116},
- {KeyCode.F6, 117},
- {KeyCode.F7, 118},
- {KeyCode.F8, 119},
- {KeyCode.F9, 120},
- {KeyCode.F10, 121},
- {KeyCode.F11, 122},
- {KeyCode.F12, 123},
- {KeyCode.SysReq, 44}, {KeyCode.Print, 44},
- {KeyCode.ScrollLock, 145},
- {KeyCode.Pause, 19},
- {KeyCode.BackQuote, 192},
- {KeyCode.Alpha0, 48},
- {KeyCode.Alpha1, 49},
- {KeyCode.Alpha2, 50},
- {KeyCode.Alpha3, 51},
- {KeyCode.Alpha4, 52},
- {KeyCode.Alpha5, 53},
- {KeyCode.Alpha6, 54},
- {KeyCode.Alpha7, 55},
- {KeyCode.Alpha8, 56},
- {KeyCode.Alpha9, 57},
- {KeyCode.Minus, 189},
- {KeyCode.Equals, 187},
- {KeyCode.Backspace, 8},
- {KeyCode.Tab, 9},
- //char keys
- {KeyCode.LeftBracket, 219},
- {KeyCode.RightBracket, 221},
- {KeyCode.Backslash, 220},
- {KeyCode.CapsLock, 20},
- //char keys
- {KeyCode.Semicolon, 186},
- {KeyCode.Quote, 222},
- {KeyCode.Return, 13},
- {KeyCode.LeftShift, 16},
- //char keys
- {KeyCode.Comma, 188},
- {KeyCode.Period, 190},
- {KeyCode.Slash, 191},
- {KeyCode.RightShift, 16},
- {KeyCode.LeftControl, 17},
- {KeyCode.LeftCommand, 91}, {KeyCode.LeftWindows, 91},
- {KeyCode.LeftAlt, 18},
- {KeyCode.Space, 32},
- {KeyCode.RightAlt, 18},
- {KeyCode.RightCommand, 92}, {KeyCode.RightWindows, 92},
- {KeyCode.Menu, 93},
- {KeyCode.RightControl, 17},
- {KeyCode.Insert, 45},
- {KeyCode.Home, 36},
- {KeyCode.PageUp, 33},
- {KeyCode.Delete, 46},
- {KeyCode.End, 35},
- {KeyCode.PageDown, 34},
- {KeyCode.UpArrow, 38},
- {KeyCode.LeftArrow, 37},
- {KeyCode.DownArrow, 40},
- {KeyCode.RightArrow, 39},
- {KeyCode.Numlock, 144},
- {KeyCode.KeypadDivide, 111},
- {KeyCode.KeypadMultiply, 106},
- {KeyCode.KeypadMinus, 109},
-
- {KeyCode.Keypad7, 103},
- {KeyCode.Keypad8, 104},
- {KeyCode.Keypad9, 105},
- {KeyCode.KeypadPlus, 107},
- {KeyCode.Keypad4, 100},
- {KeyCode.Keypad5, 101},
- {KeyCode.Keypad6, 102},
- {KeyCode.Keypad1, 97},
- {KeyCode.Keypad2, 98},
- {KeyCode.Keypad3, 99},
- {KeyCode.KeypadEnter, 13},
- {KeyCode.Keypad0, 96},
- {KeyCode.KeypadPeriod, 110},
- };
- private static Dictionary<int, KeyCode> reverseMappings = new Dictionary<int, KeyCode>();
- static KeyMappings() {
- foreach (var kvp in mappings) {
- reverseMappings[kvp.Value] = kvp.Key;
- }
- for (int i = (int)KeyCode.A; i <= (int)KeyCode.Z; i++) {
- var key = (KeyCode)i;
- var keyCode = i - (int)KeyCode.A + 65;
- mappings[key] = keyCode;
- reverseMappings[keyCode] = key;
- }
- }
- public static int GetWindowsKeyCode(Event ev) {
- int ukc = (int)ev.keyCode;//unity key code
- //When dealing with characters return the Unicode char as the keycode.
- if (ukc == 0) {
- //enter is special.
- if (ev.character == 10) return 13;
- return ev.character;
- }
- // if (ukc >= (int)KeyCode.A && ukc <= (int)KeyCode.Z) {
- // return ukc - (int)KeyCode.A + 65;
- // }
- int ret;
- if (mappings.TryGetValue(ev.keyCode, out ret)) {
- return ret;
- }
- //Don't recognize it, we'll just have to return something, but it's almost sure to be wrong.
- Debug.LogWarning("Unknown key mapping: " + ev);
- return ukc;
- }
- public static KeyCode GetUnityKeyCode(int windowsKeyCode) {
- KeyCode ret;
- if (reverseMappings.TryGetValue(windowsKeyCode, out ret)) return ret;
- return 0;
- }
- }
- }
|