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

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

你基本上有两个选择,我可以想到:

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

第一个使用虚假的输入设备(尝试在shell中运行xinput list ),它们出现在大多数(所有?)X服务器中。 每次调用其中一个XTestFake*函数都会生成一个X输入消息。

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

而且,当然,你可以编写一个输入内核驱动程序!

当我需要在Windows上完成同样的事情时,我查看了VNC服务器的源代码,并找到了我需要知道的一切。 Linux版本应该有你需要的,或者至少指出你在正确的方向。 在Linux上有两种VNC服务器,那些在虚拟显示器上工作的服务器和那些在真实服务器上工作的服务器。 你想看看一个真正的显示器,就像这个 。