【问题标题】:GLFW (LWJGL) Input - Holding CTRL down blocks the CharCallbackGLFW (LWJGL) 输入 - 按住 CTRL 会阻止 CharCallback
【发布时间】:2016-07-10 17:10:22
【问题描述】:

我尝试为我的游戏中的一些文本字段实现一个简单的 CTRL + V。因此,每当按下或释放 ctrl 时,我都会在 KeyCallback 中为 CTRL 设置一个标志(我测试了这个)。当我现在尝试键入“V”时,不会调用 CharCallback。它不应该以这种方式工作吗?如果是这样,我该怎么做?

这就是我在 KeyCallback 中轮询它的方式:

if(key == GLFW_KEY_LEFT_CONTROL && action == GLFW_PRESS) {
    controlPressed = true;
}
if(key == GLFW_KEY_LEFT_CONTROL && action == GLFW_RELEASE) {
    controlPressed = false;
}

我使用 glfwSetKeyCallback(...) 来设置回调。

【问题讨论】:

    标签: java input keyboard lwjgl glfw


    【解决方案1】:

    这是预期的行为。 documentation for glfwSetCharCallback 说(强调我的):

    字符回调的行为与系统文本输入通常一样,如果按住会阻止该平台上正常文本输入的修饰键,则不会调用该回调,例如超级(命令)键OS X 或 Windows 上的 Alt 键。有一个带有修饰符回调的角色接收这些事件。

    但是,它还声明您可以使用char mods callback,即使按下修饰键也会调用它。

    该函数设置指定窗口的字符带修饰符回调,在输入Unicode字符时调用,无论使用什么修饰键。

    例如:

    GLFWCharModsCallback charModsCallback = new GLFWCharModsCallback() {
        @Override
        public void invoke(long window, int codepoint, int mods) {
            // do something with the character and modifier flags
        }
    };
    glfwSetCharModsCallback(window, charModsCallback);
    

    【讨论】:

    • 啊,是的,现在我记得你永远不能在按住修饰键的同时打字。谢谢:)
    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多