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