- /*
- Copyright 2020 Joel Elkins <joel@elkins.com>
-
- 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/>.
- */
-
- #pragma once
-
- #include QMK_KEYBOARD_H
-
- // Secrets
-
- #if !defined(NO_SECRETS) && __has_include("secrets.h")
- # define DO_SECRETS
- #endif
-
- void send_secret_string(uint8_t n);
-
- // standard layers
-
- enum jdelkins_layers {
- _QWERTY = 0,
- _RPT,
- _GAME,
- _FUNC,
- _KP,
- _SECRETS,
- _ADJUST,
- _LAYER_MAX
- };
-
- // key definitions
-
- typedef union {
- uint32_t raw;
- struct {
- bool system_mac :1;
- };
- } user_config_t;
-
- extern user_config_t user_config;
-
- static inline void do_mac_key(uint16_t norm_key, uint16_t mac_key, keyrecord_t *record) {
- uint16_t key = user_config.system_mac ? mac_key : norm_key;
- if (record->event.pressed)
- register_code16(key);
- else
- unregister_code16(key);
- }
-
- enum jdelkins_keycodes {
- KB_MAKE = SAFE_RANGE,
- KB_FLSH,
- KB_VRSN,
- KB_BOOT,
- FW_WRD,
- BK_WRD,
- KB_BOL,
- KB_EOL,
- TG_SYS,
- KB_COPY,
- KB_PASTE,
- MY_GUI,
- MY_ALT,
- MY_RGUI,
- MY_RALT,
- MY_CALC,
-
- #ifdef DO_SECRETS
- KC_SECRET_1,
- KC_SECRET_2,
- KC_SECRET_3,
- KC_SECRET_4,
- KC_SECRET_5,
- KC_SECRET_6,
- #endif
-
- USER_SAFE_RANGE,
- };
-
- #ifdef DO_SECRETS
- # define KC_SEC1 KC_SECRET_1
- # define KC_SEC2 KC_SECRET_2
- # define KC_SEC3 KC_SECRET_3
- # define KC_SEC4 KC_SECRET_4
- # define KC_SEC5 KC_SECRET_5
- # define KC_SEC6 KC_SECRET_6
- #else
- # define KC_SEC1 KC_NO
- # define KC_SEC2 KC_NO
- # define KC_SEC3 KC_NO
- # define KC_SEC4 KC_NO
- # define KC_SEC5 KC_NO
- # define KC_SEC6 KC_NO
- #endif
-
- #define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT)
- #define MODS_CTRL (get_mods() & MOD_MASK_CTRL)
- #define MODS_ALT (get_mods() & MOD_MASK_ALT)
- #define MODS_GUI (get_mods() & MOD_MASK_GUI)
-
- #define MY_CAPS LCTL_T(KC_CAPS)
- #define MY_SPC LT(_FUNC, KC_SPC)
-
- #define NUMLOCK_ON host_keyboard_led_state().num_lock
- #define CAPSLOCK_ON host_keyboard_led_state().caps_lock
-
- #ifdef TAP_DANCE_ENABLE
-
- enum {
- SINGLE_TAP = 1,
- SINGLE_HOLD = 2,
- DOUBLE_TAP = 3,
- DOUBLE_HOLD = 4,
- DOUBLE_SINGLE_TAP = 5, //send two single taps
- TRIPLE_TAP = 6,
- TRIPLE_HOLD = 7
- };
-
- int cur_dance(qk_tap_dance_state_t *state); // prefer tap
- int hold_cur_dance(qk_tap_dance_state_t *state); // prefer hold
-
- #endif // TAP_DANCE_ENABLE
|