Gtk Gdk事件设备类型错误

Gtk Gdk事件设备类型错误,gtk,vala,gdk,Gtk,Vala,Gdk,我正在尝试使用Gdk(在vala中)捕获笔输入。这是我的密码 var source = anEvent.get_device().get_source(); if (source == Gdk.InputSource.MOUSE) { stdout.printf("mouse\n"); } else if (source == Gdk.InputSource.PEN) { stdout.printf("pen\n"); } els

我正在尝试使用Gdk(在vala中)捕获笔输入。这是我的密码

    var source = anEvent.get_device().get_source();

    if (source == Gdk.InputSource.MOUSE) {
        stdout.printf("mouse\n");
    } else if (source == Gdk.InputSource.PEN) {
        stdout.printf("pen\n");
    } else if (source == Gdk.InputSource.ERASER) {
        stdout.printf("eraser\n");
    } else {
        stdout.printf("something else\n");
    }
    Gtk.main_do_event(anEvent);

然而,笔输入似乎被认为是鼠标输入!然而,触摸和键盘输入似乎被正确识别。这是特别奇怪的,因为我在我的Thinkpad X1瑜伽上用集成的wacom笔和一个单独的Intoos Pro进行了测试,这两个都是Gnome认可的。此外,在Xorg/Wayland之间切换也没有什么区别。我错过了什么?或者这仅仅是Gdk/Gtk/Gnome的问题?谢谢

通过使用
Gdk.DeviceToolType
解决了这个问题

var tool = anEvent.get_device_tool().get_tool_type();

if (tool == Gdk.DeviceToolType.PEN) {
    stdout.printf("pen?\n");
}

... 

工作正常。

我不知道答案,但您可以通过阅读了解事情的幕后工作原理。您可能也想在libinput上打开一个bug,也可能是内核。