微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux 笔记本基于“敲打”的命令

Linux 笔记本基于“敲打”的命令

时间:09-12 来源:互联网 点击:

tap并将注释区的内容修改成更有意义的内容例如

_#_ /bin/echo double tap _#_ Double tap event

现在我们已经修改好这个配置文件可以打印一条通知了接下来使用下面的命令在守护模式下运行 knockAge 脚本

perl knockAgepl

这个程序会在后台安静地监听 ~/knockFile 所罗列的事件请使用相同的间隔再次双击屏幕您会看到在屏幕上打印出了 double tap 消息如果我们希望更详细地了解 knockAgepl 脚本是如何工作的那么我们可以使用下面的命令在守护模式下运行它

perl knockAgepl v

使用 xscreensaver 锁定屏幕或打开屏幕

创建 password 序列

使用下面的命令在 create 模式下运行 knockAgepl 程序

perl knockAgepl c

现在我们需要创建一个解锁的密码序列我建议使用 刮脸和理发的动作请确保每次您都可以以一贯精确的方式执行这个动作尽管您可以通过修改参数来控制输入密码敲打操作所需要的精度但是这仍然很难匹配精确的时间刮脸和理发动作 除了可以提供稳定的击打顺序之外其复杂性和简单性对于屏保解锁密码来说也非常适合下面是一个刮脸和理发动作 的击打序列示例

_#_ /bin/echo shave the haircut _#_ two bits

在进行下一步操作之前您应该体验一下上面的命令和 ~/knockFile 配置文件中的双击命令这可以在屏保运行时提供很好的帮助它更难检测出敲打是否正确

xscreensaver 所使用的命令配置

以下设置假设您已经登录到了窗口管理器中并且已经使用您的 userid 启动了xscreensaver 程序例如如果您正在运行 Fedora Core 并且使用 gdm 登录到 KDE 中那么 xscreensaver 就会自动启动因此要激活它则需要将双击命令从

/bin/echo double tap

修改为

xscreensavercommand activate

现在每次识别出有 双击 事件发生时xscreensaver 程序都会使用所指定的内容来激活一旦 screensaver 被激活就可以通过输入密码(如果是这样配置的)对屏幕进行解锁不过我们真正希望的是自己的朋友也可以使用密码解锁代码来解除屏保因此我们需要在 ~/knockFile 文件中将下面的命令

/bin/echo shave the haircut

替换为

killall xscreensaver ; nohup xscreensaver nosplash >/dev/null >/dev/null

这个命令会停止当前运行的所有 xscreensaver 程序然后在后台再重新启动 xscreensaver现在我们可以通过敲打屏幕边来重复加锁和解锁计算机屏保的过程这比蓝牙提供的近似度加锁更加安全或更方便吗?答案可能是否定的它更酷吗?当然!

更多例子

HDAPS 传感器和 knockAgepl 程序提供了另外一种用户输入设备我们可以使用它们以独特的方式进行输入例如

如果计划在一个基础上测试新的 X 配置文件可以将双击条目更改为重新启动配置好的 X 服务器这样就不需要敲任何其他键来强制重启了

在命令区中可以放上我们喜欢使用的任何 shell 脚本这样就可以使用双击来查看 email

以最新的组合节拍进行敲打让 ThinkLight 显示 WWII 代在 Kinakuta 的黄金存储设备的 Morse 密码位置

敲入 Morse 编码防止键盘输入被记录

请参阅 参考资料 部分给出的有关将 ThinkPad 的倾斜度用于游戏显示工具的例子或者直接跳过这部分内容将 Threshold 变量设置为 这样您使劲踢一脚 ThinkPad它就会自动重启了

knockAgepl 代码

历史和策略

Jeff Molofee 所编写的 hdapsglc 是 knockAgepl 代码的基础Hdapsglc 是一个非常好的展示程序可以展示如何使用倾斜传感器来实时地显示有关 ThinkPad 的方向的信息二者之间的区别是本例将时间上隔离的事件组织在一起创建了敲打事件同时提供了相关的代码来创建并监听敲打事件序列

参数配置

下面让我们来使用对时间和传感器敏感的一些参数来启动 knockAgepl

清单 主程序参数

require sys/syscallph; # for subsecond timing my $option = $ARGV[] || ; # simple option handling # filename for hdaps sensor reads my $hdapsFN = /sys/devices/platform/hdaps/position; my $UPDATE_THRESHOLD = ; # threshold of force that indicates a knock my $INTERVAL_THRESHOLD = ; # microseconds of time required between knock # events my $SLEEP_INTERVAL = ; # time to pause between hdaps reads my $MAX_TIMEOUT_LENGTH = ; # maximum length in seconds of knock pattern # length my $MAX_KNOCK_DEV = ; # maximum acceptable deviation between recorded # pattern values and knocking values my $LISTEN_TIMEOUT = ; # timeout value in seconds between knock # events when in listening mode

这些变量及其注释都非常简单它

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top