Index: format/rom.format
===================================================================
--- /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/format/rom.format	(revision 4400)
+++ /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/format/rom.format	(working copy)
@@ -2629,6 +2629,7 @@
 0X06 MOUSE_RM_BUTTON
 0X07 MOUSE_LMR_BUTTON
 0x09 MOUSE_L_BK_BUTTON
+0x0a MOUSE_R_BK_BUTTON
 0x14 MOUSE_M_FW_BUTTON
 0X18 MOUSE_BK_FW_BUTTON
 //mouse default gpio
Index: output/eeprom.dat
===================================================================
--- /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/output/eeprom.dat	(revision 4400)
+++ /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-d2
-17
+5a
+18
 c2
 84
 00
@@ -79,7 +79,7 @@
 c0
 67
 85
-be
+e2
 c0
 68
 03
@@ -87,7 +87,7 @@
 c0
 68
 85
-4c
+60
 c0
 69
 83
@@ -115,7 +115,7 @@
 c0
 6f
 05
-98
+ac
 c0
 6f
 80
@@ -203,7 +203,7 @@
 c0
 76
 85
-c6
+e8
 20
 20
 13
@@ -2046,8 +2046,8 @@
 cb
 20
 40
-05
-eb
+06
+0d
 20
 40
 27
@@ -2103,7 +2103,7 @@
 20
 20
 05
-ac
+ce
 6f
 e0
 cb
@@ -2319,7 +2319,7 @@
 20
 40
 05
-7f
+93
 d8
 40
 00
@@ -2519,7 +2519,7 @@
 20
 40
 05
-7f
+93
 20
 20
 3e
@@ -4623,7 +4623,7 @@
 20
 40
 05
-4c
+60
 1f
 e1
 7e
@@ -5423,11 +5423,91 @@
 20
 40
 05
-4c
+60
+20
+40
+05
+4d
 20
 20
 40
-dd
+de
+70
+4b
+98
+00
+70
+4b
+99
+00
+70
+4b
+9a
+00
+1f
+e2
+04
+00
+20
+40
+41
+00
+20
+40
+05
+5d
+20
+40
+41
+03
+20
+40
+41
+06
+6f
+e0
+cb
+99
+20
+7a
+00
+00
+6f
+e0
+cb
+98
+20
+7a
+00
+00
+70
+4b
+9a
+01
+6f
+e0
+c8
+d8
+1f
+e2
+22
+00
+20
+60
+00
+00
+18
+41
+7e
+0a
+c0
+05
+41
+0e
+20
+60
+00
+00
 6f
 e0
 cb
@@ -5443,27 +5523,27 @@
 20
 40
 05
-56
+6a
 20
 40
 05
-5b
+6f
 20
 40
 05
-60
+74
 20
 40
 05
-65
+79
 20
 40
 05
-72
+86
 20
 40
 05
-85
+99
 20
 20
 41
@@ -5475,7 +5555,7 @@
 20
 40
 05
-7f
+93
 20
 40
 41
@@ -5495,7 +5575,7 @@
 20
 40
 05
-7f
+93
 20
 40
 41
@@ -5515,7 +5595,7 @@
 20
 40
 05
-7f
+93
 20
 40
 41
@@ -5559,7 +5639,7 @@
 c0
 7f
 85
-6e
+82
 20
 20
 41
@@ -5571,7 +5651,7 @@
 20
 40
 05
-82
+96
 68
 48
 c9
@@ -5611,7 +5691,7 @@
 c0
 7f
 85
-7b
+8f
 20
 20
 41
@@ -5623,7 +5703,7 @@
 20
 40
 05
-82
+96
 68
 48
 c9
@@ -5707,7 +5787,7 @@
 20
 40
 05
-82
+96
 68
 48
 c9
@@ -5735,7 +5815,7 @@
 20
 40
 05
-9d
+b8
 20
 40
 79
@@ -5743,15 +5823,43 @@
 20
 40
 05
-ac
+b1
 20
 40
 05
-a1
+bc
 20
 20
 46
 50
+d8
+e0
+00
+0d
+20
+40
+7d
+74
+24
+7a
+00
+00
+20
+40
+05
+ce
+d8
+e0
+00
+0d
+58
+00
+00
+20
+20
+20
+7d
+66
 6f
 e0
 cc
@@ -5775,11 +5883,11 @@
 c2
 94
 85
-a5
+c0
 c2
 9b
 85
-a5
+c0
 20
 60
 00
@@ -5812,6 +5920,34 @@
 20
 46
 5c
+78
+54
+7c
+00
+6f
+e4
+4b
+ab
+c3
+96
+00
+00
+6f
+e1
+cb
+8e
+20
+7a
+00
+00
+70
+4b
+93
+00
+20
+20
+7e
+54
 6f
 e0
 c9
@@ -5820,6 +5956,14 @@
 7f
 80
 00
+20
+40
+05
+c7
+20
+74
+00
+00
 da
 20
 00
@@ -5835,7 +5979,7 @@
 20
 40
 05
-b3
+d7
 20
 20
 40
@@ -5863,7 +6007,7 @@
 c0
 7f
 85
-ba
+de
 20
 20
 40
@@ -5875,7 +6019,7 @@
 20
 40
 05
-82
+96
 68
 48
 c9
@@ -5884,14 +6028,6 @@
 20
 41
 95
-20
-40
-40
-72
-20
-74
-00
-00
 6f
 e0
 c9
@@ -5951,7 +6087,7 @@
 c5
 13
 05
-d0
+f2
 6f
 e0
 c8
@@ -5962,8 +6098,8 @@
 00
 24
 21
