input core输入事件 矩阵键盘 映射 原理分析

本文详细分析了矩阵键盘的输入事件处理,包括矩阵键盘映射表的建立,如何通过KEY()宏将(row,col,val)转换为32位值存储。还介绍了内核如何将扫描码映射为标准键值,便于上层应用使用。通过讲解MATRIX_SCAN_CODE宏,阐述了如何根据行列索引获取键码,并展示了驱动如何向input core上报事件的过程。" 89290483,1490623,Java线程的生命周期与状态转换,"['Java', '线程状态', '并发编程']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//这个是矩阵键盘映射表,使用内核定义的宏KEY()来建立

//#defineKEY(row, col,val) ((((row)& (MATRIX_MAX_ROWS - 1)) << 24) |\

//(((col)& (MATRIX_MAX_COLS - 1)) << 16) |\

//((val)& 0xffff))

//从上面的定义来看KEY用于唯一确认一个值,用于将(row,col,val)转换为一个单一个32位的值。

//这样存储起来,比较节省空间。高高字节用于存储行号,高低字节用于存储列号,低高和低低字节用于保存值。

//如此一来,将二维坐标(x,y)及值val转换为一个单一的32int数据。

//但是取出来的时候还得使用特殊的宏来操作。

//将扫描码映射为内核定义的标准键值,以方便上层应用程序使用。

staticintmx6sl_evk_keymap[] = {

KEY(0,0, KEY_SELECT), //映射矩阵(0,0)处按键为内核标准的KEY_SELECT键码。

KEY(0,1, KEY_BACK),

KEY(0,2, KEY_F1), //映射矩阵(0,2)处按键为内核标准的KEY_F1键码。

KEY(0,3, KEY_F2), //映射矩阵(0,3)处按键为内核标准的KEY_F2键码。

//内核自己定义的键码在linux/input.h中定义。

KEY(1,0, KEY_F3),

KEY(1,1, KEY_F4),

KEY(1,2, KEY_F5),

KEY(1,3, KEY_MENU),


KEY(2,0, KEY_PREVIOUS),

KEY(2,1, KEY_NEXT),

KEY(2,2, KEY_HOME),

KEY(2,3, KEY_NEXT),


KEY(3,0, KEY_UP),

KEY(3,1, KEY_LEFT),

KEY(3,2, KEY_RIGHT),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值