Некоторые текстовые редакторы, такие как поддержка возвышенного или атомного типа привязки сложных клавиш , когда вы нажимаете и отпускаете две или более кнопок, удерживая Ctrl
или любую другую клавишу-модификатор, нажатую для запуска какого-либо действия.
Кажется, что нет прямой поддержки такой концепции в Gtk.Конечно, можно сделать что-то вроде этого:
static second_event_happened = FALSE;
ctrl_k_cb () {
g_timeout_add (500, ctrl_k_timeout, NULL) // queue watching function
// adjust accels so that until timeout ctrl+t calls ctrl_k_t_cb
}
ctrl_k_timeout () {
if (second_event_happened)
second_event_happened = FALSE;
else
ctrl_k_function ();
// reset accels to their normal state, i.e. ctrl+t calls ctrl_t_cb
}
ctrl_t_cb () {
...
}
ctrl_k_t_cb () {
second_event_happened = TRUE;
...
}
Однако этот подход подвержен ошибкам.Есть ли более простое или GTK-решение?