gpt4 book ai didi

c - 长按键 GTK

转载 作者:可可西里 更新时间:2023-11-01 09:32:20 26 4
gpt4 key购买 nike

<分区>

不久前,我遇到了长按键问题。我正在开发 GTK 应用程序并具有一些基于按键和按键释放的逻辑。我知道如何处理它,但按下字母按钮时出现意外行为。当仍然按下某个键并且仅在 Windows 中发生时,将触发键释放事件。 Linux(Kubuntu 和 Arch linux (KDE))不会发生这种情况。这是错误还是我应该考虑应用程序逻辑的行为?

这里是代码

#include <gtk/gtk.h>

int release_count = 0;

static gboolean
key_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
printf("Key released %d\n", release_count);
++release_count;
return FALSE;
}

static void
activate(GtkApplication* app, gpointer user_data)
{
GtkWidget *window;

window = gtk_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(window), "Window");
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
gtk_widget_add_events(window, GDK_KEY_RELEASE_MASK | GDK_KEY_PRESS_MASK);
g_signal_connect(
window, "key-release-event", G_CALLBACK(key_event_cb), NULL
); //keyboard events
gtk_widget_show_all(window);
}

int
main(int argc, char **argv)
{
GtkApplication *app;
int status;

app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);

return status;
}

如果您启动代码并按 h,您会收到一条消息,如 key pressed {counter} 有一些延迟。那么,这是按键释放事件的正常行为吗?如果不是,请告诉我如何解决。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com