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

📄 main.c

📁 实现2个ps/2接口转到1个USB接口功能
💻 C
📖 第 1 页 / 共 2 页
字号:
		report_packet_kb.kb2 = 0x00;
		report_packet_kb.kb3 = 0x00;
		report_packet_kb.kb4 = 0x00;
		report_packet_kb.kb5 = 0x00;
		report_packet_kb.kb6 = 0x00;
		report_packet_kb.kb7 = 0x00;

		//debug_turn_on_led();
		if(get_kb0==0xF0)//break CODE ,need do nothing
		{
			if(get_kb1==0xA5)
			{
				L_SHIFT = FALSE;				
			}
			else if(get_kb1==0xA6)
			{
				L_CTRL = FALSE;				
			}
			else if(get_kb1==0xA7)
			{
				L_ALT = FALSE;				
			}
			else if(get_kb1==0xA8)
			{
				R_SHIFT = FALSE;				
			}

			kb_report_valid = TRUE;
		}
		else if(get_kb0==0xA5)//L SHFT start
		{
			L_SHIFT = TRUE;
			kb_report_valid = TRUE;	
		}//L SHFT end
		else if(get_kb0==0xA6)//L CTRL start
		{
			L_CTRL = TRUE;
			kb_report_valid = TRUE;		
		}//L CTRL end		
		else if(get_kb0==0xA7)//L ALT start
		{
			L_ALT = TRUE;
			kb_report_valid = TRUE;	
		}//L ALT end
		else if(get_kb0==0xA8)//R SHIFT
		{
			R_SHIFT = TRUE;
			kb_report_valid = TRUE;		
		}//R SHIFT end		
		else if(get_kb0==0xE1)//PAUSE start
		{
			if(get_kb1==0xA6)
			{
				report_packet_kb.kb2 = 0x48;				
				kb_report_valid = TRUE;			
			}
			else
			{
				kb_report_valid = FALSE;
			}
		}//PAUSE end				
		else if(get_kb0==0xE0)//get_kb0=0xE0 start
		{
			if(get_kb1==0xF0)//This is a break CODE of multi-bytes code,need do nothing
			{
				if(get_kb2==0x1F)
				{
					L_GUI = FALSE;					
				}
				else if(get_kb2==0xA6)
				{
					R_CTRL = FALSE;			
				}
				else if(get_kb2==0x27)
				{
					R_GUI = FALSE;					
				}
				else if(get_kb2==0xA7)
				{
					R_ALT = FALSE;
				}
				else if(get_kb2==0xA8 && get_kb3==0xE0 && get_kb4==0x63)//numlock is off,press Rshift+delete
				{
					report_packet_kb.kb2 = 0x4c;	
				}
				else if(get_kb2==0xA5 && get_kb3==0xE0 && get_kb4==0x63)//numlock is off,press Lshift+delete
				{
					report_packet_kb.kb2 = 0x4c;	
				}
				kb_report_valid = TRUE;
			}
			else if(get_kb1==0x1F)//L GUI start
			{
				L_GUI = TRUE;				
				kb_report_valid = TRUE;			
			}//L GUI end
			else if(get_kb1==0xA6)//R CTRL start
			{
				R_CTRL = TRUE;				
				kb_report_valid = TRUE;			
			}//R CTRL end			
			else if(get_kb1==0x27)//R GUI start
			{
				R_GUI = TRUE;				
				kb_report_valid = TRUE;			
			}//R GUI end			
			else if(get_kb1==0xA7)//R ALT start
			{
				R_ALT = TRUE;				
				kb_report_valid = TRUE;			
			}//R ALT end
			//special key start
			else if(get_kb1==0x2F)//APPS start
			{
				report_packet_kb.kb2 = 0x65;
				kb_report_valid = TRUE;						
			}//APPS end
			else if(get_kb1==0x38)//KP / start
			{
				report_packet_kb.kb2 = 0x54;
				kb_report_valid = TRUE;			
			}//KP / end					
			else if(get_kb1==0x28)//KP ENTER start
			{
				report_packet_kb.kb2 = 0x58;
				kb_report_valid = TRUE;			
			}//KP / end	
			
//when numlock is off start
			else if(get_kb1==0x55)//PRINT SCREEN start
			{
				report_packet_kb.kb2 = 0x46;
				kb_report_valid = TRUE;								
			}//PRINT SCREEN end
			else if(get_kb1==0x62)//INSERT start
			{
				report_packet_kb.kb2 = 0x49;
				kb_report_valid = TRUE;							
			}//INSERT end
			else if(get_kb1==0x5F)//HOME start
			{
				report_packet_kb.kb2 = 0x4A;
				kb_report_valid = TRUE;							
			}//HOME end	
			else if(get_kb1==0x61)//PAGE UP start
			{
				report_packet_kb.kb2 = 0x4B;
				kb_report_valid = TRUE;							
			}//PAGE UP end					
			else if(get_kb1==0x63)//DEL start
			{
				report_packet_kb.kb2 = 0x4c;
				kb_report_valid = TRUE;	
			}//DEL end
			else if(get_kb1==0x59)//END start
			{
				report_packet_kb.kb2 = 0x4D;
				kb_report_valid = TRUE;	
			}//END end
			else if(get_kb1==0x5b)//PAGE DOWN start
			{
				report_packet_kb.kb2 = 0x4e;
				kb_report_valid = TRUE;			
			}//PAGE DOWN end
			else if(get_kb1==0x60)//U ARROW start
			{
				report_packet_kb.kb2 = 0x52;
				kb_report_valid = TRUE;			
			}//U ARROW end				
			else if(get_kb1==0x5C)//L ARROW start
			{
				report_packet_kb.kb2 = 0x50;
				kb_report_valid = TRUE;			
			}//L ARROW end				
			else if(get_kb1==0x5A)//D ARROW start
			{
				report_packet_kb.kb2 = 0x51;
				kb_report_valid = TRUE;			
			}//D ARROW end				
			else if(get_kb1==0x5E)//R ARROW start
			{
				report_packet_kb.kb2 = 0x4F;
				kb_report_valid = TRUE;			
			}//R ARROW end		
//when numlock is off end
			
//when numlock is on start			
			else if(get_kb1==0xA5 && get_kb2==0xE0)//get_kb1==0xA5 && get_kb2==0xE0 start
			{
				if(get_kb3==0x55)//PRINT SCREEN start
				{
					report_packet_kb.kb2 = 0x46;
					kb_report_valid = TRUE;								
				}//PRINT SCREEN end
				else if(get_kb3==0x62)//INSERT start
				{
					report_packet_kb.kb2 = 0x49;
					kb_report_valid = TRUE;							
				}//INSERT end
				else if(get_kb3==0x5F)//HOME start
				{
					report_packet_kb.kb2 = 0x4A;
					kb_report_valid = TRUE;							
				}//HOME end	
				else if(get_kb3==0x61)//PAGE UP start
				{
					report_packet_kb.kb2 = 0x4B;
					kb_report_valid = TRUE;							
				}//PAGE UP end					
				else if(get_kb3==0x63)//DEL start
				{
					report_packet_kb.kb2 = 0x4c;
					kb_report_valid = TRUE;	
				}//DEL end
				else if(get_kb3==0x59)//END start
				{
					report_packet_kb.kb2 = 0x4D;
					kb_report_valid = TRUE;	
				}//END end
				else if(get_kb3==0x5b)//PAGE DOWN start
				{
					report_packet_kb.kb2 = 0x4e;
					kb_report_valid = TRUE;			
				}//PAGE DOWN end
				else if(get_kb3==0x60)//U ARROW start
				{
					report_packet_kb.kb2 = 0x52;
					kb_report_valid = TRUE;			
				}//U ARROW end				
				else if(get_kb3==0x5C)//L ARROW start
				{
					report_packet_kb.kb2 = 0x50;
					kb_report_valid = TRUE;			
				}//L ARROW end				
				else if(get_kb3==0x5A)//D ARROW start
				{
					report_packet_kb.kb2 = 0x51;
					kb_report_valid = TRUE;			
				}//D ARROW end				
				else if(get_kb3==0x5E)//R ARROW start
				{
					report_packet_kb.kb2 = 0x4F;
					kb_report_valid = TRUE;			
				}//R ARROW end	
				else
				{
					kb_report_valid = FALSE;
				}								
			}//get_kb1==0xA5 && get_kb2==0xE0 end	
//when numlock is on end

			else
			{
				kb_report_valid = FALSE;				
			}
			//special key end
		}//get_kb0==0xE0 end
		else if(get_kb0==0x00)//get_kb0==0x00 start
		{
			kb_report_valid = FALSE; //in order to reduce CPLD's error 			
		}//get_kb0==0x00 end
		else//another case,just send the received data
		{
			report_packet_kb.kb1 = 0x00;
			report_packet_kb.kb2 = get_kb0;
			report_packet_kb.kb3 = get_kb1;
			report_packet_kb.kb4 = get_kb2;
			report_packet_kb.kb5 = get_kb3;
			report_packet_kb.kb6 = get_kb4;
			report_packet_kb.kb7 = get_kb5;
			kb_report_valid = TRUE;	
		}
		
		if(R_GUI==TRUE)
		{
			form_kb0=form_kb0|0x80;
		}
	
		if(R_ALT==TRUE)
		{
			form_kb0=form_kb0|0x40;			
		}
		
		if(R_SHIFT==TRUE)
		{
			form_kb0=form_kb0|0x20;			
		}		
	
		if(R_CTRL==TRUE)
		{
			form_kb0=form_kb0|0x10;			
		}
		
		if(L_GUI==TRUE)
		{
			form_kb0=form_kb0|0x08;
		}
	
		if(L_ALT==TRUE)
		{
			form_kb0=form_kb0|0x04;			
		}
	
		if(L_SHIFT==TRUE)
		{
			form_kb0=form_kb0|0x02;			
		}		
	
		if(L_CTRL==TRUE)
		{
			form_kb0=form_kb0|0x01;			
		}
	
		report_packet_kb.kb0 = form_kb0;		
		// decide which code should be send to pc end!	
		SET_INT0_NEW();			
	}
	else
	{
		report_packet_kb.kb0 = 0x00;
		report_packet_kb.kb1 = 0x00;
		report_packet_kb.kb2 = 0x00;
		report_packet_kb.kb3 = 0x00;
		report_packet_kb.kb4 = 0x00;
		report_packet_kb.kb5 = 0x00;
		report_packet_kb.kb6 = 0x00;
		report_packet_kb.kb7 = 0x00;
		kb_report_valid = FALSE;

		if(protect_counter>=0x02ff)
		{
//			//debug_glimpse();//just for debug!!!! 
			shouldprotect = FALSE;
			protect_counter=0x0000;
				R_GUI = FALSE;
				R_ALT = FALSE;
				R_SHIFT = FALSE;
				R_CTRL = FALSE;
				L_GUI = FALSE;
				L_ALT = FALSE;
				L_SHIFT = FALSE;
				L_CTRL = FALSE;
			kb_report_valid = TRUE;				
		}
	}
	
// KEYBOARD	

    return ( kb_report_valid );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -