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

📄 wgui_virtual_keyboard.c

📁 The font library converting tool MCT mainly introduces the process of the font formats to give us a
💻 C
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************
*  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:
 * ---------
 *   wgui_virtual_keyboard.c
 *
 * Project:
 * --------
 *   MAUI
 *
 * Description:
 * ------------
 *   Virtual keyboard - WGUI integration
 *
 * 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!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/

#include "PixtelDataTypes.h"
#include "MMI_features.h"
#include "gui_data_types.h"
#include "gui.h"
#include "gdi_include.h"
#include "wgui.h"
#include "wgui_virtual_keyboard.h"
#include "wgui_categories_defs.h"
#include "DebugInitDef.h"

/***************************************************************************** 
* Define
*****************************************************************************/

/* Dead keys (also as normal symbol) */
#define	GRAVE_ACCENT				0x60	/* ` */
#define	ACCUTE_ACCENT				0xB4	
#define	CIRCUMFLEX_ACCENT			0x5E	/* ^ */
#define	DIAERESIS					0xA8
#define	TILDE							0x7E	/* ~ */

/* Common european symbols */
#define 	EURO							0x20AC

#ifdef __MMI_MAINLCD_240X320__

#define	MMI_VKBD_MATRIX_KEY_WIDTH					19
#define	MMI_VKBD_MATRIX_KEY_HEIGHT					19
#define	MMI_VKBD_MATRIX_KEY_H_GAP					1
#define	MMI_VKBD_MATRIX_KEY_V_GAP					1

#define	MATRIX_WIDTH(col)			((col)*(MMI_VKBD_MATRIX_KEY_WIDTH+MMI_VKBD_MATRIX_KEY_H_GAP) - MMI_VKBD_MATRIX_KEY_H_GAP)
#define	MATRIX_HEIGHT(row)		((row)*(MMI_VKBD_MATRIX_KEY_HEIGHT+MMI_VKBD_MATRIX_KEY_V_GAP) - MMI_VKBD_MATRIX_KEY_V_GAP)

#define	MMI_VKBD_STANDARD_WIDTH						240
#define	MMI_VKBD_STANDARD_HEIGHT					63
/* matrix layout at the left side */
#define	MMI_VKBD_STANDARD_MATRIX_COLUMN			7
#define	MMI_VKBD_STANDARD_MATRIX_ROW				3
#define	MMI_VKBD_STANDARD_MATRIX_X					1
#define	MMI_VKBD_STANDARD_MATRIX_Y					2
#define	MMI_VKBD_STANDARD_MATRIX_WIDTH			MATRIX_WIDTH(7)
#define	MMI_VKBD_STANDARD_MATRIX_HEIGHT			MATRIX_HEIGHT(3)

#define	MMI_VKBD_EXTENDED_WIDTH						240
#define	MMI_VKBD_EXTENDED_HEIGHT					83
/* matrix layout at the left side */
#define	MMI_VKBD_EXTENDED_MATRIX_COLUMN			8
#define	MMI_VKBD_EXTENDED_MATRIX_ROW				4
#define	MMI_VKBD_EXTENDED_MATRIX_X					1
#define	MMI_VKBD_EXTENDED_MATRIX_Y					2
#define	MMI_VKBD_EXTENDED_MATRIX_WIDTH			MATRIX_WIDTH(8)
#define	MMI_VKBD_EXTENDED_MATRIX_HEIGHT			MATRIX_HEIGHT(4)

#define	MMI_VKBD_TRAY_WIDTH							240
#define	MMI_VKBD_TRAY_HEIGHT							23
/* matrix layout at the left side */
#define	MMI_VKBD_TRAY_MATRIX_COLUMN				5
#define	MMI_VKBD_TRAY_MATRIX_ROW					1
#define	MMI_VKBD_TRAY_MATRIX_X						1
#define	MMI_VKBD_TRAY_MATRIX_Y						2
#define	MMI_VKBD_TRAY_MATRIX_WIDTH					MATRIX_WIDTH(5)
#define	MMI_VKBD_TRAY_MATRIX_HEIGHT				MATRIX_HEIGHT(1)

#define	MMI_VKBD_NUMBER_WIDTH						240
#define	MMI_VKBD_NUMBER_HEIGHT						43
/* matrix layout at the left side */
#define	MMI_VKBD_NUMBER_MATRIX_COLUMN				8
#define	MMI_VKBD_NUMBER_MATRIX_ROW					2
#define	MMI_VKBD_NUMBER_MATRIX_X					1
#define	MMI_VKBD_NUMBER_MATRIX_Y					2
#define	MMI_VKBD_NUMBER_MATRIX_WIDTH				MATRIX_WIDTH(8)
#define	MMI_VKBD_NUMBER_MATRIX_HEIGHT				MATRIX_HEIGHT(2)

#define	MMI_VKBD_PINYIN_WIDTH						240
#define	MMI_VKBD_PINYIN_HEIGHT						83
/* matrix layout at the left-bottom */
#define	MMI_VKBD_PINYIN_MATRIX_COLUMN				9
#define	MMI_VKBD_PINYIN_MATRIX_ROW					3
#define	MMI_VKBD_PINYIN_MATRIX_X					1
#define	MMI_VKBD_PINYIN_MATRIX_Y					22
#define	MMI_VKBD_PINYIN_MATRIX_WIDTH				MATRIX_WIDTH(9)
#define	MMI_VKBD_PINYIN_MATRIX_HEIGHT				MATRIX_HEIGHT(3)

#define	MMI_VKBD_BOPOMO_WIDTH						240
#define	MMI_VKBD_BOPOMO_HEIGHT						83
/* matrix layout at the left-bottom */
#define	MMI_VKBD_BOPOMO_MATRIX_COLUMN				10
#define	MMI_VKBD_BOPOMO_MATRIX_ROW					3
#define	MMI_VKBD_BOPOMO_MATRIX_X					1
#define	MMI_VKBD_BOPOMO_MATRIX_Y					22
#define	MMI_VKBD_BOPOMO_MATRIX_WIDTH				MATRIX_WIDTH(10)
#define	MMI_VKBD_BOPOMO_MATRIX_HEIGHT				MATRIX_HEIGHT(3)

#else /* __MMI_MAINLCD_240X320__ */

#define	MMI_VKBD_MATRIX_KEY_WIDTH					14
#define	MMI_VKBD_MATRIX_KEY_HEIGHT					14
#define	MMI_VKBD_MATRIX_KEY_H_GAP					1
#define	MMI_VKBD_MATRIX_KEY_V_GAP					1

#define	MATRIX_WIDTH(col)			((col)*(MMI_VKBD_MATRIX_KEY_WIDTH+MMI_VKBD_MATRIX_KEY_H_GAP) - MMI_VKBD_MATRIX_KEY_H_GAP)
#define	MATRIX_HEIGHT(row)		((row)*(MMI_VKBD_MATRIX_KEY_HEIGHT+MMI_VKBD_MATRIX_KEY_V_GAP) - MMI_VKBD_MATRIX_KEY_V_GAP)

#define	MMI_VKBD_STANDARD_WIDTH						176
#define	MMI_VKBD_STANDARD_HEIGHT					46
/* matrix layout at the left side */
#define	MMI_VKBD_STANDARD_MATRIX_COLUMN			7
#define	MMI_VKBD_STANDARD_MATRIX_ROW				3
#define	MMI_VKBD_STANDARD_MATRIX_X					1
#define	MMI_VKBD_STANDARD_MATRIX_Y					1
#define	MMI_VKBD_STANDARD_MATRIX_WIDTH			MATRIX_WIDTH(7)
#define	MMI_VKBD_STANDARD_MATRIX_HEIGHT			MATRIX_HEIGHT(3)

