【发布时间】:2011-10-11 22:01:12
【问题描述】:
我在一个项目中,我需要编写一个简单的驱动程序,该驱动程序接受来自 USB 设备的输入并根据收到的 msg 在 GUI 上执行操作(就像编写 USB 鼠标驱动程序,但使用我自己的协议)。 我正在寻找这种可能性,我发现软件测试自动化工具(如 LDTP)已经可以生成鼠标点击和键盘点击等操作。 还有其他 API 可以使用吗?考虑到我的团队对 C 语言有很好的理解并且没有使用 Linux 的经验,它会消耗多长时间?
【问题讨论】:
我在一个项目中,我需要编写一个简单的驱动程序,该驱动程序接受来自 USB 设备的输入并根据收到的 msg 在 GUI 上执行操作(就像编写 USB 鼠标驱动程序,但使用我自己的协议)。 我正在寻找这种可能性,我发现软件测试自动化工具(如 LDTP)已经可以生成鼠标点击和键盘点击等操作。 还有其他 API 可以使用吗?考虑到我的团队对 C 语言有很好的理解并且没有使用 Linux 的经验,它会消耗多长时间?
【问题讨论】:
我能想到的基本上有两种选择:
XTestFakeDeviceKeyEvent、XTestFakeRelativeMotionEvent 等)第一个使用了大多数(所有?)X 服务器中存在的 fake 输入设备(尝试在 shell 中运行 xinput list)。每次调用 XTestFake* 函数之一都会生成一条 X 输入消息。
第二个是允许用户应用程序创建输入设备和发送输入事件的内核模块。你只需打开/dev/uinput设备,发送几个ioctls来配置它,然后直接write输入事件。
当然,您还可以编写输入内核驱动程序!
【讨论】:
当我需要在 Windows 上做同样的事情时,我查看了 VNC Server 的源代码以获取想法,并找到了我需要知道的一切。 Linux 版本应该有你需要的东西,或者至少可以为你指明正确的方向。在 Linux 上,有两种 VNC 服务器,一种在虚拟显示器上工作,另一种在真实显示器上工作。你想看一个在真实显示器上工作的,比如this one。
【讨论】: