以baidu为例:
在Shortcuts.c 里注册下键为百度快捷键:
void ShctExecuteDownKey(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
FuncPtr p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __MMI_SEARCH_WEB__
if (mmi_search_web_hot_key_is_enabled(MMI_SEARCH_WEB_HOT_KEY_DOWN_KEY)) //检查热键是否有效。如果配置失败则按照默认规则
{
mmi_search_web_trigger_by_hot_key(MMI_SEARCH_WEB_HOT_KEY_DOWN_KEY);
return;
}
#endif
if (g_shct_cntx.DediShctList[1] != SHCT_DEFAULT_MENU_ID)
{
if (ShctCheckItemCanbeExecuted(g_shct_cntx.DediShctList[1]) == 0)
{
g_shct_cntx.IsKeyRetrieving = TRUE;
(mmi_frm_get_hilite_hdlr(g_shct_cntx.DediShctList[1])) ();
g_shct_cntx.IsKeyRetrieving = FALSE;
p = get_left_softkey_function(KEY_EVENT_UP);
(*p)();
// execute_softkey_function(KEY_EVENT_UP, MMI_LEFT_SOFTKEY);
}
}
else
{
EntryShctInIdle();
}
}
MMI_BOOL mmi_search_web_hot_key_is_enabled(mmi_search_web_hot_key_enum hot_key)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#if WAP_SUPPORT
if (!mmi_idle_is_main_menu()) //是否在idle,否则返回false
{
MMI_TRACE(MMI_SEARCH_WEB_TRACE_GROUP, TRC_MMI_SEARCH_WEB_HOT_KEY_IS_ENABLED, hot_key, 0, MMI_FALSE);
return MMI_FALSE;
}
#ifdef __MMI_SEARCH_WEB_BAIDU__
if (mmi_sweb_baidu_hot_key_is_enabled(hot_key)) //是否与定义热键一致,否则返回false
{
MMI_TRACE(MMI_SEARCH_WEB_TRACE_GROUP, TRC_MMI_SEARCH_WEB_HOT_KEY_IS_ENABLED, hot_key, 10, MMI_TRUE);
return MMI_TRUE;
}
#endif /* __MMI_SEARCH_WEB_BAIDU__ */
#endif /* WAP_SUPPORT */
MMI_TRACE(MMI_SEARCH_WEB_TRACE_GROUP, TRC_MMI_SEARCH_WEB_HOT_KEY_IS_ENABLED, hot_key, 9999, MMI_FALSE);
return MMI_FALSE;
}
MMI_BOOL mmi_sweb_baidu_hot_key_is_enabled(mmi_search_web_hot_key_enum hot_key)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return (g_mmi_sweb_baidu_hot_key == hot_key); //接收到的热键与所定义热键一致,返回true
}
typedef enum
{
MMI_SEARCH_WEB_HOT_KEY_NONE = 0, /* No hot key is enabled */
MMI_SEARCH_WEB_HOT_KEY_DOWN_KEY = 0x1, /* Down arrow key */
MMI_SEARCH_WEB_HOT_KEY_LONG_PRESS_STAR = 0x2, /* Long pressing * (star key) */
MMI_SEARCH_WEB_HOT_KEY_LONG_END_OF_ENUM
} mmi_search_web_hot_key_enum; //定义热键枚举
static mmi_search_web_hot_key_enum g_mmi_sweb_baidu_hot_key = MMI_SEARCH_WEB_BAIDU_DEFAULT_HOT_KEY; //预定义热键
void mmi_search_web_trigger_by_hot_key(mmi_search_web_hot_key_enum hot_key)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
MMI_TRACE(MMI_SEARCH_WEB_TRACE_GROUP, TRC_MMI_SEARCH_WEB_TRIGGER_BY_HOT_KEY, hot_key);
#ifdef __MMI_SEARCH_WEB_BAIDU__
if (mmi_sweb_baidu_hot_key_is_enabled(hot_key))
{
mmi_search_web_baidu_open_search_bar(); //进入百度搜索界面
return;
}
#endif /* __MMI_SEARCH_WEB_BAIDU__ */
}