-05
-ea
+06
+0c
 6f
 e0
 c8
@@ -5975,15 +6111,15 @@
 24
 21
 05
-d8
+fa
 6f
 e0
 c8
 c9
 c0
 00
-05
-eb
+06
+0d
 20
 60
 00
@@ -6018,8 +6154,8 @@
 cb
 c5
 13
-05
-e1
+06
+03
 6f
 e0
 c8
@@ -6050,8 +6186,8 @@
 c8
 c0
 01
-05
-f2
+06
+14
 c0
 00
 a7
@@ -6070,8 +6206,8 @@
 c8
 c0
 01
-85
-f1
+86
+13
 1f
 e0
 fe
@@ -6086,12 +6222,12 @@
 11
 c0
 01
-05
-f2
+06
+14
 20
 20
-05
-f2
+06
+14
 70
 41
 e8
@@ -6100,8 +6236,8 @@
 60
 00
 00
-1d
-96
+ed
+08
 aa
 55
 40
@@ -6662,22 +6798,21 @@
 51
 aa
 55
-0c
+0b
 00
 fc
 45
-0b
+0a
+5a
+45
 42
-54
-33
-2e
-30
+2d
+4e
+45
+58
+41
 20
-4d
-6f
-75
-73
-65
+41
 aa
 55
 05
@@ -6824,22 +6959,21 @@
 65
 aa
 55
-0c
+0b
 00
 1e
 4c
-0b
+0a
+5a
+45
 42
-54
-35
-2e
-32
+2d
+4e
+45
+58
+41
 20
-4d
-6f
-75
-73
-65
+42
 aa
 55
 08
@@ -7454,144 +7588,10 @@
 aa
 aa
 55
-29
-95
-05
-2d
-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
-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
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+b8
+93
+fd
+9e
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-0d
-d3
+ac
+06
Index: output/program.lis
===================================================================
--- /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/output/program.lis	(revision 4400)
+++ /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/output/program.lis	(working copy)
@@ -18,16 +18,16 @@
 000f c065026e beq patch19_2 ,p_mouse_lpm_before_common 
 0010 c06600ca beq patch19_4 ,p_mouse_adc_read_start 
 0011 c0670511 beq patch19_6 ,p_mouse_motion 
-0012 c06785be beq patch19_7 ,p_mouse_dpi_process 
+0012 c06785e2 beq patch19_7 ,p_mouse_dpi_process 
 0013 c0680341 beq patch1a_0 ,p_mouse_seting_dpi 
-0014 c068854c beq patch1a_1 ,p_mouse_check_key_gpio 
+0014 c0688560 beq patch1a_1 ,p_mouse_check_key_gpio 
 0015 c0698358 beq patch1a_3 ,p_mouse_init_sunt 
 0016 c06a0534 beq patch1a_4 ,p_mouse_sensor_poweron 
 0017 c06b0291 beq patch1a_6 ,p_mouse_priority_bb_event 
 0018 c06c8386 beq patch1b_1 ,p_mouse_bb_event_timer 
 0019 c06d049b beq patch1b_2 ,p_mouse_start_discovery 
 001a c06d84a5 beq patch1b_3 ,p_mouse_stop_discovery 
-001b c06f0598 beq patch1b_6 ,p_mouse_idle 
+001b c06f05ac beq patch1b_6 ,p_mouse_idle 
 001c c06f805f beq patch1b_7 ,p_mouse_ready_reconnection_by_button 
 001d c0708058 beq patch1c_1 ,p_mouse_led_off 
 001e c0710055 beq patch1c_2 ,p_mouse_led_on 
@@ -51,7 +51,7 @@
 002e c07501c7 beq patch3d_2 ,p_g24_transmit_no_interrupt 
 002f c07581f5 beq patch3d_3 ,p_g24_transmit_hop_process 
 0030 c0760506 beq patch3d_4 ,p_g24_lpm_wait 
-0031 c07685c6 beq patch3d_5 ,p_power_ctrl_start 
+0031 c07685e8 beq patch3d_5 ,p_power_ctrl_start 
 0032 2020137c branch loop 
 
 p_soft_reset:
@@ -660,7 +660,7 @@
 01fb 684a488d fetcht 4 ,mem_24g_fast_conn_addr 
 01fc 98467c00 isub temp ,null 
 01fd 2022a2cb branch g24_ch ,zero 
-01fe 204005eb call p_power_ctrl_txpower_incrs 
+01fe 2040060d call p_power_ctrl_txpower_incrs 
 01ff 20402724 call power_ctrl_pac_succ_decrs 
 0200 202022cb branch g24_ch 
 
@@ -680,7 +680,7 @@
 p_mouse_dpi_check_once:
 020a 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
 020b c4140000 rtnbit0 mouse_enable_select_device_by_dpi_button 
-020c 202005ac branch p_mouse_dpi_check 
+020c 202005ce branch p_mouse_dpi_check 
 
 p_mouse_24g_led_timer_check:
 020d 6fe0cbe1 fetch 1 ,mem_sensor_shutdown_flag 
@@ -754,7 +754,7 @@
 023f 6848c910 fetcht 1 ,mem_matrix_public_gpio 
 0240 20406042 call gpio_clr_wake 
 0241 6fe0c920 fetch 1 ,mem_mouse_sensor_sdio_gpio 
-0242 2040057f call p_mouse_gpio_config_output_high 
+0242 20400593 call p_mouse_gpio_config_output_high 
 0243 d8400003 arg 3 ,temp 
 0244 20403f56 call mouse_gpio_config_input_pu 
 0245 2040026e call p_mouse_lpm_before_common 
