c++ - 我怎样才能在 C 中获得 Linux 中的绝对鼠标位置

标签 c++ c linux mouse

据我所知,获取鼠标位置的两种方法是使用 libgpm 或读取 /dev/input/mice 文件。但后者只是从最后一个位置返回一个相对位置。所以我的问题是如何通过阅读 /dev/input/mice 或其他方式获得绝对鼠标位置

我想用CC++ 来实现这个功能。任何信息将不胜感激。

最佳答案

首先,鼠标设备可能只发送相对运动,因此无法获得绝对位置(只需尝试用手举起鼠标并将其放在别处),除非对运动进行积分。

而且几乎所有的Linux GUI环境都在X11之上, 所以处理鼠标的是 X11 服务器(通常是 Xorg 进程)(它是唯一实际读取 /dev/input/mice 的进程)

然后您需要创建一个 X11 客户端应用程序。参见 this & that问题。但是你会更好地使用一些现有的工具包库,比如 Qt 或 GTK;参见例如QMouseEvent & QWidget::mouseMoveEvent在 Qt 中,和 GtkWidget "motion-notify-event" signal在 Gtk 中(以及许多其他函数)。

另见 this question

关于c++ - 我怎样才能在 C 中获得 Linux 中的绝对鼠标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556305/

相关文章:

c++ - 尝试/捕获崩溃 255

c++ - 处理 vector - cudaMemcpyDeviceToHost

c - 从任何方法返回 const 或最终值/引用的优点/缺点

c - 我怎样才能以这种方式拆分这个链表

linux - 如何使用命令 `sed` 请求确认

c++ - 构造函数C++的 super 与子类继承

c++ - OpenGL 中的内存分配

c - GtkFixed : inner widget ignores the coordinates 的用法

linux - 当我在 Linux Fedora 中运行 JavaFx 应用程序时,我的应用程序崩溃了..!

linux - 如何使用 cmake 将 gecode 作为外部库包含在我的 c++ 项目中?