X 下的鼠标滚轮消息的处理
今天午休的时候,抽了几分钟解决我们的游戏 client engine 在 X Window 下无法处理鼠标滚轮事件的问题。
可能这年头直接写代码处理 XEvent 的程序员不多,我 google 了一下,没有找到详细的文档。不过我想这不会是大问题,没有资料就直接看 .h 文件好了。
打开 Xlib.h 通读了一遍,发现没有什么 event 结构是跟滚轮有关的。又绕回自己的程序试了一下,原来,X 下没有特别为鼠标滚轮做单独的消息。(Windows 下则有对应的 WM_MOUSEWHEEL
)
取而代之的是,鼠标的前滚和后滚被映射到了鼠标的第 4 和第 5 个按键的事件上了。(这个其实可以在 X 的配置文件里配置,相关资料很容易 google 到。)那么,支持鼠标滚轮事件的处理,只需要在 ButtonPress 做处理即可。
Comments
研究了下,但是貌似x的滚轮的处理是处理Z轴的事件而不是分配到其他button,会再好好看看的
Posted by: 刘星龙 | (9) April 25, 2008 09:59 PM
老大,效率好高啊,google还要打开Xlib.h通读一遍,还找到原因所在,总共才花了几分钟。想知道是怎么做到的?
Posted by: kk | (8) April 5, 2008 04:34 PM
最喜欢的一款游戏用的FREEBSD做服务器,我也就喜欢上了"她".
Posted by: 555 | (7) April 3, 2008 06:42 PM
楼下的,这些我不熟。如果是我自己的系统出了问题,我会想办法去读代码查看。开源不就有这个好处吗?
如果没出问题,我不是做 web 开发这行当的,暂时没有精力特意去研究。
Posted by: Cloud | (6) April 3, 2008 05:39 PM
居然在搜wiki问题的时候搜到了你的blog,hoho,麻烦帮忙解答一下问题哈:)
Posted by: script | (5) April 3, 2008 02:03 PM
(._.!) 不要用终于吧。
我们项目组 05 年开始就一直做平台无关的开发。最近一年多以来,3d client 的开发就是在 ubuntu 下开展工作的。
而 server 开发是在 freebsd 开展的。选择 linux 还是 freebsd 或是 windows ,都是开发人员的喜好而已,代码的要求是平台无关。
不过产品主要面向的用户是 windows ,一定要确保 windows 下运行没有问题。
虽然我们的程序都可以在各种 os 下编译出原生的程序。不过即使用 wine 又有什么不好的呢?wine 只是一个壳而已。
Posted by: Cloud | (4) March 31, 2008 10:30 PM
终于开始研究X了啊,请问网易是不是要转到做跨平台的游戏了啊?
我的要求其实很简单,只要它能不用wine模拟能直接运行在linux上让我玩游戏就够了,
Ubuntu实在太好用,我不想再回到M$的肮脏世界!
Posted by: rae | (3) March 31, 2008 09:35 PM
恩,没有做过X
Posted by: 知名不具 | (2) March 31, 2008 12:11 PM
逮到一个沙发 呵呵
Posted by: yue169 | (1) March 28, 2008 09:13 PM