当前位置: 首页 > news >正文

Linux学习笔记--查询_唤醒方式读取输入数据

头文件和变量

#include <string.h>    // 字符串操作
#include <unistd.h>    // read() 函数struct input_event event;  // 输入事件结构体

非阻塞模式支持

if (argc == 3 && !strcmp(argv[2], "noblock")) {fd = open(argv[1], O_RDWR | O_NONBLOCK);
} else {fd = open(argv[1], O_RDWR);
}
  • 如果命令行第三个参数是 "noblock",则以非阻塞模式打开设备

  • O_NONBLOCK 标志使得 read 操作不会阻塞程序

实时事件读取循环

while (1) {len = read(fd, &event, sizeof(event));if (len == sizeof(event)) {printf("get event: type = 0x%x, code = 0x%x, value = 0x%x\n", event.type, event.code, event.value);} else {printf("read err %d\n", len);}
}

struct input_event 结构体

在 linux/input.h 中定义:

struct input_event {struct timeval time;  // 时间戳__u16 type;           // 事件类型__u16 code;           // 事件代码__s32 value;          // 事件值
};

事件类型详解

EV_SYN (0x00) - 同步事件
  • 用于标记一组事件的结束

  • 代码通常为 SYN_REPORT (0)

  • 值通常为 0

EV_KEY (0x01) - 按键事件
  • 代码:按键编号(如 KEY_AKEY_ENTER

  • 值:

    • 0:按键释放

    • 1:按键按下

    • 2:按键长按

EV_REL (0x02) - 相对坐标事件
  • 代码:REL_XREL_YREL_WHEEL 等

  • 值:相对移动量

EV_ABS (0x03) - 绝对坐标事件
  • 代码:ABS_XABS_YABS_PRESSURE 等

  • 值:绝对坐标值

阻塞模式(默认)

./01_get_input_info /dev/input/event0

程序会阻塞在 read() 调用,直到有输入事件发生。

非阻塞模式

./01_get_input_info /dev/input/event0 noblock

程序会立即返回,如果没有事件则显示错误信息。

http://www.dtcms.com/a/465453.html

相关文章:

  • 信道编码定理和信道编码逆定理
  • 订餐网站开发流程wordpress显示运行时间
  • ubuntu 24.04 FFmpeg编译 带Nvidia 加速记录
  • 关于springboot定时任务和websocket的思考
  • 做文字logo的网站我国网络营销现状分析
  • STM32F103RCT6+STM32CubeMX+keil5(MDK-ARM)+Flymcu实现简单的通信协议
  • 昂瑞微:踏浪前行,铸就射频芯片领域新辉煌
  • Roo Code系统提示覆写功能详解
  • 时钟周期约束(三)
  • 基于Hadoop的京东电商平台手机推荐系统的设计与实现
  • 没有logo可以做网站的设计吗卡密网站怎么做
  • 做侵权视频网站网站规划问题
  • 鸿蒙:用Toggle组件实现选择框、开关样式
  • html css js网页制作成品——YSL口红红色 html+css (6 页)(老版)附源码
  • CSS中的选择器有哪些?相对定位和绝对定位是相对于谁的?
  • 发布企业信息的网站大连推广
  • 详解istio mtls双向身份认证
  • 国外创意网站公司如何进行网络推广
  • 软考中级习题与解答——第十五章_数据结构与算法应用(2)
  • 在JavaScript / HTML / Node.js中,post方式的Content-Type属性的text的三种编码
  • Linux gdb
  • 源码阅读 LeakCanary
  • Java 网络流式编程
  • java后端工程师进修ing(研一版‖day51)
  • JavaScript Promise 详解:从入门到精通
  • 中山建设银行招聘网站网站设计的评估
  • 深圳制作网站培训机构自己做的网站打开超慢
  • MySQL数据库优化实战提升查询性能的五大核心策略
  • libboost_system-mt-x64.so.1.76.0 和libboost_system-mt-d-x64.so.1.76.0 区别
  • 【11408学习记录】考研数学核心突破:线性代数特征值与特征向量详解+英语长难句精析