据我所知,获取鼠标位置的两种方法是使用 libgpm
或读取 /dev/input/mice
文件。但后者只是从最后一个位置返回一个相对位置。所以我的问题是如何通过阅读 /dev/input/mice
或其他方式获得绝对鼠标位置。
我想用C
或C++
来实现这个功能。任何信息将不胜感激。
最佳答案
首先,鼠标设备可能只发送相对运动,因此无法获得绝对位置(只需尝试用手举起鼠标并将其放在别处),除非对运动进行积分。
而且几乎所有的Linux GUI环境都在X11之上, 所以处理鼠标的是 X11 服务器(通常是 Xorg
进程)(它是唯一实际读取 /dev/input/mice
的进程)
然后您需要创建一个 X11 客户端应用程序。参见 this & that问题。但是你会更好地使用一些现有的工具包库,比如 Qt 或 GTK;参见例如QMouseEvent & QWidget::mouseMoveEvent在 Qt 中,和 GtkWidget "motion-notify-event" signal在 Gtk 中(以及许多其他函数)。
关于c++ - 我怎样才能在 C 中获得 Linux 中的绝对鼠标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556305/