Index: format/app_mouse.format
===================================================================
--- /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/format/app_mouse.format	(revision 2325)
+++ /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/format/app_mouse.format	(working copy)
@@ -478,6 +478,8 @@
 0X06 MOUSE_RM_BUTTON
 0X07 MOUSE_LMR_BUTTON
 0x09 MOUSE_L_BK_BUTTON
+0x0a MOUSE_R_BK_BUTTON
+0x11 MOUSE_L_FW_BUTTON
 0x14 MOUSE_M_FW_BUTTON
 0X18 MOUSE_BK_FW_BUTTON
 //mouse default gpio
Index: output/eeprom.dat
===================================================================
--- /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/output/eeprom.dat	(revision 2346)
+++ /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/output/eeprom.dat	(working copy)
@@ -2,7 +2,7 @@
 02
 aa
 55
-be
+f6
 19
 c2
 84
@@ -71,7 +71,7 @@
 c0
 68
 06
-39
+3a
 c0
 69
 03
@@ -583,7 +583,7 @@
 70
 8a
 39
-04
+0a
 70
 8a
 3a
@@ -3859,7 +3859,7 @@
 20
 40
 06
-69
+6a
 d8
 40
 00
@@ -4171,7 +4171,7 @@
 20
 40
 06
-6c
+6d
 68
 48
 c9
@@ -6371,11 +6371,15 @@
 20
 40
 06
-39
+3a
+20
+40
+06
+70
 20
 20
 41
-1d
+1e
 6f
 e0
 cb
@@ -6391,15 +6395,15 @@
 20
 40
 06
-40
+41
 20
 40
 06
-4f
+50
 20
 40
 06
-5c
+5d
 20
 20
 41
@@ -6411,7 +6415,7 @@
 20
 40
 06
-69
+6a
 20
 40
 41
@@ -6431,7 +6435,7 @@
 20
 40
 06
-69
+6a
 20
 40
 41
@@ -6451,7 +6455,7 @@
 20
 40
 06
-69
+6a
 20
 40
 41
@@ -6495,7 +6499,7 @@
 c0
 7f
 86
-58
+59
 20
 20
 41
@@ -6507,7 +6511,7 @@
 20
 40
 06
-6c
+6d
 68
 48
 c9
@@ -6547,7 +6551,7 @@
 c0
 7f
 86
-65
+66
 20
 20
 41
@@ -6559,7 +6563,7 @@
 20
 40
 06
-6c
+6d
 68
 48
 c9
@@ -6592,8 +6596,60 @@
 20
 61
 2c
-fd
-f7
+70
+4b
+a9
+00
+70
+4b
+aa
+00
+70
+4b
+ab
+00
+1f
+e2
+04
+00
+20
+40
+06
+77
+20
+40
+06
+7a
+20
+20
+41
+33
+18
+41
+7e
+11
+c0
+08
+c1
+4e
+20
+60
+00
+00
+18
+41
+7e
+0a
+c0
+05
+41
+4e
+20
+60
+00
+00
+99
+e2
 aa
 55
 40
@@ -7974,64 +8030,8 @@
 55
 92
 96
-9e
-20
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+e3
+76
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-09
-b1
+e3
+38
Index: output/program.lis
===================================================================
--- /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/output/program.lis	(revision 2346)
+++ /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/output/program.lis	(working copy)
@@ -16,7 +16,7 @@
 000d c066860c beq patch19_5 ,p_mouse_motion 
 000e c0670420 beq patch19_6 ,p_mouse_dpi_process 
 000f c0678441 beq patch19_7 ,p_mouse_seting_dpi 
-0010 c0680639 beq patch1a_0 ,p_mouse_check_key_gpio 
+0010 c068063a beq patch1a_0 ,p_mouse_check_key_gpio 
 0011 c0690387 beq patch1a_2 ,p_mouse_init_sunt 
 0012 c069839f beq patch1a_3 ,p_mouse_sensor_poweron 
 0013 c06a84c0 beq patch1a_5 ,p_mouse_priority_bb_event 
@@ -182,7 +182,7 @@
 008f 20201226 branch set_rf_ldo_cfg89 
 
 p_set_tx_power_pair:
-0090 708a3904 jam 0x04 ,core_tx_pwr_ctrl0 
+0090 708a390a jam 0x0a ,core_tx_pwr_ctrl0 
 0091 708a3a00 jam 0x00 ,core_tx_pwr_ctrl1 
 0092 20201226 branch set_rf_ldo_cfg89 
 
@@ -1299,7 +1299,7 @@
 03c0 6848c914 fetcht 1 ,mem_matrix_public_gpio 
 03c1 204060e6 call gpio_clr_wake 
 03c2 6fe0c924 fetch 1 ,mem_mouse_sensor_sdio_gpio 
-03c3 20400669 call p_mouse_gpio_config_output_high 
+03c3 2040066a call p_mouse_gpio_config_output_high 
 03c4 d8400003 arg 3 ,temp 
 03c5 20403f96 call mouse_gpio_config_input_pu 
 03c6 20403e80 call mouse_lpm_before_common 
@@ -1403,7 +1403,7 @@
 
 p_mouse_3io6key_dpi_check:
 0410 6fe0c913 fetch 1 ,mem_dpi_button_gpio 
-0411 2040066c call p_mouse_gpio_config_output_low 
+0411 2040066d call p_mouse_gpio_config_output_low 
 0412 6848c913 fetcht 1 ,mem_dpi_button_gpio 
 0413 202041d5 branch mouse_3io6key_check 
 
@@ -2151,82 +2151,102 @@
 0636 20204758 branch mouse_drawing_optima 
 
 p_mouse_key:
-0637 20400639 call p_mouse_check_key_gpio 
-0638 2020411d branch mouse_key + 1 
+0637 2040063a call p_mouse_check_key_gpio 
+0638 20400670 call p_mouse_ghost_key_check 
+0639 2020411e branch mouse_key + 2 
 
 p_mouse_check_key_gpio:
-0639 6fe0cbf2 fetch 1 ,mem_sensor_shutdown_flag 
-063a 245a4161 ncall mouse_check_key_gpio_once ,blank 
-063b da200000 arg 0 ,rega 
-063c 20400640 call p_mouse_check_lkey_gpio 
-063d 2040064f call p_mouse_check_bkkey_gpio 
-063e 2040065c call p_mouse_check_fwkey_gpio 
-063f 2020415e branch mouse_check_key_gpio_next 
+063a 6fe0cbf2 fetch 1 ,mem_sensor_shutdown_flag 
+063b 245a4161 ncall mouse_check_key_gpio_once ,blank 
+063c da200000 arg 0 ,rega 
+063d 20400641 call p_mouse_check_lkey_gpio 
+063e 20400650 call p_mouse_check_bkkey_gpio 
+063f 2040065d call p_mouse_check_fwkey_gpio 
+0640 2020415e branch mouse_check_key_gpio_next 
 
 p_mouse_check_lkey_gpio:
-0640 6fe0c91c fetch 1 ,mem_lbutton_gpio 
-0641 20400669 call p_mouse_gpio_config_output_high 
-0642 20404164 call mouse_check_lkey_gpio 
-0643 6848c91c fetcht 1 ,mem_lbutton_gpio 
-0644 20403f96 call mouse_gpio_config_input_pu 
+0641 6fe0c91c fetch 1 ,mem_lbutton_gpio 
+0642 2040066a call p_mouse_gpio_config_output_high 
+0643 20404164 call mouse_check_lkey_gpio 
+0644 6848c91c fetcht 1 ,mem_lbutton_gpio 
+0645 20403f96 call mouse_gpio_config_input_pu 
 
 p_mouse_check_rkey_gpio:
-0645 6fe0c91d fetch 1 ,mem_rbutton_gpio 
-0646 20400669 call p_mouse_gpio_config_output_high 
-0647 2040416a call mouse_check_rkey_gpio 
-0648 6848c91d fetcht 1 ,mem_rbutton_gpio 
-0649 20403f96 call mouse_gpio_config_input_pu 
+0646 6fe0c91d fetch 1 ,mem_rbutton_gpio 
+0647 2040066a call p_mouse_gpio_config_output_high 
+0648 2040416a call mouse_check_rkey_gpio 
+0649 6848c91d fetcht 1 ,mem_rbutton_gpio 
+064a 20403f96 call mouse_gpio_config_input_pu 
 
 p_mouse_check_mkey_gpio:
