c++ X11全局更改光标形状

c++ X11 global change cursor shape

本文关键字:光标 X11 全局 c++      更新时间:2023-10-16

我正在编写一个基于外部硬件(Leap Motion Controller)输入的Linux鼠标仿真程序。为了便于操作,我想改变光标的形状,向用户传达与他们操作光标相关的状态信息。我目前正在编写一个用户空间程序来处理这个问题。鼠标移动和鼠标单击是使用XTest库处理的,但是现在我找不到改变光标形状的方法。

使用XDefineCursor()我已经能够将光标更改为程序拥有的窗口上的自定义形状,但我需要在完整的图形环境中使用它,因为该程序将保留大部分时间隐藏在背景中。

我也宁愿不写设备驱动程序,如果可能的话,现在留在用户空间。此外,我更希望不必更改显示管理器(即Unity或LXDE)的代码。

编辑:
硬件是Leap Motion Controller。我需要显示给用户,如果他们仍然在传感器的范围内,或范围之外。

您可以使用XFixes协议监视光标的变化,然后在每次更改时修改光标,将您的图形添加到尝试设置它的任何窗口(SelectCursorInput/GetCursorImage/CursorNotify事件)