Эх сурвалжийг харах

Merge branch 'master' of https://github.com/jackhumbert/tmk_keyboard

Jack Humbert 10 жил өмнө
parent
commit
24218b58b4

+ 24 - 2
keyboard/atomic/keymap_common.h

@@ -33,8 +33,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
 extern const uint16_t fn_actions[];
 
-
-#define KEYMAP( \
+// JCK: Semi-Standard layout
+#define KEYMAP_JCK( \
     K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,   K0E,    \
     K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
     K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,    K2D,   K2E, \
@@ -48,4 +48,26 @@ extern const uint16_t fn_actions[];
     { KC_##K40, KC_##K41, KC_NO,    KC_##K43, KC_NO,    KC_NO,    KC_##K46, KC_NO,    KC_NO,    KC_NO,    KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E }  \
 }
 
+// ASK: Short Space layout
+#define KEYMAP_ASK( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C,   K0E,    \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,    K2D,   K2E, \
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A,    K3C,   K3D, K3E, \
+     K40,  K41,  K43,  K44,        K46,     K48, K49, K4A, K4B, K4C, K4D, K4E  \
+) { \
+    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_NO,    KC_##K0E }, \
+    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E }, \
+    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO,    KC_##K2D, KC_##K2E }, \
+    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_NO,    KC_##K3C, KC_##K3D, KC_##K3E }, \
+    { KC_##K40, KC_##K41, KC_NO,    KC_##K43, KC_##K44, KC_NO,    KC_##K46, KC_NO,    KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E }  \
+}
+
+
+// MLO: Semi-Grid layout
+
+// KLN: Grid layout
+
+// PKR: Standard layout
+
 #endif

+ 0 - 145
keyboard/atomic/keymap_hasu.c

@@ -1,145 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Keymap 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Fn4 |Fn4 |Fn1 |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN2, QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,           FN9,  \
-        LCTL,LGUI,LALT,          SPC,                     RALT,FN3, FN3, FN0),
-    /* Keymap 1: colemak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-    /* Keymap 2: dvorak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
-        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-    /* Keymap 3: workman */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
-        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-
-    /* Overlay 4: HHKB mode
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Inser|
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,INS,  \
-        LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,FN4, TRNS),
-    /* Overlay 5: Vi mode (Slash)
-     * ,-----------------------------------------------------------.
-     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End|   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgU|End|   |Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
-        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
-        LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP,  RGHT,TRNS,TRNS,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
-    /* Overlay 6: Mouse mode (Semicolon/App)
-     * ,-----------------------------------------------------------.
-     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |Contro|   |Ac0|Ac1|Ac1|   |McL|McD|McU|McR|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
-        TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
-        LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS,          RSFT, \
-        LCTL,LGUI,LALT,          BTN1,                    TRNS,TRNS,TRNS,RCTL),
-    /* Overlay 7: Layout selector
-     * ,-----------------------------------------------------------.
-     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
-     * |-----------------------------------------------------------|
-     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Lq: set Qwerty layout
-     * Lc: set Colemak layout
-     * Ld: set Dvorak layout
-     * Lw: set Workman layout
-     */
-    KEYMAP_ANSI(
-        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(4),
-    [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
-    [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
-    [3] = ACTION_LAYER_MOMENTARY(6),
-    [4] = ACTION_LAYER_MOMENTARY(7),   // to Layout selector
-    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
-    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
-    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
-    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
-    [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
-};

+ 0 - 52
keyboard/atomic/keymap_hhkb.c

@@ -1,52 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * HHKB Layout
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: Default layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
-     * |-----------------------------------------------------------|
-     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn |
-     * |-----------------------------------------------------------|
-     * |    |Gui |Alt |      Space             |    |Alt |Gui |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_HHKB(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, GRV, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,      \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,       \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RSFT,FN0,       \
-        NO,  LGUI,LALT,          SPC,                     NO,  RALT,RGUI,NO),
-    /* 1: HHKB Fn layer
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_HHKB(
-        PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,  \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,TRNS,      \
-        TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     PENT,      \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,     TRNS,TRNS,      \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),
-};

+ 17 - 15
keyboard/atomic/keymap_plain.c

@@ -1,22 +1,24 @@
 #include "keymap_common.h"
 
+// JCK: Semi-Standard layout
+
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     /* 0: qwerty */
-    [0] = KEYMAP(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \
-                 TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    LBRC, RBRC, BSLS, DEL, \
-                 ESC,  A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,    ENT,     MPLY, \
-                 LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \
-                 LCTL,    LALT,  LGUI,          SPC,                         FN1,  LEFT, DOWN, UP,   RGHT),
-    [1] = KEYMAP(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \
-                 TAB,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, LBRC, RBRC, BSLS, DEL, \
-                 ESC,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,    QUOT,    ENT,     MPLY, \
-                 LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \
-                 LCTL,    LALT,  LGUI,          SPC,                         FN1,  LEFT, DOWN, UP,   RGHT),
-    [2] = KEYMAP(GRV,  F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,  F11,  F12,    BSPC, \
-                 TAB,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    LBRC, RBRC, BSLS, DEL, \
-                 ESC,  FN3, FN4, TRNS, TRNS, TRNS, TRNS, MINS, EQL,  LBRC, RBRC,   BSLS,    ENT,     MPLY, \
-                 LSFT, FN9,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \
-                 LCTL,    LALT,  LGUI,          SPC,                         TRNS,  MNXT, VOLD, VOLU, MPLY),
+    [0] = KEYMAP_JCK(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \
+                     TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    LBRC, RBRC, BSLS, DEL, \
+                     ESC,  A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,    ENT,     MPLY, \
+                     LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \
+                     LCTL,    LALT,  LGUI,          SPC,                         FN1,  LEFT, DOWN, UP,   RGHT),
+    [1] = KEYMAP_JCK(GRV,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    MINS, EQL,    BSPC, \
+                     TAB,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, LBRC, RBRC, BSLS, DEL, \
+                     ESC,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,    QUOT,    ENT,     MPLY, \
+                     LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \
+                     LCTL,    LALT,  LGUI,          SPC,                         FN1,  LEFT, DOWN, UP,   RGHT),
+    [2] = KEYMAP_JCK(GRV,  F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,  F11,  F12,    BSPC, \
+                     TAB,  1,    2,    3,    4,    5,    6,    7,    8,    9,    0,    LBRC, RBRC, BSLS, DEL, \
+                     ESC,  FN3, FN4, TRNS, TRNS, TRNS, TRNS, MINS, EQL,  LBRC, RBRC,   BSLS,    ENT,     MPLY, \
+                     LSFT, FN9,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,    RSFT,    VOLD, VOLU, \
+                     LCTL,    LALT,  LGUI,          SPC,                         TRNS,  MNXT, VOLD, VOLU, MPLY),
 };
 const uint16_t PROGMEM fn_actions[] = {
     [1] = ACTION_LAYER_MOMENTARY(2),  // to Fn overlay

+ 0 - 51
keyboard/atomic/keymap_planck.c

@@ -1,51 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [0] = KEYMAP( /* Native */
-      ESC,     Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    FN2, 
-      BSPC,    A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
-      TAB,     Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, ENT,
-      DEL,     LCTL, NO,   LSFT, LALT, SPC,        NO,   LEFT, DOWN, UP,  RGHT), 
-    [1] = KEYMAP( /* QWERTY->PHOTOSHOP */
-      DELETE,  0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    FN1,
-      O,       G,    S,    U,    T,    FN27,  F21,  F10,  F11,  F7,   F8,   F9,
-      TAB,     FN4, FN5,  FN6,  F1,   FN7,  F18,  F19,  F23,  F20,  F22,  FN9,
-      COMM,    DOT,  FN10, FN11, FN3,  SPC,        FN12, F2,   FN8,  F3,   F14),
-    [2] = KEYMAP( /* 2: FN3 PHOTOSHOP */
-      ESC,    FN25, FN26,   NO,   NO,   NO,   NO,   NO,   NO,   NO,   NO,   NO,
-      NO,      NO,   NO,   NO,   NO,   NO,   NO,   NO,   NO,   FN19, FN20, FN21, 
-      C,       NO,  FN22,  FN5,   NO,   FN23, NO,   NO,   NO,   NO,   FN13, NO,
-      FN14,    FN15, FN16, FN17, FN3,   SPC,        FN18, NO,   NO,   F24,  NO),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_DEFAULT_LAYER_SET(0),                             // set Qwerty layout
-    [2] = ACTION_DEFAULT_LAYER_SET(1),                             // set Photoshop presets
-    [3] = ACTION_LAYER_ON_OFF(2),                                  // Photoshop function layer
- 
-    [4] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F9),   // photo folder AHK
-    [5] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_I),              // select inverse
-    [6] = ACTION_MODS_KEY(MOD_LSFT, KC_M),                         // marquee select
-    [7] = ACTION_MODS_KEY(MOD_LALT, KC_BSPC),                      // fill 
-    [8] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_X),    // warp
-    [9] = ACTION_MODS_KEY(MOD_LCTL | MOD_LALT | MOD_LSFT, KC_F12),  // merge all new layer
-    [10] = ACTION_MODS_KEY(MOD_LCTL, KC_MINS),                     // zoom out
-    [11] = ACTION_MODS_KEY(MOD_LCTL, KC_H),                        // RBG sliders
-    [12] = ACTION_MODS_KEY(MOD_LCTL, KC_S),                        // save
-    [13] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F5),           // layer mask from transparancy 
-    [14] = ACTION_MODS_KEY(MOD_LALT, KC_LBRC),                     // prev layer
-    [15] = ACTION_MODS_KEY(MOD_LALT, KC_RBRC),                     // next layer
-    [16] = ACTION_MODS_KEY(MOD_LCTL, KC_EQL),                      // zoom in
-    [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_H),             // HSV sliders
-    [18] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F11), // save as PNG
-    [19] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F7),  // gaussian blur
-    [20] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT, KC_F8),  // motion blur
-    [21] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_X),            // liquify filter
-    [22] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),                     // prev layer blending
-    [23] = ACTION_MODS_KEY(MOD_LSFT | MOD_LALT, KC_N),             // normal layer blending
-    [24] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),                      // next layer blending
-    [25] = ACTION_MODS_KEY(MOD_LCTL, KC_Z),                        // step back
-    [26] = ACTION_MODS_KEY(MOD_LCTL, KC_Y),                        // step forward
-    [27] = ACTION_MODS_KEY(MOD_LCTL, KC_R),                        // rasterize
-     
-};

