我正在使用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;
}