将VirtualKey映射到UWP应用程序中的char,与布局无关

时间:2016-07-09 00:04:20

标签: c# input keyboard uwp

我正在使用C#为HoloLens编写VNC客户端,而我很难搞清楚如何处理键盘输入。 KeyUp / KeyDown给了我一个Windows.System.VirtualKey对象,但似乎并不是一个API来将这些VirtualKeys(以及修饰符,例如shift)映射到它们在给定布局上表示的字符。例如。 VirtualKey.Shift + VirtualKey.F ==' F'与' f'当它只是VirtualKey.F。或Shift + 5在美国键盘上给出%。

在win32应用中,您可以使用MapVirtualKey为您处理键盘布局 - 如何在UWP中处理?

1 个答案:

答案 0 :(得分:7)

无法在KeyUp / KeyDown事件中获取已翻译的字符。但是,使用CoreWindow.CharacterReceived事件来获取翻译后的角色是可能的。

您可以通过以下代码注册活动:

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived;

您将获得翻译输入字符的KeyCode(例如,shift+5得到37,而5获得53){{3 }}:

private void CoreWindow_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args)
{
    uint keyCode=args.KeyCode;
}