我知道为什么会收到这个错误?:
error: ‘BadDevice’ was not declared in this scope
我已经包括:
#include <X11/Xlib.h>
和
#include <X11/extensions/XInput2.h>
在我的类头文件中。
我正在使用它:
int ret = XIGrabDevice(display_, 2, LinuxInputManager::getWindow(),
CurrentTime, None, GrabModeAsync,
GrabModeAsync, False, &eventMask_);
if (ret == BadValue)
std::cout << "bad value" << std::endl;
else if (ret == BadDevice)
std::cout << "BadDevice" << std::endl;
if (ret == BadMatch)
std::cout << "BadMatch" << std::endl;
if (ret == BadWindow)
std::cout << "BadWindow" << std::endl;
if (ret) {
std::cout << "not available 3" << std::endl;
}
干杯
Jarrett的
答案 0 :(得分:0)
这就是你使用它的方式
int rc;
if ((rc = XIGrabDevice(dpy, 2, win, CurrentTime, None, GrabModeAsync,
GrabModeAsync, False, &mask)) != GrabSuccess)
{
fprintf(stderr, "Grab failed with %d\n", rc);
return;
}
或尝试(也尝试使用您的功能)
int rc;
if (!(rc = XIGrabDevice(dpy, 2, win, CurrentTime, None, GrabModeAsync,
GrabModeAsync, False, &mask)))
{
fprintf(stderr, "Grab failed with %d\n", rc);
return;
}
看起来BadValue,BadDevice,BadMatch ......都是一个int值,它们可能没有在头文件中定义,所以我会检查以确保它们在某处。所以,尝试cout ret变量。您的错误代码可能类似于1,2,3,4,也可能是1或0.您必须自己定义错误代码。
以下是其他人如何使用XIGrabDevice的示例程序:http://people.freedesktop.org/~whot/xi2-recipes/part5.c