qmk_userspace/keyboards/klor/keymaps/default/geist/keymap.c
2024-05-13 21:33:46 -05:00

802 lines
65 KiB
C

/*
█ █ █ ▄▄▄▀▀▀▀▀▀▄▄▄ █▀▀▀▀▀▀▀▀▀▀█
█ █ █ ▄▀ ▀▄ █ █
█ █ █ ▄▀ ▀▄ █ █
█ █ █ █ █ █ █
█ █ █ █ █ █ █
█ █ █ █ █ █▄▄▄▄▄▄▄▄▄▄█
█ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █
█ █ █ █ ▀▄ ▄▀ █ █
██ █ █ ▀▄ ▄▀ █ █
█ █ █▄▄▄▄▄▄▄▄ ▀▀▀▄▄▄▄▄▄▀▀▀ █ █
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
┌─┐┌─╴╷┌──┬─
│ ┐├─╴│└─┐│
└─┘└─╴╵╶─┘╵
*/
#include QMK_KEYBOARD_H
#include <stdio.h>
#include <string.h>
#include "klor.h"
#ifdef HAPTIC_ENABLE
#include "drivers/haptic/DRV2605L.h"
#endif //HAPTIC ENABLE
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ D E F I N I T I O N S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e l a y e r s │
// └───────────────────────────────────────────────────────────┘
enum klor_layers {
/* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
_COLEMAK,
_QWERTY,
_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,
OS_SWAP,
WMAIL,
GMAIL,
GIPHY,
MAKE_H,
SNAP1,
SNAP2
};
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e m a c r o n a m e s │
// └───────────────────────────────────────────────────────────┘
// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐
#define GUI_A MT(MOD_LGUI, KC_A)
#define ALT_R MT(MOD_LALT, KC_R)
#define CTL_S MT(MOD_LCTL, KC_S)
#define SHT_T MT(MOD_LSFT, KC_T)
// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐
#define SHT_N MT(MOD_RSFT, KC_N)
#define CTL_E MT(MOD_LCTL, KC_E)
#define ALT_I MT(MOD_LALT, KC_I)
#define GUI_O MT(MOD_LGUI, KC_O)
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e c o m b o s │
// └───────────────────────────────────────────────────────────┘
const uint16_t PROGMEM esc_combo[] = {KC_TAB, KC_Q, COMBO_END};
//const uint16_t PROGMEM save_combo[] = {KC_D, KC_S, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
COMBO(esc_combo, KC_ESC)
//COMBO(save_combo, C(KC_S))
};
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e k e y o v e r r i d e s │
// └───────────────────────────────────────────────────────────┘
const key_override_t sve_key_override = ko_make_basic(MOD_MASK_GUI, KC_S, C(KC_S));
// This globally defines all key overrides to be used ├───────────┐
const key_override_t **key_overrides = (const key_override_t *[]){
&sve_key_override,
NULL // Null terminate the array of overrides!
};
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e s o u n d s │
// └───────────────────────────────────────────────────────────┘
#ifdef AUDIO_ENABLE
#define WINXP_SOUND W__NOTE(_DS6), Q__NOTE(_DS5), H__NOTE(_AS5), H__NOTE(_GS5), H__NOTE(_DS5), H__NOTE(_DS6), H__NOTE(_AS5)
#define MAC_SOUND S__NOTE(_CS5), B__NOTE(_C5)
float winxp_song[][2] = SONG(WINXP_SOUND);
float mac_song[][2] = SONG(MAC_SOUND);
#endif // AUDIO_ENABLE
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ K E Y M A P S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
┌───────────────────────────────────────────────────────────┐
│ c o l e m a k │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
│ TAB │ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │ " │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ K │ M │ , │ . │ / │ SHIFT │
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
│ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │
└─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */
[_COLEMAK] = LAYOUT_polydactyl(
//╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT,
KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
KC_DEL, LOWER, KC_SPC, KC_ESC, KC_LGUI, KC_ENT, RAISE, KC_BSPC
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ q w e r t y │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
│ TAB │ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │ " │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ N │ M │ , │ . │ / │ SHIFT │
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
│ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │
└─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */
[_QWERTY] = LAYOUT_polydactyl(
//╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_DEL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_ENT, RAISE, KC_BSPC
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ l o w e r │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ CAPSLCK │ NUMLCK │ ↑ │ = │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ 7 │ 8 │ 9 │ + │
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
│ ESC │ HOME │ ← │ ↓ │ → │ [ ├─╯ ╰─┤ ] │ 4 │ 5 │ 6 │ - │ ' │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ MUTE ││PLY/PSE ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
│ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │
└─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */
[_LOWER] = LAYOUT_polydactyl(
//╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT,
SNAP2, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_MUTE, KC_MPLY, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______,
_______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, KC_P0
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ r a i s e │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ ! │ @ │ # │ $ │ % │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ ^ │ & │ Ü │ ° │ / │
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
│ GMX │ Ä │ è │ SZ │ é │ ├─╯ ╰─┤ │ ¥ │ € │ £ │ Ö │ │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ WEB │ ` │ ~ │ CUE │ │ ││ MUTE ││PLY/PSE ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
│ GIPHY │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │
└─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */
[_RAISE] = LAYOUT_polydactyl(
//╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS,
GMAIL, 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,
WMAIL, KC_GRV, LSFT(KC_GRV),RALT(KC_C),XXXXXXX,XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1,
GIPHY, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ a d j u s t │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ AUDIO │ HAPTIC │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ F7 │ F8 │ F9 │ F14 │
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
│ RESET │ DEBUG │ QWERTY │ │ │ ├─╯ ╰─┤ │ F4 │ F5 │ F6 │ F12 │ F13 │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ MUTE ││PLY/PSE ││ │ F1 │ F2 │ F3 │ F10 │ F11 │
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
│ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │
└─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */
[_ADJUST] = LAYOUT_polydactyl(
//╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷
AU_TOG, HPT_TOG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14,
QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13,
MAKE_H, OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F11,
_______, _______, _______, _______, _______, _______, _______, _______
)
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ t e m p l a t e │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
│ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │
└─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
│ │ │ │ ││ │ │ │ │
└─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘
[_TEMPLATE] = LAYOUT_polydactyl(
//╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)*/
};
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ T R A C K B A L L │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
#ifdef POINTING_DEVICE_ENABLE
void pointing_device_init_user(void) {
set_auto_mouse_layer(_MOUSE); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of <mouse_layer>
set_auto_mouse_enable(true); // always required before the auto mouse feature will work
}
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
if (scrolling_mode) {
mouse_report.h = mouse_report.x;
mouse_report.v = mouse_report.y;
mouse_report.x = 0;
mouse_report.y = 0;
}
return mouse_report;
}
#endif //POINTING_DEVICE_ENABLE
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ H A P T I C F E E D B A C K │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
void keyboard_post_init_user(void) {
// Call the post init code.
#if HAPTIC_ENABLE
haptic_disable(); // disables per key haptic feedback by default
#endif //HAPTIC ENABLE
#if RGB_MATRIX_ENABLE
rgblight_enable_noeeprom();
//rgblight_sethsv_noeeprom(35, 255, 255); // set default RGB color to yellow
#endif //RGB_MATRIX_ENABLE
}
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ O L E D │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
#ifdef OLED_ENABLE
// ┌───────────────────────────────────────────────────────────┐
// │ d y n a m i c m a c r o │
// └───────────────────────────────────────────────────────────┘
char layer_state_str[24];
char o_text[24] = "";
int dmacro_num = 0;
#ifdef DYNAMIC_MACRO_ENABLE
char dmacro_text[4][24] = { "", "RECORDING", "STOP RECORDING", "PLAY RECORDING"};
static uint16_t dmacro_timer;
const char PROGMEM rec_ico[] = {0xD1, 0xE1, 0};
const char PROGMEM stop_ico[] = {0xD3, 0xE1, 0};
const char PROGMEM play_ico[] = {0xD2, 0xE1, 0};
// DYNMACRO RECORD ├─────────────────────────────────────────────────────────────┐
void dynamic_macro_record_start_user(void) {
dmacro_num = 1;
return;
}
// DYNMACRO STOP RECORDING ├─────────────────────────────────────────────────────┐
void dynamic_macro_record_end_user(int8_t direction) {
dmacro_num = 2;
dmacro_timer = timer_read();
return;
}
// DYNMACRO PLAY RECORDING ├─────────────────────────────────────────────────────┐
void dynamic_macro_play_user(int8_t direction) {
dmacro_num = 3;
dmacro_timer = timer_read();
return;
}
#endif //DYNAMIC_MACRO_ENABLE
void matrix_scan_user(void) {
#ifdef DYNAMIC_MACRO_ENABLE
// DynMacroTimer
if(dmacro_num > 0){
if (timer_elapsed(dmacro_timer) < 3000) {
strcpy ( o_text, dmacro_text[dmacro_num] );
}
else {
if (dmacro_num == 1) {
strcpy ( o_text, dmacro_text[1] );
}
else {
strcpy ( o_text, layer_state_str );
dmacro_num = 0;
}
}
}
#endif //DYNAMIC_MACRO_ENABLE
}
// ┌───────────────────────────────────────────────────────────┐
// │ o l e d g r a p h i c s │
// └───────────────────────────────────────────────────────────┘
void render_os_lock_status(void) {
static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0};
static const char PROGMEM sep_h1[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0};
static const char PROGMEM sep_h2[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0};
static const char PROGMEM face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0};
static const char PROGMEM face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0};
static const char PROGMEM os_m_1[] = {0x95, 0x96, 0};
static const char PROGMEM os_m_2[] = {0xB5, 0xB6, 0};
static const char PROGMEM os_w_1[] = {0x97, 0x98, 0};
static const char PROGMEM os_w_2[] = {0xB7, 0xB8, 0};
static const char PROGMEM s_lock[] = {0x8F, 0x90, 0};
static const char PROGMEM n_lock[] = {0x91, 0x92, 0};
static const char PROGMEM c_lock[] = {0x93, 0x94, 0};
static const char PROGMEM b_lock[] = {0xE1, 0xE1, 0};
#ifdef AUDIO_ENABLE
static const char PROGMEM aud_en[] = {0xAF, 0xB0, 0};
static const char PROGMEM aud_di[] = {0xCF, 0xD0, 0};
#endif
#ifdef HAPTIC_ENABLE
static const char PROGMEM hap_en[] = {0xB1, 0xB2, 0};
#endif
// os mode status ────────────────────────────────────────┐
oled_write_ln_P(sep_v, false);
if (keymap_config.swap_lctl_lgui) {
oled_write_P(os_m_1, false); // ──── MAC
} else {
oled_write_P(os_w_1, false); // ──── WIN
}
oled_write_P(sep_h1, false);
oled_write_P(face_1, false);
if (keymap_config.swap_lctl_lgui) {
oled_write_P(os_m_2, false); // ──── MAC
} else {
oled_write_P(os_w_2, false); // ──── WIN
}
oled_write_P(sep_h1, false);
oled_write_P(face_2, false);
oled_write_ln_P(sep_v, false);
// lock key layer status ─────────────────────────────────┐
led_t led_usb_state = host_keyboard_led_state();
if (led_usb_state.num_lock) {
oled_write_P(n_lock, false); // ──── NUMLOCK
} else {
oled_write_P(b_lock, false);
}
if (led_usb_state.caps_lock) {
oled_write_P(c_lock, false); // ─── CAPSLOCK
} else {
oled_write_P(b_lock, false);
}
if (led_usb_state.scroll_lock) { // ─ SCROLLLOCK
oled_write_P(s_lock, false);
} else {
oled_write_P(b_lock, false);
}
// hardware feature status ──────────────────────────────┐
oled_write_P(sep_h2, false);
#ifndef AUDIO_ENABLE
oled_write_P(b_lock, false);
#endif
#ifndef HAPTIC_ENABLE
oled_write_P(b_lock, false);
#endif
#ifdef AUDIO_ENABLE // ────────────────── AUDIO
if (is_audio_on()) {
oled_write_P(aud_en, false);
} else {
oled_write_P(aud_di, false);
}
#endif // AUDIO ENABLE
#ifdef HAPTIC_ENABLE // ─────────────── HAPTIC
oled_write_P(hap_en, false);
#endif // HAPTIC ENABLE
}
// layer status ──────────────────────────────────────────┐
int layerstate = 0;
layer_state_t layer_state_set_kb(layer_state_t state) {
switch (get_highest_layer(layer_state | default_layer_state)) {
case 0:
strcpy ( layer_state_str, "BASE COLEMAK");
break;
case 1:
strcpy ( layer_state_str, "BASE QWERTY");
break;
case 2:
strcpy ( layer_state_str, "LOWER");
break;
case 3:
strcpy ( layer_state_str, "RAISE");
break;
case 4:
strcpy ( layer_state_str, "ADJUST");
break;
default:
strcpy ( layer_state_str, "XXXXXX");
}
if (dmacro_num < 1) {
strcpy ( o_text, layer_state_str );
}
//return state;
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
// ┌───────────────────────────────────────────────────────────┐
// │ w r i t e t o o l e d │
// └───────────────────────────────────────────────────────────┘
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
if (is_keyboard_master()) { // ────────────────────────── PRIMARY SIDE
// layer status ──────────────────────────────────────────────────┐
#ifdef DYNAMIC_MACRO_ENABLE
if(dmacro_num == 1){ oled_write_P(rec_ico, false); }
if(dmacro_num == 2){ oled_write_P(stop_ico, false); }
if(dmacro_num == 3){ oled_write_P(play_ico, false); }
#endif //DYNAMIC_MACRO_ENABLE
oled_write_ln(o_text, false);
render_os_lock_status();
} else { // ─────────────────────────────────────────── SECONDARY SIDE
// KLOR face ─────────────────────────────────────────────────────┐
static const char PROGMEM klor_face[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(klor_face, sizeof(klor_face));
}
return false;
}
#endif // OLED_ENABLE
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SHT_T:
return TAPPING_TERM - 150;
case SHT_N:
return TAPPING_TERM - 150;
default:
return TAPPING_TERM;
}
}
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ M A C R O S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case OS_SWAP:
if (record->event.pressed) {
if (!keymap_config.swap_lctl_lgui) {
keymap_config.swap_lctl_lgui = true; // ─── MAC
#ifdef AUDIO_ENABLE
PLAY_SONG(mac_song);
#endif // AUDIO_ENABLE
}
else {
keymap_config.swap_lctl_lgui = false; // ─── WIN
#ifdef AUDIO_ENABLE
PLAY_SONG(winxp_song);
#endif // AUDIO_ENABLE
}
#ifdef HAPTIC_ENABLE
DRV_pulse(pulsing_strong);
#endif // HAPTIC_ENABLE
eeconfig_update_keymap(keymap_config.raw);
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);
#ifdef HAPTIC_ENABLE
DRV_pulse(transition_hum);
#endif // HAPTIC_ENABLE
}
return false;
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
#ifdef HAPTIC_ENABLE
DRV_pulse(transition_hum);
#endif // HAPTIC_ENABLE
}
return false;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
// ┌───────────────────────────────────────────────────────────┐
// │ q m k │
// └───────────────────────────────────────────────────────────┘
case MAKE_H:
if (record->event.pressed) {
#ifdef KEYBOARD_klor_2040
SEND_STRING ("qmk compile -kb klor/2040 -km geist");
#else
SEND_STRING ("qmk compile -kb klor -km geist");
#endif
tap_code(KC_ENTER);
}
break;
// ┌───────────────────────────────────────────────────────────┐
// │ p r o d u c t i v i t y │
// └───────────────────────────────────────────────────────────┘
case WMAIL:
if (record->event.pressed) {
SEND_STRING ("igit.igit@web.de");
}
break;
case GMAIL:
if (record->event.pressed) {
SEND_STRING ("igit@gmx.de");
}
break;
case GIPHY:
if (record->event.pressed) {
SEND_STRING ("@gif ");
}
break;
case SNAP1:
if (record->event.pressed) {
if (keymap_config.swap_lctl_lgui) {
SEND_STRING(SS_LSFT(SS_LCMD("4"))); //MAC
} else {
SEND_STRING(SS_LWIN(SS_TAP(X_PSCR))); //WIN
}
}
break;
case SNAP2:
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;
case KC_MPLY:
if (record->event.pressed) {
#ifdef HAPTIC_ENABLE
DRV_pulse(sharp_click);
#endif // HAPTIC_ENABL
}
break;
}
return true;
}
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ E N C O D E R │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
#ifdef ENCODER_ENABLE
// ┌───────────────────────────────────────────────────────────┐
// │ e n c o d e r L │
// └───────────────────────────────────────────────────────────┘
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
// ┌───────────────────────────────────────────────────────────┐
// │ e n c o d e r R │
// └───────────────────────────────────────────────────────────┘
} else if (index == 1) {
if(IS_LAYER_ON(_LOWER)){
if (clockwise) {
tap_code(KC_MNXT);
} else {
tap_code(KC_MPRV);
}
}else {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
}
}
return true;
}
#endif // ENCODER_ENABLE
/*
▐█ ▟▛ ▐█ ▄▆▀▀▀▀▀▀▆▄ ▐█▀▀▀▀▀█▌
▐█ ▟▛ ▐█ ▟▛ ▜▙ ▐█ █▌
▐█ ▟▛ ▐█ ▐█ █▋▐█ █▌
▐█ ▟█▙ ▐█ ▐█ █▋▐█▀▀▜█▀▀▘
▐█▟▛ ▜▙ ▐█ ▜▙ ▟▛ ▐█ ▜▙
▐█▛ ▜▙ ▐█▄▄▄▄ ▀▜▆▄▄▄▄▆▛▀ ▐█ ▜▙
▄██████████████▄
████████████████
▄██████▀ ▀████▀ ▀██████▄
███████▄ ▄████▄ ▄███████
███████████▀▀▀▀███████████
▀█████████▀ ▄▄ ▀█████████▀
████▀ ▄██▄ ▀████
████▄▄████▄▄████
*/