Xlib 事件处理与输入设备函数详解
1. 事件处理函数
在 Xlib 编程中,事件处理是非常重要的一部分,它涉及到事件的发送、指针运动历史的获取以及协议错误的处理。
1.1 事件发送
XSendEvent 函数用于发送事件。如果 propagate 为 True,且没有客户端在目标窗口上选择事件掩码中的任何事件类型,目标窗口将被替换为其最近的祖先窗口,该祖先窗口有客户端选择了事件掩码中的类型,且中间没有窗口在其不传播掩码中包含该类型。若不存在这样的窗口,或者该窗口是焦点窗口的祖先且最初指定 InputFocus 为目标,则事件不会发送给任何客户端。否则,事件将报告给在最终目标窗口上选择了事件掩码中任何类型的每个客户端。
// XSendEvent 函数相关说明
// 事件必须是核心事件或扩展定义的事件之一,否则会导致 BadValue 错误
// XSendEvent 返回零表示转换为有线协议格式失败,非零表示成功
// XSendEvent 可能会生成 BadValue 和 BadWindow 错误
1.2 获取指针运动历史
部分 X 服务器实现会维护比事件通知更完整的指针运动历史。指针硬件中断时的位置会存储在一个名为运动历史缓冲区的缓冲区中,以便后续检索。
- 确定运动缓冲区的最大元素数 :使用 XDisplayMotionBufferSize 函数。
unsigned long(dis
超级会员免费看
订阅专栏 解锁全文
1190

被折叠的 条评论
为什么被折叠?



