我在检测按键的程序中遇到问题。所有字符都在 QUERTY 键盘上工作,但我知道 AZERTY 键盘上的某些字符存在问题。
例如,当在 AZERTY 键盘上按下 \ 时,会得到 226 (â) 的键码。
如何确保键盘布局的行为一致?我希望内置的事件处理是一致的。
我在检测按键的程序中遇到问题。所有字符都在 QUERTY 键盘上工作,但我知道 AZERTY 键盘上的某些字符存在问题。
例如,当在 AZERTY 键盘上按下 \ 时,会得到 226 (â) 的键码。
如何确保键盘布局的行为一致?我希望内置的事件处理是一致的。
是的,不同的键盘布局给出不同的键码。该文档将VK_OEM_102
(keycode 226) 描述为"<>" or "\|" on RT 102-key keyboard
,因此键码甚至不应该对应于单个特定字符。
要查看键对应的字符,请使用MapVirtualKey函数。然后,您可以检查它是否是反斜杠。
我根本无法重现。反斜杠是在 AZERTY 键盘上通过按住AltGr然后按下8字母上方数字行上的键来组成的。当您这样做时,会触发以下KeyDown
事件:
另一方面,如果您按下紧靠左侧的键,W则会KeyDown
触发带有 KeyCode OemBackslash 和 KeyValue 226 的键,并且<
文本框中会出现一个字符。
我想知道您的键盘布局是否设置不正确以匹配您的特定键盘。我假设你的键盘看起来像这个维基百科页面上的图像:http ://en.wikipedia.org/wiki/AZERTY
您可能希望首先检测键盘布局,然后使用不同的键码到字符映射。