@@ -822,7 +822,7 @@
 0271 20406050 call gpio_config_input 
 0272 20403f88 call mouse_wheel_check 
 0273 6fe0c91f fetch 1 ,mem_mouse_sensor_sclk_gpio 
-0274 2040057f call p_mouse_gpio_config_output_high 
+0274 20400593 call p_mouse_gpio_config_output_high 
 0275 20203e44 branch mouse_lpm_before_common + 4 
 
 p_g24_nodata_transmit:
@@ -1584,7 +1584,7 @@
 
 p_mouse_commbination_key_start:
 0481 6048cb9d storet 1 ,mem_mouse_commbination_key 
-0482 2040054c call p_mouse_check_key_gpio 
+0482 20400560 call p_mouse_check_key_gpio 
 0483 1fe17e07 and pdata ,0x07 ,pdata 
 0484 6848cb9d fetcht 1 ,mem_mouse_commbination_key 
 0485 98467c00 isub temp ,null 
@@ -1858,242 +1858,286 @@
 0549 20205b0c branch twspi_write 
 
 p_mouse_key:
-054a 2040054c call p_mouse_check_key_gpio 
-054b 202040dd branch mouse_key + 1 
+054a 20400560 call p_mouse_check_key_gpio 
+054b 2040054d call p_mouse_ghost_key_check 
+054c 202040de branch mouse_key + 2 
+
+p_mouse_ghost_key_check:
+054d 704b9800 jam 0 ,mem_mouse_matrix_key_cow_count 
+054e 704b9900 jam 0 ,mem_mouse_matrix_key_row_count 
+054f 704b9a00 jam 0 ,mem_mouse_ghost_flag 
+0550 1fe20400 copy pdata ,temp 
+0551 20404100 call mouse_ghost_key_check_m_fw 
+0552 2040055d call p_mouse_ghost_key_check_r_bk 
+0553 20404103 call mouse_ghost_key_check_bk_fw 
+0554 20404106 call mouse_ghost_key_check_lmr 
+0555 6fe0cb99 fetch 1 ,mem_mouse_matrix_key_row_count 
+0556 207a0000 rtn blank 
+0557 6fe0cb98 fetch 1 ,mem_mouse_matrix_key_cow_count 
+0558 207a0000 rtn blank 
+0559 704b9a01 jam 1 ,mem_mouse_ghost_flag 
+055a 6fe0c8d8 fetch 1 ,mem_mouse_key_last 
+055b 1fe22200 copy pdata ,rega 
+055c 20600000 rtn 
+
+p_mouse_ghost_key_check_r_bk:
+055d 18417e0a and temp ,mouse_r_bk_button ,pdata 
+055e c005410e beq mouse_r_bk_button ,mouse_matrix_cow_more_than_one_key 
+055f 20600000 rtn 
 
 p_mouse_check_key_gpio:
-054c 6fe0cbe1 fetch 1 ,mem_sensor_shutdown_flag 
-054d 245a4121 ncall mouse_check_key_gpio_once ,blank 
-054e da200000 arg 0 ,rega 
-054f 20400556 call p_mouse_check_lkey_gpio 
-0550 2040055b call p_mouse_check_rkey_gpio 
-0551 20400560 call p_mouse_check_mkey_gpio 
-0552 20400565 call p_mouse_check_bkkey_gpio 
-0553 20400572 call p_mouse_check_fwkey_gpio 
-0554 20400585 call p_mouse_check_customerkey_gpio 
-0555 2020411f branch mouse_check_key_gpio_next + 1 
+0560 6fe0cbe1 fetch 1 ,mem_sensor_shutdown_flag 
+0561 245a4121 ncall mouse_check_key_gpio_once ,blank 
+0562 da200000 arg 0 ,rega 
+0563 2040056a call p_mouse_check_lkey_gpio 
+0564 2040056f call p_mouse_check_rkey_gpio 
+0565 20400574 call p_mouse_check_mkey_gpio 
+0566 20400579 call p_mouse_check_bkkey_gpio 
+0567 20400586 call p_mouse_check_fwkey_gpio 
+0568 20400599 call p_mouse_check_customerkey_gpio 
+0569 2020411f branch mouse_check_key_gpio_next + 1 
 
 p_mouse_check_lkey_gpio:
-0556 6fe0c918 fetch 1 ,mem_lbutton_gpio 
-0557 2040057f call p_mouse_gpio_config_output_high 
-0558 20404124 call mouse_check_lkey_gpio 
-0559 6848c918 fetcht 1 ,mem_lbutton_gpio 
-055a 20203f56 branch mouse_gpio_config_input_pu 
+056a 6fe0c918 fetch 1 ,mem_lbutton_gpio 
+056b 20400593 call p_mouse_gpio_config_output_high 
+056c 20404124 call mouse_check_lkey_gpio 
+056d 6848c918 fetcht 1 ,mem_lbutton_gpio 
+056e 20203f56 branch mouse_gpio_config_input_pu 
 
 p_mouse_check_rkey_gpio:
-055b 6fe0c919 fetch 1 ,mem_rbutton_gpio 
-055c 2040057f call p_mouse_gpio_config_output_high 
-055d 2040412a call mouse_check_rkey_gpio 
-055e 6848c919 fetcht 1 ,mem_rbutton_gpio 
-055f 20203f56 branch mouse_gpio_config_input_pu 
+056f 6fe0c919 fetch 1 ,mem_rbutton_gpio 
+0570 20400593 call p_mouse_gpio_config_output_high 
+0571 2040412a call mouse_check_rkey_gpio 
+0572 6848c919 fetcht 1 ,mem_rbutton_gpio 
+0573 20203f56 branch mouse_gpio_config_input_pu 
 
 p_mouse_check_mkey_gpio:
