25、Xlib 事件处理与输入设备函数详解

Xlib 事件处理与输入设备函数详解

1. 事件处理函数

在 Xlib 编程中,事件处理是非常重要的一部分,它涉及到事件的发送、指针运动历史的获取以及协议错误的处理。

1.1 事件发送

XSendEvent 函数用于发送事件。如果 propagate 为 True,且没有客户端在目标窗口上选择事件掩码中的任何事件类型,目标窗口将被替换为其最近的祖先窗口,该祖先窗口有客户端选择了事件掩码中的类型,且中间没有窗口在其不传播掩码中包含该类型。若不存在这样的窗口,或者该窗口是焦点窗口的祖先且最初指定 InputFocus 为目标,则事件不会发送给任何客户端。否则,事件将报告给在最终目标窗口上选择了事件掩码中任何类型的每个客户端。

// XSendEvent 函数相关说明
// 事件必须是核心事件或扩展定义的事件之一,否则会导致 BadValue 错误
// XSendEvent 返回零表示转换为有线协议格式失败,非零表示成功
// XSendEvent 可能会生成 BadValue 和 BadWindow 错误
1.2 获取指针运动历史

部分 X 服务器实现会维护比事件通知更完整的指针运动历史。指针硬件中断时的位置会存储在一个名为运动历史缓冲区的缓冲区中,以便后续检索。

  • 确定运动缓冲区的最大元素数 :使用 XDisplayMotionBufferSize 函数。
unsigned long(dis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值