⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keybrd.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
*  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 + -