Blog Of Leung

personal blog & work notes

View project onGitHub
 

使用键盘操作平板

情景:当时平板的触摸屏硬件上出了问题,而刚好没有多余的触摸屏可替换,然而现在有东西在调试,比如说我做了一些内存控制上的优化,现在想跑个分测测分数和稳定性.

环境:调试用的机器默认都打开了adb,连接稳定.

有了稳定的adb,其实对于驱动人员来说,有没有触摸屏关系都不是太大了. 因为android已经有很完善的接口,在终端下做基本的按键操作是完全没问题的. 只需要调用接口,输入相应的键值,就可以操作平板了. 命令使用方式如下(在adb模式下):

$ input keyevent <keycode>

需要按键值的信息,可以直接查看定义文件,工程路径一般是:frameworks/base/core/java/android/view/KeyEvent.java

操作了几下之后,首先是觉得这种方式还是蛮酷的,然后敲多了几次命令之后就觉得烦了,重复敲命令很耗时间,即使有命令记录可以回溯,每次想干点什么总是要查按键定义,折腾不起......

后来我想干脆把这些东西弄进一个脚本里面,需要用到的时候直接跑脚本,然后接收键盘按键代替那长长的一串命令,貌似也不错呢.完成后的脚本如下:

#!/system/bin/sh

### shell for input simulate ###
### author: leung ###
### date: 2013-09-26 ###
set -e
count=1

insert()
{
    read insert
    input text $insert
}

while [ $count -le 1000 ]
do
    read -s -n1 input
    case $input in
        h)
        input keyevent 21;;
        j)
        input keyevent 20;;
        k)
        input keyevent 19;;
        l)
        input keyevent 22;;
        t)
        input keyevent 27;;
        u)
        input keyevent 82;;
        m)
        input keyevent 164;;
        d)
        input keyevent 67;;
        p)
        input keyevent 26;;
        H)
        input keyevent 3;;
        b)
        input keyevent 4;;
        T)
        input keyevent 61;;
        f)
        input keyevent 80;;
        X)
        input keyevent 66;;
        +)
        input keyevent 81;;
        -)
        input keyevent 69;;
        x)
        input keyevent 17;;
        /)
        input keyevent 76;;
        =)
        input keyevent 70;;
        i)
        insert;;
        *)
        exit -1
    esac
    count=$(($count+1))
done

脚本的写法比较粗鲁,只是一个循环加一堆罗列. 但是已经基本实现了初衷,凑合着也能用.这个脚本是响应电脑键盘的输入,然后控制平板. 这里实现的是最基本的操作. 支持的按键操作如下:

  • h,j,k,l 是vim的操作风格,代表上下左右
  • t 是take a picture,可以在摄像模式中拍照
  • u 是unlock,可以让机器从锁屏状态中解锁
  • m 是mute,表示静音
  • d 是delete,表示删除字符
  • p 是power,表示power键
  • H 大写的H是home键
  • b 是back,表示返回键
  • T 是Tab键,可以切换按钮
  • f 是focus,可以使camera对焦
  • X 大写的X是表示enter键
  • +,-,x,/ 表示加减乘除,乘号之所以用小写的x是因为*号是通配符
  • i 是insert,是vim的操作风格,输入i之后就进入输入模式

到此,这个小工具就完成了,需要的时候只需要adb push进机器中,然后在机器上执行该脚本,就可以接收键盘按键操作了.

Author:leung

26 Sep 2013

← Home

comments powered by Disqus