Index: output/eeprom.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/eeprom.dat	(revision 2021)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/eeprom.dat	(working copy)
@@ -2,7 +2,7 @@
 02
 aa
 55
-1e
+9e
 14
 c2
 84
@@ -54,8 +54,8 @@
 a9
 c0
 1d
-04
-fb
+05
+1b
 c0
 1e
 82
@@ -4922,12 +4922,12 @@
 b1
 c2
 83
-04
-e5
+05
+05
 c2
 82
-84
-e0
+85
+00
 6f
 e0
 c7
@@ -4943,7 +4943,7 @@
 c0
 01
 84
-dd
+ed
 20
 20
 33
@@ -4980,10 +4980,74 @@
 c0
 47
 b2
+df
+20
+00
+02
 20
+40
+7c
+da
+6f
+e1
+09
+43
+24
+5a
+49
+2d
+6f
+e1
+09
+43
 20
+5a
 49
-1f
+31
+6f
+e1
+09
+43
+67
+e1
+46
+5f
+68
+49
+46
+62
+98
+46
+7c
+00
+24
+42
+84
+eb
+6f
+e1
+46
+5f
+67
+e1
+46
+62
+6f
+e0
+c6
+5f
+20
+7a
+00
+00
+70
+09
+0c
+22
+20
+20
+04
+c3
 d8
 a0
 09
@@ -4992,10 +5056,74 @@
 c0
 47
 b2
+df
 20
+00
+03
+20
+40
+7c
+da
+6f
+e1
+09
+34
+24
+5a
+49
+15
+6f
+e1
+09
+34
 20
+5a
 49
-07
+19
+6f
+e1
+89
+33
+67
+e1
+c6
+59
+68
+49
+c6
+5c
+98
+46
+7c
+00
+24
+42
+84
+fe
+6f
+e1
+c6
+59
+67
+e1
+c6
+5c
+6f
+e0
+84
+fe
+20
+7a
+00
+00
+70
+09
+0c
+21
+20
+20
+04
+c3
 6f
 e0
 ca
@@ -5034,12 +5162,12 @@
 79
 20
 5a
-04
-f0
+05
+10
 24
 5a
-04
-f2
+05
+12
 d8
 c0
 47
@@ -5094,8 +5222,8 @@
 00
 c2
 00
-04
-f6
+05
+16
 1a
 21
 22
@@ -5152,8 +5280,8 @@
 20
 04
 c3
-af
-13
+c9
+7f
 aa
 55
 40
@@ -5838,136 +5966,8 @@
 55
 54
 90
-15
-f2
-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
+71
+fe
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-d4
-ed
+91
+dc
Index: output/flash.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/flash.dat	(revision 2021)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/flash.dat	(working copy)
@@ -2,7 +2,7 @@
 02
 aa
 55
-1e
+9e
 14
 c2
 84
@@ -54,8 +54,8 @@
 a9
 c0
 1d
-04
-fb
+05
+1b
 c0
 1e
 82
@@ -4922,12 +4922,12 @@
 b1
 c2
 83
-04
-e5
+05
+05
 c2
 82
-84
-e0
+85
+00
 6f
 e0
 c7
@@ -4943,7 +4943,7 @@
 c0
 01
 84
-dd
+ed
 20
 20
 33
@@ -4980,10 +4980,74 @@
 c0
 47
 b2
+df
+20
+00
+02
 20
+40
+7c
+da
+6f
+e1
+09
+43
+24
+5a
+49
+2d
+6f
+e1
+09
+43
 20
+5a
 49
-1f
+31
+6f
+e1
+09
+43
+67
+e1
+46
+5f
+68
+49
+46
+62
+98
+46
+7c
+00
+24
+42
+84
+eb
+6f
+e1
+46
+5f
+67
+e1
+46
+62
+6f
+e0
+c6
+5f
+20
+7a
+00
+00
+70
+09
+0c
+22
+20
+20
+04
+c3
 d8
 a0
 09
@@ -4992,10 +5056,74 @@
 c0
 47
 b2
+df
 20
+00
+03
+20
+40
+7c
+da
+6f
+e1
+09
+34
+24
+5a
+49
+15
+6f
+e1
+09
+34
 20
