296 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			296 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      6
 | |
| #    define WPM_SAMPLE_PERIODS      50
 | |
| #    define WPM_ESTIMATED_WORD_SIZE 6
 | |
| #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
 | |
| #    ifdef SPLIT_KEYBOARD
 | |
| #        define OLED_UPDATE_INTERVAL 60
 | |
| #    else
 | |
| #        define OLED_UPDATE_INTERVAL 15
 | |
| #    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
 | |
| #    undef OLED_UPDATE_INTERVAL
 | |
| #    define OLED_UPDATE_INTERVAL 100
 | |
| #endif
 | 
