一、准备
- 硬件,CH554 EVK
- 软件,CH552\EVT\EXAM\USB\Device\CompositeKM.C
二、程序
void HIDValueHandle()
{
UINT8 i;
i = getkey( );
printf( "%c", (UINT8)i );
switch(i)
{
//鼠标数据上传示例
case 'L': //左键
HIDMouse[0] = 0x01;
Enp2IntIn();
HIDMouse[0] = 0;
break;
case 'R': //右键
HIDMouse[0] = 0x02;
Enp2IntIn();
mDelaymS( 10 );
HIDMouse[0] = 0; //这里模拟松手
Enp2IntIn(); //发数据
break;
//键盘数据上传示例
case 'A': //A键
FLAG = 0;
HIDKey[2] = 0x1d; //按键开始
Enp1IntIn();
HIDKey[2] = 0; //按键结束
while(FLAG == 0)
{
; /*等待上一包传输完成*/
}
Enp1IntIn();
break;
case 'P': //P键
FLAG = 0;
HIDKey[2] = 0x38;
Enp1IntIn();
HIDKey[2] = 0; //按键结束
while(FLAG == 0)
{
; /*等待上一包传输完成*/
}
Enp1IntIn();
break;
case 'Q': //Num Lock键
FLAG = 0;
HIDKey[2] = 0x39;
Enp1IntIn();
HIDKey[2] = 0; //按键结束
while(FLAG == 0)
{
; /*等待上一包传输完成*/
}
Enp1IntIn();
break;
case 'l': //>右下移动
HIDMouse[0] = 0x00;//向右,向下都是正方向了
HIDMouse[1] = 0x01;//向右移动
HIDMouse[2] = 0x01;//向下移动
Enp2IntIn();
break;
default: //其他
UEP1_CTRL = UEP1_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK; //默认应答NAK
UEP2_CTRL = UEP2_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK; //默认应答NAK
break;
}
}
注意
右键点击了,发一下松手(模拟一下)