mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-27 11:38:58 +06:00
157 lines
6.1 KiB
C
157 lines
6.1 KiB
C
|
/* Copyright 2021 Batuhan Başerdem
|
|||
|
* <baserdem.batuhan@gmail.com> @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 <http://www.gnu.org/licenses/>.
|
|||
|
*/
|
|||
|
#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;
|
|||
|
}
|