⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jkdevice.c

📁 motorola jw32 usb 源码
💻 C
📖 第 1 页 / 共 2 页
字号:
    	}

    //-------------------------------
    	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 + -