+5a
 49
-07
+19
+6f
+e1
+89
+33
+67
+e1
+c6
+59
+68
+49
+c6
+5c
+98
+46
+7c
+00
+24
+42
+84
+fe
+6f
+e1
+c6
+59
+67
+e1
+c6
+5c
+6f
+e0
+84
+fe
+20
+7a
+00
+00
+70
+09
+0c
+21
+20
+20
+04
+c3
 6f
 e0
 ca
@@ -5034,12 +5162,12 @@
 79
 20
 5a
-04
-f0
+05
+10
 24
 5a
-04
-f2
+05
+12
 d8
 c0
 47
@@ -5094,8 +5222,8 @@
 00
 c2
 00
-04
-f6
+05
+16
 1a
 21
 22
@@ -5152,8 +5280,8 @@
 20
 04
 c3
-af
-13
+c9
+7f
 aa
 55
 40
@@ -5838,136 +5966,8 @@
 55
 54
 90
-15
-f2
-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
+71
+fe
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-d4
-ed
+91
+dc
Index: output/otp.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/otp.dat	(revision 2021)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/otp.dat	(working copy)
@@ -11,7 +11,7 @@
 00
 aa
 55
-1e
+9e
 14
 c2
 84
@@ -63,8 +63,8 @@
 a9
 c0
 1d
-04
-fb
+05
+1b
 c0
 1e
 82
@@ -4931,12 +4931,12 @@
 b1
 c2
 83
-04
-e5
+05
+05
 c2
 82
-84
-e0
+85
+00
 6f
 e0
 c7
@@ -4952,7 +4952,7 @@
 c0
 01
 84
-dd
+ed
 20
 20
 33
@@ -4989,10 +4989,74 @@
 c0
 47
 b2
+df
 20
+00
+02
+20
+40
+7c
+da
+6f
+e1
+09
+43
+24
+5a
+49
+2d
+6f
+e1
+09
+43
 20
+5a
 49
-1f
+31
+6f
+e1
+09
+43
+67
+e1
+46
+5f
+68
+49
+46
+62
+98
+46
+7c
+00
+24
+42
+84
+eb
+6f
+e1
+46
+5f
+67
+e1
+46
+62
+6f
+e0
+c6
+5f
+20
+7a
+00
+00
+70
+09
+0c
+22
+20
+20
+04
+c3
 d8
 a0
 09
@@ -5001,10 +5065,74 @@
 c0
 47
 b2
+df
 20
+00
+03
 20
+40
+7c
+da
+6f
+e1
+09
+34
+24
+5a
 49
-07
+15
+6f
+e1
+09
+34
+20
+5a
+49
+19
+6f
+e1
+89
+33
+67
+e1
+c6
+59
+68
+49
+c6
+5c
+98
+46
+7c
+00
+24
+42
+84
+fe
+6f
+e1
+c6
+59
+67
+e1
+c6
+5c
+6f
+e0
+84
+fe
+20
+7a
+00
+00
+70
+09
+0c
+21
+20
+20
+04
+c3
 6f
 e0
 ca
@@ -5043,12 +5171,12 @@
 79
 20
 5a
-04
-f0
+05
+10
 24
 5a
-04
-f2
+05
+12
 d8
 c0
 47
@@ -5103,8 +5231,8 @@
 00
 c2
 00
-04
-f6
+05
+16
 1a
 21
 22
@@ -5161,8 +5289,8 @@
 20
 04
 c3
-af
-13
+c9
+7f
 aa
 55
 40
@@ -5847,6 +5975,6 @@
 55
 54
 90
-15
-f2
+71
+fe
 21
Index: output/program.lis
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/program.lis	(revision 2021)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/program.lis	(working copy)
@@ -12,7 +12,7 @@
 0009 c01b82b9 beq patch06_7 ,p_dongle_default_init 
 000a c01c00ad beq patch07_0 ,p_dongle_read_kb_bind_status 
 000b c01c80a9 beq patch07_1 ,p_dongle_write_kb_bind_status 
-000c c01d04fb beq patch07_2 ,p_dongle_g24_ms_blank_data 
+000c c01d051b beq patch07_2 ,p_dongle_g24_ms_blank_data 
 000d c01e82b5 beq patch07_5 ,p_dongle_usb_dispatch 
 000e c01f031a beq patch07_6 ,p_dongle_work_mode_auto 
 000f c05882cc beq patch16_1 ,p_app_init 
@@ -1569,12 +1569,12 @@
 
 p_dongle_g24_kb:
 04cc 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-04cd c28304e5 bbit1 data_key_matrix ,p_dongle_receive_kb_key_matrix_data 
-04ce c28284e0 bbit1 data_heart ,p_dongle_receive_kb_heart_info 
+04cd c2830505 bbit1 data_key_matrix ,p_dongle_receive_kb_key_matrix_data 
+04ce c2828500 bbit1 data_heart ,p_dongle_receive_kb_heart_info 
 04cf 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
 04d0 c00004d4 beq 0 ,p_dongle_g24_kb_type0 
 04d1 c00104da beq 2 ,p_dongle_g24_kb_type2 
-04d2 c00184dd beq 3 ,p_dongle_g24_kb_type3 
+04d2 c00184ed beq 3 ,p_dongle_g24_kb_type3 
 04d3 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_kb_type0:
@@ -1588,67 +1588,103 @@
 p_dongle_g24_kb_type2:
 04da d8a00943 arg mem_usb_kb_system ,contw 
 04db d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-04dc 2020491f branch dongle_g24_kb_type2 + 2 
+04dc df200002 arg 2 ,loopcnt 
+04dd 20407cda call memcpy 
+04de 6fe10943 fetch 2 ,mem_usb_kb_system 
+04df 245a492d ncall dongle_g24_kb_sys_enable_blank_data_forcibly ,blank 
+04e0 6fe10943 fetch 2 ,mem_usb_kb_system 
+04e1 205a4931 call dongle_g24_kb_sys_disable_blank_data_forcibly ,blank 
+04e2 6fe10943 fetch 2 ,mem_usb_kb_system 
+04e3 67e1465f store 2 ,mem_dg_kb_system_sta_data 
+04e4 68494662 fetcht 2 ,mem_dg_kb_system_last_data 
+04e5 98467c00 isub temp ,null 
+04e6 244284eb ncall p_dongle_usb_tx_sys_data ,zero 
+04e7 6fe1465f fetch 2 ,mem_dg_kb_system_sta_data 
+04e8 67e14662 store 2 ,mem_dg_kb_system_last_data 
+04e9 6fe0c65f fetch 1 ,mem_dg_kb_system_sta_data 
+04ea 207a0000 rtn blank 
+
+p_dongle_usb_tx_sys_data:
+04eb 70090c22 jam usb_ep2_systemkey ,mem_usb_ep2_data 
+04ec 202004c3 branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_g24_kb_type3:
-04dd d8a00933 arg mem_usb_kb_multikey ,contw 
-04de d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-04df 20204907 branch dongle_g24_kb_type3 + 2 
+04ed d8a00933 arg mem_usb_kb_multikey ,contw 
+04ee d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+04ef df200003 arg 3 ,loopcnt 
+04f0 20407cda call memcpy 
+04f1 6fe10934 fetch 2 ,mem_usb_kb_multikey + 1 
+04f2 245a4915 ncall dongle_g24_kb_mul_enable_blank_data_forcibly ,blank 
+04f3 6fe10934 fetch 2 ,mem_usb_kb_multikey + 1 
+04f4 205a4919 call dongle_g24_kb_mul_disable_blank_data_forcibly ,blank 
+04f5 6fe18933 fetch 3 ,mem_usb_kb_multikey 
+04f6 67e1c659 store 3 ,mem_dg_kb_multikey_sta_data 
+04f7 6849c65c fetcht 3 ,mem_dg_kb_multikey_last_data 
+04f8 98467c00 isub temp ,null 
+04f9 244284fe ncall p_dongle_usb_tx_multikey_data ,zero 
+04fa 6fe1c659 fetch 3 ,mem_dg_kb_multikey_sta_data 
+04fb 67e1c65c store 3 ,mem_dg_kb_multikey_last_data 
+04fc 6fe084fe fetch 1 ,p_dongle_usb_tx_multikey_data 
+04fd 207a0000 rtn blank 
+
+p_dongle_usb_tx_multikey_data:
+04fe 70090c21 jam usb_ep2_multikey ,mem_usb_ep2_data 
+04ff 202004c3 branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_receive_kb_heart_info:
-04e0 6fe0ca96 fetch 1 ,mem_dg_kb_ep2_ack_data_flag 
-04e1 207a0000 rtn blank 
-04e2 704a9600 jam 0 ,mem_dg_kb_ep2_ack_data_flag 
+0500 6fe0ca96 fetch 1 ,mem_dg_kb_ep2_ack_data_flag 
+0501 207a0000 rtn blank 
+0502 704a9600 jam 0 ,mem_dg_kb_ep2_ack_data_flag 
 
 p_24g_ackpayload_kb_enable_set:
-04e3 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
-04e4 20600000 rtn 
+0503 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
+0504 20600000 rtn 
 
 p_dongle_receive_kb_key_matrix_data:
-04e5 6fe0c7b0 fetch 1 ,mem_24g_rxdata_temp_new + 1 
-04e6 1fe0ffff increase -1 ,pdata 
-04e7 1fe27200 copy pdata ,loopcnt 
-04e8 6fe14b79 fetch 2 ,mem_keymatrix_wptr 
-04e9 205a04f0 call p_dongle_write_from_head ,blank 
-04ea 245a04f2 ncall p_dongle_write_from_last ,blank 
-04eb d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-04ec 20407ccc call memcpy_fast 
-04ed 18a27e00 copy contw ,pdata 
-04ee 67e14b79 store 2 ,mem_keymatrix_wptr 
-04ef 20600000 rtn 
+0505 6fe0c7b0 fetch 1 ,mem_24g_rxdata_temp_new + 1 
+0506 1fe0ffff increase -1 ,pdata 
+0507 1fe27200 copy pdata ,loopcnt 
+0508 6fe14b79 fetch 2 ,mem_keymatrix_wptr 
+0509 205a0510 call p_dongle_write_from_head ,blank 
+050a 245a0512 ncall p_dongle_write_from_last ,blank 
+050b d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+050c 20407ccc call memcpy_fast 
+050d 18a27e00 copy contw ,pdata 
+050e 67e14b79 store 2 ,mem_keymatrix_wptr 
+050f 20600000 rtn 
 
 p_dongle_write_from_head:
-04f0 d8a04ad8 arg mem_dg_kb_keymatrix_buff ,contw 
-04f1 20600000 rtn 
+0510 d8a04ad8 arg mem_dg_kb_keymatrix_buff ,contw 
+0511 20600000 rtn 
 
 p_dongle_write_from_last:
-04f2 6fe14b79 fetch 2 ,mem_keymatrix_wptr 
-04f3 1fe20a00 copy pdata ,contw 
-04f4 20600000 rtn 
+0512 6fe14b79 fetch 2 ,mem_keymatrix_wptr 
+0513 1fe20a00 copy pdata ,contw 
+0514 20600000 rtn 
 
 p_checksum_calcu:
-04f5 da200000 arg 0 ,rega 
+0515 da200000 arg 0 ,rega 
 
 p_dongle_data_checksum:
-04f6 efe08006 ifetch 1 ,contr 
-04f7 9a20a200 iadd rega ,rega 
-04f8 c20004f6 loop p_dongle_data_checksum 
-04f9 1a2122ff and_into 0xff ,rega 
-04fa 20600000 rtn 
+0516 efe08006 ifetch 1 ,contr 
+0517 9a20a200 iadd rega ,rega 
+0518 c2000516 loop p_dongle_data_checksum 
+0519 1a2122ff and_into 0xff ,rega 
+051a 20600000 rtn 
 
 p_dongle_g24_ms_blank_data:
