在Linux或者Android-x86系统下,会用到测试键盘、鼠标、触摸屏等各种输入设备的功能,那么下面的这段代码是个好的选择。首先编写了个Linux输入设备的测试小程序来检测问题所在,总算也小有成就。具体输入设备的路径,大家可以用cat /proc/bus/input/devices查看自己机器的设备文件。

检测按键的程序如下:

#include

#include

#include

#include

#include

#define NOKEY 0

int main()

{

int keys_fd;                     //按键句柄

char ret[2];

struct input_event t;

keys_fd = open("/dev/input/event0", O_RDONLY);

if(keys_fd<=0)

{

printf("open /dev/input/event0 device error!\n");

return 0;

}

while(1)

{

if(read(keys_fd,&t,sizeof(t))==sizeof(t)) {

if(t.type==EV_KEY)          //获取的是按键消息

if(t.value==0 || t.value==1)    //返回值是1或者0

printf("key %d %s\n",t.code,(t.value)?"Pressed":"Released");     //1表按下,0表弹起

}

}

close(keys_fd);

return 0;

}

执行结果如下:

检测触摸屏的程序如下:

#include

#include

#include

#include

#include

int main()

{

int keys_fd;

char ret[2];

struct input_event t;

keys_fd = open("/dev/input/event1", O_RDONLY);    //打开TP设备

if(keys_fd<=0){

printf("open /dev/input/event0 device error!\n");

return 0;

}

while(1)

{

if(read(keys_fd,&t,sizeof(t))==sizeof(t)) {

if (t.type == EV_KEY){

printf("  type: EV_KEY, event = %s, value = %d \r\n",

t.code == BTN_TOUCH ? "BTN_TOUCH" : "Unkown", t.value);

}

else if(t.type == EV_ABS){

printf("  type: EV_ABS, event = %s, value = %d \r\n",

t.code == ABS_X ? "ABS_X" :

t.code == ABS_Y ? "ABS_Y" :

t.code == ABS_PRESSURE ? "ABS_PRESSURE" :"Unkown", t.value);  //该处使用了一些特殊的用法::

}

}

}

close(keys_fd);

return 0;

}

执行结果如下:

关于Input设备,说明:

(1)ls -l /dev/input,得到设备名称和属性,注意此处没有input号这种Input层分配的内容,以event为主。如:

# ls -l /dev/input

crw-rw---- root     input     13,  66 1970-01-01 00:00 event2

crw-rw---- root     input     13,  33 1970-01-01 00:00 mouse1

crwxrwxrwx root  input     13,  65 1970-01-01 00:00 event1

crw-rw---- root     input     13,  32 1970-01-01 00:00 mouse0

crw-rw---- root     input     13,  64 1970-01-01 00:00 event0

crw-rw---- root     input     13,  63 1970-01-01 00:00 mice

如果这么些设备中无法确认哪个是目前在用的设备?可以采用这种方式:cat他们,然后操作鼠标或者键盘,哪个输出乱码就是用的哪个。

(2)cat /proc/bus/input/devices,主要信息是:

N: Name="s3c-keypad-rev0000"

P: Phys=s3c-keypad/input0

S: Sysfs=/class/input/input0

H: Handlers=kbd event0

N: Name="S3C TouchScreen"

P: Phys=input(ts)

S: Sysfs=/class/input/input1

U: Uniq=

H: Handlers=kbd mouse0 event1

N: Name="ADXL34x accelerometer"

P: Phys=1-0053/input0

S: Sysfs=/class/input/input2

U: Uniq=

H: Handlers=mouse1 event2

分配的Input节点全在Sysfs上,真正的设备dev在Handlers上。

(3)ls -l /sys/class/input,类设备信息:

drwxr-xr-x root     root              1970-01-01 00:00 mice

drwxr-xr-x root     root              1970-01-01 00:00 input0

lrwxrwxrwx root     root            1970-01-01 00:04 event0 -> input0/event0

drwxr-xr-x root     root              1970-01-01 00:00 input1

lrwxrwxrwx root     root            1970-01-01 00:04 mouse0 -> input1/mouse0

lrwxrwxrwx root     root             1970-01-01 00:04 event1 -> input1/event1

drwxr-xr-x root     root              1970-01-01 00:00 input2

lrwxrwxrwx root     root             1970-01-01 00:04 mouse1 -> input2/mouse1

lrwxrwxrwx root     root             1970-01-01 00:04 event2 -> input2/event2

linux 触摸屏测试源码_Linux和android下测试键盘和触摸屏相关推荐

  1. linux 触摸屏测试源码_Linux触摸屏驱动

    问题二: echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache //避免检查ac_cv_func_malloc_0_ ...

  2. linux怎么卸载源码包安装mysql_Linux下卸载和安装MySQL[rpm包]

    [日期:2012-08-03] 来源:Linux社区  作者:wang_tianbao [字体:大 中 小] 一.卸载原来的mysql: 卸载一: 输入: #rpm -qa | grep -i mys ...

  3. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

  4. 基于android2.3.5系统:源码下载及android体系架构

    **************************************************************************************************** ...

  5. Linux PPP实现源码分析-1

    前言: PPP(Point to Point Protocol)协议是一种广泛使用的数据链路层协议,在国内广泛使用的宽带拨号协议PPPoE其基础就是PPP协议,此外和PPP相关的协议PPTP,L2TP ...

  6. linux access源码,从零开始学习Linux:Day04 源码安装Nginx 。acess/status/referer

    从零开始学习Linux:Day04 源码安装Nginx .acess/status/referer 常见web服务器有IIS,apche,nginx,tomcat,tengine等等,现在nginx使 ...

  7. Linux PPP实现源码分析

    Linux PPP实现源码分析 作者:kwest <exboy@163.com>  版本:v0.7 ©所有版权保留 转载请保留作者署名,严禁用于商业用途 . 前言: PPP(Point t ...

  8. Linux PPP 实现源码分析

    nux PPP实现源码分析 2013-05-21 23:44  6091人阅读  评论(18)  收藏  举报   分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux ...

  9. Linux上全源码安装Apache、MySQL、PHP、WSF安装(转载)

    Linux上全源码安装Apache.MySQL.PHP.WSF安装 博客分类: PHP PHPMySQLApacheLinuxSQLite Linux上全源码安装Apache.MySQL.PHP.WS ...

最新文章

  1. CKeditor3.6.2 配置与精简
  2. 算法分析 载货问题_协会发布 | 汽车市场走势分析及2021年预测报告
  3. 05-RARP: 逆地址解析协议
  4. machine_desc结构体【转】
  5. python组成三位无重复数字_Python生成十万个无序且唯一的数字
  6. 向maven中央仓库提交jar
  7. 高效学习,战胜拖延症
  8. mysql buffer_mysql read_buffer_size 设置多少合适
  9. 上海库源电气OrCAD视频教程
  10. Unity AssetBundle内存管理相关问题
  11. .NET6之MiniAPI(十):基于策略的身份验证和授权
  12. 选择通过更改内容类型返回的详细程度,第二部分
  13. 一般如何调试php程序吗,如何调试PHP程序
  14. Premiere Pro之更改视频占用内存大小(十九)
  15. Ubuntu wine 安装qq,微信
  16. Python 模块—计算三角形的斜边长
  17. linux查ip出现fe80,ubuntu IP出现inet6 addr :fe80::20c:29ff:fe47:fd61/64 scope:l
  18. python管理系统学习
  19. uniapp中scroll-view的下拉刷新
  20. Arduino基础2

热门文章

  1. Stable Diffusion +ChatGPT+文本转语音+剪映制作视频
  2. 深度学习前人精度很高了,该怎么创新?(论文发表,论文创新)
  3. SpringBoot快速入门(IDEA联网版)
  4. 网页前端项目评审参考标准
  5. UWB 超带宽寻迹定位模块——STM32设计部分
  6. 互联网出海淘金,HMS生态开辟了新航线
  7. 平行坐标系下采用CHT方法检测自然图像中的消失点(VanishingPoint)
  8. c语言:printf可以自动把两个字符串合并成一个字符串,并且可以合并多个
  9. 计算机基础学习记录2-2
  10. Zemax操作12--简单牛顿望远镜