?? jkdevice.c
字號:
}
//-------------------------------
smouse =y-0x7f;
if(smouse<0)
{
mose_buffer[4]=0xff;
}
else
{
mose_buffer[4]=0x00;
}
if(smouse>JKDVS||smouse<-JKDVS)
{
smouse >>=(JKGRADE+1);
}
else
{
smouse >>=(JKGRADE+2);
}
// smouse >>=JKGRADE;
mose_buffer[3] =smouse;
//-------------------------------
smouse =x-0x7f;
if(smouse<0)
{
mose_buffer[2]=0xff;
}
else
{
mose_buffer[2]=0x00;
}
if(smouse>JKDVS||smouse<-JKDVS)
{
smouse >>=(JKGRADE+1);
}
else
{
smouse >>=(JKGRADE+2);
}
// smouse >>=JKGRADE;
mose_buffer[1] =smouse;
}
/*********************************************************************
********************************************************************/
void Joystick_hat(unsigned char hat_dir,unsigned char *inBuffer1)
{
unsigned char hat_data,a,b;
hat_data = inBuffer1[4]&0x0f;
if(hat_data==0){
a =0x7f; //0x7f;
b = 0x00;//0xff;}
}
if(hat_data==1){
if(hat_dir==8)
{a = 0xff;
b = 0x00;}//
if(hat_dir==4) {
a =0x7f; //0x7f;
b = 0x00;//0xff;} ///0
}
}
if(hat_data==2){
a = 0xff;
b = 0x7f;}
if(hat_data==3){
if(hat_dir==8)
{a = 0xff;
b = 0xff;}//
if(hat_dir==4) {
a = 0xff;
b = 0x7f; ///2
}
}
if(hat_data==4){
a = 0x7f;
b = 0xff;//0x00;}
}
if(hat_data==5){
if(hat_dir==8)
{a = 0x00;
b = 0xff;}
if(hat_dir==4) {
a = 0x7f;
b = 0xff; ///4
}
}
if(hat_data==6){
a = 0x00;
b = 0x7f;}
if(hat_data==7){
if(hat_dir==8)
{a = 0x00;
b = 0x00;
}///6
if(hat_dir==4) {
a = 0x00;
b = 0x7f;}
}
if(hat_data==0x0f) {
a = 0x7f;
b = 0x7f;
}
if(Joystick==1){
joystick_buffer1[2]=a;
joystick_buffer1[3]=b;}
if(Joystick==2){
joystick_buffer2[2]=a;
joystick_buffer2[3]=b;}
}
void Clear_MsBuffer()
{
byte i;
for(i=0;i<KbLength;i++)
{
mose_buffer[i]=0x00;
}
}
/*********************************************************************
* Function: void DeviceData_output(unsigned char mode,unsigned char key,bit keyflag,unsigned char *outbuffer,unsigned char *length)
*
* Input: mode:joystick key map mode.0:搖桿,1:鍵帽2:mouse,3,keyboard,4:4方向,5:8方向
key :joystick key.如果是鍵盤模式,key為鍵盤數據掃描碼.其它為搖桿鍵號.if mouse:key:left or right key
keyflag:bounce or press flag
inBuffer: joystick data buffer.inlength:joystick data buffer length
* Output: if have data output,1:有搖桿數據,2:鼠標數據3:鍵盤數據.
0:沒有數據.
* Note: joystick analog data should be indepensive
********************************************************************/
byte DeviceData_output(unsigned char mode,unsigned char key,unsigned char keyflag,unsigned char *inBuffer,unsigned char inlength)
{
if(inlength!=JK_LENGTH)
return 0;
switch(mode)
{
case Joystick_mode :
if(key==LJK)
{ if(Joystick==1){
joystick_buffer1[0]=inBuffer[2];
joystick_buffer1[1]=inBuffer[3];}
if(Joystick==2){
joystick_buffer2[0]=inBuffer[2];
joystick_buffer2[1]=inBuffer[3];}
}
else if(key==RJK)
{ if(Joystick==1){
//if(inBuffer[0]!=0&&inBuffer[1]!=0x7f){
joystick_buffer1[2]=inBuffer[0];
joystick_buffer1[3]=inBuffer[1];//}
}
if(Joystick==2){
// if(inBuffer[0]!=0&&inBuffer[1]!=0x7f){
joystick_buffer2[2]=inBuffer[0];
joystick_buffer2[3]=inBuffer[1];//}
}
}
//joystick_buffer[4]=inBuffer[4];
else if(key<13) //才是游戲手柄有用的鍵
{
key--;
if(key<4)
{
if(keyflag){
if(Joystick==1)
joystick_buffer1[4]|=Groupbit[(key%8)+4];
if(Joystick==2)
joystick_buffer2[4]|=Groupbit[(key%8)+4];
}
else {
if(Joystick==1)
joystick_buffer1[4]&=~Groupbit[(key%8)+4];
if(Joystick==2)
joystick_buffer2[4]&=~Groupbit[(key%8)+4];
}
}
else
{
if(keyflag){
if(Joystick==1)
joystick_buffer1[5]|=Groupbit[(key-4)%8];
if(Joystick==2)
joystick_buffer2[5]|=Groupbit[(key-4)%8];
}
else {
if(Joystick==1)
joystick_buffer1[5]&=~Groupbit[(key-4)%8];
if(Joystick==2)
joystick_buffer2[5]&=~Groupbit[(key-4)%8];
}
}
}
return(JOYSTICK_MAP);
break;
case Key_mode :
if(key==0)
return 0;
FoundKey(key,keyflag); //鍵盤模式,適合所有的數字鍵(包括)。//結果放在EP1_FIFO[6]中
return(KEYBOARD_MAP);break;
case Mouse_mode : if(key==mouse_right_key)
{
if(keyflag)
mose_buffer[0] |= 0x02;
else mose_buffer[0]&=0xFD;
}
else if(key==mouse_left_key)
{
if(keyflag)
mose_buffer[0] |= 0x01;
else mose_buffer[0]&=0xFE;
}
else
mouse_tr(key,inBuffer); //鼠標模式,仍然有左鍵等 //結果放在mose_buffer[4]中
return(MOUSE_MAP); break;
case Dir4_mode :diect(key,inBuffer); //四方向模式(分左右遙感) //結果放在output_x,output_y中
return(JOYSTICK_MAP); break;
case Dir8_mode :diect(key,inBuffer); //八方向模式(分左右遙感) //結果放在output_x,output_y中
return(JOYSTICK_MAP); break;
case Hat4_mode :Joystick_hat(4,inBuffer); //鍵帽 四方向模式 //結果放在output_x,output_y中
return(JOYSTICK_MAP); break;
case Hat8_mode :Joystick_hat(8,inBuffer); //鍵帽 八方向模式 //結果放在output_x,output_y中
return(JOYSTICK_MAP); break;
case Hat_mode : if(Joystick==1){
joystick_buffer1[4]&=0xf0;
joystick_buffer1[4]|=inBuffer[4]&0x0f;}
if(Joystick==2){
joystick_buffer2[4]&=0xf0;
joystick_buffer2[4]|=inBuffer[4]&0x0f;}
return(JOYSTICK_MAP);break;
default : return(0);break;
}
} //Joystick_buffer就是指遙感的原始數據buffer
/*
(7f,ff);(0)AU
|
|
(0,ff);(7) | (ff,ff);(1)
|
|
AL |(7f,7f);(f)
(0,7f);(6)------------.-------------(ff,7f);(2)AR
|
|
(0,0);(5) | (ff,0);(3)
|
|
(7f,0);(4) AD
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -