Linux 外设驱动 应用 2 KEY 按键实验

ops/2024/10/21 11:09:50/

2 按键

2.1 按键介绍

按键是指轻触式按键开关,也称之为轻触开关。按键开关是一种电子开关,属于电子元器件类,最早出现在日本,称之为:敏感型开关,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。

2.2 硬件接口

平台有 4 个按键,每个按键接一个 IO 引脚,通过外部 IO 的高低来获取按键。

在这里插入图片描述

2.3 应用代码

int main(int argc,char *argv[])
{int keys_fd;char ret[2];struct input_event t;keys_fd = open(argv[1], O_RDONLY);//打开按键设备,由终端输入if(keys_fd<=0)//打开失败处理{printf("open %s device error!\n",argv[1]);return 0;}while(1){if(read(keys_fd,&t,sizeof(t))==sizeof(t)){//读取输入设备if(t.type==EV_KEY) //其中为按键if(t.value==0 || t.value==1) //按下或者抬起printf("key %d %s\n",t.code,(t.value)?"Pressed":"Released");//打印}}
close(keys_fd);
return 0;
}

2.4 运行代码

在Linux系统中,input_event结构体用于描述输入事件,其中包括时间、事件类型、事件码和事件值。‌ input_event结构体的定义如下:

struct input_event {struct timeval time;__u16 type;__u16 code;__s32 value;
};

time:记录事件发生的时间。
type:事件的类型,如EV_KEY表示键盘事件。
code:事件的代码,对于键盘事件,这代表按键的键值。
value:事件的数值,对于按键事件,通常0表示键释放,1表示键按下,2表示自动重复。

‌键盘键值与input_event结构体中的code字段对应。‌ 例如,ESC键、F1-F12键、方向键等都有对应的键值。这些键值在内核源码的input.h文件中定义。以下是一些常见的键盘键值:

ESC键:0x01
F1键:0x70
F2键:0x71
F3键:0x72
F4键:0x73
方向上键:0x26
方向下键:0x28
方向左键:0x25
方向右键:0x27

全部键值的值:

