Browse Source

Add bootmagic salt key to avoid accidental configuration

tmk 12 years ago
parent
commit
05225dd9d8
4 changed files with 20 additions and 1 deletions
  1. 2 0
      README.md
  2. 9 1
      common/bootmagic.c
  3. 6 0
      common/bootmagic.h
  4. 3 0
      keyboard/hhkb/config.h

+ 2 - 0
README.md

@@ -124,6 +124,8 @@ Following commands can be also executed with `Magic` + key. In console mode `Mag
 Boot Magic are executed during boot up time. Press Magic key below then pulgin keyboard cable.
 Boot Magic are executed during boot up time. Press Magic key below then pulgin keyboard cable.
 Note that you must use keys of **Layer 0** as Magic keys. These settings are stored in EEPROM so that retain your configure over power cycles.
 Note that you must use keys of **Layer 0** as Magic keys. These settings are stored in EEPROM so that retain your configure over power cycles.
 
 
+To avoid configuring accidentally additive salt key `KC_SPACE` also needs to be pressed along with the following configuration keys. The salt key is configurable in `config.h`. See [common/bootmagic.h](common/bootmagic.h).
+
 #### General
 #### General
 - Skip reading EEPROM to start with default configuration(`ESC`)
 - Skip reading EEPROM to start with default configuration(`ESC`)
 - Clear configuration stored in EEPROM to reset configuration(`Backspace`)
 - Clear configuration stored in EEPROM to reset configuration(`Backspace`)

+ 9 - 1
common/bootmagic.c

@@ -5,6 +5,7 @@
 #include "bootloader.h"
 #include "bootloader.h"
 #include "debug.h"
 #include "debug.h"
 #include "keymap.h"
 #include "keymap.h"
+#include "action_layer.h"
 #include "eeconfig.h"
 #include "eeconfig.h"
 #include "bootmagic.h"
 #include "bootmagic.h"
 
 
@@ -94,7 +95,7 @@ void bootmagic(void)
     }
     }
 }
 }
 
 
-bool bootmagic_scan_keycode(uint8_t keycode)
+static bool scan_keycode(uint8_t keycode)
 {
 {
     for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
     for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
         matrix_row_t matrix_row = matrix_get_row(r);
         matrix_row_t matrix_row = matrix_get_row(r);
@@ -108,3 +109,10 @@ bool bootmagic_scan_keycode(uint8_t keycode)
     }
     }
     return false;
     return false;
 }
 }
+
+bool bootmagic_scan_keycode(uint8_t keycode)
+{
+    if (!scan_keycode(BOOTMAGIC_KEY_SALT)) return false;
+
+    return scan_keycode(keycode);
+}

+ 6 - 0
common/bootmagic.h

@@ -2,6 +2,12 @@
 #define BOOTMAGIC_H
 #define BOOTMAGIC_H
 
 
 
 
+/* bootmagic salt key */
+#ifndef BOOTMAGIC_KEY_SALT
+#define BOOTMAGIC_KEY_SALT              KC_SPACE
+#endif
+
+/* skip bootmagic and eeconfig */
 #ifndef BOOTMAGIC_KEY_SKIP
 #ifndef BOOTMAGIC_KEY_SKIP
 #define BOOTMAGIC_KEY_SKIP              KC_ESC
 #define BOOTMAGIC_KEY_SKIP              KC_ESC
 #endif
 #endif

+ 3 - 0
keyboard/hhkb/config.h

@@ -59,6 +59,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define TAPPING_TOGGLE  5
 #define TAPPING_TOGGLE  5
 
 
 
 
+/* Boot Magic salt key: Space */
+#define BOOTMAGIC_KEY_SALT      KC_FN6
+
 /*
 /*
  * Feature disable options
  * Feature disable options
  *  These options are also useful to firmware size reduction.
  *  These options are also useful to firmware size reduction.