0

我在 CentOS 7 上编写了一个应用程序,它充当驱动程序,作为服务守护程序运行,其部分工作是使用 X11 XWarpPointer 函数定位鼠标箭头。我让它在 CentOS 7 上成功运行,然后需要将它移植到 RHEL 8.2。XWarpPointer 函数返回一个成功代码,但没有做任何事情。一些研究似乎表明这是因为 RHEL 8.2 已将 X11 库替换为名为 Wayland 的库,并且在 Wayland XWarpPointer 中无法正常工作。有人告诉我编辑 /etc/gdm/custom.conf 文件并取消注释该行:

#WaylandEnable=假

XWarpPointer 现在失败并显示“Invalid MIT-MAGIC-COOKIE-1”消息,

查看 XWarpPointer 的源代码表明这是因为 Display 指针为空。事实证明这是真的,因为在代码中的早期 XOpenDisplay 函数应该返回一个 Display*,它返回了 null。我深入研究了 XOpenDisplay 函数以找出它返回 null 的位置。当它调用 _XConnectXCB 函数时似乎是这样做的。反过来,这个函数在调用 xcb_connect_to_display_with_auth_info 时似乎失败了。

有没有其他人有类似的问题?有谁知道如何让 XOpenDisplay 和 XWarpPointer 在 RHEL 8.2 上工作?

4

0 回答 0