0

我在http://linux.die.net/man/3/xgetpointermapping找到了这两个 API 。我认为它们可以用来交换 linux 或 mac 系统上的鼠标按钮。我以下列方式使用它:

            Display *   curdisp;    // Current display.
    char        curmap[MAX_NUM];// Current mapping.
    int         nmap;       // number of mappings.

curdisp = XOpenDisplay(NULL);

nmap    = XGetPointerMapping(curdisp, curmap, MAX_NUM);
if(!nmap)
    return -1;

if(curmap[0] == '1' && curmap[2] == '3') {
    curmap[0] = '3';
    curmap[2] = '1';
} else {
    curmap[0] = '1';
    curmap[2] = '3';
}

//Set the mapping.
nmap    = XSetPointerMapping(curdisp, curmap, nmap);

但是调用 XSetPointerMapping 返回 0 并且对鼠标按钮没有影响。谁能给出一些使用 XSetPointerMapping 交换鼠标按钮的例子?或如何正确使用?它会立即起作用吗?

使用的操作系统是 Mac OS X 10.7.4。

4

1 回答 1

1

按钮编号存储为无符号字符,但不存储为字符。将“1”和“3”更改为 1 和 3。

您的代码将它们映射到按钮 49 和 51,并且确实会影响使按钮 1 和 3 无法使用的按钮。

于 2013-02-11T21:42:04.703 回答