我用 MSVC++ 制作了一个 FPS 游戏,它在 Windows 上运行得很好。但是现在我正在尝试使它可移植(至少我想创建一个 linux 和一个 Windows 版本),所以我决定将 IDE 更改为 Code::Blocks 并将框架更改为 wxWidgets。但似乎不同系统上的虚拟键码和扫描码是不同的。
早些时候我经历过,即使在相同的操作系统但不同的计算机上,虚拟键码也可能不同(我收到关于他们无法控制角色的错误报告(取决于 numlock 状态,哈哈,不是开玩笑),这在更改时已修复使用扫描码而不是 virtkey 码的代码)(编辑:使用 wxWidgets,小键盘上的 virtkey 和扫描码都有不同的值,具体取决于 numlock 状态,砰!)
现在使用 wxWidgets 似乎 wxKeyEvent::GetRawKeyCode 和之前从 WM_KEYDOWN 的 lParam 获得的代码是不同的。而且我还从 GetRawKeyCode 在 linux (ubuntu) 上获得了完全不同的扫描代码。
好吧,我可以通过按所有键并查看它给出的代码来制作自己的扫描码表,但是ubuntu在我的笔记本电脑上运行的唯一问题,并且笔记本电脑没有完整的键盘......但我需要所有这些使控制设置工作。
那么问题来了:是否有一种标准的跨平台方式来为同一个键(更准确地说是同一个位置的键)获取相同的代码?(至少在 Windows 和 linux 上)