您如何为 Gtk+ 3 触摸输入开发简单的代码?

How do you develop simple code for Gtk+ 3 touch input?

我一直在寻找一段时间来调查我们的 Gtk+ 3 应用程序(实际上是 Gtk#,但绑定到 Gtk+ 3)是否可以轻松转换为接收触摸事件而不是鼠标点击。目前这是纯粹的调查,因为我实际上 没有 触摸屏(这也是我无法轻易测试我的理论的原因)。

据我所知,Gnome 3 can indeed do this and the documentation that seems relevant is the gesture stuff, found here.

我找不到任何示例 Gtk+ 代码,所以我 希望 实例化其中一个手势 类 并简单地设置它将事件传递到主事件循环。

有没有人有 Gtk 手势方面的经验,可以通过一个简单的例子来指导我?假设我有一个 DrawableArea,我想接收一个非常简单的单点触摸事件,它会给我一个事件,其中包含触摸区域内的点。

一旦我有了它,我应该能够在它的基础上进行构建以处理滑动、捏合等。

您不能将指针事件作为触摸事件注入:它们根本不同,并且它们与 GTK 内部的手势识别状态机交互。

GTK 能够(出于调试目的)通过指针模拟触摸事件,但显然它不能模拟多点触摸事件,因为指针设备只有一个事件序列。如果您有最新版本的 GTK 3.x,您可以使用 GTK_TEST_TOUCHSCREEN 环境变量设置为非零值。

如果您想知道如何在您自己的小部件中使用 GtkGesture 实现,那么我建议您查看 GtkGesture API reference, and look at the various types of gestures available, like GtkGestureSwipe or GtkGestureZoom。您应该在构建小部件时将 GtkGesture 个实例添加到它,然后在识别特定手势时捕捉信号。