//这个是矩阵键盘映射表,使用内核定义的宏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),

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

被折叠的 条评论
为什么被折叠?



