【问题标题】:USB mouse hotplugging in DirectFB/QT EmbeddedDirectFB/QT Embedded 中的 USB 鼠标热插拔
【发布时间】:2012-12-21 05:59:50
【问题描述】:

DirectFB 1.2.9或Qt Embedded 4.7.3有什么办法可以实现USB鼠标的热插拔?

目前我的应用程序堆栈是这样的..

 -----------------
       GUI
 -----------------
 Qt Embedded 4.7.3
 -----------------
   DirectFB 1.2.9
 -----------------
 /dev/input/eventX
 -----------------

DirectFB 打开 Linux 输入设备节点。 Qt 使用 QSocketNotifier 等待 DirectFB 事件缓冲区并设置一个插槽来读取鼠标数据。但是在热插拔时,DirectFB 不会打开设备节点,也不会产生鼠标事件。

据我所知,DirectFb 不支持热插拔..

我尝试禁用 DirectFB 对 Linux 输入设备的处理(从 directfbrc 中的 linux-input-devices= 选项中删除 dev 节点),并设置 QWS_MOUSE_PROTO="linuxinput:.." 但由于某种原因这不起作用。似乎没有生成鼠标事件。即使我设法让它工作,我认为 QT 也不提供任何热插拔支持。

所以我唯一的替代子类 QMouseDriverPlugin 和 QWSMouseHandle 类?为此,我还没有弄清楚如何让 QT 使用我实现的子类。即,一旦我实现了这些类,我如何将它们链接到 QT 输入设备处理框架中,以便我可以设置类似 QWS_MOUSE_PROTO="mylinuxinput:.." 的东西?

【问题讨论】:

  • 通过 QWS_MOUSE_PROTO 设法让鼠标直接从 QT 工作。但不出所料,没有热插拔。

标签: qt directfb qtembedded hotplugging


【解决方案1】:

据我所知,在 Qt Embedded 4.7.2(没有 DirectFB)中,我没有遇到鼠标或键盘热插拔的问题。如果你想自己继承,从 linuxinput 插件开始修改插件。你会在 Qt 源码中发现:this 是放置插件的目录,但有些类包含在其他目录中。

另外,你在插入后是否在你的 linux 设备中获取数据?您是否尝试过使用该设备?

【讨论】:

  • 那么你可能想看看代码并调试而不是重写。
  • 对不起,我的第一条评论应该更清楚。虽然我可以猫..一旦我插上鼠标,猫就会退出。设备节点不存在了。。插上之后需要重新cat一下。设备节点是udev动态管理的。
  • 重要的是再次插上就可以cat了。在这种情况下,这意味着较低的级别是可以的。尝试调试Qt插件,看看为什么再次插入时无法获取数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2014-01-08
相关资源
最近更新 更多