输入 - 鼠标事件不起作用

时间:2015-04-17 06:46:59

标签: linux mouse uinput

我在通过uinput设备事件文件模拟鼠标事件时遇到了问题。

我可以用' struct input_event'来编写事件。键盘/鼠标事件的结构格式,但只有关键事件工作正常,鼠标事件无法正常工作

我启用了uinput所需的所有位

UI_SET_EVBIT - EV_KEY (keyboard/mouse), EV_REP (Repeating events), EV_SYN (Sync report events), EV_REL (Mouse)

UI_SET_RELBIT - REL_X, REL_Y (Mouse)

UI_SET_KEYBIT - All the keys in keyboard, BTN_MOUSE, BTN_LEFT, BTN_RIGHT, BTN_MIDDLE

我使用以下代码

触发了事件
gettimeofday(&ev.time,0);
ev.type = EV_KEY;
ev.code = BTN_LEFT;
ev.value = <MOUSE PRESS/RELEASE>; // tbhis wil lbe either 0 or 1
if(write(uinputfd, &ev, sizeof(ev)) < 0)
{
    return false;
}

// Then send the X
gettimeofday(&ev.time,0);
ev.type = EV_REL;
ev.code = REL_X;
ev.value = x;
if(write(uinputfd, &ev, sizeof(ev)) < 0)
{
    return false;
}

// Then send the Y
gettimeofday(&ev.time,0);
ev.type = EV_REL;
ev.code = REL_Y;
ev.value = y;
if(write(uinputfd, &ev, sizeof(ev)) < 0)
{
    return false;
}

// Finally send the SYN
gettimeofday(&ev.time,0);
ev.type = EV_SYN;
ev.code = SYN_REPORT;
ev.value = 0;
if(write(uinputfd, &ev, sizeof(ev)) < 0)
{
    return false;
}

另外,我可以从相应的输入设备输入文件中读取/打印键盘/鼠标事件。

有人知道为什么只有鼠标事件不起作用吗?

1 个答案:

答案 0 :(得分:1)

我没有答案为什么,但我注意到我必须将密钥,绝对密钥和相对密钥分离到单独的设备中。我希望其他人能够得到如何将它们组合成一个设备的答案。

Edit1:键和相关事件可以在同一设备上。如果您仍然需要帮助,我建议发布用于设置struct uinput_user_dev的代码,并撰写SET_EVBITSET_RELBIT。发送事件看起来很好,所以可能是初始化或关闭。

相关问题