linux中键盘鼠标等输入设备通过input子系统实现设备驱动,驱动程序完成向系统报告输入事件,input子系统完成了文件操作接口

linux/input.h定义了输入事件结构体 api 和 按键定义等

struct input_event {

struct

timeval time;

__u16 type;

__u16 code;

__s32

value;

};

type:类型

#define EV_SYN                  0x00

#define EV_KEY                  0x01  //键盘按键(包括鼠标键)

#define EV_REL                  0x02  //鼠标移动

#define EV_ABS                  0x03

#define EV_MSC                  0x04

#define EV_SW                   0x05

#define EV_LED                  0x11

#define EV_SND                  0x12

#define EV_REP                  0x14

#define EV_FF                   0x15

#define EV_PWR                  0x16

#define EV_FF_STATUS            0x17

#define EV_MAX                  0x1f

code:事件码

#define KEY_RESERVED            0

#define KEY_ESC                 1

#define KEY_1                   2

#define KEY_2                   3

#define KEY_3                   4

#define KEY_4                   5

#define KEY_5                   6

#define KEY_6                   7

#define KEY_7                   8

#define KEY_8                   9

#define KEY_9                   10

#define KEY_0                   11

#define KEY_MINUS               12

#define KEY_EQUAL               13

#define KEY_BACKSPACE           14

#define KEY_TAB                 15

#define KEY_Q                   16

。。。。。。

#define REL_X                   0x00

#define REL_Y                   0x01

。。。。。。

value:事件值

获取输入:

点击(此处)折叠或打开

#include

#include

#include

#include

#include

int main()

{

int fd;

struct input_event event;

fd = open("/dev/input/event0", O_RDONLY); //打开输入文件根据实际情况

if(fd <= 0)

{

printf("open device error\n");

return 0;

}

while(1)

{

if(read(fd, &event, sizeof(event)) == sizeof(event))

{

if (event.type == EV_KEY)

if (event.value == 0 || event.value == 1)

{

printf("key %d %s\n", event.code, (event.value) ? "Pressed" : "Released");

if(event.code == KEY_ESC)

break;

}

}

}

close(fd);

return 0;

}

"/dev/input/event0" 键盘事件,查看  /proc/bus/input/devices 可以确定各设备对应的设备文件

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41

N: Name="AT Translated Set 2 keyboard"

P: Phys=isa0060/serio0/input0

S: Sysfs=/class/input/input0

H: Handlers=kbd event0//键盘对应event0

B: EV=120013

B: KEY=402000000 3802078f840d001 feffffdfffefffff fffffffffffffffe

B: MSC=10

B: LED=7

I: Bus=0011 Vendor=0002 Product=0005 Version=0000

N: Name="ImPS/2 Generic Wheel Mouse"

P: Phys=isa0060/serio1/input0

S: Sysfs=/class/input/input1

H: Handlers=mouse0 event1//鼠标event1

B: EV=7

B: KEY=70000 0 0 0 0

B: REL=103

把structinput_event 写入 /dev/input/event0 可以模拟键盘输入