+ 0 - 104
keyboard/atomic/keymap_poker.c

@@ -1,104 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 1: colemak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 2: dvorak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
-        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 3: workman */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
-        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 4: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
-    /* 5: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-    /* 6: Poker Fn
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       |
-     * |-----------------------------------------------------------|
-     * |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|FnL  |
-     * |-----------------------------------------------------------|
-     * |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        |
-     * |-----------------------------------------------------------|
-     * |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |         FnS            |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Fn:  to Fn overlay
-     * FnL: to Layout selector overaly
-     * FnQ: toggle Esc overlay
-     * FnS: toggle Arrow overlay
-     */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4,  \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
-    /* 7: Layout selector
-     * ,-----------------------------------------------------------.
-     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
-     * |-----------------------------------------------------------|
-     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Lq: set Qwerty layout
-     * Lc: set Colemak layout
-     * Ld: set Dvorak layout
-     * Lw: set Workman layout
-     */
-    KEYMAP_ANSI(
-        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_MOMENTARY(6),  // to Fn overlay
-    [1] = ACTION_LAYER_TOGGLE(4),     // toggle arrow overlay
-    [2] = ACTION_LAYER_TOGGLE(5),     // toggle Esc overlay
-    [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
-    [4] = ACTION_LAYER_MOMENTARY(7),  // to Layout selector
-    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
-    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
-    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
-    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
-};

+ 0 - 50
keyboard/atomic/keymap_poker_bit.c

@@ -1,50 +0,0 @@
-#include "keymap_common.h"
-
-// Poker fix with toggle and bit operation
-// Fn + Esc = `
-// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 4: Poker Default + Fn'd */
-    [4] = KEYMAP_ANSI(
-        TRNS,F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        CAPS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
-    /* 5: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          PGUP, \
-        TRNS,TRNS,TRNS,          TRNS,                    FN3, HOME,PGDN,END),
-    /* 6: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-    /* 7: Poker with Arrow + Fn'd */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
-};
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH),   // Poker Fn(with fix for Esc)
-    [1] = ACTION_LAYER_TOGGLE(5),                     // Poker Arrow toggle
-    [2] = ACTION_LAYER_TOGGLE(6),                     // Poker Esc toggle
-    [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH),   // Poker Fn(with fix for Arrow)
-    [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
-};

+ 0 - 82
keyboard/atomic/keymap_poker_set.c

@@ -1,82 +0,0 @@
-#include "keymap_common.h"
-
-// Poker fix with set(state transition)
-// Fn + Esc = `
-// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 1: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    FN1, LEFT,DOWN,RGHT),
-    /* 2: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    FN2, TRNS,TRNS,TRNS),
-    /* 3: Poker with Arrow and Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    FN3, LEFT,DOWN,RGHT),
-    /* 4: Poker Fn'd */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN6, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN5,                     FN4, TRNS,TRNS,TRNS),
-    /* 5: Poker Fn'd arrow */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN7, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
-        TRNS,TRNS,TRNS,          FN4,                     FN5, HOME,PGDN,END),
-    /* 6: Poker Fn'd Esc */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN4, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN7,                     FN6, TRNS,TRNS,TRNS),
-    /* 7: Poker Fn'd Arrow + Esc */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN5, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
-        TRNS,TRNS,TRNS,          FN6,                     FN7, HOME,PGDN,END),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_SET(4, ON_PRESS),     // FN0 move to Fn'd             when press
-    [1] = ACTION_LAYER_SET(5, ON_PRESS),     // FN1 move to Fn'd arrow       when press
-    [2] = ACTION_LAYER_SET(6, ON_PRESS),     // FN2 move to Fn'd Esc         when press
-    [3] = ACTION_LAYER_SET(7, ON_PRESS),     // FN3 move to Fn'd arrow + Esc when press
-
-    //[4] = ACTION_LAYER_CLEAR(ON_RELEASE),    // FN4 clear overlay            when release
-    [4] = ACTION_LAYER_SET(0, ON_RELEASE),   // FN4 clear overlay            when release
-    [5] = ACTION_LAYER_SET(1, ON_RELEASE),   // FN5 move to arrow            when release
-    [6] = ACTION_LAYER_SET(2, ON_RELEASE),   // FN6 move to Esc              when release
-    [7] = ACTION_LAYER_SET(3, ON_RELEASE),   // FN7 move to arrow + Esc      when release
-
-    [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
-};

+ 0 - 55
keyboard/atomic/keymap_spacefn.c

