问题标签 [xlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1451 浏览

linux - 如何使用 XLib 创建一个映射但不可见的窗口?

我正在一个游戏项目中开发基于 Linux 的 I/O 验证工具。它是用 C++ 编写的,并且由于使用与我们的游戏相同的 I/O 模块,它基于 OIS 1.2。因此,尽管我只需要在控制台上打印用户的输入,我仍然需要为 OIS 创建一个窗口。

所以我的问题来了:如何在仍然不可见并处理键盘事件的情况下创建映射窗口?

我无法取消映射窗口,因为它不再处理任何键盘事件。我也找不到显示/隐藏窗口的功能。(也许我搜索了错误的方向......)

我的小工具现在工作正常,除了有一个愚蠢的顶级空窗口需要集中处理键盘事件......

欢迎任何建议。

谢谢!!!

0 投票
0 回答
220 浏览

opengl - 如何处理 X11 中的“switch from”和“switch to”事件?

我正在制作一个全屏 OpenGL 应用程序,我希望它在用户离开它时恢复原始桌面模式,并在用户切换到它时恢复模式。这看起来像“FocusIn”和“FocusOut”事件,但它们不适合这个。只要用户按下 Alt+Tab 并出现窗口选择器,窗口就会得到“FocusOut”(因为此时我的窗口正在失去焦点)。

0 投票
1 回答
1356 浏览

x11 - Xlib 获取子窗口的事件

我正在使用 xlib 编写一个简单的窗口管理器。该代码将客户端窗口重新设置为一个比客户端窗口稍大的窗口,称为框架窗口。我正在尝试实施单击以聚焦策略。当在框架窗口中按下鼠标按钮并且能够在按下按钮时提升框架窗口时,我会收到按钮按下事件。但是,在客户端窗口中按下鼠标按钮时,我没有收到任何事件。这个想法是捕获此事件并引发框架窗口,即使在客户端窗口中按下鼠标按钮也是如此。

0 投票
0 回答
961 浏览

linux - Xlib:如何获得 CAPS LOCK 状态

如果 Xlib 打开或关闭,如何使用 Xlib 检索 CAPS Lock 密钥信息?

0 投票
2 回答
1435 浏览

keyboard-events - 在 Xlib 中模拟 CAPS LOCK 按下

如何使用 Xlib 模拟 CAPS LOCK 打开和关闭按下?

0 投票
1 回答
476 浏览

linux - 用于 OpenGL 3+ 的 UI 实用程序库,或者 Xlib 可以吗?

我想在 Linux 上写一些 OpenGL 3.2,可能还有 OpenGL 4 的东西,我刚刚看到 libsdl 1.2(最新的稳定版本)只支持 2.x。LibSDL 1.3(正在开发中)应该支持它,但要进入主流发行版还需要一段时间。现在是否有任何库可以让我创建一个带有我选择的上下文的 OpenGL 窗口,并且最好还可以帮助我输入?

如果没有,是否有一些小型库可以减轻 Xlib 的痛苦?我的 OpenGL Windows 路径是用普通的 WinAPI 编写的,带有自己的消息泵等,我想知道 X11 是否比这更糟。快速的网络搜索表明应该使用 Xlib 之上的库。我会对只包装 XLib 的东西感到满意,所以如果 XLib 真的那么可怕,我可以用 glX 自己做 OpenGL 上下文。

0 投票
1 回答
3999 浏览

x11 - X11 中的便携式键码?

我想获得与映射无关的键码,但文档说 XKeyEvent 结构中的“键码”取决于硬件和驱动程序,我不能依赖它。如何在 Windows 中获得一些便携式密钥代码,例如 VK_*?

0 投票
1 回答
773 浏览

crash - 调用 XtDestroyWidget 时主题应用程序崩溃

我们有一个 32 位 Motif Gui 应用程序。现在我们将应用程序从 Solaris 移植到 Linux,系统经常崩溃。根据我们的分析,我们可以发现这个问题是在我们关闭应用程序中的表单时发生的。当表单关闭时,我们将删除表单并调用函数 XtDestroyWidget() 来删除小部件。我们为应用程序运行了一次净化,我们可以发现当我们关闭表单时发生了堆栈数组边界读取 (SBR)。

我从互联网上下载了一个示例主题程序,它使用 XtDestroyWidget() 来销毁对象。当我也为这个示例程序运行 purify 时,我可以找到相同的 SBR。

SBR:堆栈数组边界读取(54 次):* 这发生在:XtDispatchEvent [libXt.so.4] RemoveAllPMgr [libXm.so.3] XtCallCallbackList [libXt.so.4] XtPhase2Destroy [libXt.so.4] _XtDoPhase2Destroy [libXt.so.4] XtDispatchEvent [libXt.so.4] XtAppMainLoop [libXt.so.4] main [popup.cc:49] _start [crt1.o] * 从 0xffbfe4f0 读取 4 个字节。* 帧指针 0xffbfe4d0 * 地址 0xffbfe4f0 比函数 XtCallCallbackList 中的堆栈指针高 32 个字节。

这个 SBR 发生在 XtAppMainLoop() 中。根据这些事实,我假设这个 SBR 是一种常见的 SBR,并且与主题相关,而不是与我们的应用程序相关。

您能否为以下问题添加一些想法。1) 为什么当我们使用 XtDestroyWidget() 时会发生 SBR。这个 SBR 是不是很严重。

2) 我删除了 XtDestroyWidget 并使用了 XtUnrealizeWidget()。这将帮助我移除 SBR,因此不会发生崩溃。所有正常形式也将正常删除。但是我在这种方法中面临的问题是 POP_UP 表单在这种方法中没有被删除。除了 HIDE 选项之外,任何人都可以建议一种解决方法来删除 POP_UP 表单。

如果有人能回答这个问题或添加一些想法,这对我很有帮助。

提前致谢, Sanush Chacko

-----添加示例程序.. 嗨,请从我获得 SBR 的地方找到示例程序。

包括 X11/StringDefs.h 包括 Xm/Xm.h 包括 Xm/PushB.h

小部件顶层;

void close_window(Widget w, XtPointer client_data, XtPointer event_data) { Widget popup = (Widget)client_data; XtDestroyWidget(弹出);}

void pop(Widget w, XtPointer client_data, XtPointer event_data) { Widget a, button, popup;

}

main(int argc, char *argv[]) { 小部件按钮;XtAppContext 应用程序;XmString 标签;

}

0 投票
1 回答
769 浏览

x11 - 窗口从一个工作区移动到另一个工作区时的 Xlib 事件

我想知道使用 Xlib 从一个工作区移动到另一个工作区的应用程序的事件名称。

0 投票
1 回答
882 浏览

mouseevent - 如何使用 XI2 扩展获取原始鼠标事件?

我将 XISelectEvents 用于带有deviceid=XIAllDevicesand的根窗口mask=XI_RawMotion,但我没有收到任何事件。怎么了?