mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-30 04:37:14 +06:00
317 lines
11 KiB
C
317 lines
11 KiB
C
// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
// Use custom magic number so that when switching branches, EEPROM always gets reset
|
|
#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339
|
|
|
|
#ifdef IS_COMMAND
|
|
# undef IS_COMMAND
|
|
#endif
|
|
#define IS_COMMAND() (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) == MOD_MASK_SHIFT)
|
|
|
|
/* Set Polling rate to 1000Hz */
|
|
#define USB_POLLING_INTERVAL_MS 1
|
|
|
|
#if defined(SPLIT_KEYBOARD)
|
|
// # define SPLIT_TRANSPORT_MIRROR
|
|
# define SPLIT_LAYER_STATE_ENABLE
|
|
# define SPLIT_LED_STATE_ENABLE
|
|
# define SPLIT_MODS_ENABLE
|
|
# ifdef WPM_ENABLE
|
|
# define SPLIT_WPM_ENABLE
|
|
# endif
|
|
# ifdef OLED_ENABLE
|
|
# define SPLIT_OLED_ENABLE
|
|
# endif
|
|
# if defined(__AVR__) && !defined(SELECT_SOFT_SERIAL_SPEED)
|
|
# define SELECT_SOFT_SERIAL_SPEED 1
|
|
# endif
|
|
# ifdef CUSTOM_SPLIT_TRANSPORT_SYNC
|
|
# define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_STATE_SYNC, RPC_ID_USER_KEYMAP_SYNC, RPC_ID_USER_CONFIG_SYNC, RPC_ID_USER_WATCHDOG_SYNC, RPC_ID_USER_KEYLOG_STR
|
|
# endif
|
|
#endif
|
|
|
|
#if defined(WPM_ENABLE)
|
|
// # define WPM_LAUNCH_CONTROL
|
|
// # define WPM_ALLOW_COUNT_REGRESSOIN
|
|
// # define WPM_UNFILTERED
|
|
# define WPM_SAMPLE_SECONDS 10
|
|
# define WPM_SAMPLE_PERIODS 50
|
|
# define WPM_ESTIMATED_WORD_SIZE 5
|
|
#endif
|
|
|
|
#ifdef AUDIO_ENABLE
|
|
# define AUDIO_CLICKY
|
|
# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
|
|
|
# ifdef USER_SONG_LIST
|
|
# define STARTUP_SONG SONG(RICK_ROLL)
|
|
# define GOODBYE_SONG SONG(SONIC_RING)
|
|
# define DEFAULT_LAYER_SONGS \
|
|
{ SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) }
|
|
# define UNICODE_SONG_MAC SONG(MARIO_THEME)
|
|
# define UNICODE_SONG_LNX SONG(MARIO_POWERUP)
|
|
# define UNICODE_SONG_WIN SONG(MARIO_ONEUP)
|
|
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
|
# define UNICODE_SONG_WINC SONG(RICK_ROLL)
|
|
# else
|
|
# define STARTUP_SONG SONG(STARTUP_SOUND)
|
|
# define GOODBYE_SONG SONG(GOODBYE_SOUND)
|
|
# define DEFAULT_LAYER_SONGS \
|
|
{ SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) }
|
|
# define UNICODE_SONG_MAC SONG(QWERTY_SOUND)
|
|
# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND)
|
|
# define UNICODE_SONG_WIN SONG(DVORAK_SOUND)
|
|
# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND)
|
|
# define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND)
|
|
# endif
|
|
#endif // !AUDIO_ENABLE
|
|
|
|
#define UNICODE_SELECTED_MODES UC_WINC, UC_MAC
|
|
|
|
#ifdef RGBLIGHT_ENABLE
|
|
# define RGBLIGHT_SLEEP
|
|
# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250
|
|
# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24
|
|
#endif // RGBLIGHT_ENABLE
|
|
|
|
#ifdef RGB_MATRIX_ENABLE
|
|
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
|
|
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
|
|
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
|
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
|
// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
|
|
|
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
|
|
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
|
# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
|
# undef ENABLE_RGB_MATRIX_BREATHING
|
|
# undef ENABLE_RGB_MATRIX_BAND_SAT
|
|
# undef ENABLE_RGB_MATRIX_BAND_VAL
|
|
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
|
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
|
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
|
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_ALL
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
|
# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
|
# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
|
# undef ENABLE_RGB_MATRIX_DUAL_BEACON
|
|
# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
|
# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
|
# undef ENABLE_RGB_MATRIX_RAINDROPS
|
|
# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
|
# undef ENABLE_RGB_MATRIX_HUE_BREATHING
|
|
# undef ENABLE_RGB_MATRIX_HUE_PENDULUM
|
|
# undef ENABLE_RGB_MATRIX_HUE_WAVE
|
|
# undef ENABLE_RGB_MATRIX_PIXEL_RAIN
|
|
# undef ENABLE_RGB_MATRIX_PIXEL_FLOW
|
|
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
|
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
|
|
# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
|
# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
|
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
|
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
|
# undef ENABLE_RGB_MATRIX_SPLASH
|
|
# undef ENABLE_RGB_MATRIX_MULTISPLASH
|
|
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
|
|
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
|
|
|
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
|
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
|
# if !defined(SPLIT_KEYBOARD) && !defined(KEYBOARD_ergodox_ez) && !defined(KEYBOARD_moonlander)
|
|
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
|
# endif
|
|
# if defined(__arm__) || defined(__AVR_AT90USB1286__) || defined(KEYBOARD_launchpad)
|
|
// RGB Matrix Animation modes. Explicitly enabled
|
|
// For full list of effects, see:
|
|
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
|
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
|
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
|
# define ENABLE_RGB_MATRIX_BREATHING
|
|
# define ENABLE_RGB_MATRIX_BAND_SAT
|
|
# define ENABLE_RGB_MATRIX_BAND_VAL
|
|
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
|
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
|
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
|
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
|
# define ENABLE_RGB_MATRIX_CYCLE_ALL
|
|
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
|
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
|
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
|
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
|
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
|
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
|
# define ENABLE_RGB_MATRIX_DUAL_BEACON
|
|
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
|
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
|
# define ENABLE_RGB_MATRIX_RAINDROPS
|
|
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
|
# define ENABLE_RGB_MATRIX_HUE_BREATHING
|
|
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
|
|
# define ENABLE_RGB_MATRIX_HUE_WAVE
|
|
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
|
# define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
|
# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
|
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
|
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
|
# define ENABLE_RGB_MATRIX_SPLASH
|
|
# define ENABLE_RGB_MATRIX_MULTISPLASH
|
|
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
|
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
|
# endif // AVR
|
|
#endif // RGB_MATRIX_ENABLE
|
|
|
|
#ifdef OLED_ENABLE
|
|
# ifndef OLED_UPDATE_INTERVAL
|
|
# ifdef OLED_DRIVER_SH1107
|
|
# define OLED_UPDATE_INTERVAL 75
|
|
# else
|
|
# ifdef SPLIT_KEYBOARD
|
|
# define OLED_UPDATE_INTERVAL 60
|
|
# else
|
|
# define OLED_UPDATE_INTERVAL 15
|
|
# endif
|
|
# endif
|
|
# endif
|
|
# define OLED_DISABLE_TIMEOUT
|
|
# ifdef OLED_FONT_H
|
|
# undef OLED_FONT_H
|
|
# endif
|
|
# define OLED_FONT_H "oled/drashna_font.h"
|
|
# define OLED_FONT_END 255
|
|
// # define OLED_FONT_5X5
|
|
// # define OLED_FONT_AZTECH
|
|
// # define OLED_FONT_BMPLAIN
|
|
// # define OLED_FONT_CRACKERS
|
|
# define OLED_FONT_DEAD_MEAL
|
|
// # define OLED_FONT_EIN
|
|
// # define OLED_FONT_HISKYF21
|
|
// # define OLED_FONT_SQUASH
|
|
// # define OLED_FONT_ZXPIX
|
|
// # define OLED_FONT_SUPER_DIGG
|
|
|
|
// # define OLED_LOGO_BEBOP
|
|
// # define OLED_LOGO_CORNE
|
|
// # define OLED_LOGO_GMK_BAD
|
|
// # define OLED_LOGO_GOTHAM
|
|
// # define OLED_LOGO_HUE_MANITEE
|
|
// # define OLED_LOGO_LOOSE
|
|
# define OLED_LOGO_SCIFI
|
|
// # define OLED_LOGO_SETS3N
|
|
// # define OLED_LOGO_SKEEB
|
|
#endif
|
|
|
|
// #define WPM_ESTIMATED_WORD_SIZE 5
|
|
#define WPM_ALLOW_COUNT_REGRESSION
|
|
// #define WPM_UNFILTERED
|
|
// #define WPM_SAMPLE_SECONDS 5
|
|
// #define WPM_SAMPLE_PERIODS 50
|
|
// #define WPM_LAUNCH_CONTROL
|
|
|
|
#ifndef ONESHOT_TAP_TOGGLE
|
|
# define ONESHOT_TAP_TOGGLE 2
|
|
#endif // !ONESHOT_TAP_TOGGLE
|
|
|
|
#ifndef ONESHOT_TIMEOUT
|
|
# define ONESHOT_TIMEOUT 3000
|
|
#endif // !ONESHOT_TIMEOUT
|
|
|
|
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
|
|
#define PERMISSIVE_HOLD_PER_KEY
|
|
#define TAPPING_FORCE_HOLD_PER_KEY
|
|
#define RETRO_TAPPING_PER_KEY
|
|
#define TAPPING_TERM_PER_KEY
|
|
|
|
#ifndef TAPPING_TOGGLE
|
|
# define TAPPING_TOGGLE 1
|
|
#endif
|
|
|
|
#define TAP_CODE_DELAY 5
|
|
|
|
/* Disable unused and unneeded features to reduce on firmware size */
|
|
#ifdef LOCKING_SUPPORT_ENABLE
|
|
# undef LOCKING_SUPPORT_ENABLE
|
|
#endif
|
|
#ifdef LOCKING_RESYNC_ENABLE
|
|
# undef LOCKING_RESYNC_ENABLE
|
|
#endif
|
|
|
|
#ifdef CONVERT_TO_PROTON_C
|
|
// pins that are available but not present on Pro Micro
|
|
# define A3 PAL_LINE(GPIOA, 3)
|
|
# define A4 PAL_LINE(GPIOA, 4)
|
|
# define A5 PAL_LINE(GPIOA, 5)
|
|
# define A6 PAL_LINE(GPIOA, 6)
|
|
# define A7 PAL_LINE(GPIOA, 7)
|
|
# define A8 PAL_LINE(GPIOA, 8)
|
|
# define A13 PAL_LINE(GPIOA, 13)
|
|
# define A14 PAL_LINE(GPIOA, 14)
|
|
# define A15 PAL_LINE(GPIOA, 15)
|
|
# define B10 PAL_LINE(GPIOB, 10)
|
|
# define B11 PAL_LINE(GPIOB, 11)
|
|
# define B12 PAL_LINE(GPIOB, 12)
|
|
# define C13 PAL_LINE(GPIOC, 13)
|
|
# define C14 PAL_LINE(GPIOC, 14)
|
|
# define C15 PAL_LINE(GPIOC, 15)
|
|
#endif
|
|
|
|
#ifdef OLED_DRIVER_SH1107
|
|
# define OLED_DISPLAY_CUSTOM
|
|
# define OLED_IC_SH1107 2
|
|
# define OLED_DISPLAY_128X128
|
|
# define OLED_DISPLAY_WIDTH 128
|
|
# define OLED_DISPLAY_HEIGHT 128
|
|
# define OLED_MATRIX_SIZE (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH)
|
|
# define OLED_BLOCK_TYPE uint32_t
|
|
# define OLED_SOURCE_MAP \
|
|
{ 0, 8, 16, 24, 32, 40, 48, 56 }
|
|
# define OLED_TARGET_MAP \
|
|
{ 56, 48, 40, 32, 24, 16, 8, 0 }
|
|
# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8)
|
|
# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT)
|
|
# define OLED_COM_PINS COM_PINS_ALT
|
|
# define OLED_IC OLED_IC_SH1107
|
|
# ifndef OLED_BRIGHTNESS
|
|
# define OLED_BRIGHTNESS 50
|
|
# endif
|
|
#endif
|
|
|
|
#ifdef USE_I2CV1
|
|
# define I2C1_CLOCK_SPEED 400000
|
|
# define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
|
|
#endif
|
|
|
|
#define ENABLE_COMPILE_KEYCODE
|
|
|
|
#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
|
|
|
|
#ifndef SECURE_UNLOCK_SEQUENCE
|
|
# define SECURE_UNLOCK_SEQUENCE \
|
|
{ \
|
|
{2, 1}, {2, 2}, {2, 3}, { \
|
|
2, 4 \
|
|
} \
|
|
}
|
|
#endif
|