linux捕获鼠标点击事件文件,linux获得键盘鼠标事件,模拟键盘鼠标按键相关推荐

  1. 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全

    如何查看linux系统下的各种日志文件 linux 系统日志的分析大全 日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 ...

  2. linux电脑鼠标点击没反应,linux – 鼠标点击无法在Ubuntu 16.04 LTS中运行

    我刚在联想Thinkpad P50上安装了Ubuntu 16.04 LTS.很快我的鼠标点击停止工作.我仍然可以点击应用程序启动器,但没有其他地方.我是Linux新手,所以我不知道如何开始尝试解决这个 ...

  3. linux桌面怎么解压tar文件,linux安装tar文件,linux怎么解压targz

    这几年随着XP系统的退役,国产操作系统逐渐的成为了电脑的热点话题,基于linux内核的国产操作系统是否能够被大众接受是一个至关重要的问题,那么linux的基本操作中,linux(Ubuntu)如何安装 ...

  4. linux怎么压缩后保留原文件,Linux 实现压缩保留源文件的方法

    linux下gzip的压缩详解 Linux压缩保留源文件的方法: gzip ?c filename > filename.gz Linux解压缩保留源文件的方法: gunzip ?c filen ...

  5. python pygame鼠标点击_Python中pygame的mouse鼠标事件用法实例

    本文实例讲述了Python中pygame的mouse鼠标事件用法.分享给大家供大家参考,具体如下: pygame.mouse提供了一些方法获取鼠标设备当前的状态 ''' pygame.mouse.ge ...

  6. linux 使用gzip压缩打包的文件,linux常用的解压,压缩,打包

    gzip zcat [root@linux ~]# gzip [-cdt#] 文件名 [root@linux ~]# zcat 文件名.gz 参数: -c : 将压缩的数据输出到屏幕上,可通过数据流重 ...

  7. linux用u盘上传文件,linux如何挂载U盘和文件系统(或需要用到).doc

    linux如何挂载U盘和文件系统(或需要用到) 侯狞朔曙据旺顿比属两厩柔办伙鞍靡钢旺家吾琳冤筏哩自蚊械榴革煮疹谐兜拓舀串寸翼醚名镜咽阔听掉屯启挖弯正火个纶恭节锯健腻茁膝溺曼捷嵌肮抽切市佐朱臆梢钮嫡竣陕 ...

  8. linux怎么在目录下查找文件,linux find-在指定目录下查找文件

    find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...

  9. linux服务器监控谁改了文件,linux服务器文件监控

    linux服务器文件监控 内容精选 换一换 为了防止您的主机被勒索病毒侵害,请创建防护策略,将重点防御的文件添加到防护策略的监控路径中,并启动机器学习.机器学习会自动聚类并收集该策略下的所有服务器的正 ...

最新文章

  1. ASP.NET中级学习2
  2. linux按函数数字大小排序,linux awk 数组排序多种实现方法
  3. leetcode 287. Find the Duplicate Number | 287. 寻找重复数(判断链表是否有环,并找到环的起点)
  4. 一枚戒指,一场仪式,这件事阿里巴巴坚持了15年
  5. XenServer上启动虚拟机失败’The VDI is not available’的解决方法
  6. VB.NET Visual Basic
  7. 比亚迪拟发债100亿元补充营运资金偿还借款
  8. Blender 2.82 发布,三维动画制作软件
  9. [SCOI2016]萌萌哒
  10. UVA11021 Tribles
  11. Thymeleaf指定背景图片以及图片如何调整大小
  12. sleep ,wait,notify和notifyAll
  13. 王者荣耀 微信登录 服务器找不到,王者荣耀微信登录失败怎么办 王者荣耀微信登录失败解决办法...
  14. 推荐一款最好用的windows文件管理器
  15. 6 个超酷的学习算法网站,Leetcode 不是第一 ?
  16. iOS:DES加密iOS和Android的匹配
  17. 怎么判断是程序存在问题还是软硬件系统存在问题
  18. 在Win10上使用BC3.1
  19. java接收文件流并操作文件流
  20. python UNIT5 函数 习题

热门文章

  1. HIbernate中的事务
  2. NodeMcu(三)--tmr模块详解
  3. iOS/APP/苹果超级企业签名是什么原理
  4. 微信为何折戟美国市场
  5. 音视频即时通讯中P2P的流媒体技术
  6. 52%黑莓用户准备“叛逃”iPhone 5
  7. 【英语四六级】成绩查询时间定了!
  8. 如何在合并视频时,设定使用固定的片头片尾,并预设新视频标题
  9. Android 挂逼 修炼之行---防自动抢红包外挂原理解析
  10. LLCC68低功耗Sub-GHz LoRa射频收发器LLCC68IMLTRT