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

📄 asix_key.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
		
		case WM_PENDRAG:
			break;
		case WM_PENDRAGUP:
			break;
			
		case WM_KEYUP:
			asixprintf("WM_KEYUP\n");
			if( kbctrl->funckey != 0 )
			{
				asixprintf("function key was pressed!\n");
				if(  kbctrl->keycount != 0 )
				{
					if( kbctrl->pretabflag%4 == 1 )
					{
						kb_msg.wparam=ProcessBig( kbctrl );
						Suspend( kbctrl );
						if( kbctrl->prekey != 0xffff )
						{
							//kb_msg.lparam=kbctrl->windowid;
							//kb_msg.lparam=FocusWindow->wnd_id;
							kb_msg.lparam=((ASIX_WINDOW *)GetFocus( ))->wnd_id;
							kb_msg.message=WM_CHAR;
							kbctrl->keycount=0;
							kbctrl->prekey=0xffff;
							kbctrl->curkey=0xffff;
							kbctrl->pretabflag=kbctrl->tabflag;
							AdvSendMessage(GetCurTask()->id,(P_MESSAGE)(&kb_msg),NO_SWAP_TASK);
							ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
						}
					}else
					if( kbctrl->pretabflag%4 == 2 )
					{
						kb_msg.wparam=ProcessSmall( kbctrl );
						Suspend( kbctrl );
						if( kbctrl->prekey !=0xffff )
						{
							//kb_msg.lparam=kbctrl->windowid;
							//kb_msg.lparam=FocusWindow->wnd_id;
							kb_msg.lparam=((ASIX_WINDOW *)GetFocus( ))->wnd_id;
							kb_msg.message=WM_CHAR;
							kbctrl->keycount=0;
							kbctrl->prekey=0xffff;
							kbctrl->curkey=0xffff;
							kbctrl->pretabflag=kbctrl->tabflag;
							AdvSendMessage(GetCurTask()->id,(P_MESSAGE)(&kb_msg),NO_SWAP_TASK);
							ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
						}
					}
				}//end if kbctrl->keycount != 0
					kb_msg.wparam=kbctrl->funckey+0x80;
					kb_msg.lparam=GetFocus( );
					kb_msg.message=WM_CHAR;
					kbctrl->funckey=0;
					AdvSendMessage(GetCurTask()->id,(P_MESSAGE)(&kb_msg),NO_SWAP_TASK);
					return ASIX_OK;
			}//end if kbctrl->funckey != 0
			if( kbctrl->pretabflag == kbctrl->tabflag )
			{
				asixprintf("( kbctrl->pretabflag == kbctrl->tabflag )\n");
				if( kbctrl->tabflag%4 == 0 )//number status
				{
					//kb_msg.lparam=kbctrl->windowid;
					//kb_msg.lparam=FocusWindow->wnd_id;
					kb_msg.lparam=((ASIX_WINDOW *)GetFocus( ))->wnd_id;
					kb_msg.message=WM_CHAR;
					if (kbctrl->curkey <= KEY_9)
						kb_msg.wparam=kbctrl->curkey + 0x30;
					else if (kbctrl->curkey == KEY_Asterisk )
						kb_msg.wparam=kbctrl->curkey + 0x20;
					else if (kbctrl->curkey == KEY_NO )
						kb_msg.wparam=kbctrl->curkey + 0x18;
					AdvSendMessage(GetCurTask()->id,(P_MESSAGE)(&kb_msg),NO_SWAP_TASK);
				}else
				if( kbctrl->tabflag%4 == 1 )//Capital status
				{
					if( kbctrl->keycount == 0 )
						kbctrl->prekey=kbctrl->curkey;
					if( kbctrl->prekey != kbctrl->curkey )
					{
						kb_msg.wparam=ProcessBig( kbctrl );
						Suspend( kbctrl );
						kbctrl->keycount=0;
						kbctrl->prekey=kbctrl->curkey;
						//kb_msg.lparam=kbctrl->windowid;
						//kb_msg.lparam=FocusWindow->wnd_id;
						kb_msg.lparam=((ASIX_WINDOW *)GetFocus( ))->wnd_id;
						kb_msg.message=WM_CHAR;
						AdvSendMessage(GetCurTask()->id,(P_MESSAGE)(&kb_msg),NO_SWAP_TASK);
						ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
						goto SHOW_NEW_CHAR_capital;/* show the new char */
					}
					else //else if( kbctrl->prekey == kbctrl->curkey )
					{
					SHOW_NEW_CHAR_capital:
						kbctrl->keycount++;
						switch( kbctrl->prekey )
						{
							case KEY_0:
							Enable( kbctrl,KEY_0 );
							if( kbctrl->keycount <= 5 )
							{
								SHOW_FIRST_5_CHAR_0_CAPITAL:
								if ( kbctrl->keycount == 1 )
								{
									ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
									TextOut(pGC," ",kbctrl->x+18+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,".",kbctrl->x+18+kbctrl->boxw+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"!",kbctrl->x+18+kbctrl->boxw*2+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"\"",kbctrl->x+18+kbctrl->boxw*3+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,",",kbctrl->x+18+kbctrl->boxw*4+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 2 )
								{
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 3 )
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 4)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 5)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*4+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
							}
							else //if( kbctrl->keycount > 5 )
							{
								if ( kbctrl->keycount == 7 )
								{
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 8 )
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 9)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 10)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*4+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 6 )
								{
									ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
									TextOut(pGC,"?",kbctrl->x+18+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,":",kbctrl->x+18+kbctrl->boxw+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,";",kbctrl->x+18+kbctrl->boxw*2+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"<",kbctrl->x+18+kbctrl->boxw*3+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,">",kbctrl->x+18+kbctrl->boxw*4+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}else if( kbctrl->keycount == 11 )
								{
									kbctrl->keycount=1 ;	
									goto SHOW_FIRST_5_CHAR_0_CAPITAL;
								}
							}
							break;
							case KEY_1:
							Enable( kbctrl,KEY_1 );
							if( kbctrl->keycount <= 5 )
							{
								SHOW_FIRST_5_CHAR_1_CAPITAL:
								
								if ( kbctrl->keycount == 1 )
								{
									ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
									TextOut(pGC,"@",kbctrl->x+18+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"&",kbctrl->x+18+kbctrl->boxw+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"$",kbctrl->x+18+kbctrl->boxw*2+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"%",kbctrl->x+18+kbctrl->boxw*3+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"(",kbctrl->x+18+kbctrl->boxw*4+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);				
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 2 )
								{
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 3 )
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 4)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 5)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*4+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
							}
							else
							{
								if ( kbctrl->keycount == 7 )
								{
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 8 )
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 9)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 10)
								{
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*3+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
									InvRec( pGC,kbctrl->x+18+kbctrl->boxw*4+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}
								else if ( kbctrl->keycount == 6 )
								{
									ClearRec( pGC,GPC_WHITE,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw*5,kbctrl->boxw,GPC_REPLACE_STYLE );
									TextOut(pGC,")",kbctrl->x+18+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"[",kbctrl->x+18+kbctrl->boxw+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"]",kbctrl->x+18+kbctrl->boxw*2+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"{",kbctrl->x+18+kbctrl->boxw*3+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									TextOut(pGC,"}",kbctrl->x+18+kbctrl->boxw*4+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
									InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								}else if( kbctrl->keycount == 11 )
								{
									kbctrl->keycount=1 ;	
									goto SHOW_FIRST_5_CHAR_1_CAPITAL;
								}
							}
							break;
							case KEY_2:
							Enable( kbctrl,KEY_2 );
							if ( kbctrl->keycount == 1 )
							{
								TextOut(pGC,"A",kbctrl->x+18+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
								TextOut(pGC,"B",kbctrl->x+18+kbctrl->boxw+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
								TextOut(pGC,"C",kbctrl->x+18+kbctrl->boxw*2+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
								InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
							}
							else if ( kbctrl->keycount%3 == 2 )
							{
								InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
							}
							else if ( kbctrl->keycount%3 == 0 )
							{
								InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
							}
							else if ( ( kbctrl->keycount%3 == 1 )&&( kbctrl->keycount != 1 ) )
							{
								InvRec( pGC,kbctrl->x+18+kbctrl->boxw*2+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
							}
							break;
							case KEY_3:
							Enable( kbctrl,KEY_3 );
							if ( kbctrl->keycount == 1 )
							{
								TextOut(pGC,"D",kbctrl->x+18+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
								TextOut(pGC,"E",kbctrl->x+18+kbctrl->boxw+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
								TextOut(pGC,"F",kbctrl->x+18+kbctrl->boxw*2+5,kbctrl->y+2,0,GPC_BLACK,GPC_REPLACE_STYLE);
								InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
							}
							else if ( kbctrl->keycount%3 == 2 )
							{
								InvRec( pGC,kbctrl->x+18+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
								InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);
							}
							else if ( kbctrl->keycount%3 == 0 )
							{
								InvRec( pGC,kbctrl->x+18+kbctrl->boxw+1,kbctrl->y+1,kbctrl->boxw,kbctrl->boxw);

⌨️ 快捷键说明

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