-064a 6fe0c91e fetch 1 ,mem_mbutton_gpio 
-064b 20400669 call p_mouse_gpio_config_output_high 
-064c 20404170 call mouse_check_mkey_gpio 
-064d 6848c91e fetcht 1 ,mem_mbutton_gpio 
-064e 20203f96 branch mouse_gpio_config_input_pu 
+064b 6fe0c91e fetch 1 ,mem_mbutton_gpio 
+064c 2040066a call p_mouse_gpio_config_output_high 
+064d 20404170 call mouse_check_mkey_gpio 
+064e 6848c91e fetcht 1 ,mem_mbutton_gpio 
+064f 20203f96 branch mouse_gpio_config_input_pu 
 
 p_mouse_check_bkkey_gpio:
-064f 6fe0c911 fetch 1 ,mem_bk_button_gpio 
-0650 c17f8000 rtneq gpio_disable 
-0651 704ba703 jam mouse_bk_key ,mem_mouse_key_temp 
-0652 6fe0cba2 fetch 1 ,mem_mouse_bkkey_press_status 
-0653 1fe22600 copy pdata ,regc 
-0654 6848c911 fetcht 1 ,mem_bk_button_gpio 
-0655 6fe0c914 fetch 1 ,mem_matrix_public_gpio 
-0656 c07f8658 beq gpio_disable ,p_mouse_3io6key_bk_check 
-0657 2020417e branch mouse_check_bkkey_gpio_next 
+0650 6fe0c911 fetch 1 ,mem_bk_button_gpio 
+0651 c17f8000 rtneq gpio_disable 
+0652 704ba703 jam mouse_bk_key ,mem_mouse_key_temp 
+0653 6fe0cba2 fetch 1 ,mem_mouse_bkkey_press_status 
+0654 1fe22600 copy pdata ,regc 
+0655 6848c911 fetcht 1 ,mem_bk_button_gpio 
+0656 6fe0c914 fetch 1 ,mem_matrix_public_gpio 
+0657 c07f8659 beq gpio_disable ,p_mouse_3io6key_bk_check 
+0658 2020417e branch mouse_check_bkkey_gpio_next 
 
 p_mouse_3io6key_bk_check:
-0658 6fe0c911 fetch 1 ,mem_bk_button_gpio 
-0659 2040066c call p_mouse_gpio_config_output_low 
-065a 6848c911 fetcht 1 ,mem_bk_button_gpio 
-065b 2020418b branch mouse_3io6key_bk_check 
+0659 6fe0c911 fetch 1 ,mem_bk_button_gpio 
+065a 2040066d call p_mouse_gpio_config_output_low 
+065b 6848c911 fetcht 1 ,mem_bk_button_gpio 
+065c 2020418b branch mouse_3io6key_bk_check 
 
 p_mouse_check_fwkey_gpio:
-065c 6fe0c912 fetch 1 ,mem_fw_button_gpio 
-065d c17f8000 rtneq gpio_disable 
-065e 704ba704 jam mouse_fw_key ,mem_mouse_key_temp 
-065f 6fe0cba3 fetch 1 ,mem_mouse_fwkey_press_status 
-0660 1fe22600 copy pdata ,regc 
-0661 6848c912 fetcht 1 ,mem_fw_button_gpio 
-0662 6fe0c914 fetch 1 ,mem_matrix_public_gpio 
-0663 c07f8665 beq gpio_disable ,p_mouse_3io6key_fw_check 
-0664 20204197 branch mouse_check_fwkey_gpio_next 
+065d 6fe0c912 fetch 1 ,mem_fw_button_gpio 
+065e c17f8000 rtneq gpio_disable 
+065f 704ba704 jam mouse_fw_key ,mem_mouse_key_temp 
+0660 6fe0cba3 fetch 1 ,mem_mouse_fwkey_press_status 
+0661 1fe22600 copy pdata ,regc 
+0662 6848c912 fetcht 1 ,mem_fw_button_gpio 
+0663 6fe0c914 fetch 1 ,mem_matrix_public_gpio 
+0664 c07f8666 beq gpio_disable ,p_mouse_3io6key_fw_check 
+0665 20204197 branch mouse_check_fwkey_gpio_next 
 
 p_mouse_3io6key_fw_check:
