方法一
所有按键的消息都经过dev_key_handle
进行处理,所以一个简单粗暴的方法就是将自己的按键处理函数添加到这里:
static void dev_key_handle(dev_key_evt_struct *dev_evt_p)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_key_evt_struct mmi_key_event_frm;
dev_key_evt_struct dev_evt[4];
U8 len = 0;
U32 i;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
MMI_TRACE(PLUTO_FW_TRC_KEY, TRC_MMI_FRM_KEY_DEVICE_KEY_INFO, dev_evt_p->device_key_code, dev_evt_p->device_key_type);
pre_process_dev_evt(dev_evt_p, dev_evt, &len);
for (i = 0; i < len; i++)
{
/* Init the local data */
mmi_key_event_frm.mmi_key_code = KEY_INVALID;
mmi_key_event_frm.mmi_key_type = MAX_KEY_TYPE;
mmi_key_event_frm.cvt_code = KEY_INVALID;
mmi_key_event_frm.is_clear = MMI_FALSE;
/* get framework level mmi key events */
get_mmi_key_events(&dev_evt[i], &mmi_key_event_frm);
if( MMI_TRUE == is_valid_mmi_key_event(
mmi_key_event_frm.mmi_key_code,
mmi_key_event_frm.mmi_key_type))
{
/* 在这里添加自己的按键处理函数 */
mmi_key_handle(&mmi_key_event_frm);
}
}
}
方法二
利用void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType );
注册按键事件与相应的处理函数,按键触发时执行相应的函数。这种方式相对于方式一,就不用破坏非业务代码了。
网友评论