]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Updated personal keymaps, fixed Let's Split default keymap, updated JJ40 README ...
authorKenneth Aloysius <krusli@users.noreply.github.com>
Thu, 19 Apr 2018 16:28:55 +0000 (02:28 +1000)
committerDrashna Jaelre <drashna@live.com>
Thu, 19 Apr 2018 16:28:55 +0000 (09:28 -0700)
* Add M6-A keymap

* Update XD60 keymap

* Update XD60 keymap readme

* Update JJ40 and Let's Split keymaps

* Add readme for M6-A

* Fix typo, update JJ40 README

* Update jj40 readme

* Cleanup jj40 keymap

* Revert Let's Split QWERTY layer to default before #2010

* Update numpad layers

* Fix: Let's Split keymap getting stuck mods due to having keycodes assigned on the Raise layer

* Keep ASCII art consistent with keymap

18 files changed:
keyboards/converter/ibm_terminal/matrix.c
keyboards/four_banger/keymaps/default/keymap.c
keyboards/jj40/README.md
keyboards/jj40/keymaps/krusli/config.h
keyboards/jj40/keymaps/krusli/keymap.c
keyboards/jj40/keymaps/krusli/readme.md
keyboards/jj40/keymaps/krusli/rules.mk
keyboards/lets_split/keymaps/default/keymap.c
keyboards/lets_split/keymaps/krusli/keymap.c [new file with mode: 0644]
keyboards/lets_split/keymaps/krusli/readme.md [new file with mode: 0644]
keyboards/ps2avrGB/program
keyboards/rama/m6_a/keymaps/krusli/README.md [new file with mode: 0644]
keyboards/rama/m6_a/keymaps/krusli/keymap.c [new file with mode: 0644]
keyboards/sweet16/keymaps/default/keymap.c
keyboards/xd60/keymaps/krusli/HHKB-like.txt [deleted file]
keyboards/xd60/keymaps/krusli/keymap.c
keyboards/xd60/keymaps/krusli/readme.md
util/atmega32a_program.py

index 9d717b61f536fd2cf114c0ffb6a2ce1f1b2b50e3..caa0a38051052ff59d97d6e0701e17219a7b2016 100644 (file)
@@ -108,7 +108,7 @@ uint8_t matrix_scan(void)
                 state = RESET;
             }
             break;
-        // after reset receive keyboad ID(2 bytes)
+        // after reset receive keyboard ID(2 bytes)
         case KBD_ID0:
             if (code) {
                 state = KBD_ID1;
index 245155381647012494a46121d478bf98a2ae862b..6c5f7c8a55f8bf7aef9959dc711b2236eaadda04 100644 (file)
@@ -6,7 +6,7 @@ enum custom_keycodes {
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     LAYOUT_ortho_2x2(
-        KC_1, KC_U, 
+        KC_1, KC_U,
         KC_P, UP_URL
     ),
 };
@@ -15,10 +15,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     switch (keycode) {
         case UP_URL:
             if (record->event.pressed) {
-                SEND_STRING("http://1upkeyboads.com");
+                SEND_STRING("http://1upkeyboards.com");
             }
             return false;
             break;
     }
     return true;
-}
\ No newline at end of file
+}
index 563f5788e31821006c3d4455cc8a7980f83a1df9..1b47ab816253a408a83776fe20eadffde10e1870 100644 (file)
@@ -18,13 +18,24 @@ Note that this is a complete replacement for the firmware, so you won't be
 using Bootmapper Client to change any keyboard settings, since not all the
 USB report options are supported.
 
-In addition you may need the AVR toolchain and `bootloadHID` for flashing:
+In addition you may need the AVR toolchain and `bootloadHID` ([GitHub repo](https://github.com/whiteneon/bootloadHID)) for flashing:
 
+For macOS:
 ```
 $ brew cask install crosspack-avr
 $ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
 ```
 
+For Linux:
+```
+$ sudo apt install libusb-dev
+$ wget https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz
+$ tar -xzf bootloadHID.2012-12-08.tar.gz
+$ cd bootloadHID.2012-12-08/commandline
+$ make
+$ sudo cp bootloadHID /usr/bin
+```
+
 In order to use the `./program` script, which can reboot the board into
 the bootloader, you'll need Python 2 with PyUSB installed:
 
@@ -32,7 +43,7 @@ the bootloader, you'll need Python 2 with PyUSB installed:
 $ pip install pyusb
 ```
 
-If you prefer, you can just build it and flash the firmware directly with
+If you prefer (or are having issues with a `program` flash), you can just build it (`make jj40:<keymap-name>` and flash the firmware (`.hex` file) directly with
 `bootloadHID` if you boot the board while holding down `Backspace` (`Top Right Key`) to keep it
 in the bootloader:
 
index 52aaa8f24dce2b9250499e1d3c13f357cad86ed4..6d98a37a67825afae72922ddce7e2736074f718b 100644 (file)
@@ -4,6 +4,6 @@
 #include "../../config.h"
 
 #define PREVENT_STUCK_MODIFIERS
-#define TAPPING_TERM 300
+// #define TAPPING_TERM 300
 
 #endif
index df692cc484f4c63ded590c5def60eeb26e096b53..2e6e9a76e7d00fa2cff53fb4532b272a778b8608 100644 (file)
@@ -4,6 +4,7 @@
 #define _QWERTY 0
 #define _LOWER  1
 #define _RAISE  2
+#define _NUMPAD 3
 
 enum custom_keycodes {
   QWERTY = SAFE_RANGE,
@@ -15,66 +16,84 @@ void matrix_scan_user(void) {
   // runs at every matrix scan.
 }
 
-enum {
-  TD_H_E = 0
-};
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-  [TD_H_E] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END)
-};
+// enum {
+//   TD_H_E = 0
+// };
+//
+// qk_tap_dance_action_t tap_dance_actions[] = {
+//   [TD_H_E] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END)
+// };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      | Ctrl | GUI  | Alt  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_QWERTY] = KEYMAP( \
-  KC_TAB,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
-  KC_ESC,     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
-  KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
-  TD(TD_H_E), KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER),  KC_SPC,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
-),
+  /* Qwerty
+   * ,-----------------------------------------------------------------------------------.
+   * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+   * |------+------+------+------+------+-------------+------+------+------+------+------|
+   * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+   * |------+------+------+------+------+------|------+------+------+------+------+------|
+   * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+   * |------+------+------+------+------+------+------+------+------+------+------+------|
+   * |      | Ctrl | GUI  | Alt  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
+   * `-----------------------------------------------------------------------------------'
+   */
+  [_QWERTY] = KEYMAP( \
+    KC_TAB,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+    KC_ESC,     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+    KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
+    TO(_NUMPAD),KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER),  KC_SPC,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+  ),
+
+  /* Lower
+   * ,-----------------------------------------------------------------------------------.
+   * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+   * |------+------+------+------+------+-------------+------+------+------+------+------|
+   * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |     |    \  |  |   |
+   * |------+------+------+------+------+------|------+------+------+------+------+------|
+   * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | RGB  | RGB  | RGB  | RGB  |Enter |
+   * |------+------+------+------+------+------+------+------+------+------+------+------|
+   * |      | RGB  | RGB  | RGB  |             |      | Next | Vol- | Vol+ | Play |      |
+   * `-----------------------------------------------------------------------------------'
+   */
+  [_LOWER] = KEYMAP( \
+    KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+    KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+    _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, _______, \
+    _______, RGB_SAD, RGB_SAI, RGB_HUI, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+  ),
 
-/* Lower
- * ,-----------------------------------------------------------------------------------.
* |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |     |    \  |  |   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
* |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |      |      |      |      |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
* |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
-[_LOWER] = KEYMAP( \
-  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
-  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
-  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______,_______, _______, _______, \
-  BL_TOGG, BL_STEP, BL_BRTG, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-),
+  /* Raise
  * ,-----------------------------------------------------------------------------------.
  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | Home | End  | PgUp | PgDn |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |      | Prev | Play | Next |      |             |      | Next | Vol- | Vol+ | Play |
  * `-----------------------------------------------------------------------------------'
  */
+  [_RAISE] = KEYMAP( \
+    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+    KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
+    _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_HOME, KC_END,  KC_PGUP, KC_PGDN, _______, \
+    _______, KC_MRWD, KC_MPLY, KC_MNXT, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+  ),
 
-/* Raise
- * ,-----------------------------------------------------------------------------------.
* |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
* |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | RGB  | RGB  | RGB  | RGB  |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
* | RGB  | RGB  | RGB  | RGB  |      |             |      | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
-[_RAISE] = KEYMAP( \
-  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
-  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
-  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, _______, \
-  RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
-)
+  /* Numpad
  * ,-----------------------------------------------------------------------------------.
  * | Esc  |  7   |  8   |  9   |  *   |  /   |      |      |      |      |      |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | <--  |  4   |  5   |  6   |  +   |  -   |      |      |      |      |      |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * |      |  1   |  2   |  3   |Enter |Enter |      |      |      |      |      |      |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
  * |Qwerty|  0   |  .   |  .   |Enter |Enter        |      |      |      |      |      |
  * `-----------------------------------------------------------------------------------'
  */
+  [_NUMPAD] = KEYMAP( \
+    KC_ESC,     KC_P7,   KC_P8,   KC_P9,   KC_PAST, KC_PSLS, _______, _______, _______, _______, _______, _______, \
+    KC_BSPC,    KC_P4,   KC_P5,   KC_P6,   KC_PPLS, KC_PMNS, _______, _______, _______, _______, _______, _______, \
+    _______,    KC_P1,   KC_P2,   KC_P3,   KC_PENT, KC_PENT, _______, _______, _______, _______, _______, _______, \
+    TO(_QWERTY),KC_P0,   KC_PDOT, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______ \
+  )
 };
