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