新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Linux教程 > 正文:解析Linux笔记本基于“敲打”的命令

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

新客网 XKER.COM 2006-09-27 来源: 收藏本文
  • 以最新的组合节拍进行敲打,让 ThinkLight 显示 WWII 代在 Kinakuta 的黄金存储设备的 Morse 密码位置。
  • 敲入 Morse 编码,防止键盘输入被记录。
  •   给出的有关将 ThinkPad 的倾斜度用于游戏、显示工具的例子。或者直接跳过这部分内容,将 Threshold 变量设置为 15,这样您使劲踢一脚 ThinkPad,它就会自动重启了。

      knockAge.pl 代码

      历史和策略

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

      参数配置

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

      清单 1. 主程序参数

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

      这些变量及其注释都非常简单。它们的用法和配置选项在本文后面部分会进行解释。下面是其余的一些全局变量及其描述。

      清单 2. 敲打模式参数

    my @baseKnocks = ();             # contains knock intervals currently entered 
    my %knockHash = ();              # contains knock patterns, associated commands 
    
    my $prevInterval =       0;      # previous interval of time 
    my $knockCount =         0;      # current number of knocks detected 
    
    my $restX = 0; # `resting' positiong of X axis accelerometer 
    my $restY = 0; # `resting' positiong of Y axis accelerometer 
    my $currX = 0; # current position of X axis accelerometer 
    my $currY = 0; # current position of Y axis accelerometer 
    my $lastX = 0; # most recent position of X axis accelerometer 
    my $lastY = 0; # most recent position of Y axis accelerometer 
    
    
    my $startTime = 0;  # to manage timeout intervals 
    my $currTime  = 0;  # to manage timeout intervals 
    my $timeOut   = 0;  # perpetual loop variable 
    my $knockAge  = 0;  # count of knocks to cycle time interval 
    

      子程序

      在我们的子程序清单中首先是一个简单的逻辑块,用来检查是否有加速器可读:

      清单 3. 检查加速器的子程序

    sub checkAccelerometer() { 
    
      my $ret; 
      $ret = readPosition (); 
      if( $ret ){ 
        print "no accelerometer data available - tis bork ed\n"; 
        exit(1); 
      } 
    
    }#checkAccelerometer 
    

      Jeff Molofee 编写的 hdaps-gl.c 代码为 knockAge.pl 中的所有代码提供了一个很好的起点。在下面的

    标签:
    收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
    发表评论
    要记得去论坛讨论,点击注册新会员匿名评论
    评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
    • 阅读排行
    • 推荐阅读
    • 随机推荐