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; } } }
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; } } }