使用 GTK 查询光标位置
Query cursor position with GTK
有没有办法使用 GTK C 库查询光标位置?我正在编写一个程序,我需要实时读出光标的位置(通过回调函数或轮询值以查找变化)。我已经浏览了 GTK 文档,但找不到任何明显的暴露光标位置的内容。
我目前正在使用 GTK C 库编写这个程序,因为 a) 我已经有一些用 C 编写的代码来与低级 Raspberry Pi 外围设备接口,我不想重写它如果我能避免的话,使用不同的语言。低级代码基于 mmap(),我相信它仍然适用于 C++,所以如果到了紧要关头,我想我可以用 C++ 用其他一些 GUI 库(如 wxWidgets 或 QT)重写它。 (有没有简单的方法可以用这些库读取光标位置?)
你可以看看那些在面板上吸引眼球的玩具小部件是如何完成的,例如xfce4-eyes-plugin.
gboolean
where (void)
{
gint x, y;
GdkWindow *window;
GdkDevice *mouse_device;
#if GTK_CHECK_VERSION (3,20,0)
GdkSeat *seat = gdk_display_get_default_seat (gdk_display_get_default ());
mouse_device = gdk_seat_get_pointer (seat);
#else
GdkDeviceManager *devman = gdk_display_get_device_manager (gdk_display_get_default ());
mouse_device = gdk_device_manager_get_client_pointer (devman);
#endif
window = gdk_display_get_default_group (gdk_display_get_default ());
gdk_window_get_device_position (window, mouse_device, &x, &y, NULL);
g_message ("pointer: %i %i", x, y);
return G_SOURCE_CONTINUE;
}
有没有办法使用 GTK C 库查询光标位置?我正在编写一个程序,我需要实时读出光标的位置(通过回调函数或轮询值以查找变化)。我已经浏览了 GTK 文档,但找不到任何明显的暴露光标位置的内容。
我目前正在使用 GTK C 库编写这个程序,因为 a) 我已经有一些用 C 编写的代码来与低级 Raspberry Pi 外围设备接口,我不想重写它如果我能避免的话,使用不同的语言。低级代码基于 mmap(),我相信它仍然适用于 C++,所以如果到了紧要关头,我想我可以用 C++ 用其他一些 GUI 库(如 wxWidgets 或 QT)重写它。 (有没有简单的方法可以用这些库读取光标位置?)
你可以看看那些在面板上吸引眼球的玩具小部件是如何完成的,例如xfce4-eyes-plugin.
gboolean
where (void)
{
gint x, y;
GdkWindow *window;
GdkDevice *mouse_device;
#if GTK_CHECK_VERSION (3,20,0)
GdkSeat *seat = gdk_display_get_default_seat (gdk_display_get_default ());
mouse_device = gdk_seat_get_pointer (seat);
#else
GdkDeviceManager *devman = gdk_display_get_device_manager (gdk_display_get_default ());
mouse_device = gdk_device_manager_get_client_pointer (devman);
#endif
window = gdk_display_get_default_group (gdk_display_get_default ());
gdk_window_get_device_position (window, mouse_device, &x, &y, NULL);
g_message ("pointer: %i %i", x, y);
return G_SOURCE_CONTINUE;
}