📄 keybrd.c
字号:
* mmi_frm_set_key_handle_in_high_frequency
* DESCRIPTION
* This function is to process the keypad handler in high frequency mode
* PARAMETERS
* is_enable [IN]
* a(?) [IN] Is_enable
* RETURNS
* void
*****************************************************************************/
void mmi_frm_set_key_handle_in_high_frequency(MMI_BOOL is_enable)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_process_key_in_high_frequency = is_enable;
}
/*****************************************************************************
* FUNCTION
* mmi_frm_key_handle
* DESCRIPTION
* This function is to process the keypad handler.
* PARAMETERS
* paraBuff [?]
* a(?) [IN] ParaBuff
* RETURNS
* void
*****************************************************************************/
void mmi_frm_key_handle(void *paraBuff)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kbd_data k;
U32 msg_count;
mmi_eq_keypad_detect_ind_struct *p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (paraBuff != NULL)
{
drv_get_key_func new_key_ptr;
p = (mmi_eq_keypad_detect_ind_struct*) paraBuff;
new_key_ptr = (drv_get_key_func) (p->func);
if (new_key_ptr != keypad_ptr)
{
ClearKeyEvents();
}
keypad_ptr = new_key_ptr;
}
while (1)
{
if ((*(keypad_ptr)) (&k) == MMI_TRUE)
{
if (k.Keydata[0] != KEY_INVALID)
{
static U8 is_allow_key_action = MMI_TRUE;
#if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
kal_bool is_pen_enabled, is_pen_down;
mmi_pen_get_state(&is_pen_enabled, &is_pen_down);
#endif /* defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__) */
#if defined(__MMI_SLEEP_OUT_BACKLIGHT_ON__)
if ((IsBacklightOn() == MMI_FALSE) && (k.Keyevent == WM_KEYPRESS))
{
//KP Jerry modify for LCD Backlight don't open when press any key during keypad been locked on 2007-4-4 start
#ifdef __MMI_LCD_OFF_WHEN_ANYKEY_PRESSED_AND_KEYPAD_LOCKED__
if(g_keylock_context.gKeyPadLockFlag)
{
if( (k.Keydata[0] == DEVICE_KEY_SEND) || (k.Keydata[0] == DEVICE_KEY_END) || (k.Keydata[0] == DEVICE_KEY_SK_RIGHT) )
TurnOnBacklight(1); /* timer backlight control */
}
else
{
TurnOnBacklight(1); /* timer backlight control */
}
#else
TurnOnBacklight(1); /* timer backlight control */
#endif
//KP Jerry modify for LCD Backlight don't open when press any key during keypad been locked on 2007-4-4 end
is_allow_key_action = MMI_FALSE;
}
else
#endif /* defined(__MMI_SLEEP_OUT_BACKLIGHT_ON__) */
#if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
if (is_pen_down && (k.Keyevent == WM_KEYPRESS))
{
is_allow_key_action = MMI_FALSE;
}
else
#endif /* defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__) */
if ((k.Keyevent == WM_KEYRELEASE) && (is_allow_key_action == MMI_FALSE))
{
is_allow_key_action = MMI_TRUE;
}
else if (is_allow_key_action == MMI_TRUE)
{
if ((k.Keyevent == WM_KEYPRESS) && (mmi_kbd_get_key_is_pressing_count() == 0))
{
#if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
mmi_pen_disable();
#endif
}
mmi_frm_convert_process_key_event(k.Keyevent, k.Keydata[0]);
if ((k.Keyevent == WM_KEYRELEASE) && (mmi_kbd_get_key_is_pressing_count() == 0))
{
#if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
mmi_pen_enable();
#endif
}
}
}
msg_get_ext_queue_info(mmi_ext_qid, &msg_count);
if (msg_count > 0 || OslNumOfCircularQMsgs() > 0)
{
g_keypad_flag = MMI_TRUE;
break;
}
}
else
{
g_keypad_flag = MMI_FALSE;
break;
}
} /* while(1) */
}
#endif /* MMI_ON_WIN32 */
/*****************************************************************************
* FUNCTION
* StopCurrentKeyPadTone
* DESCRIPTION
* Stops Current keypad tone
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void StopCurrentKeyPadTone(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (currKeyPadTone != 0xFFFF)
{
AudioStopReq(currKeyPadTone);
currKeyPadTone = 0xFFFF;
}
}
/*****************************************************************************
* FUNCTION
* ClearKeyEvents
* DESCRIPTION
* Clears Keyboard buffer
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void ClearKeyEvents(void)
{
#ifndef MMI_ON_WIN32
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
extern drv_get_key_func keypad_ptr;
kbd_data k;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_CLEAR_KEY_EVENTS_HDLR));
if (keypad_ptr != NULL)
{
while ((*(keypad_ptr)) (&k) == KAL_TRUE)
{
/* restore state of keys */
if (k.Keydata[0] != KEY_INVALID)
{
mmi_kbd_reset_key_state(k.Keyevent, k.Keydata[0]);
}
}
}
processUpRepeatKey = 0;
pressKey = 0; /* 0- full up, 1- half down, 2- full down */
StopCurrentKeyPadTone();
#if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
/*
* We disable pen on key down and enable pen on key up.
* * If key down and key up events are not paired, pen is not enabled again.
*/
mmi_pen_enable();
#endif /* defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__) */
#endif /* MMI_ON_WIN32 */
}
#if defined(__MMI_HUMAN_VOICE_KEYPAD_TONE__)
/*****************************************************************************
* FUNCTION
* GetHumanVoiceToneID
* DESCRIPTION
*
* PARAMETERS
* MMIKeyCode [IN]
* RETURNS
*
*****************************************************************************/
S16 GetHumanVoiceToneID(S16 MMIKeyCode)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S16 i;
U8 keypad_tone_type = GetKeypadToneType();
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (keypad_tone_type >= KEYPAD_TONE_HUMAN_VOICE_1 && keypad_tone_type <= KEYPAD_TONE_HUMAN_VOICE_6)
{
if (!CanPlayHumanVoiceKeyTone())
{
return -1;
}
if (MMIKeyCode >= KEY_0 && MMIKeyCode <= KEY_9)
{
i = MMIKeyCode - KEY_0;
}
else if (MMIKeyCode == KEY_STAR)
{
i = 10;
}
else if (MMIKeyCode == KEY_POUND)
{
i = 11;
}
else
{
i = -1;
}
if (i >= 0)
{
return (S16) ((keypad_tone_type - KEYPAD_TONE_HUMAN_VOICE_1) * 13 + i + MIN_HUMAN_VOICE_ID);
}
}
return -1;
}
#endif /* defined(__MMI_HUMAN_VOICE_KEYPAD_TONE__) */
#if defined(__MMI_CUST_KEYPAD_TONE__)
/*****************************************************************************
* FUNCTION
* GetCustKeyPadToneID
* DESCRIPTION
*
* PARAMETERS
* MMIKeyCode [IN]
* RETURNS
*
*****************************************************************************/
S16 GetCustKeyPadToneID(S16 MMIKeyCode)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 keypad_tone_type = GetKeypadToneType();
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (keypad_tone_type >= KEYPAD_TONE_CUST_1 && keypad_tone_type <= KEYPAD_TONE_CUST_6)
{
if (!CanPlayCustKeyTone())
{
return -1;
}
return (S16) (keypad_tone_type - KEYPAD_TONE_CUST_1 + MIN_KEYPAD_TONE_ID);
}
return -1;
}
#endif /* defined(__MMI_CUST_KEYPAD_TONE__) */
/*****************************************************************************
* FUNCTION
* GetKeypadTone
* DESCRIPTION
*
* PARAMETERS
* MMIKeyCode [IN]
* RETURNS
*
*****************************************************************************/
U16 GetKeypadTone(S16 MMIKeyCode)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 is_found = MMI_FALSE;
S16 i;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#if defined(__MMI_CUST_KEYPAD_TONE__)
if ((i = GetCustKeyPadToneID(MMIKeyCode)) >= 0)
{
return (U16) i;
}
#endif /* defined(__MMI_CUST_KEYPAD_TONE__) */
#if defined(__MMI_HUMAN_VOICE_KEYPAD_TONE__)
/* MTK added by Tim for human voice keypad tone */
if ((i = GetHumanVoiceToneID(MMIKeyCode)) >= 0)
{
return (U16) i;
}
#endif /* defined(__MMI_HUMAN_VOICE_KEYPAD_TONE__) */
for (i = 0; i < MAX_KEYPADMAP; i++)
{
if (MMIKeyCode == nKeyPadMap[i].nMMIKeyCode)
{
is_found = MMI_TRUE;
break;
}
}
MMI_ASSERT(is_found == MMI_TRUE);
return (U16) nKeyPadMap[i].KeyPadTone;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -