某些文本编辑器(例如sublime或atom)支持complex key bindins,当您在按住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;
...
}
但是,这种方法容易出错。 有没有更简单的解决方案?