📄 keybrd.c
字号:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* Keybrd.C
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* This file is intends for keypad processing
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
/**
* Copyright Notice
* ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
* Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
* (It is illegal to remove this copyright notice from this software or any
* portion of it)
*/
/**************************************************************
FILENAME : KeyBrd.c
PURPOSE : Key Board Handler
REMARKS : nil
AUTHOR : Neeraj Sharma
DATE : Aug 25, 2003
**************************************************************/
/* Include: MMI header file */
#include "MMI_features.h"
#include "stdC.h"
#include "L4Dr1.h"
#include "PixtelDataTypes.h"
#include "KeyBrd.h"
#include "TimerEvents.h"
#include "AudioInc.h"
#include "GlobalConstants.h"
#include "ThrdOsInterface.h"
#include "DebugInitDef.h"
#include "FrameworkStruct.h"
#include "SettingProfile.h"
#include "IdleAppDef.h"
#include "QueueGprot.h"
#include "taskinit.h" /* amitM */
#include "MMITaskProt.h"
#include "WrapperGprot.h"
#include "ProfileGprots.h"
#include "L4Dr.h"
#include "kbd_table.h"
#include "MMI_trc.h"
#include "EventsGprot.h"
#include "gpioInc.h"
#if defined(__MMI_TOUCH_SCREEN__) || defined(__MMI_HANDWRITING_PAD__)
#include "wgui_touch_screen.h"
#endif
#include "ScreenRotationGprot.h"
#include "kbd_table.h"
#include "ProfilingEngine.h"
#include "SimDetectionGprot.h"
extern U8 processUpRepeatKey;
extern U8 pressKey;
/*****************************************************************************
* Define
*****************************************************************************/
#define MAX_PRESENTALLKEYS sizeof(PresentAllKeys)/sizeof(PresentAllKeys[0])
#define MAX_PRESENTDIGITSKEYS sizeof(PresentDigitsKeys)/sizeof(PresentDigitsKeys[0])
#define MAX_KEYPADMAP sizeof(nKeyPadMap)/sizeof(nKeyPadMap[0])
mmi_frm_context_struct g_mmi_frm_cntx;
mmi_frm_context_struct *frm_p = &g_mmi_frm_cntx;
/*****************************************************************************
* Local Variable
*****************************************************************************/
static U16 currKeyPadTone = 0xFFFF;
static mmi_key_types_enum nKeyPadStatus[MAX_KEYS];
/* allow multiple keys's processing at the same time */
static MMI_BOOL g_kbd_concurrent_key_mode = MMI_FALSE;
/* how many key under pressing */
static U8 key_is_pressing_count = 0;
static MMI_BOOL g_process_key_in_high_frequency = MMI_FALSE;
/*****************************************************************************
* Global Variable
*****************************************************************************/
extern oslMsgqid mmi_ext_qid;
extern MMI_BOOL g_keypad_flag;
extern drv_get_key_func keypad_ptr;
U32 g_2step_key_num = 0;
U16 g_2step_keyCode[MAX_KEYS];
const U16 PresentDigitsKeys[] = {KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9};
const U16 PresentAllKeys[] =
{
KEY_0,
KEY_1,
KEY_2,
KEY_3,
KEY_4,
KEY_5,
KEY_6,
KEY_7,
KEY_8,
KEY_9,
KEY_LSK,
KEY_RSK,
KEY_UP_ARROW,
KEY_DOWN_ARROW,
KEY_LEFT_ARROW,
KEY_RIGHT_ARROW,
KEY_SEND,
KEY_END,
KEY_STAR,
KEY_POUND,
KEY_VOL_UP,
KEY_VOL_DOWN,
KEY_CLEAR,
KEY_CAMERA,
KEY_WAP,
KEY_EXTRA_1,
KEY_EXTRA_2,
KEY_PLAY_STOP,
KEY_PLAY_STOP,
KEY_BACK,
KEY_POWER
//KP Jerry add on 2007-4-23 start
,KEY_LEFT_SHORTCUT
,KEY_RIGHT_SHORTCUT
//KP Jerry add on 2007-4-23 end
};
#ifndef MMI_ON_WIN32
static const KeyPadMap nKeyPadMap[] =
{
{DEVICE_KEY_0, KEY_0, KEY_TIMER_ID0, TONE_DTMF_0, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_1, KEY_1, KEY_TIMER_ID1, TONE_DTMF_1, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_2, KEY_2, KEY_TIMER_ID2, TONE_DTMF_2, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_3, KEY_3, KEY_TIMER_ID3, TONE_DTMF_3, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_4, KEY_4, KEY_TIMER_ID4, TONE_DTMF_4, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_5, KEY_5, KEY_TIMER_ID5, TONE_DTMF_5, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_6, KEY_6, KEY_TIMER_ID6, TONE_DTMF_6, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_7, KEY_7, KEY_TIMER_ID7, TONE_DTMF_7, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_8, KEY_8, KEY_TIMER_ID8, TONE_DTMF_8, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_9, KEY_9, KEY_TIMER_ID9, TONE_DTMF_9, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_STAR, KEY_STAR, KEY_TIMER_ID10, TONE_KEY_STAR, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_HASH, KEY_POUND, KEY_TIMER_ID11, TONE_KEY_HASH, DEVICE_AUDIO_PLAY_INFINITE},
{DEVICE_KEY_VOL_UP, KEY_VOL_UP, KEY_TIMER_ID12, TONE_KEY_VOL_UP, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_TIMER_ID13, TONE_KEY_VOL_DOWN, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_UP, KEY_UP_ARROW, KEY_TIMER_ID14, TONE_KEY_UP, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_DOWN, KEY_DOWN_ARROW, KEY_TIMER_ID15, TONE_KEY_DOWN, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_LEFT, KEY_LEFT_ARROW, KEY_TIMER_ID16, TONE_KEY_LEFT, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_RIGHT, KEY_RIGHT_ARROW, KEY_TIMER_ID17, TONE_KEY_RIGHT, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_MENU, KEY_ENTER, KEY_TIMER_ID18, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_FUNCTION, KEY_QUICK_ACS, KEY_TIMER_ID19, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_SK_LEFT, KEY_LSK, KEY_TIMER_ID20, TONE_KEY_SK_LEFT, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_SK_RIGHT, KEY_RSK, KEY_TIMER_ID21, TONE_KEY_SK_RIGHT, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_SEND, KEY_SEND, KEY_TIMER_ID22, TONE_KEY_SEND, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_END, KEY_END, KEY_TIMER_ID23, TONE_KEY_END, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_POWER, KEY_POWER, KEY_TIMER_ID24, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE}, /* 24 IMPORTANT :This will be power key */
{DEVICE_KEY_CLEAR, KEY_CLEAR, KEY_TIMER_ID25, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_EXT_FUNC1, KEY_EXTRA_1, KEY_TIMER_ID27, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_EXT_FUNC2, KEY_EXTRA_2, KEY_TIMER_ID28, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_MP3_PLAY_STOP, KEY_PLAY_STOP, KEY_TIMER_ID29, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_MP3_FWD, KEY_FWD, KEY_TIMER_ID30, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_MP3_BACK, KEY_BACK, KEY_TIMER_ID31, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE}
//KP Jerry add on 2007-4-23 start
,{DEVICE_KEY_MP3_SHORTCUT, KEY_LEFT_SHORTCUT, KEY_TIMER_ID32, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE}
,{DEVICE_KEY_WAP_SHORTCUT, KEY_RIGHT_SHORTCUT, KEY_TIMER_ID33, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE}
//KP Jerry add on 2007-4-23 end
};
#else /* MMI_ON_WIN32 */
/*
* virtual-Key Code is defined in "WINUSER.H", and "WINDOWS.H" includes "WINUSER.H"
*
* Constant name Value (hexadecimal)
*-------------------------------------------------
* #define VK_SPACE 0x20
* #define VK_PRIOR 0x21
* #define VK_NEXT 0x22
* #define VK_END 0x23
* #define VK_HOME 0x24
* #define VK_LEFT 0x25
* #define VK_UP 0x26
* #define VK_RIGHT 0x27
* #define VK_DOWN 0x28
* #define VK_SELECT 0x29
* #define VK_PRINT 0x2A
* #define VK_EXECUTE 0x2B
* #define VK_SNAPSHOT 0x2C
* #define VK_INSERT 0x2D
* #define VK_DELETE 0x2E
* #define VK_HELP 0x2F
*
* [ VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) ]
* [ VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) ]
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -