linux 触摸屏测试源码_Linux和android下测试键盘和触摸屏
在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下测试键盘和触摸屏相关推荐
- linux 触摸屏测试源码_Linux触摸屏驱动
问题二: echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache //避免检查ac_cv_func_malloc_0_ ...
- linux怎么卸载源码包安装mysql_Linux下卸载和安装MySQL[rpm包]
[日期:2012-08-03] 来源:Linux社区 作者:wang_tianbao [字体:大 中 小] 一.卸载原来的mysql: 卸载一: 输入: #rpm -qa | grep -i mys ...
- android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试
一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...
- 基于android2.3.5系统:源码下载及android体系架构
**************************************************************************************************** ...
- Linux PPP实现源码分析-1
前言: PPP(Point to Point Protocol)协议是一种广泛使用的数据链路层协议,在国内广泛使用的宽带拨号协议PPPoE其基础就是PPP协议,此外和PPP相关的协议PPTP,L2TP ...
- linux access源码,从零开始学习Linux:Day04 源码安装Nginx 。acess/status/referer
从零开始学习Linux:Day04 源码安装Nginx .acess/status/referer 常见web服务器有IIS,apche,nginx,tomcat,tengine等等,现在nginx使 ...
- Linux PPP实现源码分析
Linux PPP实现源码分析 作者:kwest <exboy@163.com> 版本:v0.7 ©所有版权保留 转载请保留作者署名,严禁用于商业用途 . 前言: PPP(Point t ...
- Linux PPP 实现源码分析
nux PPP实现源码分析 2013-05-21 23:44 6091人阅读 评论(18) 收藏 举报 分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux ...
- Linux上全源码安装Apache、MySQL、PHP、WSF安装(转载)
Linux上全源码安装Apache.MySQL.PHP.WSF安装 博客分类: PHP PHPMySQLApacheLinuxSQLite Linux上全源码安装Apache.MySQL.PHP.WS ...
最新文章
- CKeditor3.6.2 配置与精简
- 算法分析 载货问题_协会发布 | 汽车市场走势分析及2021年预测报告
- 05-RARP: 逆地址解析协议
- machine_desc结构体【转】
- python组成三位无重复数字_Python生成十万个无序且唯一的数字
- 向maven中央仓库提交jar
- 高效学习,战胜拖延症
- mysql buffer_mysql read_buffer_size 设置多少合适
- 上海库源电气OrCAD视频教程
- Unity AssetBundle内存管理相关问题
- .NET6之MiniAPI(十):基于策略的身份验证和授权
- 选择通过更改内容类型返回的详细程度,第二部分
- 一般如何调试php程序吗,如何调试PHP程序
- Premiere Pro之更改视频占用内存大小(十九)
- Ubuntu wine 安装qq,微信
- Python 模块—计算三角形的斜边长
- linux查ip出现fe80,ubuntu IP出现inet6 addr :fe80::20c:29ff:fe47:fd61/64 scope:l
- python管理系统学习
- uniapp中scroll-view的下拉刷新
- Arduino基础2