diff --git a/Disp/RenderingCanvas.cs b/Disp/RenderingCanvas.cs index 39bb2d4..dfa27ec 100644 --- a/Disp/RenderingCanvas.cs +++ b/Disp/RenderingCanvas.cs @@ -1,4 +1,4 @@ -using Hi.Disp; +using Hi.Disp; using Hi.Native; using Hi.PanelModels; using System; @@ -297,12 +297,52 @@ namespace Hi.WpfPlus.Disp #endregion #region Keyboard_Events + /// + /// Convert WPF Key to W3C KeyboardEvent.key string. + /// + static string WpfKeyToW3C(Key key) => key switch + { + Key.Home => "Home", + Key.End => "End", + Key.PageUp => "PageUp", + Key.PageDown => "PageDown", + Key.Left => "ArrowLeft", + Key.Right => "ArrowRight", + Key.Up => "ArrowUp", + Key.Down => "ArrowDown", + Key.LeftShift or Key.RightShift => "Shift", + Key.LeftCtrl or Key.RightCtrl => "Control", + Key.LeftAlt or Key.RightAlt => "Alt", + Key.Return => "Enter", + Key.Escape => "Escape", + Key.Back => "Backspace", + Key.Tab => "Tab", + Key.Delete => "Delete", + Key.Insert => "Insert", + Key.Space => " ", + Key.F1 => "F1", + Key.F2 => "F2", + Key.F3 => "F3", + Key.F4 => "F4", + Key.F5 => "F5", + Key.F6 => "F6", + Key.F7 => "F7", + Key.F8 => "F8", + Key.F9 => "F9", + Key.F10 => "F10", + Key.F11 => "F11", + Key.F12 => "F12", + >= Key.A and <= Key.Z => ((char)('a' + (key - Key.A))).ToString(), + >= Key.D0 and <= Key.D9 => ((char)('0' + (key - Key.D0))).ToString(), + _ => "Unidentified" + }; + /// /// Handles the key up event /// private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) { - DispEngine.KeyUp((long)e.Key); + DispEngine.KeyUp(WpfKeyToW3C(e.Key)); } /// @@ -310,27 +350,23 @@ namespace Hi.WpfPlus.Disp /// private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) { - DispEngine.KeyDown((long)e.Key); + string key = WpfKeyToW3C(e.Key); + DispEngine.KeyDown(key); - // Map specific keys for view transformation - long key = (long)e.Key; - if (key == (long)Key.RightShift) - key = (long)Key.LeftShift; - DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() { - HOME = (long)Key.Home, - PAGE_UP = (long)Key.PageUp, - PAGE_DOWN = (long)Key.PageDown, - F1 = (long)Key.F1, - F2 = (long)Key.F2, - F3 = (long)Key.F3, - F4 = (long)Key.F4, - SHIFT = (long)Key.LeftShift, - ARROW_LEFT = (long)Key.Left, - ARROW_RIGHT = (long)Key.Right, - ARROW_DOWN = (long)Key.Down, - ARROW_UP = (long)Key.Up + HOME = "Home", + PAGE_UP = "PageUp", + PAGE_DOWN = "PageDown", + F1 = "F1", + F2 = "F2", + F3 = "F3", + F4 = "F4", + SHIFT = "Shift", + ARROW_LEFT = "ArrowLeft", + ARROW_RIGHT = "ArrowRight", + ARROW_DOWN = "ArrowDown", + ARROW_UP = "ArrowUp" }); } #endregion