我对触摸屏还不太熟悉。我在亚马逊上查看了 HP 2310ti 等多点触控显示器,似乎每个人都认为 Windows 7 可以开箱即用。
它是如何工作的?我找不到任何资源解释 PC 如何从触摸屏接收输入。
我是否需要通过 USB 将 PC 与显示器连接起来,或者显示器中是否嵌入了无线/蓝牙技术,例如无线键盘/鼠标?Linux 如何处理这种开箱即用的显示器?它能识别 2 个连接的鼠标设备之类的东西吗?我读过一些试图在 Xorg/GTK 中实现这些内容的项目,但目前看来还处于试验阶段(因为关于这个主题的信息很少,如果有的话)。
编辑:现在我买了一台 Acer T231 和富士康的 nT330i 上网本。首先要说的是,显示器通过 USB 连接到 PC,内核将“触摸设备”(例如通过 USB 连接的显示器)检测为 HID-USB 设备。对于 Linux,我认为内核可以检测到触摸设备,并且 Xorg/Gnome 可以使用它。
我尝试使用运行 2.6.32 内核的 Ubuntu Lucid,它检测到 HID 设备,但 gnome 对触摸没有反应。现在我使用 Ubuntu Natty Narwhal,它开箱即用,支持单点触摸。为了运行手势,它还附带了一个名为“Ginn”的守护进程,其配置位于 /etc/ginn/wishes.xml - 请查看“man ginn”。习惯了所有东西后,我建议必须执行以下操作才能运行多点触摸:
- 至少获取 2.6.33 内核 - natty narwhal 使用 2.6.38 版本,运行良好
- 添加 /usr/bin/ginn 作为 gnome 启动应用程序 - 此外,我使用的是 gnome 而不是 unity,也许 unity 可以开箱即用,适用于复杂的操作
- 修改 /etc/ginn/wishes.xml 以适合您的需求 - 我认为我已经修改了设置,因为我的显示器在超过 2 个手指时会出现问题,所以不是所有的手势都能正常工作,而且我还遇到了一些 compiz 问题,我也尝试通过手势来运行它们
有趣的资源:
答案1
我今天没有太多时间,所以我会快速回答你,但基本上触摸显示器使用不同的通信协议与桌面进行通信。Windows 7 使用的协议称为 WM_TOUCH,然后由操作系统进行解释:应用程序可以使用多点触摸手势,在这种情况下,操作将直接传输到活动窗口,或者应用程序无法处理触摸事件,在这种情况下,操作系统会自动将其翻译成鼠标语言(例如,捏合缩放将被翻译成 ctrl+scroll)。还有其他语言,如 TUIO(最常用,因为跨平台)或基于 XML 的消息...
从硬件角度来看,这些显示器通常使用 USB 与底座进行通信……
答案2
您的问题最终与视觉系统有关,即生成并“看到”触摸点的底层硬件/软件。根据我的经验,触摸硬件有三种基本方法:电容式、反应式和红外线。
电容式依靠电脉冲在屏幕上产生非常小的失真。由于人体充当导体,当我们触摸这样的屏幕时,我们会产生失真。iPhone 就是电容式触摸屏的一个例子。您还可以购买固定在常规显示器上的多点触控覆盖层。这些覆盖层通过 USB 插入您的计算机并附带自己的驱动程序。
电阻式屏幕由多层组成,每层之间都留有薄薄的空间。当用户按下按钮时,屏幕接触的地方就会产生一个接触点。
红外多点触控系统不一定需要任何特殊类型的屏幕才能工作。它使用红外发射器和红外摄像头的组合来查看触摸点。红外发射器配置为在屏幕底部提供均匀分布的红外光。当用户触摸屏幕时,红外光会反射回红外摄像头“看到”的位置。摄像头将其发送到记录触摸的特殊软件(如 CCV)。然后需要一个驱动程序从软件中获取触摸点信息并将其转换为操作系统的触摸/鼠标事件。
每个解决方案都需要硬件组件和软件。
答案3
我不知道 Linux 如何处理这个问题,所以我将给出一个 Windows 的观点。
多点触控只是另一组 API,或者说是显示器驱动程序发送并由应用程序响应的一组新命令。就像您的鼠标发送应用程序响应的 KeyPressDown 消息一样,您的显示器发送消息,然后 Windows 将其解释为触摸、手势等。Windows MultiTouch SDK 和 Microsoft Surface SDK 是不错的入门读物。它实际上与您的鼠标与操作系统的交互方式并没有什么不同。
困难的部分在于编写应用程序。我见过的多点触控应用程序往往过于雄心勃勃,想要做太多事情。我见过的最好的多点触控应用程序是在 Microsoft Surface 上。我朋友的公司有一台,他们为它编写了各种各样的东西。
当他们的公司进行参观时,他们总是在 Microsoft Surface 上启动这款游戏。你可以让 12 名玩家玩这个游戏。每个人都是不同的颜色,你会得到以不同颜色排队的炮弹。你只需快速滑动即可向匹配的玩家发射大炮。
看到十二个人挤在这张玻璃桌旁,一边挥动一边大喊大叫,真是令人兴奋。
他们使用的 Kinect 摄像头也很有趣。当人们走过时,告诉你你的身高,猜猜你是男是女,结果很有趣!!对我来说,Kinect 更有潜力……
答案4
直到最近,我还在一家触摸屏制造商工作。我们的一些产品通过使用较小的处理器来降低硬件成本,这些处理器只需将原始数据通过 USB 发送到 PC,然后 Win7 驱动程序解释这些数据并向 Windows 发送多点触控事件。
由于驱动程序代码包含专有 IP,因此没有可用的开源版本,所以这些触摸屏无法在 Linux 上运行。