【问题标题】:Reload tslib touch screen calibration重新加载tslib触摸屏校准
【发布时间】:2010-12-21 19:40:14
【问题描述】:

背景:我正在开发一个基于 Qt 的大型 GUI,它处理所有用户与触摸屏的交互。该程序的设计使用户无需访问命令提示符即可执行任何操作,包括重新校准触摸屏。我编写了一个模仿 tslib 的 ts_calibrate 实用程序,它以 QWidget 运行,并且可以在 /etc/pointercal 修改 tslib 的校准文件。

但是,虽然我可以修改校准文件,但在我关闭并重新启动程序之前,对校准的更改似乎不会应用。我已经编写了一个可以处理重新打开程序的脚本,但我想找到一种更优雅的方式来执行此操作,以便将用户的麻烦降至最低。

简而言之, Qt 的一个类中是否有一个函数可以在运行中重新加载 tslib 的校准文件,而无需重新启动应用程序?我查看了QWSServer class reference,但没有找到任何看起来像我想要的那样的东西。

【问题讨论】:

    标签: qt touchscreen


    【解决方案1】:

    事实证明,驱动程序可以在不重新启动应用程序的情况下重新加载。为此,您可以使用QWSServer class 中的方法关闭并重新打开指针设备,如下所示:

    #include <QWSServer>
    
    ...
    
    QWSServer::instance()->closeMouse();
    QWSServer::instance()->openMouse();
    

    这将导致重新加载 tslib 的校准文件。例如,如果您以错误的校准启动程序,则在程序运行时更正触摸屏的校准文件,然后调用这些方法,指针将调整为新的校准。

    【讨论】:

      【解决方案2】:

      tslib 与 Qt 无关。你可以下载tslib的源码,看看tests/ts_calibrate.c是做什么的。

      【讨论】:

      • 我同意它与 Qt 本身无关,但我的 Qt 版本是使用 tslib 驱动程序编译的(参见 doc.qt.nokia.com/4.6.2/qt-embedded-pointer.html)。正如那里所说,“鼠标驱动程序在开始运行时由服务器应用程序加载”。我的问题是是否可以在不停止和重新启动程序的情况下重新加载驱动程序。我知道 ts_calibrate.c 做了什么——在我的问题中,我提到我已经对该程序进行了逆向工程。
      【解决方案3】:

      ts_reconfig() 应该做你想做的事。

      【讨论】:

        猜你喜欢
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-18
        • 2017-05-19
        • 1970-01-01
        相关资源
        最近更新 更多