检测lablgtk中的Ctrl +单击事件

时间:2015-04-27 13:22:05

标签: gtk mouseevent ocaml lablgtk

This question解释了如何检测pygtk中的ctrl +单击。

它是否也适用于Lablgtk?或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

在lablgtk中,有一个更直接的解决方案,虽然不是很明显。

通过鼠标点击事件evGdkEvent.Button.t类型),您可以检测ctrl + click / shift +点击GdkEvent.Button.stateGdk.Convert.modifier)等事件,如下例所示:

let state = GdkEvent.Button.state ev in
let modifiers = Gdk.Convert.modifier state in
let button = GdkEvent.Button.button ev in
if button = 1 && List.mem `CONTROL modifiers then
  (* Ctrl+left click *) ...
else if button = 3 && List.mem `SHIFT` modifiers then
  (* Shift+right click *) ...

修饰符列表的类型为Gdk.Tags.modifier