hid多点触摸触摸屏调试
要求
硬件
此处提供的代码仅适用于配备Synaptics TouchPad的计算机,并且恰巧是在IBMhinkPad T30上开发的。 从Acer Aspires到Toshiba Tecras,许多笔记本电脑上都可以找到Synaptics触摸板。 请查阅“ 相关主题 ”以获取Synaptics TouchPad软件项目的硬件兼容性列表,以查看是否遇到了麻烦。
软件
您需要具有evdev支持的现代Linux内核。 幸运的是,大多数现代发行版都内置了此功能。Synaptics软件包还附带了许多发行版,其中包括用于监视TouchPad事件的synclient 。 例如,Fedora Core还包括适当的X Window System配置,以使用户只需进行最少的修改就可以使用TouchPad。 其他发行版,例如Ubuntu V7.10,可能需要进一步配置,然后Synaptics软件包(使用命令 )才能正常工作。 咨询相关主题在Linux下实现与Synaptics的TouchPad的基本功能的更多信息。
您还需要CPAN的Time :: HiRes模块来提供亚秒级的计时控制,以处理TouchPad事件。 另外,您需要X11 :: GuiTest模块将合成的X Window事件发送到应用程序。 请参阅相关的主题为这些工具。
确保基本功能
如果使用触摸板启用了鼠标控制,请检查是否有足够的多指检测以支持手势。 运行并尝试在触摸板上进行不同的触摸。 您应该看到类似于以下的输出。
清单1.示例synclient -m 100输出
尝试用一,二和三指触摸以确保正确检测到事件。 确保触摸板能够检测到三个手指,因为要添加的第一个手势是“三指轻扫”。 请注意,在宽泛变化的空间中按两根手指时,TouchPad如何拾取零根手指以及X和Y坐标读数。 下面的处理脚本利用这些特征来帮助检测打开和关闭捏。 按Ctrl + c退出synclient程序。
通用程序方法
使用syclient输出来监视TouchPad状态是向Linux应用程序添加更多接口选项的简单有效的方法。 下面介绍的gestureListener.pl程序打开了一个管道,可以从synclient程序读取数据,并处理TouchPad事件以检测手势。 这些手势与发送到X Window System中当前对焦应用程序的键盘命令相关联。
滑动手势
三指轻扫是一种相对简单的手势检测方式,它只需要在触摸板上向左或向右移动三个手指即可。 清单2显示了开始处理synclient输出以进行手势检测所需的gestureListener.pl程序的开始。
清单2.gestureListener.pl程序开始
请注意, 变量和其他参数可能需要根据您的特定Synaptics硬件或驱动程序级别进行自定义。 synclient命令的选项关闭常规的TouchPad事件。 红色的“鼠标棒”(在ThinkPads和其他设备上)仍然可用,并且支持PS2和USB鼠标。 无需关闭TouchPad,但可以减少从滑动和捏起识别与手势无关的鼠标事件的问题。
调用可以找到焦点窗口的当前窗口标识符。 这允许命令(稍后使用)将合成的X Window事件发送到当前在焦点窗口中。 清单3启动主程序循环并读取synclient输出。
清单3.主逻辑循环开始
在每次超时时重置事件检测历史记录阵列对于消除TouchPad手势之间的残留是至关重要的。 清单4显示了主程序循环中三指检测的开始。
清单4.三指处理
收集到10点的三指数据后,将处理X坐标以创建升序和降序排序。 如果升序排序与X坐标的当前值匹配,则设置向右滑动的条件。 相反,如果降序匹配,则设置向左滑动条件。 变量将保持此条件,并将如下所示执行。
清单5.继续执行主要逻辑,执行事件
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!