-0560 6fe0c91a fetch 1 ,mem_mbutton_gpio 
-0561 2040057f call p_mouse_gpio_config_output_high 
-0562 20404130 call mouse_check_mkey_gpio 
-0563 6848c91a fetcht 1 ,mem_mbutton_gpio 
-0564 20203f56 branch mouse_gpio_config_input_pu 
+0574 6fe0c91a fetch 1 ,mem_mbutton_gpio 
+0575 20400593 call p_mouse_gpio_config_output_high 
+0576 20404130 call mouse_check_mkey_gpio 
+0577 6848c91a fetcht 1 ,mem_mbutton_gpio 
+0578 20203f56 branch mouse_gpio_config_input_pu 
 
 p_mouse_check_bkkey_gpio:
-0565 6fe0c90d fetch 1 ,mem_bk_button_gpio 
-0566 c17f8000 rtneq gpio_disable 
-0567 704b9603 jam mouse_bk_key ,mem_mouse_key_temp 
-0568 6fe0cb91 fetch 1 ,mem_mouse_bkkey_press_status 
-0569 1fe22600 copy pdata ,regc 
-056a 6848c90d fetcht 1 ,mem_bk_button_gpio 
-056b 6fe0c910 fetch 1 ,mem_matrix_public_gpio 
-056c c07f856e beq gpio_disable ,p_mouse_3io6key_bk_check 
-056d 2020413e branch mouse_check_bkkey_gpio_next 
+0579 6fe0c90d fetch 1 ,mem_bk_button_gpio 
+057a c17f8000 rtneq gpio_disable 
+057b 704b9603 jam mouse_bk_key ,mem_mouse_key_temp 
+057c 6fe0cb91 fetch 1 ,mem_mouse_bkkey_press_status 
+057d 1fe22600 copy pdata ,regc 
+057e 6848c90d fetcht 1 ,mem_bk_button_gpio 
+057f 6fe0c910 fetch 1 ,mem_matrix_public_gpio 
+0580 c07f8582 beq gpio_disable ,p_mouse_3io6key_bk_check 
+0581 2020413e branch mouse_check_bkkey_gpio_next 
 
 p_mouse_3io6key_bk_check:
-056e 6fe0c90d fetch 1 ,mem_bk_button_gpio 
-056f 20400582 call p_mouse_gpio_config_output_low 
-0570 6848c90d fetcht 1 ,mem_bk_button_gpio 
-0571 2020414b branch mouse_3io6key_bk_check 
+0582 6fe0c90d fetch 1 ,mem_bk_button_gpio 
+0583 20400596 call p_mouse_gpio_config_output_low 
+0584 6848c90d fetcht 1 ,mem_bk_button_gpio 
+0585 2020414b branch mouse_3io6key_bk_check 
 
 p_mouse_check_fwkey_gpio:
-0572 6fe0c90e fetch 1 ,mem_fw_button_gpio 
-0573 c17f8000 rtneq gpio_disable 
-0574 704b9604 jam mouse_fw_key ,mem_mouse_key_temp 
-0575 6fe0cb92 fetch 1 ,mem_mouse_fwkey_press_status 
-0576 1fe22600 copy pdata ,regc 
-0577 6848c90e fetcht 1 ,mem_fw_button_gpio 
-0578 6fe0c910 fetch 1 ,mem_matrix_public_gpio 
-0579 c07f857b beq gpio_disable ,p_mouse_3io6key_fw_check 
-057a 20204157 branch mouse_check_fwkey_gpio_next 
+0586 6fe0c90e fetch 1 ,mem_fw_button_gpio 
+0587 c17f8000 rtneq gpio_disable 
+0588 704b9604 jam mouse_fw_key ,mem_mouse_key_temp 
+0589 6fe0cb92 fetch 1 ,mem_mouse_fwkey_press_status 
+058a 1fe22600 copy pdata ,regc 
+058b 6848c90e fetcht 1 ,mem_fw_button_gpio 
+058c 6fe0c910 fetch 1 ,mem_matrix_public_gpio 
+058d c07f858f beq gpio_disable ,p_mouse_3io6key_fw_check 
+058e 20204157 branch mouse_check_fwkey_gpio_next 
 
 p_mouse_3io6key_fw_check:
-057b 6fe0c90e fetch 1 ,mem_fw_button_gpio 
-057c 20400582 call p_mouse_gpio_config_output_low 
-057d 6848c90e fetcht 1 ,mem_fw_button_gpio 
-057e 20204164 branch mouse_3io6key_fw_check 
+058f 6fe0c90e fetch 1 ,mem_fw_button_gpio 
+0590 20400596 call p_mouse_gpio_config_output_low 
+0591 6848c90e fetcht 1 ,mem_fw_button_gpio 
+0592 20204164 branch mouse_3io6key_fw_check 
 
 p_mouse_gpio_config_output_high:
-057f c17f8000 rtneq gpio_disable 
-0580 d840003f arg gpcfg_output_high ,temp 
-0581 20206093 branch gpio_config_function_int 
+0593 c17f8000 rtneq gpio_disable 
+0594 d840003f arg gpcfg_output_high ,temp 
+0595 20206093 branch gpio_config_function_int 
 
 p_mouse_gpio_config_output_low:
-0582 c17f8000 rtneq gpio_disable 
-0583 d840003e arg gpcfg_output_low ,temp 
-0584 20206093 branch gpio_config_function_int 
+0596 c17f8000 rtneq gpio_disable 
+0597 d840003e arg gpcfg_output_low ,temp 
+0598 20206093 branch gpio_config_function_int 
 
 p_mouse_check_customerkey_gpio:
