Windows 8.1处理物理键盘输入



我正在用c#为Windows 8.1 开发一个通用应用程序

我正在尝试捕捉键盘输入,从在线文献中可以看到KeyDown事件和KeyRoutedEventArgs以及Key属性。这适用于大多数密钥字符,并返回VirtualKey枚举,如VirtualKey.A。但是,当字符如、.;:>被按下时,Key属性被设置为一个数字,如果该键与VirtualKey组合按下,则该数字是相同的值。Shift似乎表示它不代表键上的字符,但仅代表物理键。

碰巧的是,我使用的是一个意大利笔记本电脑键盘,它的布局当然与英国扩展键盘不同,所以分号(;)在英国键盘上的键值为186(作为非移位字符或底部字符),在意大利键盘上的键值为188(作为移位字符或顶部字符)。因此,我很难捕捉到这些标点符号。

我过去开发过WPF、Silverlight和.Net应用程序,不记得即使在游戏循环的组合中也很难处理物理键盘输入,因为我只使用了Key或Keys枚举和OEM值。

无论键盘布局如何,当按下这些标点符号各自的键时,我如何捕捉它们?

Hans Passant提供的答案(https://stackoverflow.com/users/17034/hans-passant):

此事件会暴露在物理键盘上键入的字符:http://msdn.microsoft.com/en-us/library/windows.ui.core.corewindow.characterreceived.aspx

最新更新