AndroidKeyboardDevice.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. //using Android.InputMethodServices;
  2. using System.Collections.Generic;
  3. using Android.Views;
  4. using Avalonia.Input;
  5. namespace Avalonia.Android.Platform.Input
  6. {
  7. internal class AndroidKeyboardDevice : KeyboardDevice, IKeyboardDevice
  8. {
  9. private static readonly Dictionary<Keycode, Key> KeyDic = new Dictionary<Keycode, Key>
  10. {
  11. // { Keycode.Cancel?, Key.Cancel },
  12. { Keycode.Del, Key.Back },
  13. { Keycode.Tab, Key.Tab },
  14. // { Keycode.Linefeed?, Key.LineFeed },
  15. { Keycode.Clear, Key.Clear },
  16. { Keycode.Enter, Key.Return },
  17. { Keycode.MediaPause, Key.Pause },
  18. { Keycode.CapsLock, Key.CapsLock },
  19. //{ Keycode.?, Key.HangulMode }
  20. //{ Keycode.?, Key.JunjaMode }
  21. //{ Keycode.?, Key.FinalMode }
  22. //{ Keycode.?, Key.KanjiMode }
  23. { Keycode.Escape, Key.Escape },
  24. //{ Keycode.?, Key.ImeConvert }
  25. //{ Keycode.?, Key.ImeNonConvert }
  26. //{ Keycode.?, Key.ImeAccept }
  27. //{ Keycode.?, Key.ImeModeChange }
  28. { Keycode.Space, Key.Space },
  29. { Keycode.PageUp, Key.Prior },
  30. { Keycode.PageDown, Key.PageDown },
  31. { Keycode.MoveEnd, Key.End },
  32. { Keycode.MoveHome, Key.Home },
  33. { Keycode.DpadLeft, Key.Left },
  34. { Keycode.DpadUp, Key.Up },
  35. { Keycode.DpadRight, Key.Right },
  36. { Keycode.DpadDown, Key.Down },
  37. // { Keycode.ButtonSelect?, Key.Select },
  38. // { Keycode.print?, Key.Print },
  39. //{ Keycode.execute?, Key.Execute },
  40. //{ Keycode.snap?, Key.Snapshot }
  41. { Keycode.Insert, Key.Insert },
  42. { Keycode.ForwardDel, Key.Delete },
  43. { Keycode.Help, Key.Help },
  44. { Keycode.Num0, Key.D0 },
  45. { Keycode.Num1, Key.D1 },
  46. { Keycode.Num2, Key.D2 },
  47. { Keycode.Num3, Key.D3 },
  48. { Keycode.Num4, Key.D4 },
  49. { Keycode.Num5, Key.D5 },
  50. { Keycode.Num6, Key.D6 },
  51. { Keycode.Num7, Key.D7 },
  52. { Keycode.Num8, Key.D8 },
  53. { Keycode.Num9, Key.D9 },
  54. { Keycode.A, Key.A },
  55. { Keycode.B, Key.B },
  56. { Keycode.C, Key.C },
  57. { Keycode.D, Key.D },
  58. { Keycode.E, Key.E },
  59. { Keycode.F, Key.F },
  60. { Keycode.G, Key.G },
  61. { Keycode.H, Key.H },
  62. { Keycode.I, Key.I },
  63. { Keycode.J, Key.J },
  64. { Keycode.K, Key.K },
  65. { Keycode.L, Key.L },
  66. { Keycode.M, Key.M },
  67. { Keycode.N, Key.N },
  68. { Keycode.O, Key.O },
  69. { Keycode.P, Key.P },
  70. { Keycode.Q, Key.Q },
  71. { Keycode.R, Key.R },
  72. { Keycode.S, Key.S },
  73. { Keycode.T, Key.T },
  74. { Keycode.U, Key.U },
  75. { Keycode.V, Key.V },
  76. { Keycode.W, Key.W },
  77. { Keycode.X, Key.X },
  78. { Keycode.Y, Key.Y },
  79. { Keycode.Z, Key.Z },
  80. //{ Keycode.a, Key.A },
  81. //{ Keycode.b, Key.B },
  82. //{ Keycode.c, Key.C },
  83. //{ Keycode.d, Key.D },
  84. //{ Keycode.e, Key.E },
  85. //{ Keycode.f, Key.F },
  86. //{ Keycode.g, Key.G },
  87. //{ Keycode.h, Key.H },
  88. //{ Keycode.i, Key.I },
  89. //{ Keycode.j, Key.J },
  90. //{ Keycode.k, Key.K },
  91. //{ Keycode.l, Key.L },
  92. //{ Keycode.m, Key.M },
  93. //{ Keycode.n, Key.N },
  94. //{ Keycode.o, Key.O },
  95. //{ Keycode.p, Key.P },
  96. //{ Keycode.q, Key.Q },
  97. //{ Keycode.r, Key.R },
  98. //{ Keycode.s, Key.S },
  99. //{ Keycode.t, Key.T },
  100. //{ Keycode.u, Key.U },
  101. //{ Keycode.v, Key.V },
  102. //{ Keycode.w, Key.W },
  103. //{ Keycode.x, Key.X },
  104. //{ Keycode.y, Key.Y },
  105. //{ Keycode.z, Key.Z },
  106. //{ Keycode.?, Key.LWin }
  107. //{ Keycode.?, Key.RWin }
  108. //{ Keycode.?, Key.Apps }
  109. { Keycode.Sleep, Key.Sleep },
  110. { Keycode.Numpad0, Key.NumPad0 },
  111. { Keycode.Numpad1, Key.NumPad1 },
  112. { Keycode.Numpad2, Key.NumPad2 },
  113. { Keycode.Numpad3, Key.NumPad3 },
  114. { Keycode.Numpad4, Key.NumPad4 },
  115. { Keycode.Numpad5, Key.NumPad5 },
  116. { Keycode.Numpad6, Key.NumPad6 },
  117. { Keycode.Numpad7, Key.NumPad7 },
  118. { Keycode.Numpad8, Key.NumPad8 },
  119. { Keycode.Numpad9, Key.NumPad9 },
  120. { Keycode.NumpadMultiply, Key.Multiply },
  121. { Keycode.NumpadAdd, Key.Add },
  122. { Keycode.NumpadComma, Key.Separator },
  123. { Keycode.NumpadSubtract, Key.Subtract },
  124. { Keycode.NumpadDot, Key.Decimal },
  125. { Keycode.NumpadDivide, Key.Divide },
  126. { Keycode.F1, Key.F1 },
  127. { Keycode.F2, Key.F2 },
  128. { Keycode.F3, Key.F3 },
  129. { Keycode.F4, Key.F4 },
  130. { Keycode.F5, Key.F5 },
  131. { Keycode.F6, Key.F6 },
  132. { Keycode.F7, Key.F7 },
  133. { Keycode.F8, Key.F8 },
  134. { Keycode.F9, Key.F9 },
  135. { Keycode.F10, Key.F10 },
  136. { Keycode.F11, Key.F11 },
  137. { Keycode.F12, Key.F12 },
  138. //{ Keycode.f13, Key.F13 },
  139. //{ Keycode.F14, Key.F14 },
  140. //{ Keycode.L5, Key.F15 },
  141. //{ Keycode.F16, Key.F16 },
  142. //{ Keycode.F17, Key.F17 },
  143. //{ Keycode.L8, Key.F18 },
  144. //{ Keycode.L9, Key.F19 },
  145. //{ Keycode.L10, Key.F20 },
  146. //{ Keycode.R1, Key.F21 },
  147. //{ Keycode.R2, Key.F22 },
  148. //{ Keycode.F23, Key.F23 },
  149. //{ Keycode.R4, Key.F24 },
  150. { Keycode.NumLock, Key.NumLock },
  151. { Keycode.ScrollLock, Key.Scroll },
  152. { Keycode.ShiftLeft, Key.LeftShift },
  153. { Keycode.ShiftRight, Key.RightShift },
  154. { Keycode.CtrlLeft, Key.LeftCtrl },
  155. { Keycode.CtrlRight, Key.RightCtrl },
  156. { Keycode.AltLeft, Key.LeftAlt },
  157. { Keycode.AltRight, Key.RightAlt },
  158. //{ Keycode.?, Key.BrowserBack }
  159. //{ Keycode.?, Key.BrowserForward }
  160. //{ Keycode.?, Key.BrowserRefresh }
  161. //{ Keycode.?, Key.BrowserStop }
  162. //{ Keycode.?, Key.BrowserSearch }
  163. //{ Keycode.?, Key.BrowserFavorites }
  164. //{ Keycode.?, Key.BrowserHome }
  165. //{ Keycode.?, Key.VolumeMute }
  166. { Keycode.VolumeDown, Key.VolumeDown },
  167. { Keycode.VolumeUp, Key.VolumeUp },
  168. { Keycode.MediaNext, Key.MediaNextTrack },
  169. { Keycode.MediaPrevious, Key.MediaPreviousTrack },
  170. { Keycode.MediaStop, Key.MediaStop },
  171. { Keycode.MediaPlayPause, Key.MediaPlayPause },
  172. //{ Keycode.?, Key.LaunchMail }
  173. //{ Keycode.?, Key.SelectMedia }
  174. //{ Keycode.?, Key.LaunchApplication1 }
  175. //{ Keycode.?, Key.LaunchApplication2 }
  176. { Keycode.Semicolon, Key.OemSemicolon },
  177. { Keycode.Plus, Key.OemPlus },
  178. { Keycode.Comma, Key.OemComma },
  179. { Keycode.Minus, Key.OemMinus },
  180. { Keycode.Period, Key.OemPeriod },
  181. //{ Keycode.?, Key.Oem2 }
  182. { Keycode.Grave, Key.OemTilde },
  183. //{ Keycode.?, Key.AbntC1 }
  184. //{ Keycode.?, Key.AbntC2 }
  185. //{ Keycode.?, Key.OemPipe }
  186. { Keycode.Apostrophe, Key.OemQuotes },
  187. { Keycode.Slash, Key.OemQuestion },
  188. { Keycode.LeftBracket, Key.OemOpenBrackets },
  189. { Keycode.RightBracket, Key.OemCloseBrackets },
  190. //{ Keycode.?, Key.Oem7 }
  191. //{ Keycode.?, Key.Oem8 }
  192. //{ Keycode.?, Key.Oem102 }
  193. //{ Keycode.?, Key.ImeProcessed }
  194. //{ Keycode.?, Key.System }
  195. //{ Keycode.?, Key.OemAttn }
  196. //{ Keycode.?, Key.OemFinish }
  197. //{ Keycode.?, Key.DbeHiragana }
  198. //{ Keycode.?, Key.OemAuto }
  199. //{ Keycode.?, Key.DbeDbcsChar }
  200. //{ Keycode.?, Key.OemBackTab }
  201. //{ Keycode.?, Key.Attn }
  202. //{ Keycode.?, Key.DbeEnterWordRegisterMode }
  203. //{ Keycode.?, Key.DbeEnterImeConfigureMode }
  204. //{ Keycode.?, Key.EraseEof }
  205. { Keycode.MediaPlay, Key.Play },
  206. //{ Keycode.?, Key.Zoom }
  207. //{ Keycode.?, Key.NoName }
  208. //{ Keycode.?, Key.DbeEnterDialogConversionMode }
  209. //{ Keycode.?, Key.OemClear }
  210. //{ Keycode.?, Key.DeadCharProcessed }
  211. { Keycode.Backslash, Key.OemBackslash }
  212. };
  213. internal static Key ConvertKey(Keycode key)
  214. {
  215. return KeyDic.TryGetValue(key, out var result) ? result : Key.None;
  216. }
  217. }
  218. }