Linux 键盘/鼠标 按键事件 编程

Linux 键盘/鼠标 按键事件 编程

从键盘对应的字符设备文件中直接读取数据,获取键盘信息时不需要通过回车就能操作,键盘所对应的字符设备文件在/dev/input目录下的event0-4中的某一个,可以自己先测试到底是哪一个

如何测试?

  1. 先在终端进入到对应目录下,cd /dev/input/
  2. 然后依次检测文件信息,使用 sudo cat event1命令检测
  3. 执行命令后会阻塞等待,当有按键按下时,会出现咱看不懂的二进制字符,如下
    在这里插入图片描述
  4. 如果没有出现这些奇怪的东西,而是显示对应敲下的字母,就说明不是这个文件。

鼠标事件

测试了一下鼠标事件,发现在mouse0文件下可以检测到鼠标,但是读出来的事件信息都是完全一样的。
于是,又测试了event2文件,发现也可以检测到鼠标事件,虽然滚轮上下滑动检测不到,但是鼠标移动、左键单击、右键单击和中间单击都可用输入事件结构体读取分辨出来。

1. 头文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>

2. 以只读方式打开对应的字符设备文件

 int fd;
 if((fd = open("/dev/input/event1", O_RDONLY)) == -1)
 {
   
	 perror("open error");
     return -1;
 }

3. 读取文件信息

使用输入事件结构体strcut input_event,定义一个该结构体的变量,来接收输入事件信息。接收信息使用read()函数,将按键事件写入结构体即可。


struct input_event {
    
	struct timeval time; 
	
    // 保存输入类型,其中 EV_KEY 表示键盘,宏定义的数字是 0x01
    __u16 type;  

	// 保存键盘输入字符的编号,每个编号对应一个值
    __u16 code; 

	// 保存按键当前的状态值
	// 1 按键按下
	
  • 21
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值