首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将libgdx int键码转换为非QWERTY字符

将libgdx int键码转换为非QWERTY字符
EN

Stack Overflow用户
提问于 2021-12-10 19:53:13
回答 1查看 114关注 0票数 1

我已经设置了一组代码,使用InputListener.keyDown测试按下的键,并使用这些键代码显示击键提示。然而,在非QWERTY键盘布局(如Dvorak或Colemak)上,通过Input.Keys.toString(keycode)获取这些键码并不返回按下键将显示的实际字符。(例如,在我的QWERTY-硬件键盘上按下'E‘键将总是返回'E’的键码,而不是当我使用Colemak键盘布局时返回'F‘的键码)

是否有一种方法可以使用密钥代码来获取按下该键时将输入的实际值?

使用keyTyped可以给出正确的字符值,但是将所有代码从keyDown切换到keyTyped将是一个很大的重构。

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-25 20:13:56

修好了!最后,我在可能的情况下使用GLFW.glfwGetKeyNameDefaultLwjgl3Input.getGlfwKeyCode来获取密钥名,而在其他情况下则返回到只使用Input.Keys.toString (特别是非字母数字键)。

代码语言:javascript
运行
复制
String keyName = GLFW.glfwGetKeyName(DefaultLwjgl3Input.getGlfwKeyCode(keystroke), 0);
if(keyName != null && !keyName.equals("")) {
    return keyName.toUpperCase();
}
return Input.Keys.toString(keystroke);

值得注意的是,这是LWJGL3后端特有的。LWJGL3使用物理键盘布局(因此,如果您使用keyDown来检查WASD,那么在AZERTY键盘布局上,它将检查ZQSD,即位于同一位置的键),而LWJGL2则使用本地化键。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70309733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档