Browse Source

Merge pull request #11481 from AvaloniaUI/emmaus/android_keycodes

Android - Add more android keycode support
pull/11495/head
Max Katz 3 years ago
committed by GitHub
parent
commit
c8363b052c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 112
      src/Android/Avalonia.Android/Platform/Input/AndroidKeyboardDevice.cs

112
src/Android/Avalonia.Android/Platform/Input/AndroidKeyboardDevice.cs

@ -5,8 +5,9 @@ using Avalonia.Input;
namespace Avalonia.Android.Platform.Input namespace Avalonia.Android.Platform.Input
{ {
internal class AndroidKeyboardDevice : KeyboardDevice, IKeyboardDevice { internal class AndroidKeyboardDevice : KeyboardDevice, IKeyboardDevice
private static readonly Dictionary<Keycode, Key> KeyDic = new Dictionary<Keycode, Key> {
private static readonly Dictionary<Keycode, Key> KeyDic = new Dictionary<Keycode, Key>
{ {
// { Keycode.Cancel?, Key.Cancel }, // { Keycode.Cancel?, Key.Cancel },
{ Keycode.Del, Key.Back }, { Keycode.Del, Key.Back },
@ -15,7 +16,7 @@ namespace Avalonia.Android.Platform.Input
{ Keycode.Clear, Key.Clear }, { Keycode.Clear, Key.Clear },
{ Keycode.Enter, Key.Return }, { Keycode.Enter, Key.Return },
{ Keycode.MediaPause, Key.Pause }, { Keycode.MediaPause, Key.Pause },
//{ Keycode.?, Key.CapsLock } { Keycode.CapsLock, Key.CapsLock },
//{ Keycode.?, Key.HangulMode } //{ Keycode.?, Key.HangulMode }
//{ Keycode.?, Key.JunjaMode } //{ Keycode.?, Key.JunjaMode }
//{ Keycode.?, Key.FinalMode } //{ Keycode.?, Key.FinalMode }
@ -28,8 +29,8 @@ namespace Avalonia.Android.Platform.Input
{ Keycode.Space, Key.Space }, { Keycode.Space, Key.Space },
{ Keycode.PageUp, Key.Prior }, { Keycode.PageUp, Key.Prior },
{ Keycode.PageDown, Key.PageDown }, { Keycode.PageDown, Key.PageDown },
// { Keycode.end?, Key.End }, { Keycode.MoveEnd, Key.End },
{ Keycode.Home, Key.Home }, { Keycode.MoveHome, Key.Home },
{ Keycode.DpadLeft, Key.Left }, { Keycode.DpadLeft, Key.Left },
{ Keycode.DpadUp, Key.Up }, { Keycode.DpadUp, Key.Up },
{ Keycode.DpadRight, Key.Right }, { Keycode.DpadRight, Key.Right },
@ -37,20 +38,20 @@ namespace Avalonia.Android.Platform.Input
// { Keycode.ButtonSelect?, Key.Select }, // { Keycode.ButtonSelect?, Key.Select },
// { Keycode.print?, Key.Print }, // { Keycode.print?, Key.Print },
//{ Keycode.execute?, Key.Execute }, //{ Keycode.execute?, Key.Execute },
// { Keycode.snap, Key.Snapshot } //{ Keycode.snap?, Key.Snapshot }
{ Keycode.Insert, Key.Insert }, { Keycode.Insert, Key.Insert },
{ Keycode.ForwardDel, Key.Delete }, { Keycode.ForwardDel, Key.Delete },
//{ Keycode.help, Key.Help }, { Keycode.Help, Key.Help },
//{ Keycode.?, Key.D0 } { Keycode.Num0, Key.D0 },
//{ Keycode.?, Key.D1 } { Keycode.Num1, Key.D1 },
//{ Keycode.?, Key.D2 } { Keycode.Num2, Key.D2 },
//{ Keycode.?, Key.D3 } { Keycode.Num3, Key.D3 },
//{ Keycode.?, Key.D4 } { Keycode.Num4, Key.D4 },
//{ Keycode.?, Key.D5 } { Keycode.Num5, Key.D5 },
//{ Keycode.?, Key.D6 } { Keycode.Num6, Key.D6 },
//{ Keycode.?, Key.D7 } { Keycode.Num7, Key.D7 },
//{ Keycode.?, Key.D8 } { Keycode.Num8, Key.D8 },
//{ Keycode.?, Key.D9 } { Keycode.Num9, Key.D9 },
{ Keycode.A, Key.A }, { Keycode.A, Key.A },
{ Keycode.B, Key.B }, { Keycode.B, Key.B },
{ Keycode.C, Key.C }, { Keycode.C, Key.C },
@ -106,22 +107,22 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.?, Key.LWin } //{ Keycode.?, Key.LWin }
//{ Keycode.?, Key.RWin } //{ Keycode.?, Key.RWin }
//{ Keycode.?, Key.Apps } //{ Keycode.?, Key.Apps }
//{ Keycode.?, Key.Sleep } { Keycode.Sleep, Key.Sleep },
//{ Keycode.?, Key.NumPad0 } { Keycode.Numpad0, Key.NumPad0 },
//{ Keycode.?, Key.NumPad1 } { Keycode.Numpad1, Key.NumPad1 },
//{ Keycode.?, Key.NumPad2 } { Keycode.Numpad2, Key.NumPad2 },
//{ Keycode.?, Key.NumPad3 } { Keycode.Numpad3, Key.NumPad3 },
//{ Keycode.?, Key.NumPad4 } { Keycode.Numpad4, Key.NumPad4 },
//{ Keycode.?, Key.NumPad5 } { Keycode.Numpad5, Key.NumPad5 },
//{ Keycode.?, Key.NumPad6 } { Keycode.Numpad6, Key.NumPad6 },
//{ Keycode.?, Key.NumPad7 } { Keycode.Numpad7, Key.NumPad7 },
//{ Keycode.?, Key.NumPad8 } { Keycode.Numpad8, Key.NumPad8 },
//{ Keycode.?, Key.NumPad9 } { Keycode.Numpad9, Key.NumPad9 },
{ Keycode.NumpadMultiply, Key.Multiply }, { Keycode.NumpadMultiply, Key.Multiply },
{ Keycode.NumpadAdd, Key.Add }, { Keycode.NumpadAdd, Key.Add },
{ Keycode.NumpadComma, Key.Separator }, { Keycode.NumpadComma, Key.Separator },
{ Keycode.NumpadSubtract, Key.Subtract }, { Keycode.NumpadSubtract, Key.Subtract },
//{ Keycode.numpaddecimal?, Key.Decimal } { Keycode.NumpadDot, Key.Decimal },
{ Keycode.NumpadDivide, Key.Divide }, { Keycode.NumpadDivide, Key.Divide },
{ Keycode.F1, Key.F1 }, { Keycode.F1, Key.F1 },
{ Keycode.F2, Key.F2 }, { Keycode.F2, Key.F2 },
@ -147,14 +148,14 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.R2, Key.F22 }, //{ Keycode.R2, Key.F22 },
//{ Keycode.F23, Key.F23 }, //{ Keycode.F23, Key.F23 },
//{ Keycode.R4, Key.F24 }, //{ Keycode.R4, Key.F24 },
// { Keycode.numpad, Key.NumLock } { Keycode.NumLock, Key.NumLock },
{ Keycode.ScrollLock, Key.Scroll }, { Keycode.ScrollLock, Key.Scroll },
{ Keycode.ShiftLeft, Key.LeftShift }, { Keycode.ShiftLeft, Key.LeftShift },
//{ Keycode.?, Key.RightShift } { Keycode.ShiftRight, Key.RightShift },
//{ Keycode.?, Key.LeftCtrl } { Keycode.CtrlLeft, Key.LeftCtrl },
//{ Keycode.?, Key.RightCtrl } { Keycode.CtrlRight, Key.RightCtrl },
//{ Keycode.?, Key.LeftAlt } { Keycode.AltLeft, Key.LeftAlt },
//{ Keycode.?, Key.RightAlt } { Keycode.AltRight, Key.RightAlt },
//{ Keycode.?, Key.BrowserBack } //{ Keycode.?, Key.BrowserBack }
//{ Keycode.?, Key.BrowserForward } //{ Keycode.?, Key.BrowserForward }
//{ Keycode.?, Key.BrowserRefresh } //{ Keycode.?, Key.BrowserRefresh }
@ -163,28 +164,30 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.?, Key.BrowserFavorites } //{ Keycode.?, Key.BrowserFavorites }
//{ Keycode.?, Key.BrowserHome } //{ Keycode.?, Key.BrowserHome }
//{ Keycode.?, Key.VolumeMute } //{ Keycode.?, Key.VolumeMute }
//{ Keycode.?, Key.VolumeDown } { Keycode.VolumeDown, Key.VolumeDown },
//{ Keycode.?, Key.VolumeUp } { Keycode.VolumeUp, Key.VolumeUp },
//{ Keycode.?, Key.MediaNextTrack } { Keycode.MediaNext, Key.MediaNextTrack },
//{ Keycode.?, Key.MediaPreviousTrack } { Keycode.MediaPrevious, Key.MediaPreviousTrack },
//{ Keycode.?, Key.MediaStop } { Keycode.MediaStop, Key.MediaStop },
//{ Keycode.?, Key.MediaPlayPause } { Keycode.MediaPlayPause, Key.MediaPlayPause },
//{ Keycode.?, Key.LaunchMail } //{ Keycode.?, Key.LaunchMail }
//{ Keycode.?, Key.SelectMedia } //{ Keycode.?, Key.SelectMedia }
//{ Keycode.?, Key.LaunchApplication1 } //{ Keycode.?, Key.LaunchApplication1 }
//{ Keycode.?, Key.LaunchApplication2 } //{ Keycode.?, Key.LaunchApplication2 }
//{ Keycode.?, Key.OemSemicolon } { Keycode.Semicolon, Key.OemSemicolon },
//{ Keycode.?, Key.OemPlus } { Keycode.Plus, Key.OemPlus },
//{ Keycode.?, Key.OemComma } { Keycode.Comma, Key.OemComma },
//{ Keycode.?, Key.OemMinus } { Keycode.Minus, Key.OemMinus },
//{ Keycode.?, Key.OemPeriod } { Keycode.Period, Key.OemPeriod },
//{ Keycode.?, Key.Oem2 } //{ Keycode.?, Key.Oem2 }
//{ Keycode.?, Key.OemTilde } { Keycode.Grave, Key.OemTilde },
//{ Keycode.?, Key.AbntC1 } //{ Keycode.?, Key.AbntC1 }
//{ Keycode.?, Key.AbntC2 } //{ Keycode.?, Key.AbntC2 }
//{ Keycode.?, Key.Oem4 }
//{ Keycode.?, Key.OemPipe } //{ Keycode.?, Key.OemPipe }
//{ Keycode.?, Key.OemCloseBrackets } { Keycode.Apostrophe, Key.OemQuotes },
{ Keycode.Slash, Key.OemQuestion },
{ Keycode.LeftBracket, Key.OemOpenBrackets },
{ Keycode.RightBracket, Key.OemCloseBrackets },
//{ Keycode.?, Key.Oem7 } //{ Keycode.?, Key.Oem7 }
//{ Keycode.?, Key.Oem8 } //{ Keycode.?, Key.Oem8 }
//{ Keycode.?, Key.Oem102 } //{ Keycode.?, Key.Oem102 }
@ -200,17 +203,18 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.?, Key.DbeEnterWordRegisterMode } //{ Keycode.?, Key.DbeEnterWordRegisterMode }
//{ Keycode.?, Key.DbeEnterImeConfigureMode } //{ Keycode.?, Key.DbeEnterImeConfigureMode }
//{ Keycode.?, Key.EraseEof } //{ Keycode.?, Key.EraseEof }
//{ Keycode.?, Key.Play } { Keycode.MediaPlay, Key.Play },
//{ Keycode.?, Key.Zoom } //{ Keycode.?, Key.Zoom }
//{ Keycode.?, Key.NoName } //{ Keycode.?, Key.NoName }
//{ Keycode.?, Key.DbeEnterDialogConversionMode } //{ Keycode.?, Key.DbeEnterDialogConversionMode }
//{ Keycode.?, Key.OemClear } //{ Keycode.?, Key.OemClear }
//{ Keycode.?, Key.DeadCharProcessed } //{ Keycode.?, Key.DeadCharProcessed }
{ Keycode.Backslash, Key.OemBackslash }
}; };
internal static Key ConvertKey(Keycode key) { internal static Key ConvertKey(Keycode key)
Key result; {
return KeyDic.TryGetValue(key, out result) ? result : Key.None; return KeyDic.TryGetValue(key, out var result) ? result : Key.None;
}
} }
}
} }

Loading…
Cancel
Save