我正在尝试将 GTK 键盘事件分派(注入)到某个窗口,特别是其中带有 webkit webview 的窗口。我遇到的问题是使用 Backspace、Up、Down 等特殊键。由于某种原因,它们没有被正确注入,这意味着相应的功能没有被触发。对于其他键,它可以完美运行。我试图将键盘聚焦在窗口上并将窗口放在窗口 z-index 堆栈的顶部,但这没有帮助。
GdkEvent* const event = gdk_event_new(GDK_KEY_PRESS);
event->key.window = self->window->window;
event->key.send_event = TRUE;
event->key.time = GDK_CURRENT_TIME;
event->key.state = 0; event->key.keyval = key_value;
event->key.hardware_keycode = 0;
event->key.length = 0; event->key.string = 0;
event->key.group = 0;
//key_value is the code for the key.
这是 C 到 Python 的绑定部分,我只需将键码 (key_value) 传递给函数。我对密钥释放事件(GDK_KEY_RELEASE)做了类似的事情。在 Python 部分中,我调用这两个函数(按下然后释放),它适用于普通键,如 a、s、d 等。但是,它不适用于 BackSpace、Enter、Delete 等。