248 lines
27 KiB
C
248 lines
27 KiB
C
/*
|
|
▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀
|
|
▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄
|
|
█ █ █ █ █ █ █ █ █ █ █
|
|
▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀
|
|
█ ▄▄▄█▄▄▄ █ █
|
|
▀ █ █ █ █▄█
|
|
▀▀▀▀▀ █ █ █ ▀
|
|
▀ ▀ ▀ D E F A U L T
|
|
|
|
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
|
*/
|
|
|
|
#include QMK_KEYBOARD_H
|
|
|
|
// ┌─────────────────────────────────────────────────┐
|
|
// │ d e f i n e l a y e r s │
|
|
// └─────────────────────────────────────────────────┘
|
|
|
|
enum totem_layers {
|
|
_QWERTY,
|
|
_COLEMAK,
|
|
_LOWER,
|
|
_RAISE,
|
|
_ADJUST,
|
|
};
|
|
|
|
// ┌─────────────────────────────────────────────────┐
|
|
/* │ d e f i n e k e y c o d e s │
|
|
// └─────────────────────────────────────────────────┘ */
|
|
|
|
enum custom_keycodes {
|
|
COLEMAK = SAFE_RANGE,
|
|
QWERTY,
|
|
LOWER,
|
|
RAISE,
|
|
ADJUST,
|
|
MAKE_H,
|
|
SNAP
|
|
};
|
|
|
|
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
// │ K E Y M A P S │
|
|
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
|
/*
|
|
┌─────────────────────────────────────────────────┐
|
|
│ q w e r t y │ ╭╮╭╮╭╮╭╮
|
|
└─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
|
|
┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
|
|
╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │
|
|
├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
|
|
│ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │
|
|
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
|
|
│ Q │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ P │
|
|
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
|
|
│ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │
|
|
└─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/
|
|
|
|
[_QWERTY] = LAYOUT(
|
|
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
|
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
|
MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_S), MT(MOD_LCTL, KC_D), MT(MOD_LSFT, KC_F), KC_G, KC_H, MT(MOD_RSFT, KC_J), MT(MOD_LCTL, KC_K), MT(MOD_LALT, KC_L), MT(MOD_LGUI, KC_SCLN),
|
|
KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P,
|
|
KC_DEL, LT(2, KC_TAB), KC_SPC, KC_ENT, LT(3, KC_ESC), KC_BSPC
|
|
),
|
|
|
|
/*
|
|
|
|
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
│ c o l e m a k │ ╭╮╭╮╭╮╭╮
|
|
└─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
|
|
┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
|
|
╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │
|
|
├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
|
|
│ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │
|
|
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
|
|
│ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ ; │
|
|
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
|
|
│ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │
|
|
└─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/
|
|
|
|
[_COLEMAK] = LAYOUT(
|
|
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
|
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
|
|
MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_R), MT(MOD_LCTL, KC_S), MT(MOD_LSFT, KC_T), KC_D, KC_H, MT(MOD_RSFT, KC_N), MT(MOD_LCTL, KC_E), MT(MOD_LALT, KC_I), MT(MOD_LGUI, KC_O),
|
|
KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN,
|
|
KC_DEL, LT(2, KC_TAB), KC_SPC, KC_ENT, LT(3, KC_ESC), KC_BSPC
|
|
),
|
|
|
|
/*
|
|
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
│ l o w e r │ ╭╮╭╮╭╮╭╮
|
|
└─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
|
|
┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
|
|
╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │
|
|
├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
|
|
│ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │
|
|
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
|
|
│ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │
|
|
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
|
|
│ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │
|
|
└─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
|
|
|
|
[_LOWER] = LAYOUT(
|
|
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
|
KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
|
KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS,
|
|
SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______,
|
|
_______, _______, _______, _______, MO(4), KC_P0
|
|
),
|
|
/*
|
|
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
│ r a i s e │ ╭╮╭╮╭╮╭╮
|
|
└─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
|
|
┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
|
|
╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │
|
|
├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
|
|
│ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │
|
|
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
|
|
│ │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │
|
|
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
|
|
│ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │
|
|
└─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
|
|
|
|
[_RAISE] = LAYOUT(
|
|
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
|
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U), RALT(KC_3), KC_BSLS,
|
|
RALT(KC_A), RALT(KC_F), RALT(KC_S), RALT(KC_G), XXXXXXX, XXXXXXX, LSFT(RALT(KC_4)), RALT(KC_5), RALT(KC_4), RALT(KC_O),
|
|
XXXXXXX, LSFT(KC_GRV), KC_TILD, RALT(KC_C), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1,
|
|
_______, MO(4), _______, _______, _______, _______
|
|
),
|
|
/*
|
|
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
│ a d j u s t │ ╭╮╭╮╭╮╭╮
|
|
└─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
|
|
┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
|
|
╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │
|
|
├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
|
|
│ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │
|
|
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
|
|
│ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │
|
|
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
|
|
│ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │
|
|
└─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
|
|
|
|
[_ADJUST] = LAYOUT(
|
|
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
|
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12,
|
|
DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11,
|
|
MAKE_H, CG_TOGG, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13,
|
|
_______, _______, _______, _______, _______, _______
|
|
)
|
|
};
|
|
|
|
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
// │ M A C R O S │
|
|
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
|
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
switch (keycode) {
|
|
case CG_TOGG:
|
|
if (record->event.pressed) {
|
|
if (!keymap_config.swap_lctl_lgui) {
|
|
keymap_config.swap_lctl_lgui = true; // ─── MAC
|
|
} else {
|
|
keymap_config.swap_lctl_lgui = false; // ─── WIN
|
|
}
|
|
eeconfig_update_keymap(&keymap_config);
|
|
clear_keyboard(); // ──── clear to prevent stuck keys
|
|
return false;
|
|
}
|
|
|
|
// ┌─────────────────────────────────────────────────┐
|
|
// │ l a y e r │
|
|
// └─────────────────────────────────────────────────┘
|
|
|
|
case COLEMAK:
|
|
if (record->event.pressed) {
|
|
set_single_persistent_default_layer(_COLEMAK);
|
|
}
|
|
return false;
|
|
case QWERTY:
|
|
if (record->event.pressed) {
|
|
set_single_persistent_default_layer(_QWERTY);
|
|
}
|
|
return false;
|
|
|
|
// ┌─────────────────────────────────────────────────┐
|
|
// │ q m k │
|
|
// └─────────────────────────────────────────────────┘
|
|
|
|
case MAKE_H:
|
|
if (record->event.pressed) {
|
|
SEND_STRING("qmk compile -kb geigeigeist/totem -km default");
|
|
tap_code(KC_ENTER);
|
|
}
|
|
break;
|
|
|
|
// ┌─────────────────────────────────────────────────┐
|
|
// │ p r o d u c t i v i t y │
|
|
// └─────────────────────────────────────────────────┘
|
|
|
|
case SNAP:
|
|
if (record->event.pressed) {
|
|
if (keymap_config.swap_lctl_lgui) {
|
|
SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); // MAC
|
|
} else {
|
|
SEND_STRING(SS_LSFT(SS_LWIN("S"))); // WIN
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
/*
|
|
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
|
|
|
|
|
██████
|
|
██ ▄▄▄▄
|
|
██ ██▀▀██
|
|
▀▀ ██▄▄██
|
|
██████ ▀▀▀▀
|
|
██ ▄▄▄▄▄▄
|
|
██ ██▀▀▀▀
|
|
██ ██████
|
|
██▄▄▄▄
|
|
▀▀▀▀▀▀
|
|
████████
|
|
██ ██ ██
|
|
██ ██ ██
|
|
▀▀ ▀▀ ▀▀
|
|
████████
|
|
|
|
*/
|