如何在C中获得Linux中的绝对鼠标位置
据我所知,获取鼠标位置的两种方法是使用libgpm
或读取/dev/input/mice
文件。 但后者只是从最后一个位置返回一个相对位置。 所以我的问题是如何通过阅读/dev/input/mice
或其他方式获得绝对鼠标位置 。
我想用C
或C++
实现这个function。 任何信息将不胜感激。
首先,鼠标设备可能只发送相对运动,因此无法获得绝对位置(只需尝试用手抬起鼠标并将其放在其他位置),除非通过整合运动。
几乎所有Linux GUI环境都高于X11 ,因此它是处理鼠标的X11服务器(通常是Xorg
进程)(它是实际读取/dev/input/mice
的唯一进程)
然后,您需要制作X11客户端应用程序。 看到这个和那个问题。 但是你在使用一些现有的工具包库方面会好得多,比如Qt或GTK; 参见例如Qt中的QMouseEvent和QWidget :: mouseMoveEvent ,以及Gtk(以及许多其他函数)中的GtkWidget“motion-notify-event”信号 。
另见这个问题