Esempio n. 1
0
void kp_send_key(struct input_dev *dev, unsigned int scancode, unsigned int type)
{
	if(scancode == FN_KEY_SCANCODE && type == 1)
	{
		// switch from key to pointer
		if(key_pointer_switch)
		{
			mouse_map[fcode][0] = LEFT_KEY_SCANCODE;
			mouse_map[fcode][1] = RIGHT_KEY_SCANCODE;
			mouse_map[fcode][2] = UP_KEY_SCANCODE;
			mouse_map[fcode][3] = DOWN_KEY_SCANCODE;
			mouse_map[fcode][4] = PAGEUP_KEY_SCANCODE;
			mouse_map[fcode][5] = PAGEDOWN_KEY_SCANCODE;

			key_pointer_switch = false;
		}
		// switch from pointer to key
		else
		{
			mouse_map[fcode][0] = mouse_map[fcode][1] = 
			mouse_map[fcode][2] = mouse_map[fcode][3] = 
			mouse_map[fcode][4] = mouse_map[fcode][5] = 0xFFFF;

			key_pointer_switch = true;
		}

		input_event(dev, EV_KEY, key_map[fcode][scancode], type);
		input_sync(dev);

		return;
	}

	if(scancode == OK_KEY_SCANCODE && key_pointer_switch == false)
	{
		input_event(dev, EV_KEY, BTN_MOUSE, type);
		input_sync(dev);	
		mouse_lefft_flag = 0;
		return;
	}
	if(scancode == MOUSE_LEFT && mouse_lefft_flag == 0)
	{
		input_event(dev, EV_KEY, BTN_LEFT, 0);
		input_sync(dev);
		return;
	}
	if(scancode == MOUSE_LEFT && mouse_lefft_flag == 1)
	{
		input_event(dev, EV_KEY, BTN_LEFT, 1);
		input_sync(dev);
		return;
	}
	if(kp_mouse_event(dev, scancode, type)){
		if(scancode > ARRAY_SIZE(key_map[fcode])){
			input_dbg("scancode is 0x%04x, out of key mapping.\n", scancode);
			return;
		}
		if((key_map[fcode][scancode] >= KEY_MAX)||(key_map[fcode][scancode]==KEY_RESERVED)){
			input_dbg("scancode is 0x%04x, invalid key is 0x%04x.\n", scancode, key_map[fcode][scancode]);
			return;
		}
		input_event(dev, EV_KEY, key_map[fcode][scancode], type);
		input_sync(dev);
		switch(type){
			case 0 :
				input_dbg("fcode map = %d release ircode = 0x%02x, scancode = 0x%04x\n", fcode,scancode, key_map[fcode][scancode]);
				break;
			case 1 :
				input_dbg("fcode map = %d press ircode = 0x%02x, scancode = 0x%04x\n", fcode,scancode, key_map[fcode][scancode]);
				break;
			case 2 :
				input_dbg("fcode map = %d repeat ircode = 0x%02x, scancode = 0x%04x\n", fcode,scancode, key_map[fcode][scancode]);
				break;
		}
	}
}
Esempio n. 2
0
void kp_send_key(struct input_dev *dev, unsigned int scancode, unsigned int type)
{     
 #if 0
	if((scancode == FN_KEY_SCANCODE || scancode == 0x42) && type == 1)
	{
		// switch from key to pointer
		if(key_pointer_switch)
		{
			mouse_map[fcode][0] = LEFT_KEY_SCANCODE;
			mouse_map[fcode][1] = RIGHT_KEY_SCANCODE;
			mouse_map[fcode][2] = UP_KEY_SCANCODE;
			mouse_map[fcode][3] = DOWN_KEY_SCANCODE;
			mouse_map[fcode][4] = PAGEUP_KEY_SCANCODE;
			mouse_map[fcode][5] = PAGEDOWN_KEY_SCANCODE;

			key_pointer_switch = false;
		}
		// switch from pointer to key
		else
		{
			mouse_map[fcode][0] = mouse_map[fcode][1] = 
			mouse_map[fcode][2] = mouse_map[fcode][3] = 
			mouse_map[fcode][4] = mouse_map[fcode][5] = 0xFFFF;

			key_pointer_switch = true;
		}

		input_event(dev, EV_KEY, key_map[fcode][scancode], type);
		input_sync(dev);

		return;
	}
	
	if(scancode == OK_KEY_SCANCODE && key_pointer_switch == false)
	{
		input_event(dev, EV_KEY, BTN_MOUSE, type);
		input_sync(dev);

		return;
	}
   #endif
   
     	if(scancode == key_mouse_switch && type == 1)
	{
		// switch from key to pointer
		if(key_pointer_switch)
		{  
			mouse_map[fcode][0] = mouse_left;
			mouse_map[fcode][1] = mouse_right;
			mouse_map[fcode][2] = mouse_up;
			mouse_map[fcode][3] = mouse_down;
			mouse_map[fcode][4] = PAGEUP_KEY_SCANCODE;
			mouse_map[fcode][5] = PAGEDOWN_KEY_SCANCODE;

			key_pointer_switch = false;
			
			printk("remote mouse is on!\n");
		}
		// switch from pointer to key
		else
		{
			mouse_map[fcode][0] = mouse_map[fcode][1] = 
			mouse_map[fcode][2] = mouse_map[fcode][3] = 
			mouse_map[fcode][4] = mouse_map[fcode][5] = 0xFFFF;

			key_pointer_switch = true;
			printk("remote mouse is off!\n");
		}

		input_event(dev, EV_KEY, key_map[fcode][scancode], type);
		input_sync(dev);

		return;
	}
	#ifdef CONFIG_REMOTE_CTRL_YPBPR
	if(scancode == 0x14 && type == 1)
	{
		 if(get_ypbpr_flag())
		 	{
		 		   YPBPRCtrl(0);
		 		  set_ypbpr_flag(0);
		 		//  WRITE_CBUS_REG(0x1b7e,0);
		 //		printk("/    get_ypbpr_flag     1/\n");
		 		}	else{
		 			YPBPRCtrl(1);
		 		  set_ypbpr_flag(1);	
		 		//  WRITE_CBUS_REG(0x1b7e, 0x07);	
	  // 	printk("/    get_ypbpr_flag   0   /\n");		
		 		}
		 		
	}
	#endif
	if(scancode == mouse_ok && key_pointer_switch == false)
	{
		input_event(dev, EV_KEY, BTN_MOUSE, type);
		input_sync(dev);

		return;
	}

	if(kp_mouse_event(dev, scancode, type)){
		if(scancode > ARRAY_SIZE(key_map[fcode])){
			input_dbg("scancode is 0x%04x, out of key mapping.\n", scancode);
			return;
		}
		if((key_map[fcode][scancode] >= KEY_MAX)||(key_map[fcode][scancode]==KEY_RESERVED)){
			input_dbg("scancode is 0x%04x, invalid key is 0x%04x.\n", scancode, key_map[fcode][scancode]);
			return;
		}
		input_event(dev, EV_KEY, key_map[fcode][scancode], type);
		input_sync(dev);
		switch(type){
			case 0 :
				input_dbg("fcode map = %d release ircode = 0x%02x, scancode = 0x%04x\n", fcode,scancode, key_map[fcode][scancode]);
				break;
			case 1 :
				input_dbg("fcode map = %d press ircode = 0x%02x, scancode = 0x%04x\n", fcode,scancode, key_map[fcode][scancode]);
				break;
			case 2 :
				input_dbg("fcode map = %d repeat ircode = 0x%02x, scancode = 0x%04x\n", fcode,scancode, key_map[fcode][scancode]);
				break;
		}
	}
}