首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uinput -鼠标事件不工作

Uinput -鼠标事件不工作
EN

Stack Overflow用户
提问于 2015-04-17 14:46:59
回答 1查看 1.2K关注 0票数 1

我在通过uinput设备事件文件模拟鼠标事件时发现了一个问题。

我可以编写键盘/鼠标事件的'struct input_event‘结构格式的事件,但只有按键事件工作正常,鼠标事件不工作

我启用了uinput所需的所有位

代码语言:javascript
复制
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

我用下面的代码触发了这些事件

代码语言:javascript
复制
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;
}

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-09-27 04:33:22

我不知道为什么,但我注意到我必须将绝对密钥和相对密钥分离到不同的设备中。我希望其他人能回答如何将它们组合到一个设备中。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29692152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档