Skip to content

Instantly share code, notes, and snippets.

@kiwec
Last active March 20, 2021 12:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kiwec/59ce7ef4b5aba3fb08996aaa76e1b851 to your computer and use it in GitHub Desktop.
Save kiwec/59ce7ef4b5aba3fb08996aaa76e1b851 to your computer and use it in GitHub Desktop.
Current planck keymap
#include QMK_KEYBOARD_H
// Readability
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Layers
#define DVORAK_LAYER 0
#define GAMING_LAYER 1
#define GMGTAB_LAYER 2
#define GMGDVK_LAYER 3
#define LOWER_LAYER 4
#define UPPER_LAYER 5
// Function keys
#define PLAYCTR FUNC(1) // Play/pause on tap, LCTRL on hold
#define COMPCTR FUNC(2) // Compose on tap, RCTRL on hold
#define LALTESC FUNC(3) // Escape on tap, LALT on hold
#define L_GMING FUNC(4) // Toggle gaming layer
// Compose key must be enabled for most macros
#define KC_COMP KC_RALT // Compose key
#define KC_CDIL M(0) // Cedilla
#define KC_AIGU M(1) // Acute accent
#define KC_GRVE M(2) // Grave accent
#define KC_CCRC M(3) // Circumflex accent
#define KC_EURO M(4) // Euro sign
#define KC_CTRC LCTL(KC_C) // Ctrl-C
#define KC_CTRV LCTL(KC_V) // Ctrl-V
#define KC_QUST S(KC_SLSH) // ?
// Layer switches
#define L_YDVRK M(6) // Y and enable temp dvorak layer
#define L_UDvRK M(7) // U and enable temp dvorak layer
#define L_DELDK M(8) // Del and enable temp dvorak layer
#define L_ESCDK M(9) // Esc and disable temp dvorak layer
#define L_ENTDK M(10) // Enter and disable temp dvorak layer
#define L_GGTAB M(11) // On hold, use gaming tab layer
#define L_LOWER MO(LOWER_LAYER) // On hold, use lower layer
#define L_UPPER MO(UPPER_LAYER) // On hold, use upper layer
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DVORAK_LAYER] = LAYOUT_planck_grid(
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
LALTESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT ,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_DEL ,
PLAYCTR, KC_PGUP, KC_PGDN, KC_LGUI, L_LOWER, KC_SPC, KC_SPC, L_UPPER, KC_AIGU, KC_GRVE, KC_CCRC, COMPCTR
),
[GAMING_LAYER] = LAYOUT_planck_grid(
KC_BSPC, KC_Q, KC_W, KC_E, KC_R, KC_T, L_YDVRK, L_UDvRK, KC_I, KC_O, KC_P, KC_ESC ,
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT ,
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_HOME, KC_UP, KC_END, L_DELDK ,
L_GGTAB, KC_DOT, KC_COMM, KC_SCLN, KC_SLSH, KC_SPC, KC_SPC, L_UPPER, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS
),
[GMGTAB_LAYER] = LAYOUT_planck_grid(
KC_0, KC_4, KC_5, KC_6, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
_______, KC_BSLS, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
[GMGDVK_LAYER] = LAYOUT_planck_grid(
XXXXXXX, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
L_ESCDK, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, L_ENTDK ,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, L_DELDK ,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, L_LOWER, KC_SPC, KC_SPC, XXXXXXX, KC_AIGU, KC_GRVE, KC_CCRC, COMPCTR
),
[LOWER_LAYER] = LAYOUT_planck_grid(
XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_CTRC, XXXXXXX, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_BSPC ,
XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_CTRV, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PMNS ,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PPLS ,
KC_MNXT, KC_MPRV, KC_VOLU, KC_VOLD, _______, KC_MUTE, KC_MUTE, XXXXXXX, KC_PDOT, KC_P0, KC_PEQL, KC_PENT
),
[UPPER_LAYER] = LAYOUT_planck_grid(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 ,
LALTESC, KC_AMPR, KC_EXLM, KC_EQL, KC_PLUS, KC_HASH, KC_DLR, KC_LPRN, KC_LBRC, KC_LCBR, KC_SLSH, _______ ,
KC_LSFT, KC_ASTR, KC_QUST, KC_PIPE, KC_MINS, KC_AT, KC_EURO, KC_RPRN, KC_RBRC, KC_RCBR, KC_BSLS, _______ ,
PLAYCTR, KC_TILD, KC_PERC, KC_UNDS, L_GMING, _______, _______, _______, KC_GRV, KC_CIRC, KC_CDIL, KC_F13
),
};
// clang-format on
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MPLY),
[2] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_COMP),
[3] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_ESC),
[4] = ACTION_LAYER_TOGGLE(GAMING_LAYER)};
/**
* Sends a key
*/
void send_key(uint16_t key) {
register_code(key);
unregister_code(key);
}
/**
* Toggles a layer
*/
void toggle_layer(uint16_t layer) {
if (IS_LAYER_ON(layer)) {
layer_off(layer);
} else {
layer_on(layer);
}
}
/**
* Enable layer while holding key
* As opposed to ACTION_LAYER_MOMENTARY, this actually sends the key
*/
const macro_t* layer_momentary_send(keyrecord_t* record, uint16_t layer,
uint16_t key) {
if (record->event.pressed) {
layer_on(layer);
register_code(key);
} else {
layer_off(layer);
unregister_code(key);
}
return MACRO_NONE;
}
/**
* Sends the specified key and toggles the layer
*/
const macro_t* tap_toggle_layer(keyrecord_t* record, uint16_t layer,
uint16_t key) {
if (record->event.pressed) {
toggle_layer(layer);
send_key(key);
}
return MACRO_NONE;
}
const macro_t* action_get_macro(keyrecord_t* record, uint8_t id, uint8_t opt) {
switch (id) {
case 0:
return MACRODOWN(T(COMP), T(COMM), END);
case 1:
return MACRODOWN(T(COMP), T(QUOTE), END);
case 2:
return MACRODOWN(T(COMP), T(GRV), END);
case 3:
return MACRODOWN(T(COMP), D(LSFT), T(6), U(LSFT), END);
case 4:
return MACRODOWN(T(COMP), T(C), T(EQL), END);
case 6:
return tap_toggle_layer(record, GMGDVK_LAYER, KC_Y);
case 7:
return tap_toggle_layer(record, GMGDVK_LAYER, KC_U);
case 8:
return tap_toggle_layer(record, GMGDVK_LAYER, KC_DEL);
case 9:
return tap_toggle_layer(record, GMGDVK_LAYER, KC_ESC);
case 10:
return tap_toggle_layer(record, GMGDVK_LAYER, KC_ENT);
case 11:
return layer_momentary_send(record, GMGTAB_LAYER, KC_TAB);
default:
return MACRO_NONE;
}
}
@kiwec
Copy link
Author

kiwec commented Mar 20, 2021

Updated layout for Planck EZ on qmk's master branch :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment