1- /* Copyright 2020 MATOBA Akihiro
1+ /* Copyright 2020,2021 MATOBA Akihiro
22 *
33 * This program is free software: you can redistribute it and/or modify
44 * it under the terms of the GNU General Public License as published by
@@ -73,3 +73,45 @@ void matrix_scan_user(void) {
7373 combo_pressed_flags = 0 ;
7474 }
7575}
76+
77+ #define DEBOUNCE 5
78+
79+ void bootmagic_lite (void ) {
80+ matrix_scan ();
81+ wait_ms (DEBOUNCE * 2 );
82+ matrix_scan ();
83+
84+ int row0 = matrix_get_row (0 );
85+ // int row1 = matrix_get_row(1);
86+ int row2 = matrix_get_row (2 );
87+ int row3 = matrix_get_row (3 );
88+
89+ // row3+col5(K105) is pressed, enter bootmagic
90+ if (!(row3 & (1 << 5 )))
91+ return ;
92+
93+ // ported from old adda5d77707 firmware\qmk_firmware\tmk_core\common\bootmagic.c
94+ /* default layer */
95+ uint8_t default_layer = 0 ;
96+ if (row0 & (1 << 1 )) { // row0+col1(K001) is pressed, set default layer as 0
97+ default_layer |= (1 << 0 );
98+ }
99+ if (row0 & (1 << 2 )) { // row1+col2(K102) is pressed, set default layer as 1
100+ default_layer |= (1 << 1 );
101+ }
102+ if (row0 & (1 << 0 )) { // row0+col0(K000) is pressed, set default layer as 2
103+ default_layer |= (1 << 2 );
104+ }
105+ if (default_layer ) {
106+ eeconfig_update_default_layer (default_layer );
107+ default_layer_set ((layer_state_t )default_layer );
108+ } else {
109+ default_layer = eeconfig_read_default_layer ();
110+ default_layer_set ((layer_state_t )default_layer );
111+ }
112+
113+ // Jump to bootloader.
114+ if (row2 & (1 << 7 )) { // row2+col7(K007) is pressed, Jump to bootloader
115+ bootloader_jump ();
116+ }
117+ }
0 commit comments