-0585 6fe0cdb8 fetch 1 ,mem_mouse_customer_key_connect_vin_flag 
-0586 203a416a branch mouse_check_customerkey_gpio ,blank 
-0587 704b8b00 jam 0 ,mem_customer_key 
-0588 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
-0589 c40a8000 rtnbit0 mouse_enable_keyboard 
-058a 6fe0c912 fetch 1 ,mem_customer_key_gpio 
-058b 793ffe07 set0 gpio_active_bit ,pdata 
-058c 67e0c912 store 1 ,mem_customer_key_gpio 
-058d 704b9607 jam mouse_customer_key ,mem_mouse_key_temp 
-058e 6fe0cb95 fetch 1 ,mem_mouse_customerkey_press_status 
-058f 1fe22600 copy pdata ,regc 
+0599 6fe0cdb8 fetch 1 ,mem_mouse_customer_key_connect_vin_flag 
+059a 203a416a branch mouse_check_customerkey_gpio ,blank 
+059b 704b8b00 jam 0 ,mem_customer_key 
+059c 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
+059d c40a8000 rtnbit0 mouse_enable_keyboard 
+059e 6fe0c912 fetch 1 ,mem_customer_key_gpio 
+059f 793ffe07 set0 gpio_active_bit ,pdata 
+05a0 67e0c912 store 1 ,mem_customer_key_gpio 
+05a1 704b9607 jam mouse_customer_key ,mem_mouse_key_temp 
+05a2 6fe0cb95 fetch 1 ,mem_mouse_customerkey_press_status 
+05a3 1fe22600 copy pdata ,regc 
 
 p_mouse_3io6key_customerkey_check:
-0590 6fe0c912 fetch 1 ,mem_customer_key_gpio 
-0591 20400582 call p_mouse_gpio_config_output_low 
-0592 6848c912 fetcht 1 ,mem_customer_key_gpio 
-0593 20404195 call mouse_3io6key_check 
-0594 67e0cb95 store 1 ,mem_mouse_customerkey_press_status 
-0595 20404174 call mouse_check_customerkey_state 
-0596 6848c912 fetcht 1 ,mem_customer_key_gpio 
-0597 20203f56 branch mouse_gpio_config_input_pu 
+05a4 6fe0c912 fetch 1 ,mem_customer_key_gpio 
+05a5 20400596 call p_mouse_gpio_config_output_low 
+05a6 6848c912 fetcht 1 ,mem_customer_key_gpio 
+05a7 20404195 call mouse_3io6key_check 
+05a8 67e0cb95 store 1 ,mem_mouse_customerkey_press_status 
+05a9 20404174 call mouse_check_customerkey_state 
+05aa 6848c912 fetcht 1 ,mem_customer_key_gpio 
+05ab 20203f56 branch mouse_gpio_config_input_pu 
 
 p_mouse_idle:
-0598 2040059d call p_mouse_low_voltage_led_no_enter_lpm 
-0599 20407936 call ui_check_paring_button 
-059a 204005ac call p_mouse_dpi_check 
-059b 204005a1 call p_mouse_select_device_check 
-059c 20204650 branch mouse_idle + 5 
+05ac 204005b8 call p_mouse_low_voltage_led_no_enter_lpm 
+05ad 20407936 call ui_check_paring_button 
+05ae 204005b1 call p_mouse_20ms_event_timer 
+05af 204005bc call p_mouse_select_device_check 
+05b0 20204650 branch mouse_idle + 5 
+
+p_mouse_20ms_event_timer:
+05b1 d8e0000d arg 13 ,queue 
+05b2 20407d74 call timer_check 
+05b3 247a0000 nrtn blank 
+05b4 204005ce call p_mouse_dpi_check 
+
+p_mouse_20ms_event_timer_init:
+05b5 d8e0000d arg 13 ,queue 
+05b6 58000020 setarg 32 
+05b7 20207d66 branch timer_init 
 
 p_mouse_low_voltage_led_no_enter_lpm:
-059d 6fe0cc40 fetch 1 ,mem_mouse_led_new_interface_config 
-059e c301c990 bbit0 mouse_enable_low_led ,mouse_low_voltage_led_no_enter_lpm 
+05b8 6fe0cc40 fetch 1 ,mem_mouse_led_new_interface_config 
+05b9 c301c990 bbit0 mouse_enable_low_led ,mouse_low_voltage_led_no_enter_lpm 
 
 p_mouse_low_voltage_led_no_enter_lpm_next:
-059f 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
-05a0 20204992 branch mouse_low_voltage_led_no_enter_lpm + 2 
+05ba 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
+05bb 20204992 branch mouse_low_voltage_led_no_enter_lpm + 2 
 
 p_mouse_select_device_check:
-05a1 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
-05a2 c29485a5 bbit1 mouse_enable_select_device_by_pb_button ,p_mouse_select_device_by_pb_button_check_judge 
-05a3 c29b85a5 bbit1 mouse_enable_pb_button_long_press_disconvery ,p_mouse_select_device_by_pb_button_check_judge 
-05a4 20600000 rtn 
+05bc 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
+05bd c29485c0 bbit1 mouse_enable_select_device_by_pb_button ,p_mouse_select_device_by_pb_button_check_judge 
+05be c29b85c0 bbit1 mouse_enable_pb_button_long_press_disconvery ,p_mouse_select_device_by_pb_button_check_judge 
+05bf 20600000 rtn 
 
 p_mouse_select_device_by_pb_button_check_judge:
