1

我正在尝试在我的 OpenGL 应用程序中使用 GLUT (freeglut),并且我需要为鼠标滚轮事件注册一些回调。我设法挖掘出一个相当无证的功能:

api文档

但是这个函数的手册页和 API 条目都陈述了同样的事情:

注意:由于缺乏关于鼠标的信息,目前无法在 X 上正确实现。使用此功能会限制应用程序的可移植性。(此功能在 X 上确实有效,只是不可靠。)我们鼓励您使用标准的、可靠的鼠标按钮报告,而不是滚轮事件。

很公平,但是我如何使用这个标准的、可靠的鼠标报告呢?我怎么知道哪个是标准?我是否只使用 glutMouseFunc() 并分别使用 4 和 5 之类的按钮值作为向上和向下滚动值,例如 1、2 和 3 是否是左、中和右按钮?这是可靠的方法吗?

额外的问题:似乎“xev”工具为我的按钮报告了不同的值。我的鼠标按钮用 xev 从 1 到 5 编号,但 glut 报告的按钮从 0 到 4,即一个减一。这很常见吗?

4

1 回答 1

0

我想我可能会重新审视自己的问题,因为我已经很久没有回答了。

更彻底地阅读上述文档,据我了解,我的猜测似乎确实是真的。

我猜:

我是否只使用glutMouseFunc()和使用按钮值(如 4 和 5)分别用于向上和向下滚动值 [...]?

我尚未对其进行测试,但从文档中的以下引用中,我了解到这确实是他们的意思。

如果不注册滚轮回调,滚轮事件将被报告为鼠标按钮。

于 2010-12-22T03:47:59.397 回答