考虑到,对于 Windows 视频游戏,我需要确定在美式英语键盘布局上生成 ` 和 ~ 字符的键(通常位于 Escape 键下方并左至 1)是否已被按下。这听起来像是一个微不足道的问题,但对我来说似乎不是一个问题。
当 Windows 发送键盘消息时,它会指定虚拟键代码和 OEM 扫描代码。我们不能依赖 OEM 扫描码,因为“值取决于 OEM”——我们也不能依赖虚拟键码,因为它依赖于当前活动的键盘布局。
我们目前的“解决方案”是使用LoadKeyboardLayout
并MapVirtualKeyEx
找到在美国英语键盘布局上生成`字符的键的OEM扫描码,然后只听那个OEM扫描码。问题是如果用户没有安装美国英语布局,这将不起作用。
有没有真正的方法可以在 Windows 上做到这一点?