index 75a84d0e677f6fafe7ff92003a2baa546f5ad545..ed760e8a61c67a4da5f893ed2b6c603da0b34ad0 100644 (file)
@@ -1,2 +1,4 @@
 # krusli
-Default JJ40 keymap, adapted with RGB underglow support. GUI and LAlt is also swapped.
+JJ40 keymap based off the default Planck layout with a numpad layer and with RGB underglow controls.
+
+GUI and LAlt is also swapped to their standard positions.
index e5ddcae8d92774f4e5e8ef861d32b27f16b1c6a7..5c6bb684e5212a8134eb995839afa0f18334cb5f 100644 (file)
@@ -1 +1 @@
-TAP_DANCE_ENABLE = yes
+TAP_DANCE_ENABLE = yes
index 0de3a1390e228f98e1506359c85f6f21bcdcec72..7cc9e53c023c3f96b69689a59813d5015e84844a 100644 (file)
@@ -29,18 +29,18 @@ enum custom_keycodes {
 #define XXXXXXX KC_NO
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
 /* Qwerty
  * ,-----------------------------------------------------------------------------------.
  * | Esc  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  '   |
+ * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | GUI  |  Alt |Adjust|Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | Left | Down |  Up  |Right |
  * `-----------------------------------------------------------------------------------'
  */
+
 [_QWERTY] = LAYOUT( \
   KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
   KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
diff --git a/keyboards/lets_split/keymaps/krusli/keymap.c b/keyboards/lets_split/keymaps/krusli/keymap.c
new file mode 100644 (file)
index 0000000..177aa71
--- /dev/null
@@ -0,0 +1,239 @@
+#include "lets_split.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _NUMPAD 5
+#define _ADJUST 16
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  ADJUST,
+  NUMPAD
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  '   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Numpad| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = KEYMAP( \
+  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
+  NUMPAD,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  '   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = KEYMAP( \
+  KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
+  KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   '  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = KEYMAP( \
+  KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
+  KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
+  KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Del  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = KEYMAP( \
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | Home | End  | PgUp | PgDn |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = KEYMAP( \
+  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_HOME, KC_END,  KC_PGUP, KC_PGDN, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Numpad
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc  |  7   |  8   |  9   |  *   |  /   |      |      |      |      |      |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | <--  |  4   |  5   |  6   |  +   |  -   |      |      |      |      |      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  1   |  2   |  3   |Enter |Enter |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Qwerty|  0   |  .   |  .   |Enter |Enter        |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUMPAD] = KEYMAP( \
+  KC_ESC,  KC_P7,   KC_P8,   KC_P9,   KC_PAST, KC_PSLS, _______, _______, _______, _______, _______, _______, \
+  KC_BSPC, KC_P4,   KC_P5,   KC_P6,   KC_PPLS, KC_PMNS, _______, _______, _______, _______, _______, _______, \
+  _______, KC_P1,   KC_P2,   KC_P3,   KC_PENT, KC_PENT, _______, _______, _______, _______, _______, _______, \
+  QWERTY,  KC_P0,   KC_PDOT, KC_PDOT, KC_PENT, KC_PENT, _______, _______, _______, _______, _______, _______ \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |             |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] =  KEYMAP( \
+  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+  _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_SONG(tone_qwerty);
+        #endif
+        persistent_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case NUMPAD:
+      if (record->event.pressed)
+        persistent_default_layer_set(1UL<<_NUMPAD);
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_SONG(tone_colemak);
+        #endif
+        persistent_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_SONG(tone_dvorak);
+        #endif
+        persistent_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
diff --git a/keyboards/lets_split/keymaps/krusli/readme.md b/keyboards/lets_split/keymaps/krusli/readme.md
new file mode 100644 (file)
index 0000000..175ef3c
--- /dev/null
@@ -0,0 +1,2 @@
+# krusli
+Let's Split keymap based off the default Planck layout with a numpad layer.
index 298e645477de80090e561a00c85a86bccb55d3f8..b777b911066ba188b8c2df9cf033eeb78a15d847 100755 (executable)
@@ -73,7 +73,7 @@ if len(sys.argv) < 2:
 kb = checkForKeyboardInNormalMode()
 
 if kb is not None:
-    print('Found a keyboad in normal mode. Attempting to send it to bootloader mode ...', end='')
+    print('Found a keyboard in normal mode. Attempting to send it to bootloader mode ...', end='')
     sendDeviceToBootloaderMode(kb)
     print(' done.')
     print("Hint: If your keyboard can't be set to bootloader mode automatically, plug it in while pressing the bootloader key to do so manually.")
diff --git a/keyboards/rama/m6_a/keymaps/krusli/README.md b/keyboards/rama/m6_a/keymaps/krusli/README.md
new file mode 100644 (file)
index 0000000..771b47a
--- /dev/null
@@ -0,0 +1,26 @@
+# krusli's RAMA M6-A Layout
+
+Personal keymap for the RAMA M6-A.
+
+Keymap was from my own port for the M6-A before official support was added, thus the backlighting code is not ported yet from the official default keymap.
+
+Top-right button acts as a "toggle between layers" button. Layer 0 -> Layer 1 -> Layer 2 -> Layer 0 -> ...
+
+- Layer 0: Git and Discord shortcuts
+- Layer 1: Media playback and volume controls
+- Layer 2: Osu! gamepad layer
+
+## Helpful alternative keymaps (WIP)
+### Arrow cluster
+Use [karabiner-elements](https://github.com/tekezo/Karabiner-Elements) on macOS so that the state of the modifiers (shift, caps lock) are synchronised between keyboards (for shift + arrow key text selection, for example). It's also a handy tool for customising keyboard behaviour on a Mac.
+
+On Windows/Linux modifier state should be shared between all keyboards by default.
+
+Installation: install [homebrew](https://brew.sh) and run `brew install Caskroom/cask/karabiner-elements`.
+
+```C
+KEYMAP(
+  KC_ESC,   KC_UP,   TO(_LAYER0),
+  KC_LEFT,  KC_DOWN, KC_RIGHT
+)
+```
diff --git a/keyboards/rama/m6_a/keymaps/krusli/keymap.c b/keyboards/rama/m6_a/keymaps/krusli/keymap.c
new file mode 100644 (file)
index 0000000..679d0bc
--- /dev/null
@@ -0,0 +1,72 @@
+#include "../../m6_a.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layers {
+  _LAYER0,
+  _LAYER1,
+  _LAYER2
+};
+
+enum custom_keycodes {
+  GIT_ADD = SAFE_RANGE,
+  GIT_COMMIT,
+  GIT_PUSH,
+  MUTE,
+  DEAFEN
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+       if (record->event.pressed) {
+               switch(keycode) {
+                       case GIT_ADD:
+                               SEND_STRING("git add ."SS_TAP(X_ENTER));
+        break;
+      case GIT_COMMIT:
+        SEND_STRING("git commit -m "SS_DOWN(X_LSHIFT)SS_TAP(X_QUOTE)SS_UP(X_LSHIFT));
+        break;
+      case GIT_PUSH:
+        SEND_STRING("git push"SS_TAP(X_ENTER));
+        break;
+      case MUTE:
+        SEND_STRING(SS_LGUI(SS_LSFT("M")));
+        break;
+      case DEAFEN:
+        SEND_STRING(SS_LGUI(SS_LSFT("D")));
+        break;
+      return false;
+               }
+       }
+       return true;
+};
+
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_LAYER0] = KEYMAP(
+    MUTE,    DEAFEN,     TO(_LAYER1),
+    GIT_ADD, GIT_COMMIT, GIT_PUSH
+  ),
+  [_LAYER1] = KEYMAP(
+    KC_VOLD, KC_VOLU, TO(_LAYER2),
+    KC_MRWD, KC_MPLY, KC_MNXT
+  ),
+  [_LAYER2] = KEYMAP(
+    KC_ESC,  KC_UP,   TO(_LAYER0),
+    KC_Z,    KC_X,    KC_SPACE
+  )
+};
+
+void matrix_init_user(void) {
+  #ifdef BACKLIGHT_ENABLE
+    backlight_level(0);
+  #endif
+}
index 7fa8615438a7a7baee52c350bc08708bf6a36ede..2ddf8acb41071b224a1c87a76336f7a47213265e 100644 (file)
@@ -17,7 +17,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     switch (keycode) {
         case UP_URL:
             if (record->event.pressed) {
-                SEND_STRING("http://1upkeyboads.com");
+                SEND_STRING("http://1upkeyboards.com");
             }
             return false;
             break;
diff --git a/keyboards/xd60/keymaps/krusli/HHKB-like.txt b/keyboards/xd60/keymaps/krusli/HHKB-like.txt
deleted file mode 100644 (file)
index e69de29..0000000
index 95a3e3fadf49f1fbbc02e28b05d036aa09a9407d..cf3edff4035c54bdb9199573b4e2a1a4cdc5f2ab 100644 (file)
@@ -1,40 +1,26 @@
 #include "xd60.h"
 #include "action_layer.h"
 
-/* HHKB-like layout for standard 60% layout with split RShift and split backspace */
+#define _______ KC_TRNS
 
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+#define _BASE 0
+#define _FN   1
 
-  // 0: Base Layer
-  LAYOUT_ALL(
-      KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,    KC_MINS,  KC_EQL,  KC_BSLS,  KC_GRV,    \
-      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,    KC_P,    KC_LBRC,  KC_RBRC,           KC_BSPC,   \
-      KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT,  KC_NO,             KC_ENT,    \
-      KC_LSFT, KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH,  KC_RSFT, KC_RSFT,  F(0),      \
-      KC_LCTL, KC_LALT, KC_LGUI,                          KC_SPC,                          KC_RGUI, KC_RALT,  F(0),    KC_RCTL,  KC_RCTL),
-
-  // 1: Function Layer
-  /* Layer HHKB: HHKB mode (HHKB Fn)
-  |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-  | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
-  |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-  | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
-  |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-  |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
-  |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-  |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
-  |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
-             |------+------+----------------------+------+------+
-             | **** | **** | ******************** | **** | **** |
-             |------+------+----------------------+------+------+
- */
-  LAYOUT_ALL(
-      RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,   KC_F12,  KC_F13,   KC_F14,    \
-      KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP,    KC_TRNS, KC_BSPC,             \
-      KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,  KC_NO,             KC_ENT,    \
-      KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END,  KC_PGDN, KC_DOWN,  KC_TRNS, KC_TRNS,  KC_TRNS,   \
-      KC_TRNS, KC_TRNS, KC_TRNS,                          KC_TRNS,                              KC_TRNS, KC_TRNS,  F(0),    KC_TRNS,  KC_TRNS),
+/* HHKB-like layout for standard 60% layout with split RShift */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_BASE] = KEYMAP(
+      KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,  _______,    \
+      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,              \
+      KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT, KC_NO,        KC_ENT,          \
+      KC_LSFT, KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT,  F(0),       \
+      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RALT, KC_RGUI, _______, KC_APP,  KC_RCTL),
+
+  [_FN] = KEYMAP(
+      KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_DEL,   _______,      \
+      RESET,   RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP,   _______, KC_INS,                 \
+      _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_NO,        _______            \
+      _______, KC_NO,   _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END,  KC_PGDN, KC_DOWN, _______, _______,  _______,      \
+      _______, _______, _______,                          _______,                              _______, _______, _______, _______, _______),
 };
 
 // Custom Actions
index aefb23cca3b5747b1397634bbdd9df8595cf29a6..34f46e026ca2ffe19a79ef539df650a4e507709f 100644 (file)
@@ -1,7 +1,7 @@
 # krusli's Keymap for XIUDI's 60% XD60 PCB
 
 ## Additional Notes
-Keymap for the XD60 with 2.25u left shift and split backspace. HHKB-like function layer.
+Keymap for the XD60 (ANSI) with 2.25u left shift, split right shift. HHKB-like function layer.
 
 ## Build
 To build this keymap, simply run `make xd60:krusli` on the top-level directory for QMK.
index 298e645477de80090e561a00c85a86bccb55d3f8..b777b911066ba188b8c2df9cf033eeb78a15d847 100755 (executable)
@@ -73,7 +73,7 @@ if len(sys.argv) < 2:
 kb = checkForKeyboardInNormalMode()
 
 if kb is not None:
-    print('Found a keyboad in normal mode. Attempting to send it to bootloader mode ...', end='')
+    print('Found a keyboard in normal mode. Attempting to send it to bootloader mode ...', end='')
     sendDeviceToBootloaderMode(kb)
     print(' done.')
     print("Hint: If your keyboard can't be set to bootloader mode automatically, plug it in while pressing the bootloader key to do so manually.")