KeyMappings.cs 3.6 KB

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