Last active
December 2, 2016 01:21
-
-
Save zphixon/7cebbca95a42da332f67094041e7102d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "planck.h" | |
#include "action_layer.h" | |
#include "eeconfig.h" | |
extern keymap_config_t keymap_config; | |
// zackh planck layout - too many tri-layers? nah m9 | |
// raise + lower = roll | |
// spin + flap = screw | |
#define _______ KC_TRNS | |
#define XXXXXXX KC_NO | |
// normal layers | |
#define __COLEMAK 0 | |
#define __QWERTY 1 | |
#define __LOWER 2 | |
#define __RAISE 3 | |
#define __GAME 4 | |
#define __SPIN 5 | |
#define __FLAP 6 | |
// tri-layers | |
#define __SCREW 15 | |
#define __ROLL 16 | |
// macros | |
enum planck_macros { | |
CAPREG = 2, | |
CAPWIN = 3, | |
CAPREC = 4, | |
CAPSCR = 5, | |
}; | |
#define _CAPREG M(CAPREG) | |
#define _CAPWIN M(CAPWIN) | |
#define _CAPREC M(CAPREC) | |
#define _CAPSCR M(CAPSCR) | |
// normal layers | |
enum planck_keycodes { | |
COLEMAK = SAFE_RANGE, | |
QWERTY, | |
LOWER, | |
RAISE, | |
GAME, | |
SPIN, | |
FLAP | |
}; | |
// layer maps | |
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
// colemak layer: default | |
[__COLEMAK] = { | |
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, | |
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, | |
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, | |
{KC_LCTL, SPIN, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, COLEMAK, QWERTY, GAME, FLAP } | |
}, | |
// also support qwerty layer | |
[__QWERTY] = { | |
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, | |
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, | |
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, | |
{KC_LCTL, SPIN, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, COLEMAK, QWERTY, GAME, FLAP } | |
}, | |
// gaming layer with numbers and stuff | |
[__GAME] = { | |
{KC_ESC, 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_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, | |
{KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, | |
{KC_LCTL, KC_Z, KC_X, KC_C, LOWER, KC_SPC, KC_SPC, RAISE, COLEMAK, QWERTY, GAME, KC_ENT }, | |
}, | |
// lower: symbols, movement, mouse movement, F keys | |
[__LOWER] = { | |
{KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, KC_DEL }, | |
{_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_BSLS}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D} | |
}, | |
// raise: {} () [], keypad, macros | |
[__RAISE] = { | |
{_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, | |
{_______, _______, _______, KC_LPRN, KC_RPRN, _______, _______, KC_HOME, KC_END, _______, _______, _______}, | |
{_______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | |
}, | |
// switch base layers | |
[__ROLL] = { | |
{RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, _CAPREC, _CAPWIN, _CAPSCR, _CAPREG, _______, _______, COLEMAK, QWERTY, GAME, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | |
}, | |
// spin: numbers, maybe other stuff later? | |
[__SPIN] = { | |
{_______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, _______, _______} | |
}, | |
// okay this is taking it a bit too far... | |
[__FLAP] = { | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, _______, _______, _______, _______, _______}, | |
{_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | |
}, | |
// why | |
[__SCREW] = { | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | |
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | |
}, | |
}; | |
// macros | |
const macro_t* action_get_macro(keyrecord_t* record, uint8_t id, uint8_t opt) { | |
switch (id) { | |
case CAPWIN: | |
// capture window with puu.sh | |
if (record->event.pressed) { | |
return MACRO( I(50), D(LALT), T(END), U(LALT), END ); | |
} | |
break; | |
case CAPREC: | |
// record screen with puu.sh | |
if (record->event.pressed) { | |
return MACRO( I(50), D(LALT), T(HOME), U(LALT), END ); | |
} | |
break; | |
case CAPSCR: | |
// screenie with puu.sh | |
if (record->event.pressed) { | |
return MACRO( I(50), D(LCTL), T(HOME), U(LCTL), END ); | |
} | |
break; | |
case CAPREG: | |
// capture region with puu.sh | |
if (record->event.pressed) { | |
return MACRO( I(50), D(LCTL), T(END), U(LCTL), END ); | |
} | |
break; | |
} | |
return MACRO_NONE; | |
} | |
// set default layer | |
void persistant_default_layer_set(uint16_t default_layer) { | |
eeconfig_update_default_layer(default_layer); | |
default_layer_set(default_layer); | |
} | |
// called every time a user-defined key code is pressed | |
bool process_record_user(uint16_t keycode, keyrecord_t* record) { | |
switch (keycode) { | |
case QWERTY: | |
if (record->event.pressed) | |
persistant_default_layer_set(1UL<<__QWERTY); | |
return false; | |
break; | |
case COLEMAK: | |
if (record->event.pressed) | |
persistant_default_layer_set(1UL<<__COLEMAK); | |
return false; | |
break; | |
case GAME: | |
if (record->event.pressed) | |
persistant_default_layer_set(1UL<<__GAME); | |
return false; | |
break; | |
case FLAP: | |
if (record->event.pressed) { | |
layer_on(__FLAP); | |
update_tri_layer(__SPIN, __FLAP, __SCREW); | |
} else { | |
layer_off(__FLAP); | |
update_tri_layer(__SPIN, __FLAP, __SCREW); | |
} | |
return false; | |
break; | |
case SPIN: | |
if (record->event.pressed) { | |
layer_on(__SPIN); | |
update_tri_layer(__SPIN, __FLAP, __SCREW); | |
} else { | |
layer_off(__SPIN); | |
update_tri_layer(__SPIN, __FLAP, __SCREW); | |
} | |
return false; | |
break; | |
case LOWER: | |
if (record->event.pressed) { | |
layer_on(__LOWER); | |
update_tri_layer(__LOWER, __RAISE, __ROLL); | |
} else { | |
layer_off(__LOWER); | |
update_tri_layer(__LOWER, __RAISE, __ROLL); | |
} | |
return false; | |
break; | |
case RAISE: | |
if (record->event.pressed) { | |
layer_on(__RAISE); | |
update_tri_layer(__LOWER, __RAISE, __ROLL); | |
} else { | |
layer_off(__RAISE); | |
update_tri_layer(__LOWER, __RAISE, __ROLL); | |
} | |
return false; | |
break; | |
} | |
return true; | |
} | |
void matrix_init_user(void) {} | |
const uint16_t PROGMEM fn_actions[] = {}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment