📄 host20_ap_hid.c
字号:
///////////////////////////////////////////////////////////////////////////////
//
// File name: OTGHost_AP_HID.C
// Version: 1.0
// Date: 2004/1/07
//
// Author: Bruce
// Email:
// Phone: (03) 578-7888
// Company: Faraday Tech. Corp.
//
// ** Support: <1>.Mouse
// <2>.Keyboard
//
// **Description:
// Group-1:Main Function
// <1>.OTGH_HID_Main
//
// Step1:HOST20_AP.C will enumerate the Device => if bInterfaceClass = HID class then call "OTGH_HID_Main"
// Step2:OTGH_HID_Main => HID_Enumerate <1>.Setup 0x21,0x0A,0x00,0x00, 0x00,0x00,0x00,0x00
// <2>.GetDescriptor HID Report 0x81,0x06,0x00,0x22,0x00,0x00,0x74,0x00
// <3>.Get String => Print string descriptor
// Step3:If bInterfaceProtocol = 1 =>Keyboard call OTGH_HID_Keyboard
// = 2 =>Mouse Call OTGH_HID_Mouse
//
// <2>.OTGH_HID_Keyboard
//
//
//
// <3>.OTGH_HID_Mouse
// Step1:Start to issue Interrupr-In 4 bytes
// Step2:Analysis the "Interrupr-In 4 bytes"
// Step3:Goto step1
//
//
//
///////////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include "chipset.h"
#include "flib.h"
#include "Lib_Host20.h"
#include "Host20_AP.H"
#include "Host20_AP_HID.H"
//====================================================================
// * Function Name: OTGH_HID_Main
// * Description:
// <1>.If bInterfaceProtocol = 1 =>Keyboard call OTGH_HID_Keyboard
// = 2 =>Mouse Call OTGH_HID_Mouse
// * Input: none
// * OutPut: none
//====================================================================
void OTGH_HID_Main(UINT8 bControlListNum)
{
// <1>.If bInterfaceProtocol = 1 =>Keyboard call OTGH_HID_Keyboard
// = 2 =>Mouse Call OTGH_HID_Mouse
if (psDevice_AP->saCD[0].sInterface[0].bInterfaceProtocol == 1)
OTGH_HID_Keyboard();
else if (psDevice_AP->saCD[0].sInterface[0].bInterfaceProtocol == 2)
OTGH_HID_Mouse(bControlListNum);
else {
printf(">>> Non Support HID Device...\n");
while(1);
}
}
//====================================================================
// * Function Name: OTGH_HID_Keyboard
// * Description:
// * Input: none
// * OutPut: none
//====================================================================
UINT8 OTGH_HID_Parsing_Mouse(UINT8 *pbBuffer4K_1)
{
//Byte-2=>Move Left-Right
//Byte-3=>Move Up-Down
//Byte-4=>Middle Key Up-Down
//Byte-1=>Left/Right key
UINT8 bData_1,bData_2,bData_3,bData_4,bFound;
char cOutput_1,cOutput_2,cOutput_3,cOutput_4;
bFound=0;
bData_1=*(pbBuffer4K_1);
bData_2=*(pbBuffer4K_1+1);
bData_3=*(pbBuffer4K_1+2);
bData_4=*(pbBuffer4K_1+3);
if ((bData_1|bData_2|bData_3|bData_4)>0)
{
//Byte-1
if (bData_1==0x01) //Key Left-Right
cOutput_1='L';
else if (bData_1==0x02)
cOutput_1='R';
else cOutput_1='N';
//Byte-2
if (bData_2==0x00)
cOutput_2='N';
else if (bData_2>0x80) //Move Left-Right
cOutput_2='L';
else cOutput_2='R';
//Byte-3
if (bData_3==0x00)
cOutput_3='N';
else if (bData_3>0x80) //Move Up-Down
cOutput_3='U';
else cOutput_3='D';
//Byte-4
if (bData_4==0x00)
cOutput_4='N';
else if (bData_4>0x80) //Middle-Wheel Left-Right
cOutput_4='B';
else cOutput_4='F';
printf("==>(Key=%c)(Move-LR=%c Value=0x%2x)(Move-UpDown=%c Value=0x%x)(Middle-Wheel-FrontBack=%c Value=0x%2x)\n"
,cOutput_1,cOutput_2,bData_2,cOutput_3,bData_3,cOutput_4,bData_4);
}
bFound=0;
return 0;
}
//====================================================================
// * Function Name: OTGH_HID_Keyboard
// * Description:
// * Input: none
// * OutPut: none
//====================================================================
UINT8 OTGH_HID_Parsing_Keyboard(UINT8 *pbBuffer4K_1)
{
UINT8 bData,bFound;
bFound=0;
//For Byte-1
//Shift + Ctrl + Alt
bData=*(pbBuffer4K_1+0);
switch(bData)
{
case 0x02:
printf("===> 'Shift-L'\n");
bFound=1;
break;
case 0x01:
printf("===> 'Ctrl-L'\n");
bFound=1;
break;
case 0x04:
printf("===> 'Alt-L'\n");
bFound=1;
break;
case 0x20:
printf("===> 'Shift-R'\n");
bFound=1;
break;
case 0x10:
printf("===> 'Ctrl-R'\n");
bFound=1;
break;
case 0x40:
printf("===> 'Alt-R'\n");
bFound=1;
break;
}
//For byte-3
bData=*(pbBuffer4K_1+2);
if (bData>=0x04) //Parsing for a,b~z
if (bData<=0x1D)
{ printf("===> Input '%c'\n",(bData+0x5D));
bFound=1;
}
if (bData>=0x1E) //Parsing for 1~6
if (bData<=0x26)
{ printf("===> Input '%c'\n",(bData+0x13));
bFound=1;
}
switch(bData)
{
case 0x27:
printf("===> Input '0'\n");
bFound=1;
break;
case 0x3A:
printf("===> Input 'F1'\n");
bFound=1;
break;
case 0x3B:
printf("===> Input 'F2'\n");
bFound=1;
break;
case 0x3C:
printf("===> Input 'F3'\n");
bFound=1;
break;
case 0x3D:
printf("===> Input 'F4'\n");
bFound=1;
break;
case 0x3E:
printf("===> Input 'F5'\n");
bFound=1;
break;
case 0x3F:
printf("===> Input 'F6'\n");
bFound=1;
break;
case 0x40:
printf("===> Input 'F7'\n");
bFound=1;
break;
case 0x41:
printf("===> Input 'F8'\n");
bFound=1;
break;
case 0x42:
printf("===> Input 'F9'\n");
bFound=1;
break;
case 0x43:
printf("===> Input 'F10'\n");
bFound=1;
break;
case 0x4A:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -