X11中的滚轮事件

11

我搜遍了整个网络,但惊讶地发现关于这个主题的资料竟然找不到。

我只是想能够捕获来自普通鼠标滚轮的事件。

1个回答

14

是的,这非常令人困惑。这是因为X11决定将鼠标滚轮事件分配为鼠标按钮4和5。接收滚轮事件与接收鼠标按下事件(根据/usr/include/X11/X.h中的ButtonPress事件)相同。同时注意,头文件定义了Button1..Button5。按钮4和5对应于向上或向下-可能不按此顺序,你需要通过实验来确定。头文件从未提到滚轮事件。

谢天谢地,更高级别的API(如GDK)明确提供了滚轮支持。


请注意,每次滚动鼠标滚轮都会生成一个按下事件和一个释放事件,紧接着发生。对于这些按钮,您可以安全地忽略释放事件。 - JvO
1
@MultimediaMike,我终于有机会来处理这个问题了。我之前遇到的一个最初的问题是我没有捕捉到正确的事件。有两个问题需要解决:滚动的数量是否指定(还是多个事件),水平滚动如何实现? - geometrian
2
@imallet 要处理水平滚动,您需要监听对应于左和右的按钮6和7。 - matteodelabre
@matteodelabre 好的。从“Button(1|2|3|4|5)”值推断,我猜测(因为它们没有被定义),它们的值应该是“6”和“7”。 - geometrian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接