4x4矩阵键盘驱动已经调试成功,用的就是samsung-keypad.c。打开内核调试模式可以检测到keydown和keyrelease两个事件,但是问题随之而来。
1.在s3c-keypad.kl和samsung-keypad.kl键盘布局文件里面定义了对应的按键值,
在samsung-keypad.c里面定义了
static uint32_t mini210_keymap[] __initdata = {
//4 x 4 矩阵键盘
KEY(0,0,KEY_1),KEY(0,1,KEY_2),KEY(0,2,KEY_3),KEY(0,3,KEY_A),
KEY(1,0,KEY_4),KEY(1,1,KEY_5),KEY(1,2,KEY_6),KEY(1,3,KEY_B),
KEY(2,0,KEY_7),KEY(2,1,KEY_8),KEY(2,2,KEY_9),KEY(2,3,KEY_C),
KEY(3,0,KEY_S),KEY(3,1,KEY_0),KEY(3,2,KEY_P),KEY(3,3,KEY_D),
};
static struct matrix_keymap_data mini210_keymap_data __initdata = {
.keymap = mini210_keymap,
.keymap_size = ARRAY_SIZE(mini210_keymap),
};
static struct samsung_keypad_platdata mini210_keypad_data __initdata = {
.keymap_data = &mini210_keymap_data,
.rows = 4,
.cols = 4,
};
然后又参照input.h里面的键值
改写s3c-keypad.kl
改写为
key 30 POWER WAKE
key 10 9
key 11 0
key 2 1
key 3 2
key 4 3
key 5 4
key 6 5
key 7 6
key 8 7
key 9 8
按键时只有power键管用,其他按键能触发中断,显示内核调试信息,但是在短信,email里面都无法显示出对应的数字。