我正在寻找一种方法来检测关键组合,例如 Ctrl + P 序列(按住 right 或左键Ctrl ,点击 P 键,从key_press_event
处理程序中获取一个小部件。似乎没有任何简单的干净方法来判断修改键是否被按下。
笨重的方式是:
keypress
和key-release
处理程序AccelGroup(请参阅下面的答案)似乎适用于大多数用途,但它们是按窗口而不是按窗口小部件。
答案 0 :(得分:3)
当您获得按键事件时,事件结构(GdkEventKey)有一个名为state
的成员,它告诉您当前按下了哪些修饰符(包括鼠标按钮)。您将需要使用ruby版本gtk_accelerator_get_default_mod_mask
来屏蔽状态,以屏蔽大写锁定和数字锁定等。
答案 1 :(得分:1)
加速器组似乎完成了我正在寻找的大部分内容。 Ruby文档在http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?Gtk%3A%3AAccelGroup中。
看起来AccelGroup可以将键组合绑定到块或闭包,然后将AccelGroup添加到窗口中。
帽子提示和+1到“another.anon.coward。”
(但是,它们是每个窗口,而不是每个窗口小部件。)