mx53 linux gpio 模拟matrix keypad

来源:互联网 发布:专业心理学书籍知乎 编辑:程序博客网 时间:2024/05/19 03:22

mx53 linux 用gpio模拟matrix keypad需要做的工作


1、在配置内核驱动的时候添加 gpiomatrix keypad

         DeviceDrivers --->

                   Inputdevice support  --->

                            Keyboards  ---> 

                                     <*>   GPIO driven matrix keypad support

 

2、在mx53_loco.c文件中添加代码

 

static const uint32_t mx53_keymap[] = {

         KEY(0,0, KEY_0),

//      KEY(0,1, KEY_A),

//      KEY(0,2, KEY_3),

//      KEY(0,3, KEY_5),

//      KEY(0,4, KEY_6),

//      KEY(0,5, KEY_7),

//      KEY(0,6, KEY_9),

//      KEY(1,0, KEY_9),

//      KEY(1,1, KEY_E),

//      KEY(1,2, KEY_4),

//      KEY(1,3, KEY_R),

//      KEY(1,4, KEY_Y),

//      KEY(1,5, KEY_8),

//      KEY(1,6, KEY_I),

//      KEY(2,0, KEY_TAB),

//      KEY(2,1, KEY_Q),

//      KEY(2,2, KEY_E),

//      KEY(2,3, KEY_T),

//      KEY(2,4, KEY_G),

//      KEY(2,5, KEY_U),

//      KEY(2,6, KEY_J),

};

 

static struct matrix_keymap_data mx53_keymap_data= {

         .keymap            = mx53_keymap,

         .keymap_size  = ARRAY_SIZE(mx53_keymap),

};

 

static const int mx53_row_gpios[] =

                   {GPIO_4_0};

static const int mx53_col_gpios[] =

                   {GPIO_4_1};

 

static struct matrix_keypad_platform_datamx53_pdata = {

         .keymap_data          = &mx53_keymap_data,

         .row_gpios                = mx53_row_gpios,

         .col_gpios                  = mx53_col_gpios,

         .num_row_gpios               = ARRAY_SIZE(mx53_row_gpios),

         .num_col_gpios                 = ARRAY_SIZE(mx53_col_gpios),

         .col_scan_delay_us = 10,

         .debounce_ms                   = 80,

//      .wakeup                     = 1,

         .active_low      = 1,

};

static struct platform_device mx53_device ={

         .name                = "matrix-keypad",

         .id              = -1,

         .dev           = {

                   .platform_data= &mx53_pdata,

         },

};

static void __initmx53_add__matrix_keypad(void)

{

         platform_device_register(&mx53_device);

}

 

在static void __init mxc_board_init(void)函数中添加代码

mx53_add__matrix_keypad();



系统启动后,运行qt程序时,按下按键有如下打印消息

keycode is 48   unicode is 48 modifiers is 0  isPress is 1,autoRepeat is 0 
keycode is 48   unicode is 48 modifiers is 0  isPress is 0,autoRepeat is 0



原创粉丝点击