[Keymap] laurentlaurent's preonic keymap (#6977)
authorLaurent Lao <32573725+laurentlaurent@users.noreply.github.com>
Sat, 12 Oct 2019 04:35:53 +0000 (00:35 -0400)
committerDrashna Jaelre <drashna@live.com>
Sat, 12 Oct 2019 04:35:53 +0000 (21:35 -0700)
* Removed ugfx binary because of antivirus

* Created laurent's keymap

* Made QWERTY Mac and QWERTY Windows

* Rev 1.0, added _PUNC, _NAV, _EXTRA

* REV 1.1, Dynamic macros start/stop now plays a sound, Lower acts like backspace on tap

* Formatting fixes

* Added Intellisense macro, fixed formatting

* Improved ergonomics/muscle mem on punctuation lay

* Added Raise Tap to Backspace

* Mirrored Ergodox, added One-Handed

* Added layers in README.md, added Caps lock, Scroll lock

* Moved Caps to better location

* Added ErgoDox link

* Edit Readme.md with more layer switching information

* Modified _PUNC for muscle memory

* Reverted .gitignore and .vscode settings.json to reflect master

* Improved formatting according to PR review

* QMK_KEYBOARD_H def for Intellisense fixed->rev3.h

* .gitignore diff fix

* Fixing settings.json diff

* Update settings.json

* Update keyboards/preonic/keymaps/laurentlaurent/keymap.c

Co-Authored-By: fauxpark <fauxpark@gmail.com>
keyboards/preonic/keymaps/laurentlaurent/config.h [new file with mode: 0644]
keyboards/preonic/keymaps/laurentlaurent/keymap.c [new file with mode: 0644]
keyboards/preonic/keymaps/laurentlaurent/readme.md [new file with mode: 0644]
keyboards/preonic/keymaps/laurentlaurent/rules.mk [new file with mode: 0644]
keyboards/preonic/keymaps/laurentlaurent/templates.c [new file with mode: 0644]

