C# · 12月 23, 2021

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

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

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

解决方法 无法在KeyUp / KeyDown事件中获取已翻译的字符.但是,当使用 CoreWindow.CharacterReceived事件获取翻译后的角色时,它是可能的.

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

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived;

并且您将获得翻译的输入字符的KeyCode(例如,对于第5班,它获得37,而对于5,它获得53)通过CharacterReceivedEventArgs:

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