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

📄 jyinput.cpp

📁 嵌入式终端中文输入法(for MiniGUI) 包括拼音、笔画、英文大小写、符号等
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		piinfo->hz_outcode[piinfo->outcode_cur++] = (char)key;		piinfo->hz_outcode[piinfo->outcode_cur] ='\0';		nCount = _proc_py_index();		if (nCount == 0) 		{			if (m_nPyCount != 0) 			{				piinfo->hz_outcode[piinfo->outcode_cur-1] ='\0';				piinfo->outcode_cur --;				nCount = _proc_py_index();			}		}		m_nPyCount = nCount;		m_nPySelect = 0;		m_nFirst = 0;		memcpy(piinfo->py_code , m_szPylist + (piinfo->outcode_cur + 1) * m_nPySelect, piinfo->outcode_cur) ;		piinfo->py_code[piinfo->outcode_cur] = 0;		_Py_Select_Change();		m_nSelectPos = 0;		return TRUE;	}	else if (key == KEY_XING)	{		if (piinfo->outcode_cur != 0) 		{			m_nPySelect ++;			if (m_nPySelect >m_nPyCount - 1) 				m_nPySelect = 0;			memcpy(piinfo->py_code , m_szPylist + (piinfo->outcode_cur + 1) * m_nPySelect, piinfo->outcode_cur) ;			piinfo->py_code[piinfo->outcode_cur] = 0;			_Py_Select_Change();			m_nSelectPos = 0;			return TRUE;		}	}	else if (key == KEY_RFUNC)	{		if(piinfo->outcode_cur > 0){			piinfo->outcode_cur--;			piinfo->hz_outcode[piinfo->outcode_cur] = 0;			m_nPySelect = 0;			if (piinfo->outcode_cur !=0) {				m_nPyCount = _proc_py_index();			}else{				m_nPyCount = 0;			}			memcpy(piinfo->py_code , m_szPylist + (piinfo->outcode_cur + 1) * m_nPySelect, piinfo->outcode_cur) ;			piinfo->py_code[piinfo->outcode_cur] = 0;			_Py_Select_Change();			return TRUE;		}		else		{			_Quit_JYInput_Wnd();		}	}	return FALSE;}static BOOL _proc_bh_key_press(unsigned short key){	ST_INPUT_INFO *piinfo = &m_piinfo;	if(key >= KEY_1 && key <= KEY_5)	{		if (g_pstBhTable != NULL)		{			if (piinfo->outcode_cur >= 10) 				return TRUE;			piinfo->hz_outcode[piinfo->outcode_cur++] = key - 48;			piinfo->hz_outcode[piinfo->outcode_cur] = '\0';			m_nSelectPos = 0;			piinfo->hz_found_cur = 0;			_find_bh_hzcode();			_put_bh_to_array();		}		return TRUE;	}	else if (key == KEY_RFUNC)	{		if (piinfo->outcode_cur > 0)		{			piinfo->outcode_cur--;			piinfo->hz_outcode[piinfo->outcode_cur] = 0;			m_nSelectPos = 0;			_find_bh_hzcode();			_put_bh_to_array();		}		else		{			_Quit_JYInput_Wnd();		}		return TRUE;	}	return FALSE;}static BOOL _proc_hw_key_press(unsigned short key){	ST_INPUT_INFO *piinfo = &m_piinfo;	if(key >= KEY_1 && key <= KEY_9)	{		//m_nSelectPos	}	else if (key == KEY_RFUNC)	{		_Quit_JYInput_Wnd();	}	return FALSE;}static void _proc_hz_keyup(){	ST_INPUT_INFO *piinfo = &m_piinfo;	if (piinfo->outcode_cur == 0) 	{		if (m_bHZAssn)		{			if (m_nSelectPos >= LINE_DISPLAY_MAXCOUNT) 			{				m_assn_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;				m_nSelectPos = m_assn_Hz_Pos;			}			////_put_assn_to_array();		}		else		{			if (m_often_Hz_Pos >= LINE_DISPLAY_MAXCOUNT) 			{				m_often_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;				m_nSelectPos = m_often_Hz_Pos;			}			_put_often_to_array();		}	}	else	{		if(piinfo->hz_found_begin == piinfo->hz_found_end)			return;		if((piinfo->hz_found_cur - piinfo->hz_found_begin) > LINE_DISPLAY_MAXCOUNT * 2)			piinfo->hz_found_cur -= LINE_DISPLAY_MAXCOUNT * 2;		else 			piinfo->hz_found_cur = piinfo->hz_found_begin;		m_nSelectPos = (piinfo->hz_found_cur - piinfo->hz_found_begin) / 2;		if (piinfo->keymode & IME_MODE_T9PY)			_put_py_to_array();		else if (piinfo->keymode & IME_MODE_T9BH)			_put_bh_to_array();		////else if (piinfo->keymode & IME_MODE_HANDWRITE)		////	_put_bh_to_array();	}}static void _proc_hz_keydown(){	ST_INPUT_INFO *piinfo = &m_piinfo;	if (piinfo->outcode_cur == 0) {		if (m_bHZAssn)		{			if (m_assn_Hz_Pos + LINE_DISPLAY_MAXCOUNT < g_pstAssnArray[m_nAssnSelectIndex].nCounts) 			{				m_assn_Hz_Pos += LINE_DISPLAY_MAXCOUNT;				m_nSelectPos = m_assn_Hz_Pos;			}			////_put_assn_to_array();		}		else		{			if (m_often_Hz_Pos + LINE_DISPLAY_MAXCOUNT < OFTEN_COUNT) 			{				m_often_Hz_Pos += LINE_DISPLAY_MAXCOUNT;				m_nSelectPos = m_often_Hz_Pos;			}			_put_often_to_array();		}	}	else	{		if(piinfo->hz_found_begin == piinfo->hz_found_end)			return;		if((piinfo->hz_found_end - piinfo->hz_found_cur) > LINE_DISPLAY_MAXCOUNT * 2)		{			piinfo->hz_found_cur += LINE_DISPLAY_MAXCOUNT * 2;			m_nSelectPos = (piinfo->hz_found_cur - piinfo->hz_found_begin) / 2;		}		if (piinfo->keymode & IME_MODE_T9PY)			_put_py_to_array();		else if (piinfo->keymode & IME_MODE_T9BH)			_put_bh_to_array();		////else if (piinfo->keymode & IME_MODE_HANDWRITE)		////	_put_bh_to_array();	}}static void _proc_hz_keyleft(){	ST_INPUT_INFO *piinfo = &m_piinfo;	m_nSelectPos = (m_nSelectPos == 0) ? 0 : m_nSelectPos - 1;	if (piinfo->outcode_cur == 0) 	{		if (m_bHZAssn)		{			if (m_nSelectPos < m_assn_Hz_Pos)				m_assn_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;			////	_put_assn_to_array();		}		else		{			if (m_nSelectPos < m_often_Hz_Pos)				m_often_Hz_Pos -= LINE_DISPLAY_MAXCOUNT;			_put_often_to_array();		}	}	else	{		if(piinfo->hz_found_begin == piinfo->hz_found_end)			return;		if(m_nSelectPos < (piinfo->hz_found_cur - piinfo->hz_found_begin) / 2)			piinfo->hz_found_cur -= LINE_DISPLAY_MAXCOUNT * 2;		if (piinfo->keymode & IME_MODE_T9PY)			_put_py_to_array();		else if (piinfo->keymode & IME_MODE_T9BH)			_put_bh_to_array();		////else if (piinfo->keymode & IME_MODE_HANDWRITE)		////	_put_bh_to_array();	}}static BOOL _proc_hz_keyright(){	ST_INPUT_INFO *piinfo = &m_piinfo;	m_nSelectPos++;	if (piinfo->outcode_cur == 0) 	{		if (m_bHZAssn)		{			if (m_nSelectPos > g_pstAssnArray[m_nAssnSelectIndex].nCounts - 1)				m_nSelectPos = g_pstAssnArray[m_nAssnSelectIndex].nCounts - 1;			if (m_nSelectPos >= m_assn_Hz_Pos + LINE_DISPLAY_MAXCOUNT)				m_assn_Hz_Pos += LINE_DISPLAY_MAXCOUNT;			//_put_assn_to_array();		}		else		{			if (m_nSelectPos > OFTEN_COUNT - 1)				m_nSelectPos = OFTEN_COUNT - 1;			if (m_nSelectPos >= m_often_Hz_Pos + LINE_DISPLAY_MAXCOUNT)				m_often_Hz_Pos += LINE_DISPLAY_MAXCOUNT;			_put_often_to_array();		}	}	else	{		if(piinfo->hz_found_begin == piinfo->hz_found_end)			return FALSE;		if (m_nSelectPos >=(piinfo->hz_found_end - piinfo->hz_found_begin) / 2)			m_nSelectPos = (piinfo->hz_found_end - piinfo->hz_found_begin) / 2 - 1;		if(m_nSelectPos >= ((piinfo->hz_found_cur - piinfo->hz_found_begin) / 2) + 10)			piinfo->hz_found_cur += LINE_DISPLAY_MAXCOUNT * 2;		if (piinfo->keymode & IME_MODE_T9PY)			_put_py_to_array();		else if (piinfo->keymode & IME_MODE_T9BH)			_put_bh_to_array();		////else if (piinfo->keymode & IME_MODE_HANDWRITE)		////	_put_bh_to_array();	}}static BOOL _proc_hz_key_press(unsigned short key){	ST_INPUT_INFO *piinfo = &m_piinfo;	if (piinfo->keymode & IME_MODE_T9PY)	{		if (_proc_py_key_press(key) == TRUE)			return 1;	}	else if (piinfo->keymode & IME_MODE_T9BH)	{		if (_proc_bh_key_press(key) == TRUE)			return 1;	}	else if (piinfo->keymode & IME_MODE_HANDWRITE)	{		if (_proc_hw_key_press(key) == TRUE)			return 1;	}	switch(key)	{	//case KEY_XING:	//	{	//		_Backspace();				//		return 1;	//	}	//	break;	case KEY_UP:		_proc_hz_keyup();		break;	case KEY_DOWN:		_proc_hz_keydown();		break;	case KEY_LEFT:		_proc_hz_keyleft();		break;	case KEY_RIGHT:		_proc_hz_keyright();		break;	case KEY_RFUNC:		if (piinfo->outcode_cur == 0)	// || piinfo->outcode_cur == 100 /* =100 为手写输入 */)			_Quit_JYInput_Wnd();		break;	default:		return FALSE;	}	return TRUE;}//////////////////////////////////////////////////////////////////////////static BOOL _proc_keydown(int nCharKey){	if ( m_piinfo.keymode & IME_MODE_T9PY		|| m_piinfo.keymode & IME_MODE_T9BH		|| m_piinfo.keymode & IME_MODE_HANDWRITE		) 	{		if (_proc_hz_key_press(nCharKey) == TRUE)		{			InvalidateRect (g_hImeWnd, NULL, TRUE);			return 1;		}		else		{			if (nCharKey == KEY_0)			{				nCharKey = ' ';				_PostChar2Edit((char*)&nCharKey, 1);				return 1;			}		}	}	else if ( (m_piinfo.keymode & IME_MODE_ALPHABET_LOW) || (m_piinfo.keymode & IME_MODE_ALPHABET_UP) )	{		unsigned char sChars = _proc_en_key_press(nCharKey);		if (sChars > 0)			_PostChar2Edit((char *)&sChars, 1);		else		{			if (nCharKey == KEY_0)			{				nCharKey = ' ';				_PostChar2Edit((char*)&nCharKey, 1);				return 1;			}			else if (nCharKey == KEY_RFUNC)			{				_Quit_JYInput_Wnd();				return 1;			}		}	}	else if (m_piinfo.keymode & IME_MODE_NUMBER)	{		if (nCharKey >= KEY_0 && nCharKey <= KEY_9)		{			_PostChar2Edit((char*)&nCharKey, 1);			return 1;		}		//else if (nCharKey == KEY_XING)		//{		//	_Backspace();					//	return 1;		//}		else if (nCharKey == KEY_RFUNC)		{			_Quit_JYInput_Wnd();			return 1;		}	}	else if (m_piinfo.keymode & IME_MODE_SYMBOL)	{		switch(nCharKey)		{		//case KEY_XING:		//	_Backspace();					//	return 1;		//	break;		case KEY_RFUNC:			_Quit_JYInput_Wnd();			return 1;			break;		case KEY_0:			nCharKey = ' ';			_PostChar2Edit((char*)&nCharKey, 1);			return 1;			break;/*
		case KEY_1:
		case KEY_2:
		case KEY_3:
		case KEY_4:
		case KEY_5:
		case KEY_6:
		case KEY_7:
		case KEY_8:
		case KEY_9:
			m_nSelectPos = (m_nSymbolPage * LINE_DISPLAY_MAXCOUNT) + nCharKey -  KEY_1;
			nCharKey = KEY_LFUNC;
			//_PostChar2Edit((char*)&nCharKey, 1);
			//return 1;
			break;
*/
		default:			break;		}	}	InvalidateRect (g_hImeWnd, NULL, TRUE);	switch(nCharKey)	{	case KEY_1:		if (!(m_piinfo.keymode & IME_MODE_NUMBER))		{			_SwitchVariable();			m_bHZAssn = FALSE;			m_piinfo.keymode = IME_MODE_SYMBOL;		}		break;	case KEY_LFUNC:		if (m_piinfo.keymode & IME_MODE_ALPHABET_UP || m_piinfo.keymode & IME_MODE_ALPHABET_LOW)		{			char cAlphabet = _proc_en_key_press(0);			_PostChar2Edit((char*)&(cAlphabet), 1);		}		else if (m_piinfo.keymode & IME_MODE_SYMBOL) 		{			_PostChar2Edit((char*)&(array_symbol [m_nSelectPos]), 1);			m_nSymbolPage = 0;			m_nSelectPos = 0;		}		else if ( (m_piinfo.keymode & IME_MODE_T9PY) || (m_piinfo.keymode & IME_MODE_T9BH) 			|| (m_piinfo.keymode & IME_MODE_HANDWRITE) )		{			_PostChar2Edit((char*)&(key_arrary_hz_select[m_nSelectPos % LINE_DISPLAY_MAXCOUNT]), 2);			_SwitchVariable();		}		break;	case KEY_UP:		if (m_piinfo.keymode & IME_MODE_SYMBOL) 		{			m_nSymbolPage--;			if (m_nSymbolPage < 0) 				m_nSymbolPage = 0;			else				m_nSelectPos -= LINE_DISPLAY_MAXCOUNT;		}		break;	case KEY_DOWN:		if (m_piinfo.keymode & IME_MODE_SYMBOL) 		{			int k = sizeof(array_symbol) / LINE_DISPLAY_MAXCOUNT;			m_nSymbolPage++;			if (m_nSymbolPage > k) 				m_nSymbolPage = k;			else				m_nSelectPos += LINE_DISPLAY_MAXCOUNT;		}		break;	case KEY_LEFT:		if (m_piinfo.keymode & IME_MODE_SYMBOL) {			m_nSelectPos = (m_nSelectPos == 0) ? 0 : m_nSelectPos - 1;			if (m_nSelectPos < m_nSymbolPage * LINE_DISPLAY_MAXCOUNT) {				m_nSymbolPage --;			}		}		break;	case KEY_RIGHT:		if (m_piinfo.keymode & IME_MODE_SYMBOL) 		{			m_nSelectPos ++;			if (m_nSelectPos > sizeof(array_symbol) - 1)			{				m_nSelectPos = sizeof(array_symbol) - 1;			}			if (m_nSelectPos > (m_nSymbolPage + 1) * LINE_DISPLAY_MAXCOUNT -1) {				m_nSymbolPage ++;			}		}		break;		////#ifdef IME_HANDWRITE_ENABLE		////		case XM_POINTERDOWN:		////			if (m_piinfo.keymode & IME_MODE_HANDWRITE)		////			{		////				m_bHWSelect = FALSE;		////				return 1;		////			}		////			break;		////		case KEY_XING:		////			if (m_piinfo.keymode & IME_MODE_HANDWRITE)		////			{		////				g_nHWHZCount = 0;		////			}		////			break;		////#endif

⌨️ 快捷键说明

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