首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDL2输入焦点

SDL2输入焦点
EN

Stack Overflow用户
提问于 2014-11-11 19:09:08
回答 1查看 1.2K关注 0票数 3

我目前正在尝试在运行X服务器但没有窗口管理器的Linux armv7嵌入式系统上构建并运行一个使用SDL2的UnrealEngine4演示应用程序。

我所看到的是,应用程序不响应键盘事件,尽管鼠标工作正常。

进一步挖掘发现,问题在于如果SDL_Event.key.windowID与应用程序的SDL_Window的ID不匹配,UE4会忽略键盘事件。我通过调用SDL_GetKeyboardFocus()验证了这一点,结果是键盘焦点的窗口ID是0,而应用程序的窗口ID是5。

进一步深入了解一下,键盘焦点似乎是在从X服务器接收到focusIn事件后被设置到特定的SDL2窗口。(请参见SDL_x11events.c中的X11_DispatchEvent() )。

看起来,如果您在没有窗口管理器的情况下运行X11,则此focusIn事件永远不会由X服务器生成,正如这里已经回答的那样:

FocusIn/FocusOut not generated

在SDL_x11windows.c中修改X11_RaiseWindow()之后,添加以下内容:

X11_XSetInputFocus(显示,数据->xwindow,RevertToParent,CurrentTime);SDL_SetKeyboardFocus(数据->窗口);

最终能够让键盘事件得到处理。

上面的评估听起来正确吗?如果是这样,有没有一个干净的解决方案?我仍在深入研究,但任何建议都将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-05-31 13:07:06

这被证明是SDL中的一个错误,我们刚刚对其进行了修复:

https://hg.libsdl.org/SDL/rev/aa4e4768c6c1

这个修复将出现在SDL 2.0.4中,并且应该很快就会扩展到虚幻。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26863470

复制
相关文章

相似问题

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