-04fb 6fe0c668 fetch 1 ,mem_dg_ms_blank_data_enable 
-04fc 207a0000 rtn blank 
-04fd d8e0000d arg g24_timer_ms_blank ,queue 
-04fe 20407cef call timer_check 
-04ff 247a0000 nrtn blank 
-0500 70466800 jam 0 ,mem_dg_ms_blank_data_enable 
-0501 58000001 setarg ms_report_id 
-0502 67e08913 store 1 ,mem_usb_mouse_data 
-0503 58000000 setarg 0 
-0504 e7e38005 istore 7 ,contw 
-0505 70090c20 jam usb_ep2_ms ,mem_usb_ep2_data 
-0506 202004c3 branch p_dongle_usb_tx_enable_ep2 
+051b 6fe0c668 fetch 1 ,mem_dg_ms_blank_data_enable 
+051c 207a0000 rtn blank 
+051d d8e0000d arg g24_timer_ms_blank ,queue 
+051e 20407cef call timer_check 
+051f 247a0000 nrtn blank 
+0520 70466800 jam 0 ,mem_dg_ms_blank_data_enable 
+0521 58000001 setarg ms_report_id 
+0522 67e08913 store 1 ,mem_usb_mouse_data 
+0523 58000000 setarg 0 
+0524 e7e38005 istore 7 ,contw 
+0525 70090c20 jam usb_ep2_ms ,mem_usb_ep2_data 
+0526 202004c3 branch p_dongle_usb_tx_enable_ep2 
               org 0x2000
 
 start:
Index: program/patch.prog
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/program/patch.prog	(revision 2021)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/program/patch.prog	(working copy)
@@ -1642,7 +1642,6 @@
 	fetch 1,mem_24g_rxdata_temp_new+2
 	bbit1 DATA_KEY_MATRIX,p_dongle_receive_kb_key_matrix_data
 	bbit1 DATA_HEART,p_dongle_receive_kb_heart_info
-	
 	fetch 1,mem_24g_rxdata_temp_new+3
 	beq 0,p_dongle_g24_kb_type0	//normal key
 	beq 2,p_dongle_g24_kb_type2	//system key
@@ -1660,12 +1659,46 @@
 p_dongle_g24_kb_type2:
 	arg mem_usb_kb_system,contw
 	arg mem_24g_rxdata_temp_new+3,contr
-	branch dongle_g24_kb_type2+2
+	arg 2,loopcnt
+	call memcpy
+	fetch 2,mem_usb_kb_system
+	ncall dongle_g24_kb_sys_enable_blank_data_forcibly,blank
+	fetch 2,mem_usb_kb_system
+	call dongle_g24_kb_sys_disable_blank_data_forcibly,blank
+	fetch 2,mem_usb_kb_system
+	store 2,mem_dg_kb_system_sta_data
+	fetcht 2,mem_dg_kb_system_last_data
+	isub temp,null
+	ncall p_dongle_usb_tx_sys_data,zero
+	fetch 2,mem_dg_kb_system_sta_data
+	store 2,mem_dg_kb_system_last_data
+	fetch 1,mem_dg_kb_system_sta_data
+	rtn blank
+p_dongle_usb_tx_sys_data:
+	jam USB_EP2_SYSTEMKEY,mem_usb_ep2_data
+	branch p_dongle_usb_tx_enable_ep2
 
 p_dongle_g24_kb_type3:
 	arg mem_usb_kb_multikey,contw
 	arg mem_24g_rxdata_temp_new+3,contr
-	branch dongle_g24_kb_type3+2
+	arg 3,loopcnt
+	call memcpy
+	fetch 2,mem_usb_kb_multikey+1
+	ncall dongle_g24_kb_mul_enable_blank_data_forcibly,blank//get multikey data
+	fetch 2,mem_usb_kb_multikey+1
+	call dongle_g24_kb_mul_disable_blank_data_forcibly,blank
+	fetch 3,mem_usb_kb_multikey
+	store 3,mem_dg_kb_multikey_sta_data
+	fetcht 3,mem_dg_kb_multikey_last_data
+	isub temp,null
+	ncall p_dongle_usb_tx_multikey_data,zero
+	fetch 3,mem_dg_kb_multikey_sta_data
+	store 3,mem_dg_kb_multikey_last_data
+	fetch 1,p_dongle_usb_tx_multikey_data
+	rtn blank
+p_dongle_usb_tx_multikey_data:
+	jam USB_EP2_MULTIKEY,mem_usb_ep2_data
+	branch p_dongle_usb_tx_enable_ep2
 
 p_dongle_receive_kb_heart_info:
 	fetch 1,mem_dg_kb_ep2_ack_data_flag