@@ -1,55 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Keymap 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          FN0,                     RALT,RGUI,APP, RCTL),
-
-    /* Overlay 1: SpaceFN
-     * ,-----------------------------------------------------------.
-     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-     * |-----------------------------------------------------------|
-     * |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
-     * |-----------------------------------------------------------|
-     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP,  END, PSCR,SLCK,PAUS,INS,  \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
-    [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
-};

+ 8 - 125
keyboard/planck/README.md

@@ -1,16 +1,12 @@
-GH60 keyboard firmware
+Planck keyboard firmware
 ======================
-DIY compact keyboard designed and run by komar007 and Geekhack community.
-
-- Both Rev.A and Rev.B PCB are supported by one firmware binary(issue #64)
-
-## GH60 Resources
-- [KOMAR's project page](http://blog.komar.be/projects/gh60-programmable-keyboard/)
-- [Prototyping](http://geekhack.org/index.php?topic=34959.0)
-- [Rev.A PCB test](http://geekhack.org/index.php?topic=37570.0)
-- [Rev.B PCB test](http://geekhack.org/index.php?topic=50685.0)
-- [Group buy](http://geekhack.org/index.php?topic=41464.0)
+DIY/Assembled compact ortholinear keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
 
+## Notable TMK forks (which some of the keymap files are from)
+- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
+- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c)
+- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck)
+- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid)
 
 ## Build
 Move to this directory then just run `make` like:
@@ -25,117 +21,4 @@ Several version of keymap are available in advance but you are recommended to de
 
 To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:
 
-    $ make KEYMAP=[poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|<name>]
-
-
-### 1  Poker
-[keymap_poker.c](keymap_poker.c) emulates original Poker layers
-while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys.
-
-    Fn + Esc = `
-    Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-
-#### 1.0 Default layer
-    ,-----------------------------------------------------------.
-    |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-    |-----------------------------------------------------------|
-    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-    |-----------------------------------------------------------|
-    |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
-    |-----------------------------------------------------------|
-    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
-    |-----------------------------------------------------------|
-    |Ctrl|Gui |Alt |      Space             |Fn  |Gui |App |Ctrl|
-    `-----------------------------------------------------------'
-#### 1.1 Poker Fn layer
-    ,-----------------------------------------------------------.
-    |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       |
-    |-----------------------------------------------------------|
-    |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|     |
-    |-----------------------------------------------------------|
-    |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        |
-    |-----------------------------------------------------------|
-    |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|   Up     |
-    |-----------------------------------------------------------|
-    |    |    |    |         FnS            |Fn  |Left|Down|Righ|
-    `-----------------------------------------------------------'
-
-
-### 2. Plain
-Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host.
-See [keymap_plain.c](keymap_plain.c) for detail.
-
-#### 1.0 Plain Default layer
-    ,-----------------------------------------------------------.
-    |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-    |-----------------------------------------------------------|
-    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-    |-----------------------------------------------------------|
-    |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
-    |-----------------------------------------------------------|
-    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
-    |-----------------------------------------------------------|
-    |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-    `-----------------------------------------------------------'
-
-
-### 3. Hasu
-This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail.
-
-
-### 4. SpaceFN
-This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
-
-#### 4.0 Default layer
-    ,-----------------------------------------------------------.
-    |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-    |-----------------------------------------------------------|
-    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-    |-----------------------------------------------------------|
-    |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
-    |-----------------------------------------------------------|
-    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
-    |-----------------------------------------------------------|
-    |Ctrl|Gui |Alt |      Space/Fn          |Alt |Gui |App |Ctrl|
-    `-----------------------------------------------------------'
-#### 4.1 SpaceFN layer
-    ,-----------------------------------------------------------.
-    |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-    |-----------------------------------------------------------|
-    |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
-    |-----------------------------------------------------------|
-    |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
-    |-----------------------------------------------------------|
-    |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          |
-    |-----------------------------------------------------------|
-    |    |    |    |            Fn          |    |    |    |    |
-    `-----------------------------------------------------------'
-
-
-### 5. HHKB
-[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers.
-#### 5.0: Default layer
-    ,-----------------------------------------------------------.
-    |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-    |-----------------------------------------------------------|
-    |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
-    |-----------------------------------------------------------|
-    |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-    |-----------------------------------------------------------|
-    |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn |
-    |-----------------------------------------------------------|
-    |    |Gui |Alt |      Space             |    |Alt |Gui |    |
-    `-----------------------------------------------------------'
-#### 5.1: HHKB Fn layer
-    ,-----------------------------------------------------------.
-    |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-    |-----------------------------------------------------------|
-    |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
-    |-----------------------------------------------------------|
-    |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-    |-----------------------------------------------------------|
-    |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-    |-----------------------------------------------------------|
-    |    |    |    |                        |    |    |    |    |
-    `-----------------------------------------------------------'
-
+    $ make KEYMAP=[<name>]

+ 15 - 3
keyboard/planck/keymap_common.h

@@ -34,9 +34,7 @@ extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
 extern const uint16_t fn_actions[];
 
 
-/* GH60 keymap definition macro
- * K2C, K31 and  K3C are extra keys for ISO
- */
+// MIT Layout
 #define KEYMAP( \
     K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
     K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
@@ -49,4 +47,18 @@ extern const uint16_t fn_actions[];
     { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_NO,    KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B }  \
 }
 
+// Grid Layout
+#define KEYMAP_GRID( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B  \
+) { \
+    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
+    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
+    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
+    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B }  \
+}
+
+
 #endif

+ 70 - 0
keyboard/planck/keymap_matthew.c

@@ -0,0 +1,70 @@
+// by Matthew Pepers - https://github.com/pepers
+
+/* grid planck layout - modified programmer dvorak
+,-----------------------------------------------------------------------------------------------.
+| pause |   @   |   |   |   ^   |       |       |       |       |   *   |   #   |   $   |  del  |
+|  esc  |  ; :  |  , <  |  . >  |   P   |   Y   |   F   |   G   |   G   |   C   |   R   | bkspc |
+|  F1   |  F2   |  F3   |  F4   |  F5   |  F6   |  F7   |  F8   |  F9   |  F10  |  F11  |  F12  |
+|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
+|   &   |   /   |   {   |   (   |   [   |   =   |   !   |   ]   |   )   |   }   |   \   |   +   |
+|  ` ~  |   A   |   O   |   E   |   U   |   I   |   D   |   H   |   T   |   N   |   S   |  - _  |
+|   %   |   7   |   5   |   3   |   1   |   9   |   0   |   2   |   4   |   6   |   8   |   ?   |
+|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
+|       |       |       |       |       |       |       |       |       |       |       | prtsc |
+|  tab  |  ' "  |   Q   |   J   |   K   |   X   |   B   |   M   |   W   |   V   |   Z   | retrn |
+|       |       |       |       |       |       |       |       |       |       |       | insrt |
+|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
+|       |       |       |       |       |       |       |       |       |       |       |       |
+| lctrl | lgui  | lalt  | ralt  | lower | shift | space | raise | left  | down  |  up   | right |
+|       |       |       |       |       |       |       |       | home  | pgdn  | pgup  |  end  |
+`-----------------------------------------------------------------------------------------------'
+*/
+
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* 0: dvorak */
+  [0] = KEYMAP_GRID( ESC, SCLN, COMM,  DOT,    P,    Y,    F,    G,    C,    R,    L, BSPC,   \
+                     GRV,    A,    O,    E,    U,    I,    D,    H,    T,    N,    S, MINS,   \
+                     TAB, QUOT,    Q,    J,    K,    X,    B,    M,    W,    V,    Z,  ENT,   \
+                    LCTL, LGUI, LALT, RALT,  FN1, LSFT,  SPC,  FN2, LEFT, DOWN,   UP, RGHT),
+
+  /* 1: lower (FN1) */
+  [1] = KEYMAP_GRID( F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,  F10,  F11,  F12,   \
+                   FN17,    7,    5,    3,    1,    9,    0,    2,    4,    6,    8, FN18,   \
+                   TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,  INS,   \
+                   TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGDN, PGUP,  END),
+
+  /* 2: raise (FN2) */
+  [2] = KEYMAP_GRID(PAUS, FN19, FN20, FN21, TRNS, TRNS, TRNS, TRNS, FN22, FN23, FN24,  DEL,   \
+                    FN10, SLSH, FN11, FN12, LBRC,  EQL, FN13, RBRC, FN14, FN15, BSLS, FN16,   \
+                    TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR,   \
+                    TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(1),               // lower Fn layer
+    [2] = ACTION_LAYER_MOMENTARY(2),               // raise Fn layer
+
+    // lower row1
+    [17] = ACTION_MODS_KEY(MOD_LSFT, KC_5),        // %
+    [18] = ACTION_MODS_KEY(MOD_LSFT, KC_SLASH),    // ?
+    
+    // raise row0
+    [19] = ACTION_MODS_KEY(MOD_LSFT, KC_2),        // @
+    [20] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLASH),   // |
+    [21] = ACTION_MODS_KEY(MOD_LSFT, KC_6),        // ^
+    [22] = ACTION_MODS_KEY(MOD_LSFT, KC_8),        // *
+    [23] = ACTION_MODS_KEY(MOD_LSFT, KC_3),        // #
+    [24] = ACTION_MODS_KEY(MOD_LSFT, KC_4),        // $
+    
+    // raise row1
+    [10] = ACTION_MODS_KEY(MOD_LSFT, KC_7),        // &
+    [11] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRACKET), // {
+    [12] = ACTION_MODS_KEY(MOD_LSFT, KC_9),        // (
+    [13] = ACTION_MODS_KEY(MOD_LSFT, KC_1),        // !
+    [14] = ACTION_MODS_KEY(MOD_LSFT, KC_0),        // )
+    [15] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRACKET), // }
+    [16] = ACTION_MODS_KEY(MOD_LSFT, KC_EQUAL),    // +
+};

+ 180 - 0
keyboard/planck/keymap_nathan.c

@@ -0,0 +1,180 @@
+// Author: Nathan Ross Powell <nathanrospowell@gmail.com>
+// https://github.com/nathanrosspowell/tmk_keyboard/blob/planck-jack/keyboard/planck/keymap_nathan.c
+
+#include "keymap_common.h"
+
+#ifndef KEYMAP_GRID
+   /* Planck keymap definition macro for the 'grid' layout
+    * ,-----------------------------------------------------------------------.
+    * |     |     |     |     |     |     |     |     |     |     |     |     |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |     |     |     |     |     |     |     |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |     |     |     |     |     |     |     |
+    * |-----------------------------------------------------------------------|
+    * |     |     |     |     |     |     |     |     |     |     |     |     |
+    * `-----------------------------------------------------------------------'
+    */
+#define KEYMAP_GRID( \
+       K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B, \
+       K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B, \
+       K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B, \
+       K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B  \
+) { \
+    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
+    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
+    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
+    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B }  \
+}
+#endif
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+   /* 0: main layer
+    * ,-----------------------------------------------------------------------.
+    * |Tab  | q   | w   | e   | r   | t   | y   | u   | i   | o   | p   | BS  |
+    * |-----------------------------------------------------------------------|
+    * |Ctrl | a   | s   | d   | f   | g   | h   | j   | k   | l   | ;   | Ret |
+    * |-----------------------------------------------------------------------|
+    * |Shift| z   | x   | c   | v   | b   | n   | m   | [   | (   | {   | <   |
+    * |-----------------------------------------------------------------------|
+    * |Meta | \   | /   | Alt |Lower|Space|Space|Upper|Left |Down | Up  |Right|
+    * `-----------------------------------------------------------------------'
+    */
+  [0] = KEYMAP_GRID(
+       TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
+       LCTL, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, ENT,
+       RSFT, Z,    X,    C,    V,    B,    N,    M,    LBRC, FN10, FN11, FN12,
+       LGUI, BSLS, SLSH, LALT, FN0,  SPC,  SPC,  FN1,  LEFT, DOWN, UP,   RGHT),
+
+   /* 1: fn left/lower layer
+    * The top row are Visual Studio combos:
+    *   'Run', 'Breakpoint', 'Step over', 'Step into', 'Set cursor to line'
+    * 2nd row are key combos:
+    *   'ctrl-alt-delete', 'ctrl-shift-escape' 
+    * 3rd row are macros keys:
+    *   'P0' - 'P5' execute a script on Windows machines 
+    * ,-----------------------------------------------------------------------.
+    * | ESC | F5   | F9 | F10 | F11 |S+F11|CSF10|NLock|Num7 |Num8 |Num9 | Del |
+    * |-----------------------------------------------------------------------|
+    * |     |C/A/D|C/S/E| Ins |Print|Pause|SLock|Num0 |Num4 |Num5 |Num6 |Num= |
+    * |-----------------------------------------------------------------------|
+    * |     | P0  | P1  | P2  | P3  | P4  | P5  |Num. |Num1 |Num2 |Num3 |Num/ |
+    * |-----------------------------------------------------------------------|
+    * |     |User |     |     |     |     |     |     |Home |PgDn |PgUp | End |
+    * `-----------------------------------------------------------------------'
+    */
+  [1] = KEYMAP_GRID(
+       ESC,  F5,   F9,   F10,  F11,  FN30, FN31, NLCK, P7,   P8,   P9,   DEL,
+       TRNS, FN16, FN17, INS,  PSCR, PAUS, SLCK, P0,   P4,   P5,   P6,   PEQL,
+       TRNS, FN2,  FN3,  FN4,  FN5,  FN6,  FN7,  PDOT, P1,   P2,   P3,   PSLS,
+       TRNS, FN8,  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGDN, PGUP, END ),
+
+  /* 2: fn right/raise layer
+    * ,-----------------------------------------------------------------------.
+    * | F1  | F2  | F3  | F4  |F5   | F6  | F7  | F8  | F9  | F10 | F11 | F12 |
+    * |-----------------------------------------------------------------------|
+    * |     | !   | @   | #   | $   | %   | ^   | &   | *   | -   | +   | =   |
+    * |-----------------------------------------------------------------------|
+    * |     | _   | '   | "   | `   | ~   | ,   | .   | ]   | )   | }   | >   |
+    * |-----------------------------------------------------------------------|
+    * |     |NextT|PrevT|     |     |     | Esc |     |Mute |Vol- |Vol+ | P/P |
+    * `-----------------------------------------------------------------------'
+    */
+  [2] = KEYMAP_GRID(
+       F1,   F2,   F3,   F4,   F5,   F6,   F7,   F8,   F9,   F10,  F11,  F12,
+       TRNS, FN18, FN19, FN20, FN21, FN22, FN23, FN24, FN25, MINS, FN26, PAST,
+       TRNS, FN27, QUOT, FN28, GRV,  FN29, COMM, DOT,  RBRC, FN13, FN14, FN15,
+       TRNS, MNXT, MPRV, TRNS, TRNS, TRNS, ESC,  TRNS, MUTE, VOLD, VOLU, MPLY ),
+};
+
+enum macro_id {
+    M_P0,
+    M_P1,
+    M_P2,
+    M_P3,
+    M_P4,
+    M_P5,
+    M_USERNAME
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [0] = ACTION_LAYER_MOMENTARY(1), // left/lower layer
+  [1] = ACTION_LAYER_MOMENTARY(2), // right/raise layer
+  // Program macros
+  [2] = ACTION_MACRO(M_P0),
+  [3] = ACTION_MACRO(M_P1),
+  [4] = ACTION_MACRO(M_P2),
+  [5] = ACTION_MACRO(M_P3),
+  [6] = ACTION_MACRO(M_P4),
+  [7] = ACTION_MACRO(M_P5),
+  [8] = ACTION_MACRO(M_USERNAME),
+  // Braces
+  [10] = ACTION_MODS_KEY(MOD_LSFT, KC_9), // (
+  [11] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
+  [12] = ACTION_MODS_KEY(MOD_LSFT, KC_COMMA), // <
+  [13] = ACTION_MODS_KEY(MOD_LSFT, KC_0),  // )
+  [14] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // {
+  [15] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT), // >
+  // Combo
+  [16] = ACTION_MODS_KEY(MOD_LALT | MOD_LCTL, KC_DEL), // Ctrl+Alt+Delete
+  [17] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_ESC), // Ctrl+Shft+Escape
+  // Symbols
+  [18] = ACTION_MODS_KEY(MOD_LSFT, KC_1), // !
+  [19] = ACTION_MODS_KEY(MOD_LSFT, KC_2), // @
+  [20] = ACTION_MODS_KEY(MOD_LSFT, KC_3), // #
+  [21] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // $
+  [22] = ACTION_MODS_KEY(MOD_LSFT, KC_5), // %
+  [23] = ACTION_MODS_KEY(MOD_LSFT, KC_6), // ^
+  [24] = ACTION_MODS_KEY(MOD_LSFT, KC_7), // &
+  [25] = ACTION_MODS_KEY(MOD_LSFT, KC_8), // *
+  [26] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // + 
+  [27] = ACTION_MODS_KEY(MOD_LSFT, KC_MINUS), // _
+  [28] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOTE), // "
+  [29] = ACTION_MODS_KEY(MOD_LSFT, KC_GRAVE), // ~
+  // Debugging
+  [30] = ACTION_MODS_KEY(MOD_LSFT, KC_F11), // Step into
+  [31] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL, KC_F10), // Set cursor to line
+ };
+
+// Run a script and pass a key number to it. This is Windows specific and the script needs to be on your path.
+// *open run dialog* keypress.py [PRG_NUM]
+#define ADD_PYTHON_PROGRAM_ON_WIN( PRG_NUM )  MACRO( D(LGUI), T(R), U(LGUI), W(100), T(K), T(E), T(Y), T(P), T(R), T(E), T(S), T(S), T(DOT), T(P), T(Y), T(SPC), T(PRG_NUM), END )
+// *return*
+#define RUN_PYTHON_PROGRAM_ON_WIN MACRO( T(ENT), END )
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    keyevent_t event = record->event;
+    switch (id) {
+        case M_P0:
+            return event.pressed ?
+                ADD_PYTHON_PROGRAM_ON_WIN( 0 ) : 
+                RUN_PYTHON_PROGRAM_ON_WIN;
+        case M_P1:
+            return event.pressed ?
+                ADD_PYTHON_PROGRAM_ON_WIN( 1 ) : 
+                RUN_PYTHON_PROGRAM_ON_WIN;
+        case M_P2:
+            return event.pressed ?
+                ADD_PYTHON_PROGRAM_ON_WIN( 2 ) : 
+                RUN_PYTHON_PROGRAM_ON_WIN;
+        case M_P3:
+            return event.pressed ?
+                ADD_PYTHON_PROGRAM_ON_WIN( 3 ) : 
+                RUN_PYTHON_PROGRAM_ON_WIN;
+        case M_P4:
+            return event.pressed ?
+                ADD_PYTHON_PROGRAM_ON_WIN( 4 ) : 
+                RUN_PYTHON_PROGRAM_ON_WIN;
+        case M_P5:
+            return event.pressed ?
+                ADD_PYTHON_PROGRAM_ON_WIN( 5 ) : 
+                RUN_PYTHON_PROGRAM_ON_WIN;
+        case M_USERNAME:
+            return event.pressed ?
+                MACRO( T(N), T(A), T(T), T(H), T(A), T(N), T(R), T(O), T(S), T(S), T(P), T(O), T(W), T(E), T(L), T(L), END ) :
+                MACRO_NONE;
+
+    }
+    return MACRO_NONE;
+}