diff --git a/keyboards/preonic/keymaps/laurentlaurent/config.h b/keyboards/preonic/keymaps/laurentlaurent/config.h
new file mode 100644 (file)
index 0000000..36944e9
--- /dev/null
@@ -0,0 +1,41 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+    #define STARTUP_SONG SONG(PREONIC_SOUND)
+    // #define STARTUP_SONG SONG(NO_SOUND)
+
+    #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+                                  SONG(COLEMAK_SOUND), \
+                                  SONG(DVORAK_SOUND) \
+                                }
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Fix Home Row mod keys
+#define IGNORE_MOD_TAP_INTERRUPT
+//#define RETRO_TAPPING
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/laurentlaurent/keymap.c b/keyboards/preonic/keymaps/laurentlaurent/keymap.c
new file mode 100644 (file)
index 0000000..c113bca
--- /dev/null
@@ -0,0 +1,603 @@
+/* Laurent's Preonic Layout
+ */
+
+// For IntelliSense
+    #ifdef __INTELLISENSE__
+        #include "../../rev3/config.h"
+        #include "../../rev3/rev3.h"
+        enum dynamic_macro_keycodes {
+            DYN_REC_START1 = DYNAMIC_MACRO_RANGE,
+            DYN_REC_START2,
+            DYN_REC_STOP,
+            DYN_MACRO_PLAY1,
+            DYN_MACRO_PLAY2,
+        };
+        #define QMK_KEYBOARD_H "rev3.h"
+    #endif
+
+    #include QMK_KEYBOARD_H
+    #include "muse.h"
+
+// ==== These keys allows usage of the home row as modifiers (when held) ====
+// Very bad for gaming, switch to gaming layout
+
+    // For _QWERTY_MAC
+        // S and L into Ctrl
+    #define LCT_S LCTL_T(KC_S)
+    #define LCT_L LCTL_T(KC_L)
+        // F, J and Z into CMD
+    #define LWN_F LGUI_T(KC_F)
+    #define LWN_Z LGUI_T(KC_Z)
+    #define LWN_J LGUI_T(KC_J)
+
+    // For _QWERTY_WIN
+        // S and L into WIN
+    #define LWN_S LGUI_T(KC_S)
+    #define LWN_L LGUI_T(KC_L)
+        // F, J and Z into Ctrl
+    #define LCT_F LCTL_T(KC_F)
+    #define LCT_Z LCTL_T(KC_Z)
+    #define LCT_J LCTL_T(KC_J)
+
+// ============================================================================
+
+// ==== For All ====
+
+    // Layout helper
+        #define __LYB__ KC_TRANSPARENT
+
+    // Mod Tap
+            // Changing K and D into Alt
+        #define LAT_D LALT_T(KC_D)
+        #define LAT_K LALT_T(KC_K)
+            // Equal into Ctrl+Alt+Cmd
+        #define LCAGEQ LCAG_T(KC_EQUAL)
+            // Esc into Meh
+        #define LMHESC MEH_T(KC_ESC)
+            // Space into Shift
+        #define LSHFSP SFT_T(KC_SPACE)
+            // Backspace into Shift
+        #define LSHFBK SFT_T(KC_BSPACE)
+
+    // Switching layers
+        #define LTO_BS TO(_QWERTY_MAC)          // Go to Base Layer
+            // Go to _NAV
+        #define LLY_SC LT(_NAV, KC_SCLN)        // From ;
+        #define LLY_A LT(_NAV, KC_A)            // From A
+            // Go to _PUNC
+        #define LLY_TB LT(_PUNC, KC_TAB)        // From Tab
+        #define LLY_BK LT(_PUNC, KC_BSPACE)     // From Backspace
+        #define LLY_BS LT(_PUNC, KC_BSLASH)     // From Backslash
+            // Others
+        #define LLY_GR LT(_ONEHD, KC_GRV)       // Go to _ONEHD from `
+        #define LLY_ET LT(_EXTRA, KC_ENT)       // Go to _EXTRA from Enter
+        #define LLSWIT MO(_LYSWT)               // Layer Switcher
+        #define LLY_DL LT(_NUM, KC_DEL)         // Go to _NUM from Delete
+
+    // Shortcuts
+        // Mac Windows Resizing
+        #define LMW_L3 LCA(KC_E)                // Resize to 2/3 and move to the left
+        #define LMW_FS LCA(KC_ENTER)            // Resize to full screen
+        #define LMW_R3 LCA(KC_T)                // Resize to 2/3 and move to the right
+        #define LMW_L1 LCA(KC_D)                // Resize to 1/3 and move to the left
+        #define LMW_M1 LCA(KC_F)                // Resize to 1/3 and move to middle
+        #define LMW_R1 LCA(KC_G)                // Resize to 1/3 and move to right
+        #define LMW_TL LCA(KC_U)                // Fit on Top Left corner
+        #define LMW_TR LCA(KC_I)                // Fit on Top Left corner
+        #define LMW_BL LCA(KC_J)                // Fit on Top Left corner
+        #define LMW_BR LCA(KC_K)                // Fit on Top Left corner
+        #define LMW_LT LCA(KC_LEFT)             // Resize to 1/2 horizontally and move to the left
+        #define LMW_BT LCA(KC_DOWN)             // Resize to 1/2 vertically and move to the bottom
+        #define LMW_TP LCA(KC_UP)               // Resize to 1/2 vertically and move to the top
+        #define LMW_RT LCA(KC_RIGHT)            // Resize to 1/2 horizontally and move to the right
+
+// ==== Audio ====
+    #ifdef AUDIO_ENABLE
+        #include "audio.h"
+        float tone_macro1_record[][2]     = SONG(CAPS_LOCK_ON_SOUND);
+        float tone_macro2_record[][2]     = SONG(SCROLL_LOCK_ON_SOUND);
+        float tone_macro_record_stop[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
+    #endif
+
+enum preonic_layers {
+    _QWERTY_MAC,
+    _QWERTY_WIN,
+    _GAMING,
+    _MUSIC,
+    _LOWER,
+    _RAISE,
+    _ADJUST,
+    _PUNC,
+    _EXTRA,
+    _NUM,
+    _NAV,
+    _ONEHD,
+    _LYSWT };
+
+enum preonic_keycodes {
+    QWERTY = SAFE_RANGE,
+    QWWIN,
+    // COLEMAK,
+    // DVORAK,
+    LOWER,
+    RAISE,
+    BACKLIT,
+    DYNAMIC_MACRO_RANGE,
+};
+
+#include "dynamic_macro.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+    /* Qwerty for Mac
+     * ,-----------------------------------------------------------------------------------.
+     * | CAG= |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | LY|TB|   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | LY|\ |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | Hyper| LY|A | CT/S | AT/D | WN/F |   G  |   H  | WN/J | AT/K | CT/L | LY|; |  "   |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * | Shift| WN/Z |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Sh/Bk|
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | LY|` |ESCMEH| LY|DL|LW|Bkp|LY|Bkp| Shift/Space |LY|ENT|RS|Bkp|   [  |   ]  |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     * LY|`    -> To _NUM
+     * LY|;    -> To _NAV
+     * LY|A    -> To _NAV
+     * LY|TB   -> To _PUNC
+     * LY|\    -> To _PUNC
+     * LY|Bkp  -> To _PUNC
+     * LY|ENT  -> To_EXTRA
+     */
+    [_QWERTY_MAC] = LAYOUT_preonic_grid( \
+        LCAGEQ,            KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINUS,
+        LLY_TB,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    LLY_BS,
+        KC_HYPR,    LLY_A,      LCT_S,   LAT_D,   LWN_F,   KC_G,    KC_H,    LWN_J,   LAT_K,   LCT_L,   LLY_SC,  KC_QUOT,
+        KC_LSFT,    LWN_Z,   KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, LSHFBK,
+        LLY_GR,     LMHESC,  LLY_DL,  LOWER,   LLY_BK,  LSHFSP,  LSHFSP,  LLY_ET,  RAISE,   KC_LBRC, KC_RBRC, LLSWIT
+    ),
+
+    /* Qwerty for Windows
+     * ,-----------------------------------------------------------------------------------.
+     * | CAG= |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | LY|TB|   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | LY|\ |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | Hyper| LY|A | WN/S | AT/D | CT/F |   G  |   H  | CT/J | AT/K | WN/L | LY/; |  "   |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * | Shift| CT/Z |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Sh/Bk|
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | LY|` |MH/ESC| LY|DL|LW|Bkp|LY|Bk |    Space    |LY|ENT|RS|Bkp|   [  |   ]  |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_QWERTY_WIN] = LAYOUT_preonic_grid( \
+        LCAGEQ,            KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINUS,
+        LLY_TB,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    LLY_BS,
+        KC_HYPR,    LLY_A,      LWN_S,   LAT_D,   LCT_F,   KC_G,    KC_H,    LCT_J,   LAT_K,   LWN_L,   LLY_SC,  KC_QUOT,
+        KC_LSFT,    LCT_Z,   KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, LSHFBK,
+        LLY_GR,     LMHESC,  LLY_DL,  LOWER,   LLY_BK,  LSHFSP,  LSHFSP,  LLY_ET,  RAISE,   KC_LBRC, KC_RBRC, LLSWIT
+    ),
+
+    /* Gaming
+     * ,-----------------------------------------------------------------------------------.
+     * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  \   |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | Ctrl |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  | LY|; |  "   |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |  =   |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | Ctrl | ESC  |  Alt |LW|Bkp|LY|Bk |    Space    |LY|ENT|RS|Bkp|   [  |   ]  |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_GAMING] = LAYOUT_preonic_grid( \
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINUS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLASH,
+        KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    LLY_SC,  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_EQUAL,
+        KC_LCTL, KC_ESC,  KC_LALT, LOWER,   LLY_BK,  KC_SPC,  KC_SPC,  LLY_ET,  RAISE,   KC_LBRC, KC_RBRC, LLSWIT
+    ),
+
+    /* Music Layer (Switch to this layer if want to use music mode)
+     * ,-----------------------------------------------------------------------------------.
+     * | Esc  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * |      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | CTRL | ALT  | CMD  |      | XXXX |    Space    | XXXX |      | XXXX | XXXX |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_MUSIC] = LAYOUT_preonic_grid( \
+        KC_ESC ,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        KC_LCTL,  KC_LALT,  KC_LGUI,  _______,  XXXXXXX,  KC_SPC,   KC_SPC,   XXXXXXX,  _______,  XXXXXXX,  XXXXXXX,  LLSWIT
+    ),
+
+    /* Lower
+     * ,-----------------------------------------------------------------------------------.
+     * | ESC  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 | F11  |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | Tab  | Home |  Up  | End  | PGUP | XXXX | XXXX | XXXX | PrSc | Home | PGUP | Del  |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * |  "   | Left | Down | Right|PGDWN | XXXX | XXXX | XXXX | Pause| End  |PGDWN | F12  |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      | CTRL |  Alt |  CMD | XXXX | XXXX | XXXX | XXXX | Prev | Play | Next | INS  |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | CTRL |  Alt |  CMD | !!!! | Bksp |    Space    | Enter|      | Vol- | Vol+ |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_LOWER] = LAYOUT_preonic_grid( \
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,
+        KC_TAB,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_HOME, KC_PGUP,  KC_DEL,
+        KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, KC_END,  KC_PGDN,  KC_F12,
+        _______, KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT,  KC_INS,
+        KC_LCTL, KC_LALT, KC_LGUI, __LYB__, KC_BSPC, KC_SPC,  KC_SPC,  KC_ENT, _______, KC_VOLD, KC_VOLU,  LLSWIT\
+    ),
+
+    /* Raise
+     * ,-----------------------------------------------------------------------------------.
+     * | ESC  |  F1  |  F2  |  F3  |  F4  |  F5  | SCLK |   &  |   *  |   (  |   )  | Bksp |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | Tab  |  F7  |  F8  |  F9  |  F10 |  F11 | XXXX |   &  |   *  |   {  |   }  | Del  |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | Caps |  F1  |  F2  |  F3  |  F4  |  F5  | XXXX |   -  |   =  |   [  |   ]  | XXXX |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      |  F7  |  F8  |  F9  |  F10 |  F11 | XXXX |ISO # |ISO \ | MRC1 | MRC2 | MRSP |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | CTRL |  Alt |  CMD |      | Bksp |    Space    | Enter| !!!! | MPL1 | MPL2 |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_RAISE] = LAYOUT_preonic_grid( \
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  KC_SLCK,  KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+        KC_TAB,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10, XXXXXXX,  KC_AMPR, KC_ASTR, KC_LCBR, KC_RCBR, KC_DEL,
+        KC_CLCK, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15, XXXXXXX,  KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, XXXXXXX,
+        _______, KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, XXXXXXX,  KC_NUHS, KC_NUBS, DYN_REC_START1,   DYN_REC_START2, DYN_REC_STOP,
+        KC_LCTL, KC_LALT, KC_LGUI, _______, KC_BSPC, KC_SPC,  KC_SPC,  KC_ENT,  __LYB__, DYN_MACRO_PLAY1,  DYN_MACRO_PLAY2, LLSWIT
+    ),
+
+    /* Adjust (Lower + Raise)
+     * ,-----------------------------------------------------------------------------------.
+     * |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | Tab  | Reset|      |      |      |      |      |      |      |      |      | XXXX |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * |      |      |      |Aud on|AudOff|QWmac |QWwin |QWmac |QWin  |      |      |  F12 |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff|      |      |      |      |      |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * |      |      |      |      |      |             |      |      |      |      |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_ADJUST] = LAYOUT_preonic_grid( \
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,
+        KC_TAB,  RESET,   DEBUG,   _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, XXXXXXX,
+    /*_______, _______, MU_MOD,  AU_ON,   AU_OFF,  QWERTY,  QWWIN,      QWERTY,  COLEMAK, DVORAK,  _______, _______, \ Remove this if adding Colemak and Dvorak*/
+        _______, _______, MU_MOD,  AU_ON,   AU_OFF,  QWERTY,  QWWIN,   QWERTY,  QWWIN,   _______, _______, KC_F12,
+        _______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LLSWIT
+    ),
+
+    /* Punctuation Layer
+     * ,-----------------------------------------------------------------------------------.
+     * |  +   |  !   |  @   |  #   |  $   |  %   |  ^   |  &   |  *   |  (   |   )  |  _   |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | !!!! |  &   |  |   |  {   |   }  |  -   |  -   | XXXX | XXXX |  {   |   }  |  |(!)|
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * |  "   |  /   |  *   |  (   |   )  |  +   |  +   | XXXX | XXXX |  [   |   ]  |  "   |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      |  \   |  %   |  [   |   ]  |  =   |  =   | XXXX |   <  |  >   |   ?  | INS  |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * |  ~   |  _   |  ^   | Del  | !!!! |    Space    | Enter| XXXX |  [   |   ]  |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_PUNC] = LAYOUT_preonic_grid( \
+        KC_PLUS,  KC_EXLM,  KC_AT,    KC_HASH,  KC_DLR,   KC_PERC,  KC_CIRC,  KC_AMPR,  KC_ASTR,  KC_LPRN,  KC_RPRN,  KC_UNDS,
+        __LYB__,  KC_AMPR,  KC_PIPE,  KC_LCBR,  KC_RCBR,  KC_MINS,  KC_MINS,  XXXXXXX,  XXXXXXX,  KC_LCBR,  KC_RCBR,  KC_PIPE,
+        KC_DQUO,  KC_SLSH,  KC_ASTR,  KC_LPRN,  KC_RPRN,  KC_PLUS,  KC_PLUS,  XXXXXXX,  XXXXXXX,  KC_LBRC,  KC_RBRC,  KC_DQUO,
+        _______,  KC_BSLS,  KC_PERC,  KC_LBRC,  KC_RBRC,  KC_EQL,   KC_EQL,   XXXXXXX,  KC_LABK,  KC_RABK,  KC_QUES,  KC_INS,
+        KC_TILDE, KC_UNDS,  KC_CIRC,  KC_DEL,   __LYB__,  KC_SPC,   KC_SPC,   KC_ENT,   XXXXXXX,  KC_LBRC,  KC_RBRC,  LLSWIT
+    ),
+
+    /* Extra Layer
+     * ,-----------------------------------------------------------------------------------.
+     * |  ESC |      |      |      |      |      | SCLK |      |      |      |      |      |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | Tab  |      |      |      |      |      |      |      |      |      |      | Del  |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | Caps |      |      |      |      |      |      |      |      |      |      |      |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      |      |      |      |      |      |      |      | MRC1 | MRC2 | MRSP |     |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | CTRL |  ALT |  CMD |  Del | Bksp |    Space    | !!!! |      | MPL1 | MPL2 |LY_SW |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_EXTRA] = LAYOUT_preonic_grid( \
+        KC_ESC,   _______,  _______,  _______,  _______,  KC_SLCK,  _______,  _______,  _______,  _______,  _______,  _______,
+        KC_TAB,   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_DEL,
+        KC_CLCK,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
+        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  DYN_REC_START1, DYN_REC_START2, DYN_REC_STOP,
+        KC_LCTL,  KC_LALT,  KC_LGUI,  KC_DEL,  KC_BSPC,  KC_SPC,   KC_SPC,   __LYB__,  _______,  DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,  LLSWIT
+    ),
+
+    /* Numeric Pad
+     * ,-----------------------------------------------------------------------------------.
+     * |  ESC | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | NMLK | NUM/ | NUM* | NUM- | XXXX |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * |      | Home |  Up  | End  | PGUP | XXXX | XXXX | NUM7 | NUM8 | NUM9 | NUM+ | XXXX |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | XXXX | Left | Down | Right| PGDWN| XXXX | XXXX | NUM4 | NUM5 | NUM6 | NUM+ | XXXX |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      | CTRL |  ALT | CMD  | XXXX | XXXX | XXXX | NUM1 | NUM2 | NUM3 | NENT | Bksp |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * |      | XXXX | !!!! | XXXX | Bksp |    Space    | NUM0 | NUM0 | NUM. | NENT | QMAC |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_NUM] = LAYOUT_preonic_grid( \
+        KC_ESC ,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_NLCK,  KC_PSLS,  KC_PAST,  KC_PMNS,  XXXXXXX,
+        _______,  KC_HOME,  KC_UP,    KC_END,   KC_PGUP,  XXXXXXX,  XXXXXXX,  KC_P7,    KC_P8,    KC_P9,    KC_PPLS,  XXXXXXX,
+        KC_DQUO,  KC_LEFT,  KC_DOWN,  KC_RGHT,  KC_PGDN,  XXXXXXX,  XXXXXXX,  KC_P4,    KC_P5,    KC_P6,    KC_PPLS,  XXXXXXX,
+        _______,  KC_LCTL,  KC_LALT,  KC_LGUI,  XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_P1,    KC_P2,    KC_P3,    KC_PENT,  KC_BSPC,
+        _______,  XXXXXXX,  __LYB__,  XXXXXXX,  KC_BSPC,  KC_SPC,   KC_SPC,   KC_P0,    KC_P0,    KC_PDOT,  KC_PENT,  LTO_BS
+    ),
+
+    /* NAV
+     * ,-----------------------------------------------------------------------------------.
+     * |  ESC |      |      | MOB3 |      |      |      |      |      |      |      |      |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * |      |   A  | MOB2 | MOUP | MOB1 | MOSU | PGUP | Home |  Up  | End  |      | Del  |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * |      | !!!! | MOLF | MODN | MORT | MOSD | PGDN | Left | Down | Right| !!!! |      |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      |      | MOB4 | MOB5 | MOSL | MOSR | MOA2 | MOA0 | MPRV | MPLY | MNXT |      |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | CTRL | ALT  | CMD  |      | Bksp |    Space    | Enter| VILM | VOLD | VOLU | QMAC |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_NAV] = LAYOUT_preonic_grid( \
+        KC_ESC,   _______,  _______,  KC_BTN3,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
+        _______,  KC_A,     KC_BTN2,  KC_MS_U,  KC_BTN1,  KC_WH_U,  KC_PGUP,  KC_HOME,  KC_UP,    KC_END,   _______,  KC_DEL,
+        _______,  __LYB__,  KC_MS_L,  KC_MS_D,  KC_MS_R,  KC_WH_D,  KC_PGDN,  KC_LEFT,  KC_DOWN,  KC_RGHT,  __LYB__,  _______,
+        _______,  _______,  KC_BTN4,  KC_BTN5,  KC_WH_L,  KC_WH_R,  KC_ACL2,  KC_ACL0,  KC_MPRV,  KC_MPLY,  KC_MNXT,  _______,
+        KC_LCTL,  KC_LALT,  KC_LGUI,  _______,  KC_BSPC,  KC_SPC,   KC_SPC,   KC_ENT,   KC_MUTE,  KC_VOLD,  KC_VOLU,  LTO_BS
+    ),
+
+        /* One-Handed
+    * ,-----------------------------------------------------------------------------------.
+    * | Esc  |  6   |   7  |   8  |   9  |   0  |   -  | XXXX | XXXX | XXXX | XXXX | XXXX |
+    * |------+------+------+------+------+------+------+------+------+------+------+------|
+    * |      |   Y  |   U  |   I  |   O  |   P  | MWL3 | MWFS | MWR3 | MWTL | MWTR | XXXX |
+    * |------+------+------+------+------+-------------+------+------+------+------+------|
+    * |      |   H  |   J  |   K  |   L  |   :  | MWL1 | MWM1 | MWR1 | MWBL | MWBR | XXXX |
+    * |------+------+------+------+------+------|------+------+------+------+------+------|
+    * |      |   N  |   M  |   ,  |   .  |   /  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+    * |------+------+------+------+------+------+------+------+------+------+------+------|
+    * | !!!! |  Esc |  Del |  Ent | Bksp |             | MWLT | MWBT | MWUP | MWRT |LY_SW |
+    * `-----------------------------------------------------------------------------------'
+    */
+    [_ONEHD] = LAYOUT_preonic_grid( \
+        KC_ESC ,  KC_6,     KC_7,     KC_8,     KC_9,      KC_0,     KC_MINUS, XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, XXXXXXX,
+        _______,  KC_Y,     KC_U,     KC_I,     KC_O,      KC_P,     LMW_L3,   LMW_FS,   LMW_R3,   LMW_TL,   LMW_TR,  XXXXXXX,
+        _______,  KC_H,     KC_J,     KC_K,     KC_L,      KC_SCLN,  LMW_L1,   LMW_M1,   LMW_R1,   LMW_BL,   LMW_BR,  XXXXXXX,
+        _______,  KC_N,     KC_M,     KC_COMM,  KC_DOT,    KC_SLSH,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, XXXXXXX,
+        __LYB__,  KC_ESC,  KC_DEL,    KC_ENT,   KC_BSPACE, KC_SPC,   KC_SPC,   LMW_LT,   LMW_BT,   LMW_TP,   LMW_RT,  LLSWIT
+    ),
+
+    /* Layer Switcher
+     * ,-----------------------------------------------------------------------------------.
+     * | Esc  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * |Brite | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+-------------+------+------+------+------+------|
+     * | XXXX | XXXX | XXXX | XXXX | XXXX | GAME | XXXX | XXXX | XXXX | XXXX | NAV  | XXXX |
+     * |------+------+------+------+------+------|------+------+------+------+------+------|
+     * |      | XXXX | XXXX | XXXX | XXXX | QMAC | XXXX | MUSC | XXXX | XXXX | XXXX | XXXX |
+     * |------+------+------+------+------+------+------+------+------+------+------+------|
+     * | XXXX | XXXX | NUM  | XXXX | XXXX |    XXXXX    | XXXX | XXXX | XXXX | XXXX | !!!! |
+     * `-----------------------------------------------------------------------------------'
+     */
+    [_LYSWT] = LAYOUT_preonic_grid( \
+        KC_ESC ,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        BACKLIT,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        XXXXXXX,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  TO(_GAMING), XXXXXXX,  XXXXXXX,   XXXXXXX,  XXXXXXX,  TO(_NAV), XXXXXXX,
+        XXXXXXX,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  LTO_BS,     XXXXXXX, TO(_MUSIC), XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
+        XXXXXXX,   XXXXXXX,  TO(_NUM), XXXXXXX,  XXXXXXX,  XXXXXXX,    XXXXXXX,  XXXXXXX,   XXXXXXX,  XXXXXXX,  XXXXXXX,  _______
+    ) //, //Don't forget to add the comma if going to add more layers here
+};
+
+static uint16_t key_timer;
+static uint16_t timer_thresh = 200;
+bool            process_record_user(uint16_t keycode, keyrecord_t *record) {
+    // For dynamic macros
+    if (!process_record_dynamic_macro(keycode, record)) {
+// Play sound on Macro stop
+#ifdef AUDIO_ENABLE
+        switch (keycode) {
+            case DYN_REC_STOP:
+                if (record->event.pressed) {
+                    PLAY_SONG(tone_macro_record_stop);
+                }
+                return false;
+                break;
+        }
+#endif
+        return false;
+    }
+
+    switch (keycode) {
+        case QWERTY:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_QWERTY_MAC);
+            }
+            return false;
+            break;
+        case QWWIN:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_QWERTY_WIN);
+            }
+            return false;
+            break;
+        // Reinstate these cases if COLEMAK, DVORAK are included in the layouts
+        /*case COLEMAK:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_COLEMAK);
+            }
+            return false;
+            break;
+        case DVORAK:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_DVORAK);
+            }
+            return false;
+            break;
+          */
+        case LOWER:
+            if (record->event.pressed) {
+                key_timer = timer_read(); // For Backspace on tap
+                layer_on(_LOWER);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            } else {
+                // Backspace on tap
+                if (timer_elapsed(key_timer) < timer_thresh) {
+                    tap_code(KC_BSPC);
+                }
+                layer_off(_LOWER);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            }
+            return false;
+            break;
+        case RAISE:
+            if (record->event.pressed) {
+                key_timer = timer_read(); // For Backspace on tap
+                layer_on(_RAISE);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            } else {
+                // Backspace on tap
+                if (timer_elapsed(key_timer) < timer_thresh) {
+                    tap_code(KC_BSPC);
+                }
+                layer_off(_RAISE);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            }
+            return false;
+            break;
+        case BACKLIT:
+            if (record->event.pressed) {
+                register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+                backlight_step();
+#endif
+#ifdef __AVR__
+                PORTE &= ~(1 << 6);
+#endif
+            } else {
+                unregister_code(KC_RSFT);
+#ifdef __AVR__
+                PORTE |= (1 << 6);
+#endif
+            }
+            return false;
+            break;
+#ifdef AUDIO_ENABLE
+            // Play sound on Macro record start
+        case DYN_REC_START1:
+            if (record->event.pressed) {
+                PLAY_SONG(tone_macro1_record);
+            }
+            return false;
+            break;
+        case DYN_REC_START2:
+            if (record->event.pressed) {
+                PLAY_SONG(tone_macro2_record);
+            }
+            return false;
+            break;
+#endif
+    }
+    return true;
+};
+
+bool     muse_mode      = false;
+uint8_t  last_muse_note = 0;
+uint16_t muse_counter   = 0;
+uint8_t  muse_offset    = 70;
+uint16_t muse_tempo     = 50;
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+    if (muse_mode) {
+        if (IS_LAYER_ON(_RAISE)) {
+            if (clockwise) {
+                muse_offset++;
+            } else {
+                muse_offset--;
+            }
+        } else {
+            if (clockwise) {
+                muse_tempo += 1;
+            } else {
+                muse_tempo -= 1;
+            }
+        }
+    } else {
+        if (clockwise) {
+            tap_code(KC_PGDN);
+        } else {
+             tap_code(KC_PGUP);
+        }
+    }
+}
+
+void dip_switch_update_user(uint8_t index, bool active) {
+    switch (index) {
+        case 0:
+            if (active) {
+                layer_on(_ADJUST);
+            } else {
+                layer_off(_ADJUST);
+            }
+            break;
+        case 1:
+            if (active) {
+                muse_mode = true;
+            } else {
+                muse_mode = false;
+            }
+    }
+}
+
+void matrix_scan_user(void) {
+#ifdef AUDIO_ENABLE
+    if (muse_mode) {
+        if (muse_counter == 0) {
+            uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+            if (muse_note != last_muse_note) {
+                stop_note(compute_freq_for_midi_note(last_muse_note));
+                play_note(compute_freq_for_midi_note(muse_note), 0xF);
+                last_muse_note = muse_note;
+            }
+        }
+        muse_counter = (muse_counter + 1) % muse_tempo;
+    } else {
+        if (muse_counter) {
+            stop_all_notes();
+            muse_counter = 0;
+        }
+    }
+#endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+    switch (keycode) {
+        case RAISE:
+        case LOWER:
+            return false;
+        default:
+            return true;
+    }
+}
diff --git a/keyboards/preonic/keymaps/laurentlaurent/readme.md b/keyboards/preonic/keymaps/laurentlaurent/readme.md
new file mode 100644 (file)
index 0000000..b1909f8
--- /dev/null
@@ -0,0 +1,252 @@
+# laurentlaurent's Preonic keyboard
+Largely similar to his [ErgoDox EZ](https://configure.ergodox-ez.com/ergodox-ez/layouts/jZpmo/latest/0)'s layout
+
+## Features
+
+### Special Modifiers for Global Shortcuts
+* Hyper key (Ctrl+Alt+Cmd+Shift)
+* CAG key (Ctrl+Alt+Cmd)
+* Meh key (Ctrl+Alt+Shift)
+
+### Home Row modifiers
+* Home Row modifiers (hold F/J to use CMD/Ctrl, D/L for Alt, ... )
+* Separate layers for Mac and Windows keyboard to improve muscle memory linked to Home Row modifiers (CMD is mapped to F and J on Mac, CTRL for Windows)
+* Extra CMD/CTRL key mapped to Z for one-handed CMD+F/CTRL+F
+
+### Qwerty Layout improvements
+* Backspace and Enter are on bottom row (next to Space bar)
+* = is where Esc would be expected to be
+* "-" is where Backspace would be expected to be
+* Grave is where LCTRL would be expected to be
+* Esc is where Alt (on Mac)/Win (on PC) would be expected to be
+* Del is where CMD (on Mac)/Alt (on PC) would be expected to be
+* Hyper key replaces Caps Lock
+
+### Mod taps
+* Home Row modifiers
+* Lower and Raise are Backspace on tap
+* Holding = is CAG (CTRL+ALT+CMD)
+* Holding Esc is MEH (Ctrl+Shift+Alt)
+* Right Shift is bound to RShift on hold, Backspace on tap
+* Spacebar acts like a LShift on hold, Spacebar on tap
+* In instances where repeated keys is needed:
+    * Tap then tap-hold repeats the key
+    * Lower, Raise (and most other layers) turns off mod-tap on most keys
+* Music layer disables all key mappings, Gaming layer disables modtaps
+
+### Layer Switching
+* Layer switcher key, used to switch layout (allows use of _NAV, _NUM layout without holding their layer keys)
+* **Punctuation layer** accessible by holding Tab, Backslash or Backspace
+* Grave switches to **One-Handed layer** on hold
+* **Mouse and arrow key layer** accessible by holding ; or A
+* Del switches to **Numpad** on hold
+* Enter switches to **Extra layer** on hold
+    * Extra layer will be used for applications shortcuts
+
+## Layers
+
+### Mac Qwerty
+```
+,-----------------------------------------------------------------------------------.
+| CAG/=|   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|TB|   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | LY|\ |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Hyper| LY|A | CT/S | AT/D | WN/F |   G  |   H  | WN/J | AT/K | CT/L | LY|; |  "   |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift| WN/Z |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Sh/Bk|
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|` |MH/ESC| LY|DL|LW|Bkp|LY|Bkp| Shift/Space |LY|ENT|RS|Bkp|   [  |   ]  |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+* Hold Tab (LY|TB), Backspace (LY|Bkp) or Backslash (LY|\ ) for **Punctuation Layer**
+* Hold Grave (LY|`) for **One-Handed Layer**
+* Hold Del (LY|DL) for **Numpad Layer**
+* Hold A or ; for **Navigation/Mouse Layer**
+* Hold Enter (LY|ENT) for **Extra layer**
+
+### Win Qwerty
+```
+,-----------------------------------------------------------------------------------.
+| CAG= |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|TB|   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | LY|\ |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Hyper| LY|A | WN/S | AT/D | CT/F |   G  |   H  | CT/J | AT/K | WN/L | LY/; |  "   |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift| CT/Z |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  | Sh/Bk|
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| LY|` |ESCMEH| LY|DL|LW|Bkp|LY|Bk |    Space    |LY|ENT|RS|Bkp|   [  |   ]  |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+* Hold Tab (LY|TB), Backspace (LY|Bkp) or Backslash (LY|\ ) for **Punctuation Layer**
+* Hold Grave (LY|`) for **One-Handed Layer**
+* Hold Del (LY|DL) for **Numpad Layer**
+* Hold A or ; for **Navigation/Mouse Layer**
+* Hold Enter (LY|ENT) for **Extra layer**
+
+### Gaming Qwerty
+```
+,-----------------------------------------------------------------------------------.
+|   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |  \   |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Ctrl |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  | LY|; |  "   |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |  =   |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Ctrl | ESC  |  Alt |LW|Bkp|LY|Bk |    Space    |LY|ENT|RS|Bkp|   [  |   ]  |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Music Layer
+```
+,-----------------------------------------------------------------------------------.
+| Esc  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+|      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | ALT  | CMD  |      | XXXX |    Space    | XXXX |      | XXXX | XXXX |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Lower Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 | F11  |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Tab  | Home |  Up  | End  | PGUP | XXXX | XXXX | XXXX | PrSc | Home | PGUP | Del  |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+|  "   | Left | Down | Right|PGDWN | XXXX | XXXX | XXXX | Pause| End  |PGDWN | F12  |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      | CTRL |  Alt |  CMD | XXXX | XXXX | XXXX | XXXX | Prev | Play | Next | INS  |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL |  Alt |  CMD | !!!! | Bksp |    Space    | Enter|      | Vol- | Vol+ |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Raise Layer
+```
+,-----------------------------------------------------------------------------------.
+| ESC  |  F1  |  F2  |  F3  |  F4  |  F5  | SCLK |   &  |   *  |   (  |   )  | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab  |  F7  |  F8  |  F9  |  F10 |  F11 | XXXX |   &  |   *  |   {  |   }  | Del  |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Caps |  F1  |  F2  |  F3  |  F4  |  F5  | XXXX |   -  |   =  |   [  |   ]  | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      |  F7  |  F8  |  F9  |  F10 |  F11 | XXXX |ISO # |ISO \ | MRC1 | MRC2 | MRSP |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL |  Alt |  CMD |      | Bksp |    Space    | Enter| !!!! | MPL1 | MPL2 |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Adjust Layer
+```
+,-----------------------------------------------------------------------------------.
+|      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab  | Reset|      |      |      |      |      |      |      |      |      | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+|      |      |      |Aud on|AudOff|QWmac |QWwin |QWmac |QWin  |      |      |  F12 |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff|      |      |      |      |      |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|      |      |      |      |      |             |      |      |      |      |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Punctuation Layer
+```
+,-----------------------------------------------------------------------------------.
+|  +   |  !   |  @   |  #   |  $   |  %   |  ^   |  &   |  *   |  (   |   )  |  _   |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| !!!! |  &   |  |   |  {   |   }  |  -   |  -   | XXXX | XXXX |  {   |   }  |  |(!)|
+|------+------+------+------+------+-------------+------+------+------+------+------|
+|  "   |  /   |  *   |  (   |   )  |  +   |  +   | XXXX | XXXX |  [   |   ]  |  "   |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      |  \   |  %   |  [   |   ]  |  =   |  =   | XXXX |   <  |  >   |   ?  | INS  |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|  ~   |  _   |  ^   | Del  | !!!! |    Space    | Enter| XXXX |  [   |   ]  |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Extra Layer
+```
+,-----------------------------------------------------------------------------------.
+|  ESC |      |      |      |      |      | SCLK |      |      |      |      |      |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|  Tab |      |      |      |      |      |      |      |      |      |      | Del  |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Caps |      |      |      |      |      |      |      |      |      |      |      |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      |      |      |      |      |      |      |      |      | MRC1 | MRC2 | MRSP |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL |  ALT |  CMD | Del  | Bksp |    Space    | !!!! |      | MPL1 | MPL2 |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+
+### Numeric Pad Layer
+```
+,-----------------------------------------------------------------------------------.
+|  ESC | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | NMLK | NUM/ | NUM* | NUM- | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|      | Home |  Up  | End  | PGUP | XXXX | XXXX | NUM7 | NUM8 | NUM9 | NUM+ | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| XXXX | Left | Down | Right| PGDWN| XXXX | XXXX | NUM4 | NUM5 | NUM6 | NUM+ | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      | CTRL |  ALT | CMD  | XXXX | XXXX | XXXX | NUM1 | NUM2 | NUM3 | NENT | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|      | XXXX | !!!! | XXXX | Bksp |    Space    | NUM0 | NUM0 | NUM. | NENT | QMAC |
+`-----------------------------------------------------------------------------------'
+```
+
+### Navigation Layer
+```
+,-----------------------------------------------------------------------------------.
+|  ESC |      |      | MOB3 |      |      |      |      |      |      |      |      |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|      |   A  | MOB2 | MOUP | MOB1 | MOSU | PGUP | Home |  Up  | End  |      | Del  |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+|      | !!!! | MOLF | MODN | MORT | MOSD | PGDN | Left | Down | Right| !!!! |      |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      |      | MOB4 | MOB5 | MOSL | MOSR | MOA2 | MOA0 | MPRV | MPLY | MNXT |      |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| CTRL | ALT  | CMD  |      | Bksp |    Space    | Enter| VILM | VOLD | VOLU | QMAC |
+`-----------------------------------------------------------------------------------'
+```
+
+### One-Handed Layer
+```
+,-----------------------------------------------------------------------------------.
+| Esc  |  6   |   7  |   8  |   9  |   0  |   -  | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|      |   Y  |   U  |   I  |   O  |   P  | MWL3 | MWFS | MWR3 | MWTL | MWTR | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+|      |   H  |   J  |   K  |   L  |   :  | MWL1 | MWM1 | MWR1 | MWBL | MWBR | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      |   N  |   M  |   ,  |   .  |   /  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| !!!! |  Esc |  Del |  Ent | Bksp |             | MWLT | MWBT | MWUP | MWRT |LY_SW |
+`-----------------------------------------------------------------------------------'
+```
+The right hand side of the keyboard contains shortcuts for moving windows on Mac (using Magnet)
+
+### Layer Switcher
+```
+,-----------------------------------------------------------------------------------.
+| Esc  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+|Brite | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| XXXX | XXXX | XXXX | XXXX | XXXX | GAME | XXXX | XXXX | XXXX | XXXX | NAV  | XXXX |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|      | XXXX | XXXX | XXXX | XXXX | QMAC | XXXX | MUSC | XXXX | XXXX | XXXX | XXXX |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| XXXX | XXXX | NUM  | XXXX | XXXX |    XXXXX    | XXXX | XXXX | XXXX | XXXX | !!!! |
+`-----------------------------------------------------------------------------------'
+```
diff --git a/keyboards/preonic/keymaps/laurentlaurent/rules.mk b/keyboards/preonic/keymaps/laurentlaurent/rules.mk
new file mode 100644 (file)
index 0000000..3a551bd
--- /dev/null
@@ -0,0 +1,2 @@
+SRC += muse.c
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/preonic/keymaps/laurentlaurent/templates.c b/keyboards/preonic/keymaps/laurentlaurent/templates.c
new file mode 100644 (file)
index 0000000..0056e08
--- /dev/null
@@ -0,0 +1,89 @@
+// Templates for Preonic Keyboard
+
+/* BLANK Pass through
+ * ,-----------------------------------------------------------------------------------.
+ * |  ESC |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL |  ALT |  CMD |      |      |             |      |      |      |      |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_BLANK] = LAYOUT_preonic_grid( \
+    KC_ESC ,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, \
+    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, \
+    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, \
+    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______, \
+    KC_LCTL,  KC_LALT,  KC_LGUI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  LLSWIT  \
+),
+
+/* BLANK No Pass through
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc  | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CTRL | ALT  | CMD  |      | XXXX |             | XXXX |      | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_BLANK] = LAYOUT_preonic_grid( \
+    KC_ESC ,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, \
+    _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, \
+    _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, \
+    _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX, \
+    KC_LCTL,  KC_LALT,  KC_LGUI,  _______,  XXXXXXX,  _______,  _______,  XXXXXXX,  _______,  XXXXXXX,  XXXXXXX,  LLSWIT  \
+),
+
+
+//===== From default preonic layouts
+// if you add this, make sure to add _COLEMAK and _DVORAK in the enum
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Del  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | XXXX | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_preonic_grid( \
+    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_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL,  \
+    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,  \
+    BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, LLSWIT  \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Del  |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt  | GUI  |Lower |    Space    |Raise | XXXX | XXXX | XXXX |LY_SW |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_preonic_grid( \
+    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_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_DEL,  \
+    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,  \
+    BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   XXXXXXX, XXXXXXX, XXXXXXX, LLSWIT  \
+),