一、準備
- 硬體,CH554 EVK
- 軟體,CH552\EVT\EXAM\USB\Device\CompositeKM.C
二、程式
-
主要的上報函數
關于HID鍵盤和滑鼠的定義
通訊格式
程式參考
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;
}
}
注意
右鍵點選了,發一下松手(模拟一下)