c++ - 错误 : ‘BadDevice’ was not declared in this scope

标签 c++ xlib xinput

知道为什么我会收到此错误吗?

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;
        }

干杯

贾勒特

最佳答案

这就是你使用它的方式

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 值,并且它们可能未在头文件中定义,所以我会检查以确保它们在某处。因此,尝试计算 ret 变量。您的错误代码可能类似于 1、2、3、4,也可能是 1 或 0。您必须自己定义错误代码。

以下是其他人如何使用 XIGrabDevice 的示例程序:http://people.freedesktop.org/~whot/xi2-recipes/part5.c

关于c++ - 错误 : ‘BadDevice’ was not declared in this scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748291/

相关文章:

c++ - 将抽象类对象从映射存储到抽象类引用

crash - 调用XtDestroyWidget时,主题应用程序崩溃

linux - 将 XInput2 设备映射到 sysfs 节点

ubuntu - 哪个 xinput 设置会反转鼠标滚轮的方向?

shell - 如何制作一个程序来查找 xinput 设备的 id 并设置 xinput 一些设置

c++ - 从 C++ 到 C 文件中定义的变量/函数的 undefined reference

c++ - 什么时候计算右值?

c++ - 初始化指向结构语法的指针

c - 带有图形的程序被中止,即使调用了 XInitThreads

python - 使用 python xlib 发生更改焦点事件时如何检测应用程序名称 “correctly”