-05a5 6fe1478c fetch 2 ,mem_ui_state_map 
-05a6 c2830215 bbit1 ui_state_bt_discovery ,p_mouse_select_device_by_pb_button_check_once 
-05a7 6fe0c91b fetch 1 ,mem_config_select_device_button_gpio 
-05a8 c17f8000 rtneq gpio_disable 
-05a9 6fe0c9bf fetch 1 ,mem_store_information_delay_timer 
-05aa 247a0000 nrtn blank 
-05ab 2020465c branch mouse_select_device_by_pb_button + 2 
+05c0 6fe1478c fetch 2 ,mem_ui_state_map 
+05c1 c2830215 bbit1 ui_state_bt_discovery ,p_mouse_select_device_by_pb_button_check_once 
+05c2 6fe0c91b fetch 1 ,mem_config_select_device_button_gpio 
+05c3 c17f8000 rtneq gpio_disable 
+05c4 6fe0c9bf fetch 1 ,mem_store_information_delay_timer 
+05c5 247a0000 nrtn blank 
+05c6 2020465c branch mouse_select_device_by_pb_button + 2 
+
+p_mouse_dpi_ghost_check:
+05c7 78547c00 disable user 
+05c8 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
+05c9 c3960000 rtnbit1 mouse_enable_dpi_key_connect_gnd 
+05ca 6fe1cb8e fetch 3 ,mem_mouse_lkey_press_status 
+05cb 207a0000 rtn blank 
+05cc 704b9300 jam 0 ,mem_mouse_dpikey_press_status 
+05cd 20207e54 branch enable_user 
 
 p_mouse_dpi_check:
-05ac 6fe0c90f fetch 1 ,mem_dpi_button_gpio 
-05ad c17f8000 rtneq gpio_disable 
-05ae da200000 arg 0 ,rega 
-05af 704b9605 jam mouse_dpi_key ,mem_mouse_key_temp 
-05b0 6848c90f fetcht 1 ,mem_dpi_button_gpio 
-05b1 204005b3 call p_mouse_dpi_key_check 
-05b2 2020402f branch mouse_dpi_check_next 
+05ce 6fe0c90f fetch 1 ,mem_dpi_button_gpio 
+05cf c17f8000 rtneq gpio_disable 
+05d0 204005c7 call p_mouse_dpi_ghost_check 
+05d1 20740000 rtn user 
+05d2 da200000 arg 0 ,rega 
+05d3 704b9605 jam mouse_dpi_key ,mem_mouse_key_temp 
+05d4 6848c90f fetcht 1 ,mem_dpi_button_gpio 
+05d5 204005d7 call p_mouse_dpi_key_check 
+05d6 2020402f branch mouse_dpi_check_next 
 
 p_mouse_dpi_key_check:
-05b3 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
-05b4 c2964048 bbit1 mouse_enable_dpi_key_connect_gnd ,mouse_dpi_key_connect_gnd 
-05b5 6fe0cb93 fetch 1 ,mem_mouse_dpikey_press_status 
-05b6 1fe22600 copy pdata ,regc 
-05b7 6fe0c910 fetch 1 ,mem_matrix_public_gpio 
-05b8 c07f85ba beq gpio_disable ,p_mouse_3io6key_dpi_check 
-05b9 2020403f branch mouse_dpi_key_check_next 
+05d7 6fe44bab fetch mouse_flag_len ,mem_mouse_flag 
+05d8 c2964048 bbit1 mouse_enable_dpi_key_connect_gnd ,mouse_dpi_key_connect_gnd 
+05d9 6fe0cb93 fetch 1 ,mem_mouse_dpikey_press_status 
+05da 1fe22600 copy pdata ,regc 
+05db 6fe0c910 fetch 1 ,mem_matrix_public_gpio 
+05dc c07f85de beq gpio_disable ,p_mouse_3io6key_dpi_check 
+05dd 2020403f branch mouse_dpi_key_check_next 
 
 p_mouse_3io6key_dpi_check:
-05ba 6fe0c90f fetch 1 ,mem_dpi_button_gpio 
-05bb 20400582 call p_mouse_gpio_config_output_low 
-05bc 6848c90f fetcht 1 ,mem_dpi_button_gpio 
-05bd 20204195 branch mouse_3io6key_check 
+05de 6fe0c90f fetch 1 ,mem_dpi_button_gpio 
+05df 20400596 call p_mouse_gpio_config_output_low 
+05e0 6848c90f fetcht 1 ,mem_dpi_button_gpio 
+05e1 20204195 branch mouse_3io6key_check 
 
 p_mouse_dpi_process:
-05be 20404072 call mouse_dpi_ghost_check 
-05bf 20740000 rtn user 
 
 p_mouse_dpi_process_next:
-05c0 6fe0c992 fetch 1 ,mem_mouse_dpi 
-05c1 1fe0fe01 increase 1 ,pdata 
-05c2 1fe17e03 and pdata ,0x03 ,pdata 
+05e2 6fe0c992 fetch 1 ,mem_mouse_dpi 
+05e3 1fe0fe01 increase 1 ,pdata 
+05e4 1fe17e03 and pdata ,0x03 ,pdata 
 
 p_mouse_dpi_store:
-05c3 67e0c992 store 1 ,mem_mouse_dpi 
-05c4 20400341 call p_mouse_seting_dpi 
-05c5 20204643 branch mouse_store_eerpom_dpi 
+05e5 67e0c992 store 1 ,mem_mouse_dpi 
+05e6 20400341 call p_mouse_seting_dpi 
+05e7 20204643 branch mouse_store_eerpom_dpi 
 
 p_power_ctrl_start:
