Linux按键响应测试
在Linux内核中,input设备用input_dev结构体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作就是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过input_event结构体描述),linux/input.h 这个文件定义了event事件的结构体,API和标准按键的编码等;
struct input_event {
struct timeval time; //按键时间
__u16 type; //事件类型 type 为 1 时,按键操作(EV_KEY);
__u16 code; //要模拟成什么按键 按下的键所对应的值,这个值在 linux/input.h 中定义,例如按键 a 对应值为 30;
__s32 value;//是按下还是释放 按下时为 1 ,释放为 0;按住不放为 2 ;
};
type,指事件类型,常见的事件类型有:
EV_KEY, 按键事件,如键盘的按键(按下哪个键),鼠标的左键右键(是非击下)等;
EV_REL, 相对坐标,主要是指鼠标的移动事件(相对位移);
EV_ABS, 绝对坐标,主要指触摸屏的移动事件。
大家有兴趣可以运行一下程序时,同时按下10个键,看看最多能响应几个。我试了最多只有6个。不知你们的会是多少。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
#include <time.h>
#include <linux/input.h> int main()
{int keys_fd;char ret[2];struct input_event t;keys_fd = open("/dev/input/event1", 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){printf("value is %d\n", t.value);if (t.value == 0 || t.value == 1){printf("key %d %s\n", t.code, (t.value) ? "Pressed" : "Released");if (t.code == KEY_ESC)break;}}}}close(keys_fd);return 0;
}
注意事项:
不同的类型计
算机,设备对应event信息会有所不同
可以用cat获得的设备对应event信息:
# cat /proc/bus/input/devices
运行程序后如果出现如下提示:
open /dev/input/event2 device error
需要使用sudo或者改变设备的属性
如下:
sudo ./key_simulator
或者
chmod 777 /dev/input/event2
Linux按键响应测试相关推荐
- matlab等待按键响应,matlab中figure对象的按键响应
常用的有两个WindowKeyPressFcn和WindowKeyReleaseFcn,分别表示按下按键和释放按键的响应函数,两者调用形式上是一样的. 1.说明 以indowKeyPressFcn为例 ...
- Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过
Kali Linux Web 渗透测试视频教程-第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...
- Linux按键输入实验(体验一下输入驱动,实际开发使用input子系统处理)
目录 Linux下按键驱动原理(使用原子操作) 硬件原理图分析 实验程序编写 修改设备树文件 按键驱动程序编写 编写测试APP(循环读取按键值) 运行测试 编译驱动程序和测试APP 运行测试(whil ...
- 读《Linux应急响应》笔记(未完待续)
今天就想听着音乐,看看书.找到压箱底的<linux应急响应>看一看.还是蛮新的,是2021.7.1的新版. 文章目录 思维导图 挖矿事件 恶意域名 获取异常进程PID 寻找恶意⽂件样本 处 ...
- Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装
Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装 一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装Virt ...
- linux tcp 丢包命令_在Linux下实现测试TCP和UDP的丢包检测!
在Linux下实现测试TCP和UDP的丢包检测! 疯狂の猿猴 • 2020 年 12 月 11 日 前言 本人平时基本上都是win,一下子转战到linux,有点不习惯! 因此做个记录,便于以后自己查阅 ...
- Linux 按键定时器去抖
Linux 按键定时器去抖 一 .按键抖动 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开. 因而在闭合及断开的瞬间总是伴随有一连串的抖动. ...
- Kali Linux Web 渗透测试— 第十二课-websploit
Kali Linux Web 渗透测试- 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试- 第十二课-websploit..................... ...
- linux 应急响应 病毒清除 系统加固
概述 Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun.procexp这样的应急响应利器,也没有统一的应急响应处理流程.所以,这篇文章将会对L ...
最新文章
- 【公开课预告】百度语言与知识最新技术成果详解
- boost::core模块实现分配构造throws
- 腾讯 AI Lab Robotics X 主任张正友博士:计算机视觉的三生三世 | CCF-GAIR 2019
- VSCode中怎么改变文件夹的图标
- php 注册自动登录,php – 创建第二个自动登录用户的登录页面
- cobalt strick 4.0系列教程(3)---数据管理
- 1x1 11b g n linux,基于RN1810下的2.4 GHz IEEE 802.11b/g/n无线模块
- matlab 类 继承,继承MATLAB中的密封类
- 向量表示,投影,协方差矩阵,PCA
- cassss服务未启动_systemd时代的服务管理
- python base64加解密
- android 约束 布局_Android约束布局动画
- 用 Python 写一个 NoSQL 数据库
- 下载各省、市、县的行政区划边界数据
- 离散数学——容斥原理
- 电影《绿箭侠第一季》迅雷中英双字下载地址
- 春节假期和幺儿一起玩xbox360的体感游戏
- ARM 搭建开源NAS平台
- 如何查看三菱PLC生产日期与版本信息?
- python 刷微信跳一跳分数遇到的bug
热门文章
- 默克推进下一代抗体药物偶联物疗法;美国FDA受理君实生物特瑞普利单抗治疗鼻咽癌的上市申请 | 医药健闻...
- Centos7.6下构建虚拟主机实验(基于域名、端口及IP地址)
- F2FS源码分析-1.4 [F2FS 元数据布局部分] Segment Infomation Table-SIT结构
- QQTIM怎么成功修改个人文件夹保存位置
- Matlab三维绘图------三维曲线图
- VS2015新建MFC工程默认存储位置,默认位置修改
- linux中i的英文单词,Linux下gcc/g++中-I(i的大写)、-L和-l
- HTML交叉报表制作,交叉报表- 交叉式报表-复杂报表设计教程| 快逸报表工具用户手册...
- ORA-3136报错
- js针对禁用ie浏览器(包括ie11)在内打开网页弹窗提示更好的体验解决方案