我目前正在使用C在X11中实现一个程序。我让这个程序处理右键和左键单击事件,但是中键单击会带来问题。我的窗口管理器(Ubuntu9.10上的GNOME)似乎认为,与其一次点击鼠标中键,不如一次点击其他按钮。我想这和用鼠标中键复制粘贴有关。不过,我真的不想这样,因为我正在用opengl制作一个全屏应用程序,这样的事情不合适。有没有办法让鼠标中键像其他按钮一样工作?
我现在的代码是这样的:
switch(currentXEvent.type) {
case ButtonPress:
switch(currentXEvent.xbutton.button) {
case 1:
leftMouseButton(currentXEvent.xbutton.x, currentXEvent.xbutton.y);
break;
case 2:
middleMouseButton(currentXEvent.xbutton.x, currentXEvent.xbutton.y);
break;
}
}
我的困难在于,它的行为就像按下了leftmousebutton()一样。有什么想法吗?
最佳答案
为此,必须从服务器获取控件。然后窗口管理器被排除在处理链之外。最舒适的方法是使用libSDL。它为全屏opengl应用程序创建适当的上下文,并且比xlib+glx更容易处理。