-05c6 6fe1478c fetch 2 ,mem_ui_state_map 
-05c7 c3858000 rtnbit1 ui_state_ble_adv 
-05c8 c3838000 rtnbit1 ui_state_bt_reconnect 
-05c9 c3830000 rtnbit1 ui_state_bt_discovery 
-05ca 6a214899 fetchr rega ,2 ,mem_rssi_signal_buf_ptr 
-05cb 204025cb call rssi_average 
-05cc 6048c8c7 storet 1 ,mem_rssi_avg_received 
-05cd 6fe0c8cc fetch 1 ,mem_rssi_dis_max_24g 
-05ce c51305d0 bmark1 mark_24g ,p_power_ctrl_start_next 
-05cf 6fe0c8cf fetch 1 ,mem_rssi_dis_max_ble 
+05e8 6fe1478c fetch 2 ,mem_ui_state_map 
+05e9 c3858000 rtnbit1 ui_state_ble_adv 
+05ea c3838000 rtnbit1 ui_state_bt_reconnect 
+05eb c3830000 rtnbit1 ui_state_bt_discovery 
+05ec 6a214899 fetchr rega ,2 ,mem_rssi_signal_buf_ptr 
+05ed 204025cb call rssi_average 
+05ee 6048c8c7 storet 1 ,mem_rssi_avg_received 
+05ef 6fe0c8cc fetch 1 ,mem_rssi_dis_max_24g 
+05f0 c51305f2 bmark1 mark_24g ,p_power_ctrl_start_next 
+05f1 6fe0c8cf fetch 1 ,mem_rssi_dis_max_ble 
 
 p_power_ctrl_start_next:
-05d0 98467c00 isub temp ,null 
-05d1 242105ea nbranch p_power_ctrl_txpower_incrs_force ,positive 
-05d2 6fe0c8c9 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-05d3 1fe67c02 sub pdata ,2 ,null 
-05d4 242105d8 nbranch p_power_ctrl_txpower_decrs_check ,positive 
-05d5 6fe0c8c9 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-05d6 c00005eb beq 0 ,p_power_ctrl_txpower_incrs 
-05d7 20600000 rtn 
+05f2 98467c00 isub temp ,null 
+05f3 2421060c nbranch p_power_ctrl_txpower_incrs_force ,positive 
+05f4 6fe0c8c9 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+05f5 1fe67c02 sub pdata ,2 ,null 
+05f6 242105fa nbranch p_power_ctrl_txpower_decrs_check ,positive 
+05f7 6fe0c8c9 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+05f8 c000060d beq 0 ,p_power_ctrl_txpower_incrs 
+05f9 20600000 rtn 
 
 p_power_ctrl_txpower_decrs_check:
-05d8 6fe0c8c9 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-05d9 6848c8ca fetcht 1 ,mem_power_ctrl_pac_succ_cnt_init 
-05da 98467c00 isub temp ,null 
-05db 24628000 nrtn zero 
-05dc 7048c900 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+05fa 6fe0c8c9 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+05fb 6848c8ca fetcht 1 ,mem_power_ctrl_pac_succ_cnt_init 
+05fc 98467c00 isub temp ,null 
+05fd 24628000 nrtn zero 
+05fe 7048c900 jam 0 ,mem_power_ctrl_pac_succ_cnt 
 
 p_power_ctrl_txpower_decrs:
-05dd 6848c8c7 fetcht 1 ,mem_rssi_avg_received 
-05de 6fe0c8cb fetch 1 ,mem_rssi_dis_min_24g 
-05df c51305e1 bmark1 mark_24g ,p_power_ctrl_txpower_decrs_next 
-05e0 6fe0c8ce fetch 1 ,mem_rssi_dis_min_ble 
+05ff 6848c8c7 fetcht 1 ,mem_rssi_avg_received 
+0600 6fe0c8cb fetch 1 ,mem_rssi_dis_min_24g 
+0601 c5130603 bmark1 mark_24g ,p_power_ctrl_txpower_decrs_next 
+0602 6fe0c8ce fetch 1 ,mem_rssi_dis_min_ble 
 
 p_power_ctrl_txpower_decrs_next:
-05e1 98467c00 isub temp ,null 
-05e2 24610000 nrtn positive 
-05e3 6fe0c8c8 fetch 1 ,mem_power_ctrl_level 
-05e4 c000271b beq 0 ,power_ctrl_decrs_level0 
-05e5 1fe0ffff increase -1 ,pdata 
-05e6 67e0c8c8 store 1 ,mem_power_ctrl_level 
-05e7 c00105f2 beq 2 ,p_power_ctrl_decrs_level2 
-05e8 c000a711 beq 1 ,power_ctrl_decrs_level1 
-05e9 2020271b branch power_ctrl_decrs_level0 
+0603 98467c00 isub temp ,null 
+0604 24610000 nrtn positive 
+0605 6fe0c8c8 fetch 1 ,mem_power_ctrl_level 
+0606 c000271b beq 0 ,power_ctrl_decrs_level0 
+0607 1fe0ffff increase -1 ,pdata 
+0608 67e0c8c8 store 1 ,mem_power_ctrl_level 
+0609 c0010614 beq 2 ,p_power_ctrl_decrs_level2 
+060a c000a711 beq 1 ,power_ctrl_decrs_level1 
+060b 2020271b branch power_ctrl_decrs_level0 
 
 p_power_ctrl_txpower_incrs_force:
-05ea 7048c900 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+060c 7048c900 jam 0 ,mem_power_ctrl_pac_succ_cnt 
 
 p_power_ctrl_txpower_incrs:
-05eb 6fe0c8c8 fetch 1 ,mem_power_ctrl_level 
-05ec c00185f1 beq 3 ,p_power_ctrl_incrs_level3 
-05ed 1fe0fe01 increase 1 ,pdata 
-05ee 67e0c8c8 store 1 ,mem_power_ctrl_level 
-05ef c000a711 beq 1 ,power_ctrl_incrs_level1 
-05f0 c00105f2 beq 2 ,p_power_ctrl_incrs_level2 
+060d 6fe0c8c8 fetch 1 ,mem_power_ctrl_level 
+060e c0018613 beq 3 ,p_power_ctrl_incrs_level3 
+060f 1fe0fe01 increase 1 ,pdata 
+0610 67e0c8c8 store 1 ,mem_power_ctrl_level 
+0611 c000a711 beq 1 ,power_ctrl_incrs_level1 
+0612 c0010614 beq 2 ,p_power_ctrl_incrs_level2 
 
 p_power_ctrl_incrs_level3:
-05f1 202005f2 branch p_power_ctrl_incrs_level2 
+0613 20200614 branch p_power_ctrl_incrs_level2 
 
 p_power_ctrl_decrs_level2:
 
 p_power_ctrl_incrs_level2:
-05f2 7041e803 jam tx_power_3db ,mem_tx_power 
-05f3 20600000 rtn 
+0614 7041e803 jam tx_power_3db ,mem_tx_power 
+0615 20600000 rtn 
               org 0x3bc1
 
 mouse_init:
Index: program/patch.prog
===================================================================
--- /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/program/patch.prog	(revision 4400)
+++ /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/program/patch.prog	(working copy)
@@ -2076,7 +2076,31 @@
 	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_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 mouse_ghost_key_check_M_FW
+	call p_mouse_ghost_key_check_R_BK
+	call mouse_ghost_key_check_BK_FW
+	call mouse_ghost_key_check_LMR
+	fetch 1,mem_mouse_matrix_key_row_count
+	rtn blank
+	fetch 1,mem_mouse_matrix_key_cow_count
+	rtn blank
+	jam 1,mem_mouse_ghost_flag
+	fetch 1,mem_mouse_key_last		// matrix have ghost key
+	copy pdata,rega
+	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
 
 p_mouse_check_key_gpio:	//when mem_matrix_public_gpio=0xff
 	fetch 1,mem_sensor_shutdown_flag
@@ -2272,13 +2296,24 @@
 p_mouse_idle:
 	call p_mouse_low_voltage_led_no_enter_lpm
 	call ui_check_paring_button
-	call p_mouse_dpi_check
-ifdef DOUBLE_DPI_KEY
-	call p_mouse_dpi_another_gpio_check
-endif
+	call p_mouse_20ms_event_timer
+//	call p_mouse_dpi_check
+//ifdef DOUBLE_DPI_KEY
+//	call p_mouse_dpi_another_gpio_check
+//endif
 	call p_mouse_select_device_check
 	branch mouse_idle+5
 
+p_mouse_20ms_event_timer:
+	arg 13,queue
+	call timer_check
+	nrtn blank
+	call p_mouse_dpi_check
+p_mouse_20ms_event_timer_init:
+	arg 13,queue
+	setarg 32
+	branch timer_init
+
 p_mouse_low_voltage_led_no_enter_lpm:
 	fetch 1,mem_mouse_led_new_interface_config
 	bbit0 MOUSE_ENABLE_LOW_LED,mouse_low_voltage_led_no_enter_lpm
@@ -2299,10 +2334,21 @@
 	fetch 1,mem_store_information_delay_timer
 	nrtn blank
 	branch mouse_select_device_by_pb_button+2
+
+p_mouse_dpi_ghost_check:
+	disable user
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_DPI_KEY_CONNECT_GND
+	fetch 3,mem_mouse_lkey_press_status
+	rtn blank
+	jam 0,mem_mouse_dpikey_press_status
+	branch enable_user
 	
 p_mouse_dpi_check:
 	fetch 1,mem_dpi_button_gpio
 	rtneq GPIO_DISABLE
+	call p_mouse_dpi_ghost_check
+	rtn user
 	arg 0,rega
 	jam MOUSE_DPI_KEY,mem_mouse_key_temp
 	fetcht 1,mem_dpi_button_gpio
@@ -2404,8 +2450,8 @@
 endif
 
 p_mouse_dpi_process:
-	call mouse_dpi_ghost_check
-	rtn user
+//	call mouse_dpi_ghost_check
+//	rtn user
 p_mouse_dpi_process_next:
 	fetch 1,mem_mouse_dpi
 ifdef DOUBLE_DPI_KEY
Index: sched/mouse.dat
===================================================================
--- /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/sched/mouse.dat	(revision 4400)
+++ /YC1308AC/branch/mouse_project/YJX_Project/1011-T_Project/Multimode/PB_3mode_2ch_LXL_E730/sched/mouse.dat	(working copy)
@@ -258,7 +258,7 @@
 mem_app_connection_options:06
 mem_lap:05 23 18 12 23 51
 mem_local_name_length:
-'BT3.0 Mouse
+'ZEB-NEXA A
 mem_sniff_param_interval:
 0e 00 
 01 00 ##mem_sniff_param_attempt:01 00
@@ -306,7 +306,7 @@
 'BT5.2 Mouse
 
 mem_le_name_patch_len:	#max 18bytes
-'BT5.2 Mouse
+'ZEB-NEXA B
 
 mem_le_interval_min:
 06 00 #min interval
