有史以来第一次,您可以敲打一下计算机并得到有意义的响应!使用 Linux® 和 Hard Drive Active Protection System(硬盘活动保护系统,HDAPS)内核驱动程序,我们可以访问 Lenovo(以前称为 IBM®)ThinkPads 上的嵌入式加速器,然后处理加速器的数据来读取特定 “敲打” 事件序列(也就是您使用关节敲打笔记本的事件序列),并基于这些敲打事件运行一些命令。双击锁定屏幕,然后敲入密码来解锁。敲打显示屏一次就可以让 MP3 播放器前进一个音轨。这类可能事物是无穷无尽的。
2003 年,IBM 开始发行集成了加速器和相关软件的 ThinkPad 笔记本,以便在笔记本掉到地上时对硬盘进行保护。来自 IBM 和其他地方的黑客已经为 Linux 内核开发了一些模块来利用这些传感器的优点。屏幕显示方向、桌面切换、甚至是游戏控制和实时的笔记本倾斜度 3D 模块现在都已经可以使用了。本文将展示 “敲打代码” 这种新技术和一个简单程序,该程序在检测到特定的敲打代码时会运行一些命令。
使用带有 HDAPS 驱动的已更新的内核,我们就可以用一个简单程序 knockAge 来生成敲打代码了。我们也可以下载并使用一个 Perl 脚本来定制自己的敲打输入环境。请参阅本文最后的 下载 和 参考资料 部分给出的链接,其中包括了解 knockAge 操作的链接。
硬件需求
|
很多在 2003 年以及这以后生产的 IBM(现在是 Lenovo)的 ThinkPads 中都有 HDAPS 硬件。如果您不确定自己的硬件配置,可以检查 Lenovo 的 Web 站点上关于您自己型号的机器的技术细节。如果您的机器上没有 ThinkPad,那么这段代码可能无法在您的笔记本上正常工作。
本文是在 x86 体系架构上编写的。本文中的代码是在 ThinkPad T42p 的两个不同模块上进行开发和测试的。有关 ThinkPad 硬件的链接,请参阅 参考资料 部分。
如果您有一台 Apple MacBook,那么您可能也有这种加速器,并且可以使用相同的方法,通过内核访问它们。然而,本文中的代码并没有在 Apple 硬件上进行测试。
软件要求
HDAPS 驱动程序必须包括在内核中才能启用对加速器的访问。试图对现有内核增加补丁也不会获得成功,因此我们建议从自己喜欢的镜像站点上下载最新的内核。新内核发行版中已经包含了对 HDAPS 驱动程序的支持。
启动内核配置选择程序,并在配置中包含 HDAPS 驱动程序。HDAPS 驱动程序位于 Device Drivers > Hardware Monitoring Support > IBM Hard Drive Active Protection System (hdaps) 选项中。更多的内核配置和安装过程已经超出了本文的范围,但是在 Web 站点上有很多教程可以提供具体的帮助;有关可以帮助我们入门的链接,请参阅 参考资料 一节的内容。
本文是在 2.6.15.1 版本的内核上进行开发和测试的。
创建简单的敲打序列
从 下载 一节的链接中下载源代码,并从中找到 knockAge.pl 脚本。这就是让我们可以创建敲打序列的主要 Perl 程序,它还允许监听特殊的敲打序列并运行命令。下面让我们来介绍一下这个用户空间程序的用法,以及 knockAge.pl 程序的配置,然后再对这个函数进行回顾。
使用下面的命令运行 knockAge.pl 程序:
perl knockAge.pl -c
这会启动 Perl 程序来监听敲打事件并记录下它们之间的间距以供将来使用。一旦程序开始运行之后,对笔记本进行的敲打操作就会产生效果。我们并不需要在物理上移动自己的 ThinkPad 来注册敲打事件,如果 ThinkPad 在一个平面上,只要对其进行一些移动和滑行即可。我建议您用左右握住 ThinkPad 左边接近连接轴的地方,同时用右手在距离 LCD 底部 3 英寸的地方敲打显示屏即可。请参阅 下载 部分给出的视频展示,或参阅 参考资料 中用来创建敲打序列的例子。
体验不同的敲打幅度和力度,从而了解 knockAge 程序能够捕获的事件判断率。对于创建复杂的敲打事件来说,这非常重要。
第一次真正尝试敲打应该非常简单,两次双击之间停留 0.5 秒,然后再次运行 perl knockAge.pl -c
,在看到 “enter a knock sequence” 时稳定地敲打 LCD 边上两次,中间停留 0.5 秒。在 4 秒之后会自动超时(这是可以配置的),您所敲打的序列会被打印出来,这类似于下面的例子:
0 540031 _#_ (command here) _#_ <comments here>
让我们来分析一下这一行的内容:敲打序列,分隔符,命令区,分隔符,最后是注释区。我们的下一个步骤是将这行内容复制到 knockAge.pl 程序使用的默认配置文件 {$HOME}/.knockFile 中,该配置文件也可能是 /home/<username>/.knockFile 文件。在使用上面的敲打序列行创建好 .knockFile 文件之后,就可以对这行进行修改来运行程序了。将 (command here)
文本修改成 /bin/echo "double tap",并将注释区的内容修改成更有意义的内容,例如:
0 540031 _#_ /bin/echo "double tap" _#_ Double tap event
现在我们已经修改好这个配置文件,可以打印一条通知了,接下来使用下面的命令在守护模式下运行 knockAge 脚本:
perl knockAge.pl
这个程序会在后台安静地监听 ~/.knockFile 所罗列的事件。请使用相同的间隔再次双击屏幕,您会看到在屏幕上打印出了 “double tap” 消息。如果我们希望更详细地了解 knockAge.pl 脚本是如何工作的,那么我们可以使用下面的命令在守护模式下运行它:
perl knockAge.pl -v
[1] [2] [3] [4] [5] [6] 下一页