linux捕获鼠标点击事件文件,linux获得键盘鼠标事件,模拟键盘鼠标按键
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获得键盘鼠标事件,模拟键盘鼠标按键相关推荐
- 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全
如何查看linux系统下的各种日志文件 linux 系统日志的分析大全 日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 ...
- linux电脑鼠标点击没反应,linux – 鼠标点击无法在Ubuntu 16.04 LTS中运行
我刚在联想Thinkpad P50上安装了Ubuntu 16.04 LTS.很快我的鼠标点击停止工作.我仍然可以点击应用程序启动器,但没有其他地方.我是Linux新手,所以我不知道如何开始尝试解决这个 ...
- linux桌面怎么解压tar文件,linux安装tar文件,linux怎么解压targz
这几年随着XP系统的退役,国产操作系统逐渐的成为了电脑的热点话题,基于linux内核的国产操作系统是否能够被大众接受是一个至关重要的问题,那么linux的基本操作中,linux(Ubuntu)如何安装 ...
- linux怎么压缩后保留原文件,Linux 实现压缩保留源文件的方法
linux下gzip的压缩详解 Linux压缩保留源文件的方法: gzip ?c filename > filename.gz Linux解压缩保留源文件的方法: gunzip ?c filen ...
- python pygame鼠标点击_Python中pygame的mouse鼠标事件用法实例
本文实例讲述了Python中pygame的mouse鼠标事件用法.分享给大家供大家参考,具体如下: pygame.mouse提供了一些方法获取鼠标设备当前的状态 ''' pygame.mouse.ge ...
- linux 使用gzip压缩打包的文件,linux常用的解压,压缩,打包
gzip zcat [root@linux ~]# gzip [-cdt#] 文件名 [root@linux ~]# zcat 文件名.gz 参数: -c : 将压缩的数据输出到屏幕上,可通过数据流重 ...
- linux用u盘上传文件,linux如何挂载U盘和文件系统(或需要用到).doc
linux如何挂载U盘和文件系统(或需要用到) 侯狞朔曙据旺顿比属两厩柔办伙鞍靡钢旺家吾琳冤筏哩自蚊械榴革煮疹谐兜拓舀串寸翼醚名镜咽阔听掉屯启挖弯正火个纶恭节锯健腻茁膝溺曼捷嵌肮抽切市佐朱臆梢钮嫡竣陕 ...
- linux怎么在目录下查找文件,linux find-在指定目录下查找文件
find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...
- linux服务器监控谁改了文件,linux服务器文件监控
linux服务器文件监控 内容精选 换一换 为了防止您的主机被勒索病毒侵害,请创建防护策略,将重点防御的文件添加到防护策略的监控路径中,并启动机器学习.机器学习会自动聚类并收集该策略下的所有服务器的正 ...
最新文章
- ASP.NET中级学习2
- linux按函数数字大小排序,linux awk 数组排序多种实现方法
- leetcode 287. Find the Duplicate Number | 287. 寻找重复数(判断链表是否有环,并找到环的起点)
- 一枚戒指,一场仪式,这件事阿里巴巴坚持了15年
- XenServer上启动虚拟机失败’The VDI is not available’的解决方法
- VB.NET Visual Basic
- 比亚迪拟发债100亿元补充营运资金偿还借款
- Blender 2.82 发布,三维动画制作软件
- [SCOI2016]萌萌哒
- UVA11021 Tribles
- Thymeleaf指定背景图片以及图片如何调整大小
- sleep ,wait,notify和notifyAll
- 王者荣耀 微信登录 服务器找不到,王者荣耀微信登录失败怎么办 王者荣耀微信登录失败解决办法...
- 推荐一款最好用的windows文件管理器
- 6 个超酷的学习算法网站,Leetcode 不是第一 ?
- iOS:DES加密iOS和Android的匹配
- 怎么判断是程序存在问题还是软硬件系统存在问题
- 在Win10上使用BC3.1
- java接收文件流并操作文件流
- python UNIT5 函数 习题