GLFW (LWJGL) 输入 - 按住 CTRL 会阻止 CharCallback

问题描述 投票:0回答:2

我尝试为游戏中的一些文本字段实现简单的 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
2个回答
2
投票

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

字符回调的行为与系统文本输入通常的行为相同,并且

如果按住修饰键会阻止该平台上的正常文本输入,则不会被调用,例如 OS X 上的 Super(Command)键或 Windows 上的 Alt 键。有一个带有修饰符回调的角色接收这些事件。

但是,它还指出您可以使用

char mods 回调,即使按下修饰键也会调用该回调。

该函数设置指定窗口的带有修饰符的字符回调,无论使用什么修饰键,当输入 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);
    

0
投票
我正在使用webAssembly使用glfw编辑c++程序,但是当我运行编译后的js文件时,出现错误。 我如何解决它 未捕获(承诺)glfwSetCharModsCallback 未实现。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.