键名 值(十进制)
ESC 1
F1 59
F2 60
F3 61
F4 62
F5 63
F6 64
F7 65
F8 66
F9 67
F10 68
F11 87
F12 88
` ~ 41
1 ! 2
2 @ 3
3 # 4
4 $ 5
5 % 6
6 ^ 7
7 & 8
8 * 9
9 ( 10
0 ) 11

  • _ 12
  • = 13
    Backspace(退格键) 14
    Tab 15
    q Q 16
    w W 17
    e E 18
    r R 19
    t T 20
    Y y 21
    u U 22
    i I 23
    o O 24
    p P 25
    [ { 26
    ] } 27
    Enter(回车键) 28
    CapsLock 58
    a A 30
    s S 31
    d D 32
    f F 33
    g G 34
    h H 35
    j J 36
    k K 37
    l L 38
    ; : 39
    ’ " 40
    \ | 43
    Left_shift(左上档键) 42
    z Z 44
    x X 45
    c C 46
    v V 47
    b B 48
    n N 49
    m M 50
    , < 51
    . > 52
    / ? 53
    Right_shift(右上档键) 54
    Left_ctrl(左Ctrl键) 29
    左Super键(windows键) 125
    Left_alt(左alt键) 56
    space(空格键) 57
    Right_alt(右alt键) 100
    右Super键(windows键) 126
    菜单键 127
    Right_ctrl(右Ctrl键) 97
    Print Screen键 99
    ScrollLock键 70
    PauseBreak键 119
    Insert 110
    Home 102
    PageUp 104
    Delete 111
    End 107
    PageDown 109
    方向键上 103
    方向键下 108
    方向键左 105
    方向键右 106
    NumLock 69
    / (小键盘) 98
    * (小键盘) 55
    - (小键盘) 74
    + (小键盘) 78
    Enter(小键盘) 96
    . (小键盘) 83
    0 (小键盘) 82
    1 (小键盘) 79
    2 (小键盘) 80
    3 (小键盘) 81
    4 (小键盘) 75
    5 (小键盘)

76
6 (小键盘) 77
7 (小键盘) 71
8(小键盘) 72
9(小键盘) 73

2.4.1 查看 key 为第几个输入设备,找到 Name="gpio-keys"这一栏,可以看到 Handlers 为 event4

root@imx8mmevk:/mnt/SRC/exp/04_module/02_keys# cat /proc/bus/input/devices
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="gpio-keys"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/platform/gpio-keys/input/input6
U: Uniq=
H: Handlers=kbd event4
B: PROP=0
B: EV=3
B: KEY=108000000000 10000002

2,4,2 运行程序./key /dev/input/event4

root@imx8mmevk:/mnt/SRC/exp/04_module/02_keys# ./key /dev/input/event4
key 103 Pressed
key 103 Released
key 108 Pressed
key 108 Released
key 1 Pressed
key 1 Released
key 28 Pressed
key 28 Released

http://www.ppmy.cn/ops/127251.html

相关文章

MATLAB中maxk函数用法

目录 语法 说明 示例 最大向量元素 矩阵行的最大元素 复数向量 maxk函数的功能是计算数组的K个最大元素 语法 B maxk(A,k) B maxk(A,k,dim) B maxk(___,ComparisonMethod,c) [B,I] maxk(___) 说明 B maxk(A,k) 返回 A 的 k 个最大元素。 如果 A 是向量&#xff…

第二十八篇:TCP协议概述,TCP系列二

传输控制协议&#xff08;Transmission Control Protocol&#xff0c;TCP&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。在 TCP 协议中&#xff0c;通过三次握手建立连接。通信结束后&#xff0c;还需要断开连接。如果在发送数据包时&#xff0c;没有正确…

[含文档+PPT+源码等]精品基于springboot实现的原生微信小程序小区兼职系统

基于Spring Boot实现的原生微信小程序小区兼职系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、技术背景 移动互联网的普及&#xff1a;随着移动互联网的快速发展&#xff0c;微信小程序作为一种轻量级应用&#xff0c;因其无需下载安装、即用即走的特点&am…

LabVIEW智能螺杆空压机测试系统

基于LabVIEW软件开发的螺杆空压机测试系统利用虚拟仪器技术进行空压机的性能测试和监控。系统能够实现对螺杆空压机关键性能参数如压力、温度、流量、转速及功率的实时采集与分析&#xff0c;有效提高测试效率与准确性&#xff0c;同时减少人工操作&#xff0c;提升安全性。 项…

基于Lambda架构的大数据处理详解

1. 软件项目简介及工作职责 在我参与的大数据开发项目中&#xff0c;主要是构建一个实时与离线数据处理并行的系统&#xff0c;以满足业务对高效数据处理和及时响应的要求。该系统旨在收集并处理来自多个数据源的实时和批量数据&#xff0c;主要处理流程分为实时流处理和批量离…

OpenIPC开源IPC之固件sysupgrade升级

OpenIPC开源IPC之固件sysupgrade升级 1. 源由2. 实验3. 升级步骤一&#xff1a;确认软硬件版本步骤二&#xff1a;下载对应最新固件步骤三&#xff1a;安装apache服务步骤四&#xff1a;将固件放置到http下载目录步骤五&#xff1a;登录并更新固件 4. 总结5. 参考资料 1. 源由 …

[计算机网络] 常见端口号

前言 ​ 常见的端口号是指互联网协议&#xff08;如TCP/IP&#xff09;中预留给特定服务使用的数字范围。它们主要用于标识网络应用程序和服务&#xff0c;并帮助数据包在网络中找到正确的接收方。 按协议类型划分 TCP协议端口&#xff1a; 21&#xff1a;FTP文件传输协议2…

AnaTraf | 提升网络性能:深入解析网络关键指标监控、TCP重传与TCP握手时间

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 在当今的数字化时代&#xff0c;网络的稳定性和性能对企业的运营效率至关重要。无论是内部通信、应用程序的运行&#xff0c;还是对外提供服务&#xff0c;网络都发挥着关键作用。对于网络工程师或IT运维人员…