KeyTransform.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. using System.Collections.Generic;
  2. using Avalonia.Gtk3;
  3. using Avalonia.Input;
  4. namespace Avalonia.Gtk.Common
  5. {
  6. static class KeyTransform
  7. {
  8. private static readonly Dictionary<GdkKey, Key> KeyDic = new Dictionary<GdkKey, Key>
  9. {
  10. { GdkKey.Cancel, Key.Cancel },
  11. { GdkKey.BackSpace, Key.Back },
  12. { GdkKey.Tab, Key.Tab },
  13. { GdkKey.Linefeed, Key.LineFeed },
  14. { GdkKey.Clear, Key.Clear },
  15. { GdkKey.Return, Key.Return },
  16. { GdkKey.KP_Enter, Key.Return },
  17. { GdkKey.Pause, Key.Pause },
  18. { GdkKey.Caps_Lock, Key.CapsLock },
  19. //{ GdkKey.?, Key.HangulMode }
  20. //{ GdkKey.?, Key.JunjaMode }
  21. //{ GdkKey.?, Key.FinalMode }
  22. //{ GdkKey.?, Key.KanjiMode }
  23. { GdkKey.Escape, Key.Escape },
  24. //{ GdkKey.?, Key.ImeConvert }
  25. //{ GdkKey.?, Key.ImeNonConvert }
  26. //{ GdkKey.?, Key.ImeAccept }
  27. //{ GdkKey.?, Key.ImeModeChange }
  28. { GdkKey.space, Key.Space },
  29. { GdkKey.Prior, Key.Prior },
  30. { GdkKey.KP_Prior, Key.Prior },
  31. { GdkKey.Page_Down, Key.PageDown },
  32. { GdkKey.KP_Page_Down, Key.PageDown },
  33. { GdkKey.End, Key.End },
  34. { GdkKey.KP_End, Key.End },
  35. { GdkKey.Home, Key.Home },
  36. { GdkKey.KP_Home, Key.Home },
  37. { GdkKey.Left, Key.Left },
  38. { GdkKey.KP_Left, Key.Left },
  39. { GdkKey.Up, Key.Up },
  40. { GdkKey.KP_Up, Key.Up },
  41. { GdkKey.Right, Key.Right },
  42. { GdkKey.KP_Right, Key.Right },
  43. { GdkKey.Down, Key.Down },
  44. { GdkKey.KP_Down, Key.Down },
  45. { GdkKey.Select, Key.Select },
  46. { GdkKey.Print, Key.Print },
  47. { GdkKey.Execute, Key.Execute },
  48. //{ GdkKey.?, Key.Snapshot }
  49. { GdkKey.Insert, Key.Insert },
  50. { GdkKey.KP_Insert, Key.Insert },
  51. { GdkKey.Delete, Key.Delete },
  52. { GdkKey.KP_Delete, Key.Delete },
  53. { GdkKey.Help, Key.Help },
  54. { GdkKey.Key_0, Key.D0 },
  55. { GdkKey.Key_1, Key.D1 },
  56. { GdkKey.Key_2, Key.D2 },
  57. { GdkKey.Key_3, Key.D3 },
  58. { GdkKey.Key_4, Key.D4 },
  59. { GdkKey.Key_5, Key.D5 },
  60. { GdkKey.Key_6, Key.D6 },
  61. { GdkKey.Key_7, Key.D7 },
  62. { GdkKey.Key_8, Key.D8 },
  63. { GdkKey.Key_9, Key.D9 },
  64. { GdkKey.A, Key.A },
  65. { GdkKey.B, Key.B },
  66. { GdkKey.C, Key.C },
  67. { GdkKey.D, Key.D },
  68. { GdkKey.E, Key.E },
  69. { GdkKey.F, Key.F },
  70. { GdkKey.G, Key.G },
  71. { GdkKey.H, Key.H },
  72. { GdkKey.I, Key.I },
  73. { GdkKey.J, Key.J },
  74. { GdkKey.K, Key.K },
  75. { GdkKey.L, Key.L },
  76. { GdkKey.M, Key.M },
  77. { GdkKey.N, Key.N },
  78. { GdkKey.O, Key.O },
  79. { GdkKey.P, Key.P },
  80. { GdkKey.Q, Key.Q },
  81. { GdkKey.R, Key.R },
  82. { GdkKey.S, Key.S },
  83. { GdkKey.T, Key.T },
  84. { GdkKey.U, Key.U },
  85. { GdkKey.V, Key.V },
  86. { GdkKey.W, Key.W },
  87. { GdkKey.X, Key.X },
  88. { GdkKey.Y, Key.Y },
  89. { GdkKey.Z, Key.Z },
  90. { GdkKey.a, Key.A },
  91. { GdkKey.b, Key.B },
  92. { GdkKey.c, Key.C },
  93. { GdkKey.d, Key.D },
  94. { GdkKey.e, Key.E },
  95. { GdkKey.f, Key.F },
  96. { GdkKey.g, Key.G },
  97. { GdkKey.h, Key.H },
  98. { GdkKey.i, Key.I },
  99. { GdkKey.j, Key.J },
  100. { GdkKey.k, Key.K },
  101. { GdkKey.l, Key.L },
  102. { GdkKey.m, Key.M },
  103. { GdkKey.n, Key.N },
  104. { GdkKey.o, Key.O },
  105. { GdkKey.p, Key.P },
  106. { GdkKey.q, Key.Q },
  107. { GdkKey.r, Key.R },
  108. { GdkKey.s, Key.S },
  109. { GdkKey.t, Key.T },
  110. { GdkKey.u, Key.U },
  111. { GdkKey.v, Key.V },
  112. { GdkKey.w, Key.W },
  113. { GdkKey.x, Key.X },
  114. { GdkKey.y, Key.Y },
  115. { GdkKey.z, Key.Z },
  116. //{ GdkKey.?, Key.LWin }
  117. //{ GdkKey.?, Key.RWin }
  118. { GdkKey.Menu, Key.Apps },
  119. //{ GdkKey.?, Key.Sleep }
  120. { GdkKey.KP_0, Key.NumPad0 },
  121. { GdkKey.KP_1, Key.NumPad1 },
  122. { GdkKey.KP_2, Key.NumPad2 },
  123. { GdkKey.KP_3, Key.NumPad3 },
  124. { GdkKey.KP_4, Key.NumPad4 },
  125. { GdkKey.KP_5, Key.NumPad5 },
  126. { GdkKey.KP_6, Key.NumPad6 },
  127. { GdkKey.KP_7, Key.NumPad7 },
  128. { GdkKey.KP_8, Key.NumPad8 },
  129. { GdkKey.KP_9, Key.NumPad9 },
  130. { GdkKey.multiply, Key.Multiply },
  131. { GdkKey.KP_Multiply, Key.Multiply },
  132. { GdkKey.KP_Add, Key.Add },
  133. //{ GdkKey.?, Key.Separator }
  134. { GdkKey.KP_Subtract, Key.Subtract },
  135. { GdkKey.KP_Decimal, Key.Decimal },
  136. { GdkKey.KP_Divide, Key.Divide },
  137. { GdkKey.F1, Key.F1 },
  138. { GdkKey.F2, Key.F2 },
  139. { GdkKey.F3, Key.F3 },
  140. { GdkKey.F4, Key.F4 },
  141. { GdkKey.F5, Key.F5 },
  142. { GdkKey.F6, Key.F6 },
  143. { GdkKey.F7, Key.F7 },
  144. { GdkKey.F8, Key.F8 },
  145. { GdkKey.F9, Key.F9 },
  146. { GdkKey.F10, Key.F10 },
  147. { GdkKey.F11, Key.F11 },
  148. { GdkKey.F12, Key.F12 },
  149. { GdkKey.L3, Key.F13 },
  150. { GdkKey.F14, Key.F14 },
  151. { GdkKey.L5, Key.F15 },
  152. { GdkKey.F16, Key.F16 },
  153. { GdkKey.F17, Key.F17 },
  154. { GdkKey.L8, Key.F18 },
  155. { GdkKey.L9, Key.F19 },
  156. { GdkKey.L10, Key.F20 },
  157. { GdkKey.R1, Key.F21 },
  158. { GdkKey.R2, Key.F22 },
  159. { GdkKey.F23, Key.F23 },
  160. { GdkKey.R4, Key.F24 },
  161. { GdkKey.Num_Lock, Key.NumLock },
  162. { GdkKey.Scroll_Lock, Key.Scroll },
  163. { GdkKey.Shift_L, Key.LeftShift },
  164. { GdkKey.Shift_R, Key.RightShift },
  165. { GdkKey.Control_L, Key.LeftCtrl },
  166. { GdkKey.Control_R, Key.RightCtrl },
  167. { GdkKey.Alt_L, Key.LeftAlt },
  168. { GdkKey.Alt_R, Key.RightAlt },
  169. //{ GdkKey.?, Key.BrowserBack }
  170. //{ GdkKey.?, Key.BrowserForward }
  171. //{ GdkKey.?, Key.BrowserRefresh }
  172. //{ GdkKey.?, Key.BrowserStop }
  173. //{ GdkKey.?, Key.BrowserSearch }
  174. //{ GdkKey.?, Key.BrowserFavorites }
  175. //{ GdkKey.?, Key.BrowserHome }
  176. //{ GdkKey.?, Key.VolumeMute }
  177. //{ GdkKey.?, Key.VolumeDown }
  178. //{ GdkKey.?, Key.VolumeUp }
  179. //{ GdkKey.?, Key.MediaNextTrack }
  180. //{ GdkKey.?, Key.MediaPreviousTrack }
  181. //{ GdkKey.?, Key.MediaStop }
  182. //{ GdkKey.?, Key.MediaPlayPause }
  183. //{ GdkKey.?, Key.LaunchMail }
  184. //{ GdkKey.?, Key.SelectMedia }
  185. //{ GdkKey.?, Key.LaunchApplication1 }
  186. //{ GdkKey.?, Key.LaunchApplication2 }
  187. { GdkKey.semicolon, Key.OemSemicolon },
  188. { GdkKey.plus, Key.OemPlus },
  189. { GdkKey.equal, Key.OemPlus },
  190. { GdkKey.comma, Key.OemComma },
  191. { GdkKey.minus, Key.OemMinus },
  192. { GdkKey.period, Key.OemPeriod },
  193. { GdkKey.slash, Key.Oem2 },
  194. { GdkKey.grave, Key.OemTilde },
  195. //{ GdkKey.?, Key.AbntC1 }
  196. //{ GdkKey.?, Key.AbntC2 }
  197. { GdkKey.bracketleft, Key.OemOpenBrackets },
  198. { GdkKey.backslash, Key.OemPipe },
  199. { GdkKey.bracketright, Key.OemCloseBrackets },
  200. { GdkKey.apostrophe, Key.OemQuotes },
  201. //{ GdkKey.?, Key.Oem8 }
  202. //{ GdkKey.?, Key.Oem102 }
  203. //{ GdkKey.?, Key.ImeProcessed }
  204. //{ GdkKey.?, Key.System }
  205. //{ GdkKey.?, Key.OemAttn }
  206. //{ GdkKey.?, Key.OemFinish }
  207. //{ GdkKey.?, Key.DbeHiragana }
  208. //{ GdkKey.?, Key.OemAuto }
  209. //{ GdkKey.?, Key.DbeDbcsChar }
  210. //{ GdkKey.?, Key.OemBackTab }
  211. //{ GdkKey.?, Key.Attn }
  212. //{ GdkKey.?, Key.DbeEnterWordRegisterMode }
  213. //{ GdkKey.?, Key.DbeEnterImeConfigureMode }
  214. //{ GdkKey.?, Key.EraseEof }
  215. //{ GdkKey.?, Key.Play }
  216. //{ GdkKey.?, Key.Zoom }
  217. //{ GdkKey.?, Key.NoName }
  218. //{ GdkKey.?, Key.DbeEnterDialogConversionMode }
  219. //{ GdkKey.?, Key.OemClear }
  220. //{ GdkKey.?, Key.DeadCharProcessed }
  221. };
  222. public static Key ConvertKey(GdkKey key)
  223. {
  224. Key result;
  225. return KeyDic.TryGetValue(key, out result) ? result : Key.None;
  226. }
  227. }
  228. }