-0665 6fe0c912 fetch 1 ,mem_fw_button_gpio 
-0666 2040066c call p_mouse_gpio_config_output_low 
-0667 6848c912 fetcht 1 ,mem_fw_button_gpio 
-0668 202041a4 branch mouse_3io6key_fw_check 
+0666 6fe0c912 fetch 1 ,mem_fw_button_gpio 
+0667 2040066d call p_mouse_gpio_config_output_low 
+0668 6848c912 fetcht 1 ,mem_fw_button_gpio 
+0669 202041a4 branch mouse_3io6key_fw_check 
 
 p_mouse_gpio_config_output_high:
-0669 c17f8000 rtneq gpio_disable 
-066a d840003f arg gpcfg_output_high ,temp 
-066b 2020612c branch gpio_config_function_int 
+066a c17f8000 rtneq gpio_disable 
+066b d840003f arg gpcfg_output_high ,temp 
+066c 2020612c branch gpio_config_function_int 
 
 p_mouse_gpio_config_output_low:
-066c c17f8000 rtneq gpio_disable 
-066d d840003e arg gpcfg_output_low ,temp 
-066e 2020612c branch gpio_config_function_int 
+066d c17f8000 rtneq gpio_disable 
+066e d840003e arg gpcfg_output_low ,temp 
+066f 2020612c branch gpio_config_function_int 
+
+p_mouse_ghost_key_check:
+0670 704ba900 jam 0 ,mem_mouse_matrix_key_cow_count 
+0671 704baa00 jam 0 ,mem_mouse_matrix_key_row_count 
+0672 704bab00 jam 0 ,mem_mouse_ghost_flag 
+0673 1fe20400 copy pdata ,temp 
+0674 20400677 call p_mouse_ghost_key_check_l_fw 
+0675 2040067a call p_mouse_ghost_key_check_r_bk 
+0676 20204133 branch mouse_ghost_key_check + 6 
+
+p_mouse_ghost_key_check_l_fw:
+0677 18417e11 and temp ,mouse_l_fw_button ,pdata 
+0678 c008c14e beq mouse_l_fw_button ,mouse_matrix_cow_more_than_one_key 
+0679 20600000 rtn 
+
+p_mouse_ghost_key_check_r_bk:
+067a 18417e0a and temp ,mouse_r_bk_button ,pdata 
+067b c005414e beq mouse_r_bk_button ,mouse_matrix_cow_more_than_one_key 
+067c 20600000 rtn 
               org 0x800
 
 start:
Index: program/patch.prog
===================================================================
--- /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/program/patch.prog	(revision 2346)
+++ /YC1308AF/branch/mouse/YDN_Project/SlideSwitch_3mode_226_24_bt/program/patch.prog	(working copy)
@@ -211,7 +211,7 @@
 	branch set_rf_ldo_cfg89
 
 p_set_tx_power_pair:
-	jam 0x04,core_tx_pwr_ctrl0
+	jam 0x0a,core_tx_pwr_ctrl0
 	jam 0x00,core_tx_pwr_ctrl1
 	branch set_rf_ldo_cfg89
 
@@ -2812,7 +2812,8 @@
 	nbranch p_fire_key_process,blank
 endif	
 	call p_mouse_check_key_gpio
-	branch mouse_key+1
+	call p_mouse_ghost_key_check
+	branch mouse_key+2
 
 p_mouse_check_key_gpio:
 	fetch 1,mem_sensor_shutdown_flag
@@ -2891,6 +2892,25 @@
 	arg gpcfg_output_low,temp
 	branch gpio_config_function_int
 
+p_mouse_ghost_key_check:
+	jam 0,mem_mouse_matrix_key_cow_count
+	jam 0,mem_mouse_matrix_key_row_count
+	jam 0,mem_mouse_ghost_flag
+	copy pdata,temp
+	call p_mouse_ghost_key_check_L_FW
+	call p_mouse_ghost_key_check_R_BK
+	branch mouse_ghost_key_check+6
+
+p_mouse_ghost_key_check_L_FW:
+	and temp,MOUSE_L_FW_BUTTON,pdata
+	beq MOUSE_L_FW_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+
+p_mouse_ghost_key_check_R_BK:
+	and temp,MOUSE_R_BK_BUTTON,pdata
+	beq MOUSE_R_BK_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+
 
 ///////////////////////////// 2.4g ota  start ///////////////////////////////////////////////////////////
 ifdef G24_OTA