#define	MMI_VKBD_EXTENDED_WIDTH						176
#define	MMI_VKBD_EXTENDED_HEIGHT					61
/* matrix layout at the left side */
#define	MMI_VKBD_EXTENDED_MATRIX_COLUMN			8
#define	MMI_VKBD_EXTENDED_MATRIX_ROW				4
#define	MMI_VKBD_EXTENDED_MATRIX_X					1
#define	MMI_VKBD_EXTENDED_MATRIX_Y					1
#define	MMI_VKBD_EXTENDED_MATRIX_WIDTH			MATRIX_WIDTH(8)
#define	MMI_VKBD_EXTENDED_MATRIX_HEIGHT			MATRIX_HEIGHT(4)

#define	MMI_VKBD_TRAY_WIDTH							176
#define	MMI_VKBD_TRAY_HEIGHT							16
/* matrix layout at the left side */
#define	MMI_VKBD_TRAY_MATRIX_COLUMN				5
#define	MMI_VKBD_TRAY_MATRIX_ROW					1
#define	MMI_VKBD_TRAY_MATRIX_X						1
#define	MMI_VKBD_TRAY_MATRIX_Y						1
#define	MMI_VKBD_TRAY_MATRIX_WIDTH					MATRIX_WIDTH(5)
#define	MMI_VKBD_TRAY_MATRIX_HEIGHT				MATRIX_HEIGHT(1)

#define	MMI_VKBD_NUMBER_WIDTH						176
#define	MMI_VKBD_NUMBER_HEIGHT						31
/* matrix layout at the left side */
#define	MMI_VKBD_NUMBER_MATRIX_COLUMN				8
#define	MMI_VKBD_NUMBER_MATRIX_ROW					2
#define	MMI_VKBD_NUMBER_MATRIX_X					1
#define	MMI_VKBD_NUMBER_MATRIX_Y					1
#define	MMI_VKBD_NUMBER_MATRIX_WIDTH				MATRIX_WIDTH(8)
#define	MMI_VKBD_NUMBER_MATRIX_HEIGHT				MATRIX_HEIGHT(2)

#define	MMI_VKBD_PINYIN_WIDTH						176
#define	MMI_VKBD_PINYIN_HEIGHT						61
/* matrix layout at the left-bottom */
#define	MMI_VKBD_PINYIN_MATRIX_COLUMN				9
#define	MMI_VKBD_PINYIN_MATRIX_ROW					3
#define	MMI_VKBD_PINYIN_MATRIX_X					1
#define	MMI_VKBD_PINYIN_MATRIX_Y					16
#define	MMI_VKBD_PINYIN_MATRIX_WIDTH				MATRIX_WIDTH(9)
#define	MMI_VKBD_PINYIN_MATRIX_HEIGHT				MATRIX_HEIGHT(3)

#define	MMI_VKBD_BOPOMO_WIDTH						176
#define	MMI_VKBD_BOPOMO_HEIGHT						61
/* matrix layout at the left-bottom */
#define	MMI_VKBD_BOPOMO_MATRIX_COLUMN				10
#define	MMI_VKBD_BOPOMO_MATRIX_ROW					3
#define	MMI_VKBD_BOPOMO_MATRIX_X					1
#define	MMI_VKBD_BOPOMO_MATRIX_Y					16
#define	MMI_VKBD_BOPOMO_MATRIX_WIDTH				MATRIX_WIDTH(10)
#define	MMI_VKBD_BOPOMO_MATRIX_HEIGHT				MATRIX_HEIGHT(3)

#endif /* __MMI_MAINLCD_240X320__ */

/***************************************************************************** 
* Typedef 
*****************************************************************************/

/***************************************************************************** 
* Local Variable
*****************************************************************************/

/***************************************************************************** 
* Local Function
*****************************************************************************/

/***************************************************************************** 
* Global Variable
*****************************************************************************/

virtual_keyboard MMI_virtual_keyboard;

/* Maximum required size of key image cache.*/
S32 MMI_virtual_keyboard_bitmap_cache_size;

/****************************
 * Standard layout
 ****************************/

static const gui_matrix_key_layout_struct gui_standard_matrix_layout =
{
	MMI_VKBD_STANDARD_MATRIX_X,MMI_VKBD_STANDARD_MATRIX_Y,
	MMI_VKBD_STANDARD_MATRIX_COLUMN,MMI_VKBD_STANDARD_MATRIX_ROW,
	MMI_VKBD_STANDARD_MATRIX_WIDTH,MMI_VKBD_STANDARD_MATRIX_HEIGHT,
	MMI_VKBD_MATRIX_KEY_WIDTH,MMI_VKBD_MATRIX_KEY_HEIGHT,
	MMI_VKBD_MATRIX_KEY_H_GAP,MMI_VKBD_MATRIX_KEY_V_GAP
};

#ifdef __MMI_MAINLCD_240X320__

static const gui_custom_key_layout_struct gui_standard_custom_key_layout[] =
{
	{141,2,19,19},
	{161,2,19,19},
	{181,2,19,19},
	{201,2,38,19},
	{141,22,19,19},
	{161,22,19,19},
	{181,22,19,19},
	{201,22,38,19},
	{141,42,19,19},
	{161,42,39,19},
	{201,42,38,19}
};

#else /* __MMI_MAINLCD_240X320__ */

static const gui_custom_key_layout_struct gui_standard_custom_key_layout[] =
{
	{106,1,14,14},
	{121,1,14,14},
	{136,1,14,14},
	{151,1,24,14},
	{106,16,14,14},
	{121,16,14,14},
	{136,16,14,14},
	{151,16,24,14},
	{106,31,14,14},
	{121,31,29,14},
	{151,31,24,14}
};

#endif /* __MMI_MAINLCD_240X320__ */

static const gui_keyboard_layout_struct gui_virtual_keyboard_standard_layout =
{
	MMI_VKBD_STANDARD_WIDTH,
	MMI_VKBD_STANDARD_HEIGHT,
	1,
	11,
	&gui_standard_matrix_layout,
	gui_standard_custom_key_layout,
	IMG_VKBD_STANDARD
};

/* English lowercase */
static const gui_keyboard_language_struct gui_keyboard_english_lowercase_string =
{
	MMI_FALSE,
	1,
	11,
	{
		{'q','w','e','r','t','y','u','\0' },
		{'a','s','d','f','g','h','j','\0' },
		{'z','x','c','v','b','n','m','\0' }
	},
	{'i','o','p','\0','k','l','.','\0','\0','\0','\0'},
	{0,0,0,IMG_VKBD_CUSTOM_HIDE,0,0,0,IMG_VKBD_CUSTOM_BACKSPACE,IMG_VKBD_CUSTOM_CAPSLOCK,
		IMG_VKBD_CUSTOM_SPACE,IMG_VKBD_CUSTOM_SYMBPICKER},
	{GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_CHAR_I,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_HIDE, 
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_CHAR_I,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_BAKSPACE,
		GUI_VKBD_PEN_CAPSLOCK,GUI_VKBD_PEN_SPACE,
		GUI_VKBD_PEN_SYMBPICKER}
};

/* English uppercase */
static const gui_keyboard_language_struct gui_keyboard_english_uppercase_string =
{
	MMI_FALSE,
	1,
	11,
	{
		{'Q','W','E','R','T','Y','U','\0' },
		{'A','S','D','F','G','H','J','\0' },
		{'Z','X','C','V','B','N','M','\0' }
	},
	{'I','O','P','\0','K','L','.','\0','\0','\0','\0'},
	{0,0,0,IMG_VKBD_CUSTOM_HIDE,0,0,0,IMG_VKBD_CUSTOM_BACKSPACE,IMG_VKBD_CUSTOM_CAPSLOCK,
		IMG_VKBD_CUSTOM_SPACE,IMG_VKBD_CUSTOM_SYMBPICKER},
	{GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_CHAR_I,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_HIDE, 
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_CHAR_I,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_BAKSPACE,
		GUI_VKBD_PEN_CAPSLOCK,GUI_VKBD_PEN_SPACE,
		GUI_VKBD_PEN_SYMBPICKER}
};


