在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按键响应测试相关推荐

  1. matlab等待按键响应,matlab中figure对象的按键响应

    常用的有两个WindowKeyPressFcn和WindowKeyReleaseFcn,分别表示按下按键和释放按键的响应函数,两者调用形式上是一样的. 1.说明 以indowKeyPressFcn为例 ...

  2. Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过

    Kali Linux Web 渗透测试视频教程-第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...

  3. Linux按键输入实验(体验一下输入驱动,实际开发使用input子系统处理)

    目录 Linux下按键驱动原理(使用原子操作) 硬件原理图分析 实验程序编写 修改设备树文件 按键驱动程序编写 编写测试APP(循环读取按键值) 运行测试 编译驱动程序和测试APP 运行测试(whil ...

  4. 读《Linux应急响应》笔记(未完待续)

    今天就想听着音乐,看看书.找到压箱底的<linux应急响应>看一看.还是蛮新的,是2021.7.1的新版. 文章目录 思维导图 挖矿事件 恶意域名 获取异常进程PID 寻找恶意⽂件样本 处 ...

  5. Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装

    Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装  一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装Virt ...

  6. linux tcp 丢包命令_在Linux下实现测试TCP和UDP的丢包检测!

    在Linux下实现测试TCP和UDP的丢包检测! 疯狂の猿猴 • 2020 年 12 月 11 日 前言 本人平时基本上都是win,一下子转战到linux,有点不习惯! 因此做个记录,便于以后自己查阅 ...

  7. Linux 按键定时器去抖

    Linux 按键定时器去抖 一 .按键抖动 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开. 因而在闭合及断开的瞬间总是伴随有一连串的抖动. ...

  8. Kali Linux Web 渗透测试— 第十二课-websploit

    Kali Linux Web 渗透测试- 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试- 第十二课-websploit..................... ...

  9. linux 应急响应 病毒清除 系统加固

    概述 Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun.procexp这样的应急响应利器,也没有统一的应急响应处理流程.所以,这篇文章将会对L ...

最新文章

  1. 【公开课预告】百度语言与知识最新技术成果详解
  2. boost::core模块实现分配构造throws
  3. 腾讯 AI Lab Robotics X 主任张正友博士:计算机视觉的三生三世 | CCF-GAIR 2019
  4. VSCode中怎么改变文件夹的图标
  5. php 注册自动登录,php – 创建第二个自动登录用户的登录页面
  6. cobalt strick 4.0系列教程(3)---数据管理
  7. 1x1 11b g n linux,基于RN1810下的2.4 GHz IEEE 802.11b/g/n无线模块
  8. matlab 类 继承,继承MATLAB中的密封类
  9. 向量表示,投影,协方差矩阵,PCA
  10. cassss服务未启动_systemd时代的服务管理
  11. python base64加解密
  12. android 约束 布局_Android约束布局动画
  13. 用 Python 写一个 NoSQL 数据库
  14. 下载各省、市、县的行政区划边界数据
  15. 离散数学——容斥原理
  16. 电影《绿箭侠第一季》迅雷中英双字下载地址
  17. 春节假期和幺儿一起玩xbox360的体感游戏
  18. ARM 搭建开源NAS平台
  19. 如何查看三菱PLC生产日期与版本信息?
  20. python 刷微信跳一跳分数遇到的bug

热门文章

  1. 默克推进下一代抗体药物偶联物疗法;美国FDA受理君实生物特瑞普利单抗治疗鼻咽癌的上市申请 | 医药健闻...
  2. Centos7.6下构建虚拟主机实验(基于域名、端口及IP地址)
  3. F2FS源码分析-1.4 [F2FS 元数据布局部分] Segment Infomation Table-SIT结构
  4. QQTIM怎么成功修改个人文件夹保存位置
  5. Matlab三维绘图------三维曲线图
  6. VS2015新建MFC工程默认存储位置,默认位置修改
  7. linux中i的英文单词,Linux下gcc/g++中-I(i的大写)、-L和-l
  8. HTML交叉报表制作,交叉报表- 交叉式报表-复杂报表设计教程| 快逸报表工具用户手册...
  9. ORA-3136报错
  10. js针对禁用ie浏览器(包括ie11)在内打开网页弹窗提示更好的体验解决方案