📄 asix_key.c
字号:
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 + -