From 71aca04e511b7c2622bcf7db4e9eb8c63148f4c5 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 5 Mar 2020 10:54:29 +0100 Subject: [PATCH] Improve platform display of KeyGesture. --- .../Converters/PlatformKeyGestureConverter.cs | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Converters/PlatformKeyGestureConverter.cs b/src/Avalonia.Controls/Converters/PlatformKeyGestureConverter.cs index 32521f6532..5ee96c73d5 100644 --- a/src/Avalonia.Controls/Converters/PlatformKeyGestureConverter.cs +++ b/src/Avalonia.Controls/Converters/PlatformKeyGestureConverter.cs @@ -81,7 +81,7 @@ namespace Avalonia.Controls.Converters } Plus(s); - s.Append(gesture.Key); + s.Append(ToString(gesture.Key)); return s.ToString(); } @@ -110,9 +110,64 @@ namespace Avalonia.Controls.Converters s.Append('⌘'); } - s.Append(gesture.Key); + s.Append(ToOSXString(gesture.Key)); return s.ToString(); } + + private static string ToString(Key key) + { + return key switch + { + Key.Add => "+", + Key.Back => "Backspace", + Key.D0 => "0", + Key.D1 => "1", + Key.D2 => "2", + Key.D3 => "3", + Key.D4 => "4", + Key.D5 => "5", + Key.D6 => "6", + Key.D7 => "7", + Key.D8 => "8", + Key.D9 => "9", + Key.Divide => "/", + Key.OemBackslash => "\\", + Key.OemCloseBrackets => "]", + Key.OemComma => ",", + Key.OemMinus => "-", + Key.OemOpenBrackets => "[", + Key.OemPeriod=> ".", + Key.OemPipe => "|", + Key.OemPlus => "+", + Key.OemQuestion => "/", + Key.OemQuotes => "\"", + Key.OemSemicolon => ";", + Key.OemTilde => "`", + Key.Subtract => "-", + _ => key.ToString(), + }; + } + + private static string ToOSXString(Key key) + { + return key switch + { + Key.Back => "⌫", + Key.Down => "↓", + Key.End => "↘", + Key.Escape => "⎋", + Key.Home => "↖", + Key.Left => "←", + Key.Return => "↩", + Key.PageDown => "⇞", + Key.PageUp => "⇟", + Key.Right => "→", + Key.Space => "␣", + Key.Tab => "⇥", + Key.Up => "↑", + _ => ToString(key), + }; + } } }