问题标签 [xcb]

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 回答
608 浏览

qt - Qt vs XCB:Qt 做低级任务有多强大?

我正在尝试创建一个程序来锁定具有 Linux 操作系统的计算机的屏幕,该计算机将使用我自己的身份验证机制解锁。我可以单独在Qt中完成(锁定屏幕,切换到锁定屏幕的能力......)还是我需要学习XCB或相关的东西?

0 投票
2 回答
4559 浏览

gtk - 在哪里学习 X11 和 XCB?

我想创建一个需要 X11 渲染窗口的软件,该窗口堆叠在顶部并抓住键盘和鼠标(就像屏幕储物柜一样),但我能找到的只是一个浅薄的文档,示例很少。我该如何进行?

0 投票
0 回答
973 浏览

c++ - 全局 alt+space 热键抓取 - 奇怪的键盘焦点行为

我正在Alt+Space使用 获取全局热键xcb_grab_key,如下所示:

然后在 Qt 的 QAbstractNativeEventFilter 子类中,我处理它并在键匹配时发出 Qt 信号Alt+Space

GetModifier从 VLC 复制的,但我认为这部分无关紧要,因为 Alt 键匹配正确)

我遇到的问题是,在show()按下热键时主窗口后,键盘大部分时间1没有正确聚焦。我可以打字,但是光标不可见,输入框没有突出显示,Ctrl+Q退出des的快捷方式不起作用。可以通过移动窗口或按空格来解决它 - 然后恢复焦点 - 光标+边框重新出现并Ctrl+Q起作用。什么可能导致这种行为?

我正在使用 Qt 5.0.0 和 xcb 1.8.1。可以从 github下载完整的应用程序进行编译。

1这意味着有时问题是不可重现的 - 即使重复的窗口隐藏/显示也正确设置了焦点,但其他时候它会在一行隐藏/显示中发生多次。它经常发生在整体上。

(编辑:我已经实现了一个(非常丑陋的......)解决方法,因此要重现 github 项目的问题,需要删除以下代码)

0 投票
1 回答
218 浏览

haskell - 使用 XHB 的假按键

我正在尝试使用 XHB 和 XTest 模拟按键,并使用此示例代码作为参考。不幸的是,无论我做什么,生成的程序都没有效果。没有例外,没有警告。

有任何想法吗?

我在 Ubuntu 12.04 上使用 XHB 0.5.2012.11.23 和 GHC 7.4.1。

这是我到目前为止所得到的:

0 投票
2 回答
527 浏览

c - XCB 中需要 XEventsQueued(display, QueuedAfterReading)

我正在将一些 CYBOI 代码从 Xlib 迁移到 XCB。

CYBOI 使用几个线程用于不同的通信通道,例如:serial_port、terminal、socket、x_window_system。但是,它仅将这些线程用于信号/事件/数据检测;实际的接收和发送在主线程中完成,以避免地址空间的任何多线程冲突。

对于 x_window_system 通道,我之前在线程中检测到事件:

检测到事件后,设置了“中断标志”。之后,主线程正在使用以下命令读取实际事件

当没有更多事件可用时,主线程停止接收事件,x_window_system 通道线程再次开始使用 XEventsQueued 进行侦听。

现在,我将代码迁移到 XC Binding (XCB)。有一个阻塞函数“xcb_wait_for_event”,可以很好地读取事件。如果有未决的事件,我想念的是一些“向前看”的功能,而实际上没有从队列中返回/删除事件。

我现在在网上阅读了几个小时,但找不到这样的功能。“xcb_poll_for_event”没有帮助。阻塞对我来说很好,因为我的事件检测在它自己的线程中运行。作为第三个输入函数的“xcb_request_check”似乎不是我想要的。

有人可以帮帮我吗?

谢谢,克里斯蒂安

0 投票
1 回答
259 浏览

x11 - 为什么 XInitThreads 非递归激活的锁?

考虑以下调用流程:

函数 A 调用XCheckIfEvent ,在谓词参数中传递一个指向函数 B 的指针。函数 B 调用XGetWindowProperty

如果 XLib 使用XInitThreads函数初始化,则上述调用流程在调用XGetWindowProperty时挂起。在我看来,调用XInitThreads时激活的锁不是递归的。如果是真的,为什么?有没有办法让它递归?还是官方禁止从传递给 XLib 函数的回调中调用 XLib 函数?

0 投票
1 回答
907 浏览

qt - QT 5 应用程序在没有监视器的情况下崩溃

我正在使用 Qt 5 库在 CentOS 6.4 上运行 Qt 桌面应用程序。

当我从 VNC 启动应用程序时,由于我们的一些服务器没有监视器,应用程序崩溃了。从...开始:

我已将其追踪到一个核心文件调用 qxcbconnection.cpp 和行:

问题是,如果没有连接监视器,则 m_screens 为空,因此会导致“索引超出范围”错误。

我的问题是:有没有办法解决这个问题,或者以某种方式模仿显示器?

0 投票
19 回答
269321 浏览

linux - 在没有安装 qt 的情况下在 linux 上启动 qt5 应用程序时“无法加载平台插件“xcb””

我为使用 Qt5 的 linux 编写了应用程序。

但是当我试图在没有安装 Qt SDK 的情况下在 linux 上启动它时,控制台中的输出是:

无法加载平台插件“xcb”。可用平台有:

我怎样才能解决这个问题?可能我需要复制一些插件文件吗?当我使用安装了 Qt5 的 ubuntu,但我重命名 Qt 目录时,会出现同样的问题。所以,它使用Qt目录中的一些文件......

更新:当我使用文件libqxcb.so在应用程序目录“平台”文件夹中创建时,应用程序仍然无法启动,但错误消息发生了变化:

无法加载平台插件“xcb”。可用平台有:

xcb

这怎么可能发生?平台插件如何可用但无法加载?

0 投票
2 回答
4499 浏览

keyboard - 使用 XCB 获取键盘布局和键符

我正在为集成在一个简单的窗口管理器中的 Linux 创建一个屏幕键盘。我目前正在使用 XCB,现在我想做假击键。使用 xtest 扩展程序一切正常,除了我无法从我想要放置的键符中获取真正的键码的细节。

目前我正在使用 xcb_key_symbols_get_keycode,然后我使用 xcb_key_symbols_get_keysym 来了解获取该符号所需的修饰符。当配置的键盘是美国键盘时,这可以正常工作。但我有一个西班牙语键盘,这个调用只返回美国配置。在西班牙语键盘中,使用正确的 alt (altgr) 可以获得几个符号,但前一个调用似乎不支持它。

那么,我怎样才能获得获得任何键符所需的键码?我认为我需要 XKB 扩展,但我一直无法为 XCB 找到它们,我不想为 XLib 重写整个窗口管理器。

谢谢。

0 投票
1 回答
1121 浏览

xorg - xcb:如何启动应用程序并将其显示到窗口中

我正在尝试使用 xcb 库实现一个基本的窗口管理器。

我设法与 X 服务器连接,并获取一些事件,但我不知道如何启动应用程序并在当前 X 会话中显示它。

我正在尝试遵循 xcb 教程:http: //xcb.freedesktop.org/tutorial/

基本上我认为(并且可能我错了)一旦会话开始,使用我的“windowmanager”,如果我想启动一个应用程序,我只需要分叉它,然后启动应用程序,例如:

但似乎没有奏效。

我没有太多代码要显示,因为我只是想修改上面粘贴的教程中的 che 代码(我添加了一个无限循环,以及其他一些东西)。

那么如何启动 xterm、pcmanfm 等 x 应用程序并在当前 x 会话中显示它呢?

以及如何在新窗口中绘制应用程序?

最后一个问题:我试图复制并粘贴 X 教程的 hello world 窗口示例,但它似乎没有加载任何窗口。代码在这里: http ://www.x.org/releases/X11R7.7/doc/libxcb/tutorial/index.html#helloworld