在 gtk3 中,可以使用以下命令将加速键和路径保存到文件中:gtk_accel_map https://developer.gnome.org/gtk3/stable/gtk3-Accelerator-Maps.html#gtk-accel-map-lookup-entry。用户可以通过编辑相关文件来自定义快捷方式。
现在我将使用 GSimpleAction 来替换已弃用的 Gtk Action 接口。
那么如何获取所需的参数gtk_accel_map_add_entry https://developer.gnome.org/gtk3/stable/gtk3-Accelerator-Maps.html#gtk-accel-map-add-entry出于 GSimpleAction (或出于 GActionMap?),以便我可以保留它?
我这样定义 GSimpleAction:
void callback ( GSimpleAction *action, GVariant *parameter, gpointer user_data )
{
g_print ( "<Ctrl>k pressed\n" );
}
static GActionEntry actions[] = {
{ "test", callback, NULL, NULL, NULL },
};
... // Inside application_startup (GApplication *gapp):
g_action_map_add_action_entries(G_ACTION_MAP(application), actions, G_N_ELEMENTS(actions), NULL);
const char *accels[] = {"<Ctrl>k", NULL};
gtk_application_set_accels_for_action (application, "app.test", accels);
...
可能相关:最近我了解到gtk_accel_map 将在 gtk4 中消失 https://gitlab.gnome.org/GNOME/gtk/-/issues/2375#note_817764