在linux中生成鼠标,键......等事件

时间:2011-10-11 22:01:13

标签: c linux events

我正处于一个项目中,我需要编写一个简单的驱动程序,接受来自USB设备的输入,并根据收到的消息在GUI上执行操作(就像编写usb鼠标驱动程序,但使用我自己的协议)。 我正在寻找这种可能性,我发现软件测试自动化工具,如LDTP,已经可以生成鼠标点击和键盘命中等操作。 是否有其他API可供使用?考虑到我的团队对C语言有很好的理解并且没有使用Linux的经验,它会消耗多长时间?

2 个答案:

答案 0 :(得分:5)

你基本上有两种选择,我能想到:

  • X11:使用XTest扩展程序(XTestFakeDeviceKeyEventXTestFakeRelativeMotionEvent等)。
  • 模块输入。

第一个使用输入设备(尝试在shell中运行xinput list),这些设备存在于大多数(所有?)X服务器中。每次调用XTestFake*函数之一都会生成一条X输入消息。

第二个是内核模块,它允许用户应用程序创建输入设备并发送输入事件。您只需打开/dev/uinput设备,发送一些ioctl进行配置,然后直接write输入事件。

当然,您可以编写输入内核驱动程序!

答案 1 :(得分:2)

当我需要在Windows上做同样的事情时,我查看了VNC Server的思想源代码,并找到了我需要知道的一切。 Linux版本应该具有您所需要的功能,或者至少指向正确的方向。在Linux上有两种VNC服务器,一种是在虚拟显示器上工作,另一种是在真实显示器上工作。您想要查看适用于真实显示的内容,例如this one