/* Copyright 2021 Batuhan Başerdem * @bbaserdem * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "bb-macro.h" /* MACRO Definitions * This file has my macros/unicodes * Hooks for other functionality to inject itself into the process_record */ // Tap dance definitons #ifdef AUDIO_ENABLE #ifdef TAP_DANCE_ENABLE qk_tap_dance_action_t tap_dance_actions[] = { // Music playback speed modulator [TD_AUDIO_TEMPO] = ACTION_TAP_DANCE_DOUBLE(MU_SLOW, MU_FAST), }; #endif // AUDIO_ENABLE #endif // TAP_DANCE_ENABLE // Unicode definitions; for single character keys // We mask their definitions if unicode is not enabled #ifdef UNICODEMAP_ENABLE const uint32_t PROGMEM unicode_map[] = { [UPC_A_CIRC] = 0x00C2, [LOW_A_CIRC] = 0x00E2, // Â â [UPC_C_CEDI] = 0x00C7, [LOW_C_CEDI] = 0x00E7, // Ç ç [UPC_G_BREV] = 0x011E, [LOW_G_BREV] = 0x001F, // Ğ ğ [UPC_I_CIRC] = 0x00CE, [LOW_I_CIRC] = 0x00EE, // Î î [UPC_I_DOTL] = 0x0049, [LOW_I_DOTL] = 0x0131, // I ı [UPC_I_DOTT] = 0x0130, [LOW_I_DOTT] = 0x0069, // İ i [UPC_O_DIAE] = 0x00D6, [LOW_O_DIAE] = 0x00F6, // Ö ö [UPC_S_CEDI] = 0x015E, [LOW_S_CEDI] = 0x015F, // Ş ş [UPC_U_CIRC] = 0x00DB, [LOW_U_CIRC] = 0x00FB, // Û û [UPC_U_DIAE] = 0x00DC, [LOW_U_DIAE] = 0x00FC, // Ü ü [UPC_ALPHA] = 0x0391, [LOW_ALPHA] = 0x03B1, // Α α [UPC_BETA] = 0x0392, [LOW_BETA] = 0x03B2, // Β β [UPC_GAMMA] = 0x0393, [LOW_GAMMA] = 0x03B3, // Γ γ [UPC_DELTA] = 0x0394, [LOW_DELTA] = 0x03B4, // Δ δ [UPC_EPSILON] = 0x0395, [LOW_EPSILON] = 0x03B5, // Ε ε [UPC_ZETA] = 0x0396, [LOW_ZETA] = 0x03B6, // Ζ ζ [UPC_ETA] = 0x0397, [LOW_ETA] = 0x03B7, // Η η [UPC_THETA] = 0x0398, [LOW_THETA] = 0x03B8, // Θ θ [UPC_IOTA] = 0x0399, [LOW_IOTA] = 0x03B9, // Ι ι [UPC_KAPPA] = 0x039A, [LOW_KAPPA] = 0x03BA, // Κ κ [UPC_LAMBDA] = 0x039B, [LOW_LAMBDA] = 0x03BB, // Λ λ [UPC_MU] = 0x039C, [LOW_MU] = 0x03BC, // Μ μ [UPC_NU] = 0x039D, [LOW_NU] = 0x03BD, // Ν ν [UPC_XI] = 0x039E, [LOW_XI] = 0x03BE, // Ξ ξ [UPC_OMICRON] = 0x039F, [LOW_OMICRON] = 0x03BF, // Ο ο [UPC_PI] = 0x03A0, [LOW_PI] = 0x03C0, // Π π [UPC_RHO] = 0x03A1, [LOW_RHO] = 0x03C1, // Ρ ρ [UPC_SIGMA] = 0x03A3, [LOW_SIGMA] = 0x03C3, // Σ σ [UPC_TAU] = 0x03A4, [LOW_TAU] = 0x03C4, // Τ τ [UPC_UPSILON] = 0x03A5, [LOW_UPSILON] = 0x03C5, // Υ υ [UPC_PHI] = 0x03A6, [LOW_PHI] = 0x03C6, // Φ φ [UPC_CHI] = 0x03A7, [LOW_CHI] = 0x03C7, // Χ χ [UPC_PSI] = 0x03A8, [LOW_PSI] = 0x03C8, // Ψ ψ [UPC_OMEGA] = 0x03A9, [LOW_OMEGA] = 0x03C9, // Ω ω [ELLIPSIS] = 0x2026, // … [PLANCK_CON] = 0x210F, // ℏ [ANGSTROM] = 0x212B, // Å [BITCOIN] = 0x20BF // ₿ }; #endif // UNICODEMAP_ENABLE // Keycodes bool process_record_macro(uint16_t keycode, keyrecord_t *record) { switch (keycode) { // AltGr + Caps should change the oled layout variable case KC_CAPSLOCK: if (record->event.pressed) { if (get_mods() & MOD_BIT(KC_RALT)) { userspace_config.layout = (userspace_config.layout + 1) % 3; } } return true; break; case BB_OLED: if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { // Scroll in opposite direction userspace_config.layout = (userspace_config.layout + 4) % 3; } else { userspace_config.layout = (userspace_config.layout + 1) % 3; } } return false; break; // Plain macros case BB_PGPK: // My public PGP key if (record->event.pressed) { SEND_STRING("0B7151C823559DD8A7A04CE36426139E2F4C6CCE"); } return false; break; case DBL_ANG: // Double angular bracket if (record->event.pressed) { SEND_STRING("<>"SS_TAP(X_LEFT)); } return false; break; case DBL_PAR: // Double paranthesis if (record->event.pressed) { SEND_STRING("()"SS_TAP(X_LEFT)); } return false; break; case DBL_BRC: // Double square brackets if (record->event.pressed) { SEND_STRING("[]"SS_TAP(X_LEFT)); } return false; break; case DBL_CBR: // Double curly brackets if (record->event.pressed) { SEND_STRING("{}"SS_TAP(X_LEFT)); } return false; break; // Unicode macros # ifdef UNICODEMAP_ENABLE case TR_FLAG: // Turkish flag if (record->event.pressed) { send_unicode_string("🇹🇷"); } return false; break; case BB_LENY: // Lenny face: ( ͡° ͜ʖ ͡°) if (record->event.pressed) { send_unicode_string("( ͡° ͜ʖ ͡°)"); } return false; break; case BB_TABL: // Table flip: ┻━┻︵ \(°□°)/ ︵ ┻━┻ if (record->event.pressed) { send_unicode_string("┻━┻︵ \\(°□°)/ ︵ ┻━┻"); } return false; break; # endif // UNICODEMAP_ENABLE } return true; }