//#if defined(__MMI_LANG_TR_CHINESE__) || defined(__MMI_LANG_SM_CHINESE__)

static const gui_keyboard_language_struct gui_keyboard_chinese_symbol_string = 
{
	MMI_FALSE,
	1,
	11,
	{
		{0x3002,0xFF0C,0xFF0E,0x3001,0xFF1B,0xFF1A,0xFF1F,'\0' },
		{0x3010,0x3011,0x300A,0x300B,0x3008,0x3009,0x300C,'\0' },
		{0x2018,0x2019,0x201C,0x201D,0x2190,0x2192,0x2193,'\0' }
	},
	{0xFF01,0xFF08,0xFF09,'\0',0x300D,0x300E,0x300F,'\0',0x2191,'\0','\0'},
	{0,0,0,IMG_VKBD_CUSTOM_HIDE,0,0,0,IMG_VKBD_CUSTOM_BACKSPACE,0,
		IMG_VKBD_CUSTOM_SPACE,IMG_VKBD_CUSTOM_SYMBPICKER},
	{GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_CHAR_I,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_HIDE, 
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_CHAR_I,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_BAKSPACE,
		GUI_VKBD_PEN_CHAR_I,GUI_VKBD_PEN_SPACE,
		GUI_VKBD_PEN_SYMBPICKER}
};

//#endif /* __MMI_LANG_TR_CHINESE__ || __MMI_LANG_SM_CHINESE__ */


/****************************
 * Extended layout
 ****************************/


static const gui_matrix_key_layout_struct gui_extended_matrix_layout =
{
	MMI_VKBD_EXTENDED_MATRIX_X,MMI_VKBD_EXTENDED_MATRIX_Y,
	MMI_VKBD_EXTENDED_MATRIX_COLUMN,MMI_VKBD_EXTENDED_MATRIX_ROW,
	MMI_VKBD_EXTENDED_MATRIX_WIDTH,MMI_VKBD_EXTENDED_MATRIX_HEIGHT,
	MMI_VKBD_MATRIX_KEY_WIDTH,MMI_VKBD_MATRIX_KEY_HEIGHT,
	MMI_VKBD_MATRIX_KEY_H_GAP,MMI_VKBD_MATRIX_KEY_V_GAP
};

#ifdef __MMI_MAINLCD_240X320__

static const gui_custom_key_layout_struct gui_extended_custom_key_layout[] =
{
	{161,2,19,19},
	{181,2,19,19},
	{201,2,38,19},
	{161,22,19,19},
	{181,22,19,19},
	{201,22,38,19},
	{161,42,19,19},
	{181,42,19,19},
	{201,42,38,19},
	{161,62,39,19},
	{201,62,38,19}
};

#else /* __MMI_MAINLCD_240X320__ */

static const gui_custom_key_layout_struct gui_extended_custom_key_layout[] =
{
	{121,1,14,14},
	{136,1,14,14},
	{151,1,24,14},
	{121,16,14,14},
	{136,16,14,14},
	{151,16,24,14},
	{121,31,14,14},
	{136,31,14,14},
	{151,31,24,14},
	{121,46,29,14},
	{151,46,24,14}
};

#endif /* __MMI_MAINLCD_240X320__ */

static const gui_keyboard_layout_struct gui_virtual_keyboard_extended_layout =
{
	MMI_VKBD_EXTENDED_WIDTH,
	MMI_VKBD_EXTENDED_HEIGHT,
	1,
	11,
	&gui_extended_matrix_layout,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -