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

在Win32应用程序中,您将使用MapVirtualKey为您处理键盘布局-在UWP中如何处理呢?

最佳答案

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

您可以通过以下代码注册事件:

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived;

然后您将通过CharacterReceivedEventArgs获得翻译后的输入字符的KeyCode(例如,对于shift+5,它获取37,而对于5,它获取53):
private void CoreWindow_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args)
{
    uint keyCode=args.KeyCode;
}

10-05 19:23