www.pudn.com > keybordyyy.rar > key.cpp


/* 
* author : yuchifang 
* email : renzhongfang@nju.org.cn 
*/ 
 
#pragma warning(disable:4786) 
#include "CIMEDebug.h" 
#include "CIMESoftKbd.h" 
#include "CIMEUIStatus.h" 
#include "CIMEUtils.h" 
 
////////////////////////////////////////////////////////////////////////// 
// 
//	CIMESoftKbdTab Implementations 
// 
////////////////////////////////////////////////////////////////////////// 
 
CIMESkbTab::CIMESkbTab(const TCHAR keys[], const TCHAR shiftKeys[], LPCTSTR name) 
{ 
	for (int i=0; iname, name, 10); 
	this->name[9] = _T('\0'); 
} 
 
CIMESkbTab::CIMESkbTab(const CIMESkbTab &skb) 
{ 
	for (int i=0; i=0 && index =0 && index = 48 && vKey <=57) 
		pos = vKey - 48; 
	else if (vKey >= 65 && vKey <=90) 
		pos = vKey - 65 + 10;	//10为前面10个数字位置 
	else if (vKey >= 186 && vKey <=192) 
		pos = vKey - 186 + 10 + 26;	//26为26字母占的位置 
	else if (vKey >= 219 && vKey <= 222) 
		pos = vKey - 219 + 10 + 26 + 7;	//7为前面七个;=,-./`占的位置 
 
	if (pos == -1) return L'\0'; 
	TCHAR ch = bShift ? shiftTab[pos] : tab[pos]; 
	if (ch == L' ') 
		return L'\0'; 
	return ch; 
} 
 
 
////////////////////////////////////////////////////////////////////////// 
// 
//	CIMESoftKbd Implementations 
// 
////////////////////////////////////////////////////////////////////////// 
CIMESoftKbd::CIMESoftKbd() 
{ 
	CIMEDebug::DebugLog(L"CIMESoftKbd::CIMESoftKbd()"); 
 
	TCHAR tabNames[][10] =  
	{ 
		L"常用符号", 
		L"标点符号", 
		L"特殊符号", 
		L"表格线", 
		L"数字序号", 
		L"数学符号", 
		L"单位符号", 
		L"拼音符号", 
		L"注音符号", 
		L"日文平假名", 
		L"日文片假名", 
		L"希腊字母", 
		L"俄文字母", 
	}; 
 
	WORD wSoftKBDDatas[][2][SOFT_KEY_COUNT] = 
	{ 
	/* 
		{//正常的键盘 
			{ 
				'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
				'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 
				'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 
				'u', 'v', 'w', 'x', 'y', 'z', ';', '=', ',', '-', 
				'.', '/', '`', '[', '\\', ']', '\'' 
			}, 
			{ 
				')', '!', '@', '#', '$', '%', '^', '&', '*', '(', 
				'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 
				'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 
				'U', 'V', 'W', 'X', 'Y', 'Z', ':', '+', '<', '_', 
				'>', '?', '~', '{', '|', '}', '"' 
			} 
		}, 
	*/ 
 
		{//#常用符号 
			{//下档键(没按住shift) 
				_T('⑽'), _T('⑴'), _T('⑵'), _T('⑶'), _T('⑷'), _T('⑸'), _T('⑹'), _T('⑺'), _T('⑻'), _T('⑼'), 
				_T('■'), _T('α'), _T('∑'), _T('▲'), _T('⒊'), _T('●'), _T('★'), _T('【'), _T('⒏'), _T('】'), 
				_T('『'), _T('‘'), _T('γ'), _T('β'), _T('⒐'), _T('⒑'), _T('⒈'), _T('⒋'), _T('◆'), _T('⒌'), 
				_T('⒎'), _T('§'), _T('⒉'), _T('‰'), _T('⒍'), _T('$'), _T(';'), _T('='), _T(','), _T('-'), 
				_T('。'), _T('/'), _T('`'), _T('['), _T('、'), _T(']'), _T('’') 
			}, 
			{//下档键(按住shift) 
				_T('㈩'), _T('㈠'), _T('㈡'), _T('㈢'), _T('㈣'), _T('㈤'), _T('㈥'), _T('㈦'), _T('㈧'), _T('㈨'), 
				_T('□'), _T('±'), _T('∏'), _T('△'), _T('Ⅲ'), _T('○'), _T('☆'), _T('〖'), _T('Ⅷ'), _T('〗'), 
				_T('』'), _T('“'), _T('÷'), _T('×'), _T('Ⅸ'), _T('Ⅹ'), _T('Ⅰ'), _T('Ⅳ'), _T('◇'), _T('Ⅴ'), 
				_T('Ⅶ'), _T('※'), _T('Ⅱ'), _T('℃'), _T('Ⅵ'), _T('¥'), _T(':'), _T('+'), _T('《'), _T('_'), 
				_T('》'), _T('?'), _T('~'), _T('{'), _T('?'), _T('}'), _T('”') 
			} 
		}, 
		{//#标点符号 
			{//下档键(没按住shift) 
				_T('ˉ'), _T(','), _T('、'), _T(';'), _T(':'), _T('?'), _T('!'), _T('…'), _T('—'), _T('·'), 
				_T('〔'), _T('('), _T('【'), _T('〈'), _T('“'), _T('〉'), _T('《'), _T('》'), _T('∶'), _T('「'), 
				_T('」'), _T('『'), _T('['), _T(')'), _T('"'), _T('''), _T('‘'), _T('”'), _T('〕'), _T('々'), 
				_T('‖'), _T('】'), _T('’'), _T('〗'), _T('~'), _T('〖'), _T('』'), _T('¨'), _T(']'), _T('ˇ'), 
				_T('{'), _T('}'), _T('。'), _T('`'), _T('〃'), _T('|'), _T('.') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#特殊符号 
			{//下档键(没按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('■'), _T('^'), _T('@'), _T('▲'), _T('☆'), _T('※'), _T('→'), _T('←'), _T('◇'), _T('↑'), 
				_T('↓'), _T('〓'), _T(' ̄'), _T('_'), _T('◆'), _T('□'), _T('§'), _T('★'), _T('△'), _T('○'), 
				_T('◎'), _T('\'), _T('№'), _T('&'), _T('●'), _T('#'), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#表格线 
			{//下档键(没按住shift) 
				_T('┄'), _T('┍'), _T('┎'), _T('┏'), _T('┐'), _T('┑'), _T('┒'), _T('┓'), _T(' '), _T('─'), 
				_T('┬'), _T('╀'), _T('┾'), _T('┮'), _T('┞'), _T('┯'), _T('┰'), _T('┱'), _T('┣'), _T('┲'), 
				_T('┳'), _T(' '), _T('╂'), _T('╁'), _T(' '), _T('│'), _T('├'), _T('┟'), _T('┭'), _T('┠'), 
				_T('┢'), _T('┿'), _T('┝'), _T('┽'), _T('┡'), _T('┼'), _T(' '), _T(' '), _T('╃'), _T('┈'), 
				_T(' '), _T(' '), _T('┌'), _T('┆'), _T(' '), _T('┊'), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T('┅'), _T('┕'), _T('┖'), _T('┗'), _T('┘'), _T('┙'), _T('┚'), _T('┛'), _T(' '), _T('━'), 
				_T('┴'), _T('╈'), _T('┶'), _T('┶'), _T('┦'), _T('┷'), _T('┸'), _T('┹'), _T('┫'), _T('┺'), 
				_T('┻'), _T(' '), _T('╊'), _T('╉'), _T(' '), _T('┃'), _T('┤'), _T('┧'), _T('┵'), _T('┨'), 
				_T('┪'), _T('╇'), _T('┥'), _T('╅'), _T('┩'), _T('╄'), _T(' '), _T(' '), _T('╋'), _T('┉'), 
				_T(' '), _T(' '), _T('└'), _T('┇'), _T(' '), _T('┋'), _T(' ') 
			} 
		}, 
		{//#数字序号 
			{//下档键(没按住shift) 
				_T('Ⅺ'), _T('Ⅱ'), _T('Ⅲ'), _T('Ⅳ'), _T('Ⅴ'), _T('Ⅵ'), _T('Ⅶ'), _T('Ⅷ'), _T('Ⅸ'), _T('Ⅹ'), 
				_T('㈠'), _T('⑸'), _T('⑶'), _T('㈢'), _T('⒊'), _T('㈣'), _T('㈤'), _T('㈥'), _T('⒏'), _T('㈦'), 
				_T('㈧'), _T('㈨'), _T('⑺'), _T('⑹'), _T('⒐'), _T('⒑'), _T('⒈'), _T('⒋'), _T('㈡'), _T('⒌'), 
				_T('⒎'), _T('⑷'), _T('⒉'), _T('⑵'), _T('⒍'), _T('⑴'), _T('㈩'), _T(' '), _T('⑻'), _T('Ⅻ'), 
				_T('⑼'), _T('⑽'), _T('Ⅰ'), _T(' '), _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('①'), _T('⒂'), _T('⒀'), _T('③'), _T('⒔'), _T('④'), _T('⑤'), _T('⑥'), _T('⒙'), _T('⑦'), 
				_T('⑧'), _T('⑨'), _T('⒄'), _T('⒃'), _T('⒚'), _T('⒛'), _T('⒒'), _T('⒕'), _T('②'), _T('⒖'), 
				_T('⒘'), _T('⒁'), _T('⒓'), _T('⑿'), _T('⒗'), _T('⑾'), _T('⑩'), _T(' '),     _T('⒅'), _T(' '), 
				_T('⒆'), _T('⒇'), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#数学符号 
			{//下档键(没按住shift) 
				_T(' '), _T('≡'), _T('≠'), _T('='), _T('≤'), _T('≥'), _T('<'), _T('>'), _T('≮'), _T('≯'), 
				_T('∧'), _T('⊙'), _T('∠'), _T('∑'), _T('-'), _T('∏'), _T('∪'), _T('∩'), _T('∫'), _T('∈'), 
				_T(' '), _T('∵'), _T('∽'), _T('≌'), _T('∮'), _T('∝'), _T('±'), _T('×'), _T('∨'), _T('÷'), 
				_T(' '), _T('⌒'), _T('+'), _T('∥'), _T('/'), _T('⊥'), _T('∴'), _T(' '), _T(' '), _T('∷'), 
				_T('√'), _T(' '), _T('≈'), _T('∞'), _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#单位符号 
			{//下档键(没按住shift) 
				_T('¤'), _T('°'), _T('′'), _T('″'), _T('$'), _T('£'), _T('¥'), _T('‰'), _T('%'), _T('℃'), 
				_T('百'), _T(' '), _T('毫'), _T('万'), _T('二'), _T('亿'), _T('兆'), _T('吉'), _T('七'), _T('太'), 
				_T('拍'), _T('艾'), _T(' '), _T(' '), _T('八'), _T('九'), _T('○'), _T('三'), _T('千'), _T('四'), 
				_T('六'), _T('微'), _T('一'), _T('厘'), _T('五'), _T('分'), _T(' '), _T(' '), _T(' '), _T('¢'), 
				_T(' '), _T(' '), _T(' '), _T('十'), _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('佰'), _T(' '), _T(' '), _T(' '), _T('贰'), _T(' '), _T(' '), _T(' '), _T('柒'), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T('捌'), _T('玖'), _T('零'), _T('叁'), _T('仟'), _T('肆'), 
				_T('陆'), _T(' '), _T('壹'), _T(' '), _T('伍'), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T('拾'), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#拼音符号 
			{//下档键(没按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('ē') , _T(' '), _T('ǔ') , _T('ě') , _T('ǎ') , _T('è') , _T(' '), _T('ī') , _T('ǒ') , _T('í') , 
				_T('ǐ') , _T('ì') , _T('ǘ') , _T('ǖ') , _T('ò') , _T(' '), _T('ā') , _T('à') , _T('é') , _T(' '), 
				_T('ó') , _T('ù') , _T('á') , _T('ú') , _T('ō') , _T('ū') , _T(' '), _T(' '), _T('ǚ') , _T(' '), 
				_T('ǜ') , _T('ü') , _T(' '), _T('ê') , _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#注音符号 
			{//下档键(没按住shift) 
				_T('ㄦ'), _T('ㄉ'), _T(' '), _T(' '), _T('ㄓ'), _T(' '), _T(' '), _T('ㄚ'), _T('ㄞ'), _T('ㄢ'), 
				_T('ㄇ'), _T('ㄖ'), _T('ㄏ'), _T('ㄎ'), _T('ㄍ'), _T('ㄑ'), _T('ㄕ'), _T('ㄘ'), _T('ㄛ'), _T('ㄨ'), 
				_T('ㄜ'), _T('ㄠ'), _T('ㄩ'), _T('ㄙ'), _T('ㄟ'), _T('ㄣ'), _T('ㄆ'), _T('ㄐ'), _T('ㄋ'), _T('ㄔ'), 
				_T('ㄧ'), _T('ㄒ'), _T('ㄊ'), _T(' '), _T('ㄗ'), _T('ㄈ'), _T('ㄤ'), _T(' '), _T('ㄝ'), _T(' '), 
				_T('ㄡ'), _T('ㄥ'), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#日文平假名 
			{//下档键(没按住shift) 
				_T(' '), _T('ぃ'), _T('ぅ'), _T('ぇ'), _T('ぉ'), _T('か'), _T('き'), _T('く'), _T('け'), _T('こ'), 
				_T('な'), _T('も'), _T('む'), _T('ぬ'), _T('す'), _T('ね'), _T('の'), _T('は'), _T('つ'), _T('ひ'), 
				_T('ふ'), _T('へ'), _T('ゅ'), _T('ゃ'), _T('っ'), _T('て'), _T('さ'), _T('せ'), _T('に'), _T('そ'), 
				_T('ち'), _T('め'), _T('し'), _T('み'), _T('た'), _T('ま'), _T('ほ'), _T(' '), _T('ょ'), _T('ん'), 
				_T('ゎ'), _T('を'), _T('ぁ'), _T('と'), _T(' '), _T('ゐ'), _T('ゑ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T('い'), _T('う'), _T('え'), _T('お'), _T('が'), _T('ぎ'), _T('ぐ'), _T('げ'), _T('ご'), 
				_T('ぱ'), _T('ろ'), _T('る'), _T('ぷ'), _T('ず'), _T('ぺ'), _T('ぽ'), _T('ば'), _T('づ'), _T('び'), 
				_T('ぶ'), _T('べ'), _T('ゆ'), _T('や'), _T(' '), _T('で'), _T('ざ'), _T('ぜ'), _T('ぴ'), _T('ぞ'), 
				_T('ぢ'), _T('れ'), _T('じ'), _T('り'), _T('だ'), _T('ら'), _T('ぼ'), _T(' '), _T('よ'), _T(' '), 
				_T('わ'), _T(' '), _T('あ'), _T('ど'), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#日文片假名 
			{//下档键(没按住shift) 
				_T('ケ'), _T('ィ'), _T('ゥ'), _T('ヴ'), _T('ェ'), _T('ォ'), _T('カ'), _T('ヵ'), _T('キ'), _T('ク'), 
				_T('ナ'), _T('モ'), _T('ム'), _T('ヌ'), _T('ス'), _T('ネ'), _T('ノ'), _T('ハ'), _T('ツ'), _T('ヒ'), 
				_T('フ'), _T('ヘ'), _T('ュ'), _T('ャ'), _T('ッ'), _T('テ'), _T('サ'), _T('セ'), _T('ニ'), _T('ソ'), 
				_T('チ'), _T('メ'), _T('シ'), _T('ミ'), _T('タ'), _T('マ'), _T('ホ'), _T('コ'), _T('ョ'), _T('ヶ'), 
				_T('ヮ'), _T('ヲ'), _T('ァ'), _T('ト'), _T('ン'), _T('ヰ'), _T('ヱ') 
			}, 
			{//下档键(按住shift) 
				_T('ゲ'), _T('イ'), _T('ウ'), _T(' '), _T('エ'), _T('オ'), _T('ガ'), _T(' '), _T('ギ'), _T('グ'), 
				_T('パ'), _T('ロ'), _T('ル'), _T('プ'), _T('ズ'), _T('ペ'), _T('ポ'), _T('バ'), _T('ヅ'), _T('ビ'), 
				_T('ブ'), _T('ベ'), _T('ユ'), _T('ヤ'), _T(' '), _T('デ'), _T('ザ'), _T('ゼ'), _T('ピ'), _T('ゾ'), 
				_T('ヂ'), _T('レ'), _T('ジ'), _T('リ'), _T('ダ'), _T('ラ'), _T('ボ'), _T('ゴ'), _T('ヨ'), _T(' '), 
				_T('ワ'), _T(' '), _T('ア'), _T('ド'), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#希腊字母 
			{//下档键(没按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('κ'), _T('χ'), _T('υ'), _T('μ'), _T('γ'), _T('ν'), _T('ξ'), _T('ο'), _T('θ'), _T('π'), 
				_T('ρ'), _T(' '), _T('ω'), _T('ψ'), _T('ι'), _T(' '), _T('α'), _T('δ'), _T('λ'), _T('ε'), 
				_T('η'), _T('φ'), _T('β'), _T('τ'), _T('ζ'), _T('σ'), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('Κ'), _T('Χ'), _T('Υ'), _T('Μ'), _T('Γ'), _T('Ν'), _T('Ξ'), _T('Ο'), _T('Θ'), _T('Π'), 
				_T('Ρ'), _T(' '), _T('Ω'), _T('Ψ'), _T('Ι'), _T(' '), _T('Α'), _T('Δ'), _T('Λ'), _T('Ε'), 
				_T('Η'), _T('Φ'), _T('Β'), _T('Τ'), _T('Ζ'), _T('Σ'), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' ') 
			} 
		}, 
		{//#俄文字母 
			{//下档键(没按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('л'), _T('ъ'), _T('ш'), _T('н'), _T('в'), _T('о'), _T('п'), _T('р'), _T('ж'), _T('с'), 
				_T('т'), _T('у'), _T('ь'), _T('ы'), _T('з'), _T('и'), _T('а'), _T('г'), _T('м'), _T('д'), 
				_T('ё'), _T('щ'), _T('б'), _T('ч'), _T('е'), _T('ц'), _T('ф'), _T(' '), _T('э'), _T(' '), 
				_T('ю'), _T('я'), _T(' '), _T('й'), _T(' '), _T('к'), _T('х') 
			}, 
			{//下档键(按住shift) 
				_T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), _T(' '), 
				_T('Л'), _T('Ъ'), _T('Ш'), _T('Н'), _T('В'), _T('О'), _T('П'), _T('Р'), _T('Ж'), _T('С'), 
				_T('Т'), _T('У'), _T('Ь'), _T('Ы'), _T('З'), _T('И'), _T('А'), _T('Г'), _T('М'), _T('Д'), 
				_T('Ё'), _T('Щ'), _T('Б'), _T('Ч'), _T('Е'), _T('Ц'), _T('Ф'), _T(' '), _T('Э'), _T(' '), 
				_T('Ю'), _T('Я'), _T(' '), _T('Й'), _T(' '), _T('К'), _T('Х') 
			} 
		} 
	}; 
 
	int size = sizeof(wSoftKBDDatas) / sizeof(TCHAR) / 2 / SOFT_KEY_COUNT; 
	for (int i=0; i