forked from mirrors/qmk_userspace
[Keymap] RGB Changes for Drashna Keyboards (#5803)
* Disable a bunch of reactive modes * Enable rgb matrix for Corne Keyboard * Convert CRKBD to rgb matrix * Add Gergo keyboard layout * Make Diablo 3 tap dance better * Add basic support for Planck EZ * Fix RGB Matrix stuff * Fix keycodes for Planck EZ * Update CRKBD OLED stuff * Fix typo for sleep on ergodox glow * Improve my gergo layout * Scrolling OLED key logger! * Change gergo layout * Hnadle unicode keycodes if unicode is disabled * Disable COMMAND/CONSOLE for gergo * Fix right side control * Re-enable LTO for all platforms Since I got updated arm gcc binaries that no longer error out on lto * Update formatting to match newer community standards Poor 2 space * Re-alight startup animation to use new HUE range * Streamline gitlab ci scripts * Disabled Space Cadet * Add support for breathing table * Enable new LTO Option And clean up defines that will now be repeatitive * Remove vscode settings * Additional formatting cleanup of config.h files
This commit is contained in:
parent
7a751f1141
commit
f3d5b1091d
38 changed files with 1414 additions and 1444 deletions
|
@ -1,9 +1,7 @@
|
|||
stages:
|
||||
- test
|
||||
- build
|
||||
- deploy
|
||||
|
||||
Preliminary Test:
|
||||
QMK Firmware:
|
||||
stage: test
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
|
@ -18,36 +16,7 @@ Preliminary Test:
|
|||
script:
|
||||
- make test:all
|
||||
- make planck/rev6:default planck/rev5:default
|
||||
|
||||
QMK Firmware Defaults:
|
||||
stage: deploy
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
tags:
|
||||
- linux
|
||||
image: ubuntu:18.10
|
||||
before_script:
|
||||
- apt-get update -qy
|
||||
- apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip
|
||||
- avr-gcc --version
|
||||
- uname -a
|
||||
script:
|
||||
- make test:all
|
||||
- make all:default -j16
|
||||
|
||||
Drashna Firmware:
|
||||
stage: build
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
tags:
|
||||
- linux
|
||||
image: ubuntu:18.10
|
||||
before_script:
|
||||
- apt-get update -qy
|
||||
- apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip
|
||||
- avr-gcc --version
|
||||
script:
|
||||
- make keebio/iris/rev2:drashna keebio/iris/rev2:drashna_old ergodox_ez:drashna ergodox_ez:drashna_glow keebio/viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna planck/rev6:drashna fractal:drashna primekb/prime_m:drashna -j16 --output-sync
|
||||
- make keebio/iris/rev2:drashna keebio/iris/rev2:drashna_old ergodox_ez:drashna ergodox_ez:drashna_glow keebio/viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna planck/rev6:drashna fractal:drashna primekb/prime_m:drashna -j2 --output-sync
|
||||
artifacts:
|
||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
||||
paths:
|
||||
|
|
|
@ -2,50 +2,43 @@
|
|||
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define AUDIO_CLICKY
|
||||
#define STARTUP_SONG SONG(RICK_ROLL)
|
||||
#define GOODBYE_SONG SONG(SONIC_RING)
|
||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
|
||||
# define AUDIO_CLICKY
|
||||
# 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 AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
||||
// #ifdef RGBLIGHT_ENABLE
|
||||
// #define NO_MUSIC_MODE
|
||||
// #endif //RGBLIGHT_ENABLE/
|
||||
// #ifndef __arm__
|
||||
// #undef NOTE_REST
|
||||
// #define NOTE_REST 1.00f
|
||||
// #endif // !__arm__
|
||||
# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
||||
|
||||
#define UNICODE_SONG_OSX SONG(RICK_ROLL)
|
||||
#define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
||||
#define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
||||
#define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
||||
#define UNICODE_SONG_WINC SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_OSX SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
||||
# define UNICODE_SONG_WINC SONG(RICK_ROLL)
|
||||
|
||||
#endif // !AUDIO_ENABLE
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGBLIGHT_SLEEP
|
||||
#undef RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
# define RGBLIGHT_SLEEP
|
||||
# undef RGBLIGHT_ANIMATIONS
|
||||
# define RGBLIGHT_EFFECT_BREATHING
|
||||
# define RGBLIGHT_EFFECT_SNAKE
|
||||
# define RGBLIGHT_EFFECT_KNIGHT
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#ifndef ONESHOT_TAP_TOGGLE
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
# define ONESHOT_TAP_TOGGLE 2
|
||||
#endif // !ONESHOT_TAP_TOGGLE
|
||||
|
||||
#ifndef ONESHOT_TIMEOUT
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
# define ONESHOT_TIMEOUT 3000
|
||||
#endif// !ONESHOT_TIMEOUT
|
||||
|
||||
#ifndef QMK_KEYS_PER_SCAN
|
||||
#define QMK_KEYS_PER_SCAN 4
|
||||
# define QMK_KEYS_PER_SCAN 4
|
||||
#endif // !QMK_KEYS_PER_SCAN
|
||||
|
||||
|
||||
|
@ -62,24 +55,27 @@
|
|||
#define FORCE_NKRO
|
||||
|
||||
#ifndef TAPPING_TOGGLE
|
||||
#define TAPPING_TOGGLE 1
|
||||
# define TAPPING_TOGGLE 1
|
||||
#endif
|
||||
|
||||
#ifdef TAPPING_TERM
|
||||
#undef TAPPING_TERM
|
||||
# undef TAPPING_TERM
|
||||
#endif // TAPPING_TERM
|
||||
#if defined(KEYBOARD_ergodox_ez)
|
||||
#define TAPPING_TERM 185
|
||||
# define TAPPING_TERM 185
|
||||
#elif defined(KEYBOARD_crkbd)
|
||||
#define TAPPING_TERM 200
|
||||
# define TAPPING_TERM 200
|
||||
#else
|
||||
#define TAPPING_TERM 175
|
||||
# define TAPPING_TERM 175
|
||||
#endif
|
||||
|
||||
|
||||
// Disable action_get_macro and fn_actions, since we don't use these
|
||||
// and it saves on space in the firmware.
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
||||
|
||||
#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
|
||||
|
|
|
@ -19,78 +19,78 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
userspace_config_t userspace_config;
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
#define DRASHNA_UNICODE_MODE UC_WIN
|
||||
#define DRASHNA_UNICODE_MODE UC_WIN
|
||||
#else
|
||||
// set to 2 for UC_WIN, set to 4 for UC_WINC
|
||||
#define DRASHNA_UNICODE_MODE 2
|
||||
#define DRASHNA_UNICODE_MODE 2
|
||||
#endif
|
||||
|
||||
|
||||
// This block is for all of the gaming macros, as they were all doing
|
||||
// the same thing, but with differring text sent.
|
||||
bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
|
||||
if (!record->event.pressed || override) {
|
||||
uint16_t keycode;
|
||||
if (userspace_config.is_overwatch) {
|
||||
keycode = KC_BSPC;
|
||||
} else {
|
||||
keycode = KC_ENTER;
|
||||
if (!record->event.pressed || override) {
|
||||
uint16_t keycode;
|
||||
if (userspace_config.is_overwatch) {
|
||||
keycode = KC_BSPC;
|
||||
} else {
|
||||
keycode = KC_ENTER;
|
||||
}
|
||||
clear_keyboard();
|
||||
tap_code(keycode);
|
||||
wait_ms(TAP_CODE_DELAY);
|
||||
send_string_with_delay(str, TAP_CODE_DELAY);
|
||||
wait_ms(TAP_CODE_DELAY);
|
||||
tap_code(KC_ENTER);
|
||||
}
|
||||
clear_keyboard();
|
||||
tap_code(keycode);
|
||||
wait_ms(TAP_CODE_DELAY);
|
||||
send_string_with_delay(str, TAP_CODE_DELAY);
|
||||
wait_ms(TAP_CODE_DELAY);
|
||||
tap_code(KC_ENTER);
|
||||
}
|
||||
if (override) wait_ms(3000);
|
||||
return false;
|
||||
if (override) wait_ms(3000);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
|
||||
static uint16_t this_timer;
|
||||
if(pressed) {
|
||||
this_timer= timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
||||
tap_code(code);
|
||||
} else {
|
||||
register_code(mod_code);
|
||||
tap_code(code);
|
||||
unregister_code(mod_code);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
static uint16_t this_timer;
|
||||
if(pressed) {
|
||||
this_timer= timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
||||
tap_code(code);
|
||||
} else {
|
||||
register_code(mod_code);
|
||||
tap_code(code);
|
||||
unregister_code(mod_code);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
|
||||
if(pressed) {
|
||||
this_timer= timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
||||
tap_code(code);
|
||||
} else {
|
||||
register_code(mod_code);
|
||||
tap_code(code);
|
||||
unregister_code(mod_code);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
if(pressed) {
|
||||
this_timer= timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
||||
tap_code(code);
|
||||
} else {
|
||||
register_code(mod_code);
|
||||
tap_code(code);
|
||||
unregister_code(mod_code);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void bootmagic_lite(void) {
|
||||
matrix_scan();
|
||||
#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
|
||||
wait_ms(DEBOUNCING_DELAY * 2);
|
||||
#elif defined(DEBOUNCE) && DEBOUNCE > 0
|
||||
wait_ms(DEBOUNCE * 2);
|
||||
#else
|
||||
wait_ms(30);
|
||||
#endif
|
||||
matrix_scan();
|
||||
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
|
||||
bootloader_jump();
|
||||
}
|
||||
matrix_scan();
|
||||
#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
|
||||
wait_ms(DEBOUNCING_DELAY * 2);
|
||||
#elif defined(DEBOUNCE) && DEBOUNCE > 0
|
||||
wait_ms(DEBOUNCE * 2);
|
||||
#else
|
||||
wait_ms(30);
|
||||
#endif
|
||||
matrix_scan();
|
||||
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
|
||||
bootloader_jump();
|
||||
}
|
||||
}
|
||||
|
||||
// Add reconfigurable functions here, for keymap customization
|
||||
|
@ -103,21 +103,21 @@ void matrix_init_keymap(void) {}
|
|||
// Call user matrix init, set default RGB colors and then
|
||||
// call the keymap's init function
|
||||
void matrix_init_user(void) {
|
||||
userspace_config.raw = eeconfig_read_user();
|
||||
userspace_config.raw = eeconfig_read_user();
|
||||
|
||||
#ifdef BOOTLOADER_CATERINA
|
||||
DDRD &= ~(1<<5);
|
||||
PORTD &= ~(1<<5);
|
||||
#ifdef BOOTLOADER_CATERINA
|
||||
DDRD &= ~(1<<5);
|
||||
PORTD &= ~(1<<5);
|
||||
|
||||
DDRB &= ~(1<<0);
|
||||
PORTB &= ~(1<<0);
|
||||
#endif
|
||||
DDRB &= ~(1<<0);
|
||||
PORTB &= ~(1<<0);
|
||||
#endif
|
||||
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||
get_unicode_input_mode();
|
||||
#endif //UNICODE_ENABLE
|
||||
matrix_init_keymap();
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||
get_unicode_input_mode();
|
||||
#endif //UNICODE_ENABLE
|
||||
matrix_init_keymap();
|
||||
}
|
||||
|
||||
__attribute__((weak))
|
||||
|
@ -125,26 +125,26 @@ void keyboard_post_init_keymap(void){ }
|
|||
|
||||
void keyboard_post_init_user(void){
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
keyboard_post_init_rgb();
|
||||
keyboard_post_init_rgb();
|
||||
#endif
|
||||
keyboard_post_init_keymap();
|
||||
keyboard_post_init_keymap();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void shutdown_keymap(void) {}
|
||||
|
||||
void shutdown_user (void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_mode_noeeprom(1);
|
||||
rgblight_setrgb_red();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// uint16_t timer_start = timer_read();
|
||||
// rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
|
||||
// while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
|
||||
#endif //RGB_MATRIX_ENABLE
|
||||
shutdown_keymap();
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_mode_noeeprom(1);
|
||||
rgblight_setrgb_red();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// uint16_t timer_start = timer_read();
|
||||
// rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
|
||||
// while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
|
||||
#endif //RGB_MATRIX_ENABLE
|
||||
shutdown_keymap();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
|
@ -158,7 +158,7 @@ __attribute__ ((weak))
|
|||
void suspend_wakeup_init_keymap(void) {}
|
||||
|
||||
void suspend_wakeup_init_user(void) {
|
||||
suspend_wakeup_init_keymap();
|
||||
suspend_wakeup_init_keymap();
|
||||
}
|
||||
|
||||
|
||||
|
@ -168,54 +168,54 @@ void matrix_scan_keymap(void) {}
|
|||
// No global matrix scan code, so just run keymap's matrix
|
||||
// scan function
|
||||
void matrix_scan_user(void) {
|
||||
static bool has_ran_yet;
|
||||
if (!has_ran_yet) {
|
||||
has_ran_yet = true;
|
||||
startup_user();
|
||||
}
|
||||
static bool has_ran_yet;
|
||||
if (!has_ran_yet) {
|
||||
has_ran_yet = true;
|
||||
startup_user();
|
||||
}
|
||||
|
||||
#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
|
||||
run_diablo_macro_check();
|
||||
run_diablo_macro_check();
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
matrix_scan_rgb();
|
||||
matrix_scan_rgb();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
matrix_scan_keymap();
|
||||
matrix_scan_keymap();
|
||||
}
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
uint32_t layer_state_set_keymap (uint32_t state) {
|
||||
return state;
|
||||
return state;
|
||||
}
|
||||
|
||||
// on layer change, no matter where the change was initiated
|
||||
// Then runs keymap's layer change check
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
state = layer_state_set_rgb(state);
|
||||
state = layer_state_set_rgb(state);
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
return layer_state_set_keymap (state);
|
||||
return layer_state_set_keymap (state);
|
||||
}
|
||||
|
||||
|
||||
__attribute__ ((weak))
|
||||
uint32_t default_layer_state_set_keymap (uint32_t state) {
|
||||
return state;
|
||||
return state;
|
||||
}
|
||||
|
||||
// Runs state check and changes underglow color and animation
|
||||
uint32_t default_layer_state_set_user(uint32_t state) {
|
||||
state = default_layer_state_set_keymap(state);
|
||||
state = default_layer_state_set_keymap(state);
|
||||
#if 0
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
state = default_layer_state_set_rgb(state);
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
#endif
|
||||
return state;
|
||||
return state;
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
|
@ -225,16 +225,16 @@ void led_set_keymap(uint8_t usb_led) {}
|
|||
// So far, I only have keyboard specific code,
|
||||
// So nothing goes here.
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
led_set_keymap(usb_led);
|
||||
led_set_keymap(usb_led);
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void eeconfig_init_keymap(void) {}
|
||||
|
||||
void eeconfig_init_user(void) {
|
||||
userspace_config.raw = 0;
|
||||
userspace_config.rgb_layer_change = true;
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
userspace_config.raw = 0;
|
||||
userspace_config.rgb_layer_change = true;
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||
get_unicode_input_mode();
|
||||
|
|
|
@ -22,36 +22,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "wrappers.h"
|
||||
#include "process_records.h"
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
#include "tap_dances.h"
|
||||
# include "tap_dances.h"
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
#include "rgb_stuff.h"
|
||||
# include "rgb_stuff.h"
|
||||
#endif
|
||||
#if defined(AUDIO_ENABLE) && __GNUC__ > 7
|
||||
#if __has_include("drashna_song_list.h")
|
||||
#include "drashna_song_list.h"
|
||||
#endif
|
||||
# if __has_include("drashna_song_list.h")
|
||||
# include "drashna_song_list.h"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Define layer names */
|
||||
enum userspace_layers {
|
||||
_QWERTY = 0,
|
||||
_NUMLOCK = 0,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_WORKMAN,
|
||||
_NORMAN,
|
||||
_MALTRON,
|
||||
_EUCALYN,
|
||||
_CARPLAX,
|
||||
_MODS, /* layer 8 */
|
||||
_GAMEPAD,
|
||||
_DIABLO,
|
||||
_MACROS,
|
||||
_MEDIA,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
_QWERTY = 0,
|
||||
_NUMLOCK = 0,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_WORKMAN,
|
||||
_NORMAN,
|
||||
_MALTRON,
|
||||
_EUCALYN,
|
||||
_CARPLAX,
|
||||
_MODS, /* layer 8 */
|
||||
_GAMEPAD,
|
||||
_DIABLO,
|
||||
_MACROS,
|
||||
_MEDIA,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -73,14 +73,14 @@ void led_set_keymap(uint8_t usb_led);
|
|||
void eeconfig_init_keymap(void);
|
||||
|
||||
typedef union {
|
||||
uint32_t raw;
|
||||
struct {
|
||||
bool rgb_layer_change :1;
|
||||
bool is_overwatch :1;
|
||||
bool nuke_switch :1;
|
||||
uint8_t unicode_mod :4;
|
||||
bool swapped_numbers :1;
|
||||
};
|
||||
uint32_t raw;
|
||||
struct {
|
||||
bool rgb_layer_change :1;
|
||||
bool is_overwatch :1;
|
||||
bool nuke_switch :1;
|
||||
uint8_t unicode_mod :4;
|
||||
bool swapped_numbers :1;
|
||||
};
|
||||
} userspace_config_t;
|
||||
|
||||
extern userspace_config_t userspace_config;
|
||||
|
@ -92,13 +92,13 @@ But since TD() doesn't work when tap dance is disabled
|
|||
We use custom codes here, so we can substitute the right stuff
|
||||
*/
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
#define KC_D3_1 TD(TD_D3_1)
|
||||
#define KC_D3_2 TD(TD_D3_2)
|
||||
#define KC_D3_3 TD(TD_D3_3)
|
||||
#define KC_D3_4 TD(TD_D3_4)
|
||||
# define KC_D3_1 TD(TD_D3_1)
|
||||
# define KC_D3_2 TD(TD_D3_2)
|
||||
# define KC_D3_3 TD(TD_D3_3)
|
||||
# define KC_D3_4 TD(TD_D3_4)
|
||||
#else // TAP_DANCE_ENABLE
|
||||
#define KC_D3_1 KC_1
|
||||
#define KC_D3_2 KC_2
|
||||
#define KC_D3_3 KC_3
|
||||
#define KC_D3_4 KC_4
|
||||
# define KC_D3_1 KC_1
|
||||
# define KC_D3_2 KC_2
|
||||
# define KC_D3_3 KC_3
|
||||
# define KC_D3_4 KC_4
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
|
|
|
@ -4,12 +4,12 @@ uint16_t copy_paste_timer;
|
|||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Defines actions tor my global custom keycodes. Defined in drashna.h file
|
||||
|
@ -18,140 +18,140 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
|
||||
// If console is enabled, it will print the matrix position and status of each key pressed
|
||||
#ifdef KEYLOGGER_ENABLE
|
||||
#if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
|
||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
|
||||
#else
|
||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
||||
#endif
|
||||
# if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
|
||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
|
||||
# else
|
||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
||||
# endif
|
||||
#endif //KEYLOGGER_ENABLE
|
||||
|
||||
switch (keycode) {
|
||||
case KC_QWERTY ... KC_CARPLAX:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
||||
}
|
||||
break;
|
||||
switch (keycode) {
|
||||
case KC_QWERTY ... KC_CARPLAX:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||
if (!record->event.pressed) {
|
||||
uint8_t temp_mod = get_mods();
|
||||
uint8_t temp_osm = get_oneshot_mods();
|
||||
clear_mods(); clear_oneshot_mods();
|
||||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
|
||||
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||
if (!record->event.pressed) {
|
||||
uint8_t temp_mod = get_mods();
|
||||
uint8_t temp_osm = get_oneshot_mods();
|
||||
clear_mods(); clear_oneshot_mods();
|
||||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
|
||||
#ifndef MAKE_BOOTLOADER
|
||||
if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
|
||||
if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
|
||||
#endif
|
||||
{
|
||||
#if defined(__arm__)
|
||||
send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
|
||||
#elif defined(BOOTLOADER_DFU)
|
||||
send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
|
||||
#elif defined(BOOTLOADER_HALFKAY)
|
||||
send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
|
||||
#elif defined(BOOTLOADER_CATERINA)
|
||||
send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
|
||||
#endif // bootloader options
|
||||
}
|
||||
if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); }
|
||||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
||||
}
|
||||
break;
|
||||
{
|
||||
#if defined(__arm__)
|
||||
send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
|
||||
#elif defined(BOOTLOADER_DFU)
|
||||
send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
|
||||
#elif defined(BOOTLOADER_HALFKAY)
|
||||
send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
|
||||
#elif defined(BOOTLOADER_CATERINA)
|
||||
send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
|
||||
#endif // bootloader options
|
||||
}
|
||||
if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); }
|
||||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
||||
}
|
||||
break;
|
||||
|
||||
case VRSN: // Prints firmware version
|
||||
if (record->event.pressed) {
|
||||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
||||
}
|
||||
break;
|
||||
case VRSN: // Prints firmware version
|
||||
if (record->event.pressed) {
|
||||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
||||
}
|
||||
break;
|
||||
|
||||
// These are a serious of gaming macros.
|
||||
// Only enables for the viterbi, basically,
|
||||
// to save on firmware space, since it's limited.
|
||||
// These are a serious of gaming macros.
|
||||
// Only enables for the viterbi, basically,
|
||||
// to save on firmware space, since it's limited.
|
||||
#ifdef MACROS_ENABLED
|
||||
case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
|
||||
if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
|
||||
case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
|
||||
if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
|
||||
userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
|
||||
#endif //RGBLIGHT_ENABLE
|
||||
break;
|
||||
case KC_SALT:
|
||||
return send_game_macro("Salt, salt, salt...", record, false);
|
||||
case KC_MORESALT:
|
||||
return send_game_macro("Please sir, can I have some more salt?!", record, false);
|
||||
case KC_SALTHARD:
|
||||
return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
|
||||
case KC_GOODGAME:
|
||||
return send_game_macro("Good game, everyone!", record, false);
|
||||
case KC_GLHF:
|
||||
return send_game_macro("Good luck, have fun!!!", record, false);
|
||||
case KC_SYMM:
|
||||
return send_game_macro("Left click to win!", record, false);
|
||||
case KC_JUSTGAME:
|
||||
return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
|
||||
case KC_TORB:
|
||||
return send_game_macro("That was positively riveting!", record, false);
|
||||
case KC_AIM:
|
||||
send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
|
||||
return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false);
|
||||
case KC_C9:
|
||||
return send_game_macro("OMG!!! C9!!!", record, false);
|
||||
case KC_GGEZ:
|
||||
return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
|
||||
break;
|
||||
case KC_SALT:
|
||||
return send_game_macro("Salt, salt, salt...", record, false);
|
||||
case KC_MORESALT:
|
||||
return send_game_macro("Please sir, can I have some more salt?!", record, false);
|
||||
case KC_SALTHARD:
|
||||
return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
|
||||
case KC_GOODGAME:
|
||||
return send_game_macro("Good game, everyone!", record, false);
|
||||
case KC_GLHF:
|
||||
return send_game_macro("Good luck, have fun!!!", record, false);
|
||||
case KC_SYMM:
|
||||
return send_game_macro("Left click to win!", record, false);
|
||||
case KC_JUSTGAME:
|
||||
return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
|
||||
case KC_TORB:
|
||||
return send_game_macro("That was positively riveting!", record, false);
|
||||
case KC_AIM:
|
||||
send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
|
||||
return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false);
|
||||
case KC_C9:
|
||||
return send_game_macro("OMG!!! C9!!!", record, false);
|
||||
case KC_GGEZ:
|
||||
return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
|
||||
#endif // MACROS_ENABLED
|
||||
|
||||
|
||||
case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
|
||||
case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
if (record->event.pressed) {
|
||||
uint8_t dtime;
|
||||
for (dtime = 0; dtime < 4; dtime++) {
|
||||
diablo_key_time[dtime] = diablo_times[0];
|
||||
}
|
||||
}
|
||||
if (record->event.pressed) {
|
||||
uint8_t dtime;
|
||||
for (dtime = 0; dtime < 4; dtime++) {
|
||||
diablo_timer[dtime].key_time = diablo_times[0];
|
||||
}
|
||||
}
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
break;
|
||||
break;
|
||||
|
||||
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if(record->event.pressed){
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
register_code(KC_LCTL);
|
||||
tap_code(KC_C);
|
||||
unregister_code(KC_LCTL);
|
||||
} else { // Tap, paste
|
||||
register_code(KC_LCTL);
|
||||
tap_code(KC_V);
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
if(record->event.pressed){
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
register_code(KC_LCTL);
|
||||
tap_code(KC_C);
|
||||
unregister_code(KC_LCTL);
|
||||
} else { // Tap, paste
|
||||
register_code(KC_LCTL);
|
||||
tap_code(KC_V);
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#ifdef UNICODE_ENABLE
|
||||
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
||||
}
|
||||
break;
|
||||
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
|
||||
}
|
||||
break;
|
||||
case UC_SHRG: // ¯\_(ツ)_/¯
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
|
||||
}
|
||||
break;
|
||||
case UC_DISA: // ಠ_ಠ
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("0CA0 005F 0CA0");
|
||||
}
|
||||
break;
|
||||
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
||||
}
|
||||
break;
|
||||
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
|
||||
}
|
||||
break;
|
||||
case UC_SHRG: // ¯\_(ツ)_/¯
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
|
||||
}
|
||||
break;
|
||||
case UC_DISA: // ಠ_ಠ
|
||||
if (record->event.pressed) {
|
||||
send_unicode_hex_string("0CA0 005F 0CA0");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
return process_record_keymap(keycode, record) &&
|
||||
}
|
||||
return process_record_keymap(keycode, record) &&
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
process_record_user_rgb(keycode, record) &&
|
||||
process_record_user_rgb(keycode, record) &&
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
process_record_secrets(keycode, record);
|
||||
process_record_secrets(keycode, record);
|
||||
}
|
||||
|
|
|
@ -2,48 +2,48 @@
|
|||
#include "drashna.h"
|
||||
|
||||
#if defined(KEYMAP_SAFE_RANGE)
|
||||
#define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
|
||||
# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
|
||||
#else
|
||||
#define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
|
||||
# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
|
||||
#endif
|
||||
|
||||
enum userspace_custom_keycodes {
|
||||
VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
|
||||
KC_QWERTY, // Sets default layer to QWERTY
|
||||
KC_COLEMAK, // Sets default layer to COLEMAK
|
||||
KC_DVORAK, // Sets default layer to DVORAK
|
||||
KC_WORKMAN, // Sets default layer to WORKMAN
|
||||
KC_NORMAN, // Sets default layer to NORMAN
|
||||
KC_MALTRON, // Sets default layer to MALTRON
|
||||
KC_EUCALYN, // Sets default layer to EUCALYN
|
||||
KC_CARPLAX, // Sets default layer to CARPLAX
|
||||
KC_DIABLO_CLEAR, // Clears all Diablo Timers
|
||||
KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
|
||||
KC_SALT, // See drashna.c for details
|
||||
KC_MORESALT,
|
||||
KC_SALTHARD,
|
||||
KC_GOODGAME,
|
||||
KC_SYMM,
|
||||
KC_JUSTGAME,
|
||||
KC_GLHF,
|
||||
KC_TORB,
|
||||
KC_AIM,
|
||||
KC_C9,
|
||||
KC_GGEZ,
|
||||
KC_MAKE, // Run keyboard's customized make command
|
||||
KC_RGB_T, // Toggles RGB Layer Indication mode
|
||||
KC_SECRET_1, // test1
|
||||
KC_SECRET_2, // test2
|
||||
KC_SECRET_3, // test3
|
||||
KC_SECRET_4, // test4
|
||||
KC_SECRET_5, // test5
|
||||
KC_CCCV, // Hold to copy, tap to paste
|
||||
KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
|
||||
UC_FLIP, // (ಠ痊ಠ)┻━┻
|
||||
UC_TABL, // ┬─┬ノ( º _ ºノ)
|
||||
UC_SHRG, // ¯\_(ツ)_/¯
|
||||
UC_DISA, // ಠ_ಠ
|
||||
NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes
|
||||
VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
|
||||
KC_QWERTY, // Sets default layer to QWERTY
|
||||
KC_COLEMAK, // Sets default layer to COLEMAK
|
||||
KC_DVORAK, // Sets default layer to DVORAK
|
||||
KC_WORKMAN, // Sets default layer to WORKMAN
|
||||
KC_NORMAN, // Sets default layer to NORMAN
|
||||
KC_MALTRON, // Sets default layer to MALTRON
|
||||
KC_EUCALYN, // Sets default layer to EUCALYN
|
||||
KC_CARPLAX, // Sets default layer to CARPLAX
|
||||
KC_DIABLO_CLEAR, // Clears all Diablo Timers
|
||||
KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
|
||||
KC_SALT, // See drashna.c for details
|
||||
KC_MORESALT,
|
||||
KC_SALTHARD,
|
||||
KC_GOODGAME,
|
||||
KC_SYMM,
|
||||
KC_JUSTGAME,
|
||||
KC_GLHF,
|
||||
KC_TORB,
|
||||
KC_AIM,
|
||||
KC_C9,
|
||||
KC_GGEZ,
|
||||
KC_MAKE, // Run keyboard's customized make command
|
||||
KC_RGB_T, // Toggles RGB Layer Indication mode
|
||||
KC_SECRET_1, // test1
|
||||
KC_SECRET_2, // test2
|
||||
KC_SECRET_3, // test3
|
||||
KC_SECRET_4, // test4
|
||||
KC_SECRET_5, // test5
|
||||
KC_CCCV, // Hold to copy, tap to paste
|
||||
KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
|
||||
UC_FLIP, // (ಠ痊ಠ)┻━┻
|
||||
UC_TABL, // ┬─┬ノ( º _ ºノ)
|
||||
UC_SHRG, // ¯\_(ツ)_/¯
|
||||
UC_DISA, // ಠ_ಠ
|
||||
NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes
|
||||
};
|
||||
|
||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
||||
|
|
|
@ -11,80 +11,80 @@ extern rgb_config_t rgb_matrix_config;
|
|||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
void rgblight_sethsv_default_helper(uint8_t index) {
|
||||
rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index);
|
||||
rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index);
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#ifdef INDICATOR_LIGHTS
|
||||
void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
|
||||
if (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
|
||||
if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) ) {
|
||||
#ifdef SHFT_LED1
|
||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
||||
#endif // SHFT_LED1
|
||||
#ifdef SHFT_LED2
|
||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
||||
#endif // SHFT_LED2
|
||||
} else {
|
||||
#ifdef SHFT_LED1
|
||||
rgblight_sethsv_default_helper(SHFT_LED1);
|
||||
#endif // SHFT_LED1
|
||||
#ifdef SHFT_LED2
|
||||
rgblight_sethsv_default_helper(SHFT_LED2);
|
||||
#endif // SHFT_LED2
|
||||
if (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
|
||||
if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) ) {
|
||||
#ifdef SHFT_LED1
|
||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
||||
#endif // SHFT_LED1
|
||||
#ifdef SHFT_LED2
|
||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
||||
#endif // SHFT_LED2
|
||||
} else {
|
||||
#ifdef SHFT_LED1
|
||||
rgblight_sethsv_default_helper(SHFT_LED1);
|
||||
#endif // SHFT_LED1
|
||||
#ifdef SHFT_LED2
|
||||
rgblight_sethsv_default_helper(SHFT_LED2);
|
||||
#endif // SHFT_LED2
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||
#ifdef CTRL_LED1
|
||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
|
||||
#endif // CTRL_LED1
|
||||
#ifdef CTRL_LED2
|
||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
|
||||
#endif // CTRL_LED2
|
||||
} else {
|
||||
#ifdef CTRL_LED1
|
||||
rgblight_sethsv_default_helper(CTRL_LED1);
|
||||
#endif // CTRL_LED1
|
||||
#ifdef CTRL_LED2
|
||||
rgblight_sethsv_default_helper(CTRL_LED2);
|
||||
#endif // CTRL_LED2
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_GUI) {
|
||||
#ifdef GUI_LED1
|
||||
rgblight_sethsv_at(51, 255, 255, GUI_LED1);
|
||||
#endif // GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_at(51, 255, 255, GUI_LED2);
|
||||
#endif // GUI_LED2
|
||||
} else {
|
||||
#ifdef GUI_LED1
|
||||
rgblight_sethsv_default_helper(GUI_LED1);
|
||||
#endif // GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_default_helper(GUI_LED2);
|
||||
#endif // GUI_LED2
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_ALT) {
|
||||
#ifdef ALT_LED1
|
||||
rgblight_sethsv_at(240, 255, 255, ALT_LED1);
|
||||
#endif // ALT_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_at(240, 255, 255, ALT_LED2);
|
||||
#endif // GUI_LED2
|
||||
} else {
|
||||
#ifdef GUI_LED1
|
||||
rgblight_sethsv_default_helper(ALT_LED1);
|
||||
#endif // GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_default_helper(ALT_LED2);
|
||||
#endif // GUI_LED2
|
||||
}
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||
#ifdef CTRL_LED1
|
||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
|
||||
#endif // CTRL_LED1
|
||||
#ifdef CTRL_LED2
|
||||
rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
|
||||
#endif // CTRL_LED2
|
||||
} else {
|
||||
#ifdef CTRL_LED1
|
||||
rgblight_sethsv_default_helper(CTRL_LED1);
|
||||
#endif // CTRL_LED1
|
||||
#ifdef CTRL_LED2
|
||||
rgblight_sethsv_default_helper(CTRL_LED2);
|
||||
#endif // CTRL_LED2
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_GUI) {
|
||||
#ifdef GUI_LED1
|
||||
rgblight_sethsv_at(51, 255, 255, GUI_LED1);
|
||||
#endif // GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_at(51, 255, 255, GUI_LED2);
|
||||
#endif // GUI_LED2
|
||||
} else {
|
||||
#ifdef GUI_LED1
|
||||
rgblight_sethsv_default_helper(GUI_LED1);
|
||||
#endif // GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_default_helper(GUI_LED2);
|
||||
#endif // GUI_LED2
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_ALT) {
|
||||
#ifdef ALT_LED1
|
||||
rgblight_sethsv_at(240, 255, 255, ALT_LED1);
|
||||
#endif // ALT_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_at(240, 255, 255, ALT_LED2);
|
||||
#endif // GUI_LED2
|
||||
} else {
|
||||
#ifdef GUI_LED1
|
||||
rgblight_sethsv_default_helper(ALT_LED1);
|
||||
#endif // GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
rgblight_sethsv_default_helper(ALT_LED2);
|
||||
#endif // GUI_LED2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_scan_indicator(void) {
|
||||
if (has_initialized) {
|
||||
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
||||
}
|
||||
if (has_initialized) {
|
||||
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
||||
}
|
||||
}
|
||||
#endif //INDICATOR_LIGHTS
|
||||
|
||||
|
@ -95,69 +95,71 @@ __attribute__ ((weak))
|
|||
bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
|
||||
|
||||
bool rgblight_twinkle_is_led_used(uint8_t index) {
|
||||
switch (index) {
|
||||
switch (index) {
|
||||
#ifdef INDICATOR_LIGHTS
|
||||
#ifdef SHFT_LED1
|
||||
case SHFT_LED1:
|
||||
return true;
|
||||
case SHFT_LED1:
|
||||
return true;
|
||||
#endif //SHFT_LED1
|
||||
#ifdef SHFT_LED2
|
||||
case SHFT_LED2:
|
||||
return true;
|
||||
case SHFT_LED2:
|
||||
return true;
|
||||
#endif //SHFT_LED2
|
||||
#ifdef CTRL_LED1
|
||||
case CTRL_LED1:
|
||||
return true;
|
||||
case CTRL_LED1:
|
||||
return true;
|
||||
#endif //CTRL_LED1
|
||||
#ifdef CTRL_LED2
|
||||
case CTRL_LED2:
|
||||
return true;
|
||||
case CTRL_LED2:
|
||||
return true;
|
||||
#endif //CTRL_LED2
|
||||
#ifdef GUI_LED1
|
||||
case GUI_LED1:
|
||||
return true;
|
||||
case GUI_LED1:
|
||||
return true;
|
||||
#endif //GUI_LED1
|
||||
#ifdef GUI_LED2
|
||||
case GUI_LED2:
|
||||
return true;
|
||||
case GUI_LED2:
|
||||
return true;
|
||||
#endif //GUI_LED2
|
||||
#ifdef ALT_LED1
|
||||
case ALT_LED1:
|
||||
return true;
|
||||
case ALT_LED1:
|
||||
return true;
|
||||
#endif //ALT_LED1
|
||||
#ifdef ALT_LED2
|
||||
case ALT_LED2:
|
||||
return true;
|
||||
case ALT_LED2:
|
||||
return true;
|
||||
#endif //ALT_LED2
|
||||
#endif //INDICATOR_LIGHTS
|
||||
default:
|
||||
return rgblight_twinkle_is_led_used_keymap(index);
|
||||
default:
|
||||
return rgblight_twinkle_is_led_used_keymap(index);
|
||||
}
|
||||
}
|
||||
|
||||
void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
|
||||
bool litup = false;
|
||||
for (uint8_t light_index = 0 ; light_index < RGBLED_NUM ; ++light_index ) {
|
||||
if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) {
|
||||
rgblight_fadeout *light = &lights[light_index];
|
||||
litup = true;
|
||||
bool litup = false;
|
||||
for (uint8_t light_index = 0 ; light_index < RGBLED_NUM ; ++light_index ) {
|
||||
if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) {
|
||||
rgblight_fadeout *light = &lights[light_index];
|
||||
litup = true;
|
||||
|
||||
if (light->life) {
|
||||
light->life -= 1;
|
||||
if (biton32(layer_state) == 0) {
|
||||
sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
|
||||
if (light->life) {
|
||||
light->life -= 1;
|
||||
if (biton32(layer_state) == 0) {
|
||||
sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
|
||||
}
|
||||
light->timer = timer_read();
|
||||
}
|
||||
else {
|
||||
if (light->enabled && biton32(layer_state) == 0) {
|
||||
rgblight_sethsv_default_helper(light_index);
|
||||
}
|
||||
litup = light->enabled = false;
|
||||
}
|
||||
}
|
||||
light->timer = timer_read();
|
||||
}
|
||||
else {
|
||||
if (light->enabled && biton32(layer_state) == 0) { rgblight_sethsv_default_helper(light_index); }
|
||||
litup = light->enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (litup && biton32(layer_state) == 0) {
|
||||
rgblight_set();
|
||||
}
|
||||
if (litup && biton32(layer_state) == 0) {
|
||||
rgblight_set();
|
||||
}
|
||||
}
|
||||
|
||||
void start_rgb_light(void) {
|
||||
|
@ -203,42 +205,42 @@ void start_rgb_light(void) {
|
|||
|
||||
|
||||
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
}
|
||||
switch (keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
}
|
||||
switch (keycode) {
|
||||
#ifdef RGBLIGHT_TWINKLE
|
||||
case KC_A ... KC_SLASH:
|
||||
case KC_F1 ... KC_F12:
|
||||
case KC_INSERT ... KC_UP:
|
||||
case KC_KP_SLASH ... KC_KP_DOT:
|
||||
case KC_F13 ... KC_F24:
|
||||
case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
|
||||
if (record->event.pressed) { start_rgb_light(); }
|
||||
return true; break;
|
||||
case KC_A ... KC_SLASH:
|
||||
case KC_F1 ... KC_F12:
|
||||
case KC_INSERT ... KC_UP:
|
||||
case KC_KP_SLASH ... KC_KP_DOT:
|
||||
case KC_F13 ... KC_F24:
|
||||
case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
|
||||
if (record->event.pressed) { start_rgb_light(); }
|
||||
return true; break;
|
||||
#endif // RGBLIGHT_TWINKLE
|
||||
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
|
||||
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
if (record->event.pressed) {
|
||||
userspace_config.rgb_layer_change ^= 1;
|
||||
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
||||
}
|
||||
}
|
||||
if (record->event.pressed) {
|
||||
userspace_config.rgb_layer_change ^= 1;
|
||||
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
||||
}
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
return false; break;
|
||||
return false; break;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
||||
if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
userspace_config.rgb_layer_change = false;
|
||||
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
}
|
||||
}
|
||||
return true; break;
|
||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
||||
if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
userspace_config.rgb_layer_change = false;
|
||||
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
}
|
||||
}
|
||||
return true; break;
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
}
|
||||
return true;
|
||||
|
@ -248,28 +250,28 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
|||
|
||||
void keyboard_post_init_rgb(void) {
|
||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||
if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
|
||||
if (rgblight_config.enable) {
|
||||
layer_state_set_user(layer_state);
|
||||
uint16_t old_hue = rgblight_config.hue;
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
for (uint16_t i = 360; i > 0; i--) {
|
||||
rgblight_sethsv_noeeprom( ( i + old_hue) % 360, 255, 255);
|
||||
matrix_scan();
|
||||
wait_ms(10);
|
||||
if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
|
||||
if (rgblight_config.enable) {
|
||||
layer_state_set_user(layer_state);
|
||||
uint16_t old_hue = rgblight_config.hue;
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
for (uint16_t i = 255; i > 0; i--) {
|
||||
rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
|
||||
matrix_scan();
|
||||
wait_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
layer_state_set_user(layer_state);
|
||||
layer_state_set_user(layer_state);
|
||||
}
|
||||
|
||||
void matrix_scan_rgb(void) {
|
||||
#ifdef RGBLIGHT_TWINKLE
|
||||
scan_rgblight_fadeout();
|
||||
scan_rgblight_fadeout();
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#ifdef INDICATOR_LIGHTS
|
||||
matrix_scan_indicator();
|
||||
matrix_scan_indicator();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -277,99 +279,60 @@ void matrix_scan_rgb(void) {
|
|||
|
||||
uint32_t layer_state_set_rgb(uint32_t state) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
switch (biton32(state)) {
|
||||
case _MACROS:
|
||||
rgblight_sethsv_noeeprom_orange();
|
||||
userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
|
||||
break;
|
||||
case _MEDIA:
|
||||
rgblight_sethsv_noeeprom_chartreuse();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
|
||||
break;
|
||||
case _GAMEPAD:
|
||||
rgblight_sethsv_noeeprom_orange();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
|
||||
break;
|
||||
case _DIABLO:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _RAISE:
|
||||
rgblight_sethsv_noeeprom_yellow();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _LOWER:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _ADJUST:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _COLEMAK:
|
||||
rgblight_sethsv_noeeprom_magenta(); break;
|
||||
case _DVORAK:
|
||||
rgblight_sethsv_noeeprom_springgreen(); break;
|
||||
case _WORKMAN:
|
||||
rgblight_sethsv_noeeprom_goldenrod(); break;
|
||||
case _NORMAN:
|
||||
rgblight_sethsv_noeeprom_coral(); break;
|
||||
case _MALTRON:
|
||||
rgblight_sethsv_noeeprom_yellow(); break;
|
||||
case _EUCALYN:
|
||||
rgblight_sethsv_noeeprom_pink(); break;
|
||||
case _CARPLAX:
|
||||
rgblight_sethsv_noeeprom_blue(); break;
|
||||
default:
|
||||
rgblight_sethsv_noeeprom_cyan(); break;
|
||||
}
|
||||
biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
|
||||
break;
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
switch (biton32(state)) {
|
||||
case _MACROS:
|
||||
rgblight_sethsv_noeeprom_orange();
|
||||
userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
|
||||
break;
|
||||
case _MEDIA:
|
||||
rgblight_sethsv_noeeprom_chartreuse();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
|
||||
break;
|
||||
case _GAMEPAD:
|
||||
rgblight_sethsv_noeeprom_orange();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
|
||||
break;
|
||||
case _DIABLO:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _RAISE:
|
||||
rgblight_sethsv_noeeprom_yellow();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _LOWER:
|
||||
rgblight_sethsv_noeeprom_green();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||
break;
|
||||
case _ADJUST:
|
||||
rgblight_sethsv_noeeprom_red();
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _COLEMAK:
|
||||
rgblight_sethsv_noeeprom_magenta(); break;
|
||||
case _DVORAK:
|
||||
rgblight_sethsv_noeeprom_springgreen(); break;
|
||||
case _WORKMAN:
|
||||
rgblight_sethsv_noeeprom_goldenrod(); break;
|
||||
case _NORMAN:
|
||||
rgblight_sethsv_noeeprom_coral(); break;
|
||||
case _MALTRON:
|
||||
rgblight_sethsv_noeeprom_yellow(); break;
|
||||
case _EUCALYN:
|
||||
rgblight_sethsv_noeeprom_pink(); break;
|
||||
case _CARPLAX:
|
||||
rgblight_sethsv_noeeprom_blue(); break;
|
||||
default:
|
||||
rgblight_sethsv_noeeprom_cyan(); break;
|
||||
}
|
||||
biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
|
||||
break;
|
||||
}
|
||||
}
|
||||
// layer_state_set_indicator(); // Runs every scan, so need to call this here .... since I can't get it working "right" anyhow
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
return state;
|
||||
return state;
|
||||
}
|
||||
|
||||
#if 0
|
||||
uint32_t default_layer_state_set_rgb(uint32_t state) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (userspace_config.rgb_layer_change) {
|
||||
rgblight_config_t temp_rgblight_config = rgblight_config;
|
||||
switch (biton32(state)) {
|
||||
case _COLEMAK:
|
||||
temp_rgblight_config.hue = 300;
|
||||
temp_rgblight_config.val = 255;
|
||||
temp_rgblight_config.sat = 255;
|
||||
temp_rgblight_config.mode = 1;
|
||||
break;
|
||||
case _DVORAK:
|
||||
temp_rgblight_config.hue = 150;
|
||||
temp_rgblight_config.val = 255;
|
||||
temp_rgblight_config.sat = 255;
|
||||
temp_rgblight_config.mode = 1;
|
||||
case _WORKMAN:
|
||||
temp_rgblight_config.hue = 43;
|
||||
temp_rgblight_config.val = 218;
|
||||
temp_rgblight_config.sat = 218;
|
||||
temp_rgblight_config.mode = 1;
|
||||
default:
|
||||
temp_rgblight_config.hue = 180;
|
||||
temp_rgblight_config.val = 255;
|
||||
temp_rgblight_config.sat = 255;
|
||||
temp_rgblight_config.mode = 1;
|
||||
}
|
||||
if (temp_rgblight_config.raw != eeconfig_read_rgblight()) {
|
||||
xprintf("rgblight set default layer hsv [EEPROM]: %u,%u,%u,%u\n", temp_rgblight_config.hue, temp_rgblight_config.sat, temp_rgblight_config.val, temp_rgblight_config.mode);
|
||||
eeconfig_update_rgblight(temp_rgblight_config.raw);
|
||||
}
|
||||
}
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
return state;
|
||||
}
|
||||
#endif
|
||||
|
|
116
users/drashna/rgblight_breathe_table.h
Normal file
116
users/drashna/rgblight_breathe_table.h
Normal file
|
@ -0,0 +1,116 @@
|
|||
#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE
|
||||
#define RGBLIGHT_EFFECT_BREATHE_TABLE
|
||||
|
||||
const uint8_t rgblight_effect_breathe_table[] PROGMEM = {
|
||||
/* #define RGBLIGHT_EFFECT_BREATHE_CENTER 0.00 */
|
||||
/* #define RGBLIGHT_EFFECT_BREATHE_MAX 255 */
|
||||
|
||||
#if RGBLIGHT_BREATHE_TABLE_SIZE == 256
|
||||
0x44, 0x45, 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4e,
|
||||
0x4f, 0x51, 0x52, 0x54, 0x55, 0x57, 0x58, 0x5a,
|
||||
0x5c, 0x5d, 0x5f, 0x60, 0x62, 0x64, 0x65, 0x67,
|
||||
0x69, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x73, 0x75,
|
||||
0x77, 0x79, 0x7b, 0x7c, 0x7e, 0x80, 0x82, 0x84,
|
||||
0x86, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x91, 0x93,
|
||||
0x95, 0x97, 0x99, 0x9b, 0x9d, 0x9f, 0xa1, 0xa3,
|
||||
0xa5, 0xa7, 0xa9, 0xaa, 0xac, 0xae, 0xb0, 0xb2,
|
||||
0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xbf, 0xc1,
|
||||
0xc3, 0xc5, 0xc7, 0xc9, 0xca, 0xcc, 0xce, 0xd0,
|
||||
0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda, 0xdb, 0xdd,
|
||||
0xde, 0xe0, 0xe1, 0xe3, 0xe4, 0xe5, 0xe7, 0xe8,
|
||||
0xe9, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1,
|
||||
0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf8,
|
||||
0xf9, 0xfa, 0xfa, 0xfb, 0xfc, 0xfc, 0xfc, 0xfd,
|
||||
0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
|
||||
0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd,
|
||||
0xfd, 0xfc, 0xfc, 0xfc, 0xfb, 0xfa, 0xfa, 0xf9,
|
||||
0xf8, 0xf8, 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2,
|
||||
0xf1, 0xf0, 0xef, 0xee, 0xed, 0xec, 0xeb, 0xe9,
|
||||
0xe8, 0xe7, 0xe5, 0xe4, 0xe3, 0xe1, 0xe0, 0xde,
|
||||
0xdd, 0xdb, 0xda, 0xd8, 0xd6, 0xd5, 0xd3, 0xd1,
|
||||
0xd0, 0xce, 0xcc, 0xca, 0xc9, 0xc7, 0xc5, 0xc3,
|
||||
0xc1, 0xbf, 0xbe, 0xbc, 0xba, 0xb8, 0xb6, 0xb4,
|
||||
0xb2, 0xb0, 0xae, 0xac, 0xaa, 0xa9, 0xa7, 0xa5,
|
||||
0xa3, 0xa1, 0x9f, 0x9d, 0x9b, 0x99, 0x97, 0x95,
|
||||
0x93, 0x91, 0x8f, 0x8d, 0x8b, 0x8a, 0x88, 0x86,
|
||||
0x84, 0x82, 0x80, 0x7e, 0x7c, 0x7b, 0x79, 0x77,
|
||||
0x75, 0x73, 0x72, 0x70, 0x6e, 0x6c, 0x6a, 0x69,
|
||||
0x67, 0x65, 0x64, 0x62, 0x60, 0x5f, 0x5d, 0x5c,
|
||||
0x5a, 0x58, 0x57, 0x55, 0x54, 0x52, 0x51, 0x4f,
|
||||
0x4e, 0x4c, 0x4b, 0x4a, 0x48, 0x47, 0x45, 0x44
|
||||
#endif /* 256 bytes table */
|
||||
|
||||
#if RGBLIGHT_BREATHE_TABLE_SIZE == 128
|
||||
0x44, 0x47, 0x4a, 0x4c,
|
||||
0x4f, 0x52, 0x55, 0x58,
|
||||
0x5c, 0x5f, 0x62, 0x65,
|
||||
0x69, 0x6c, 0x70, 0x73,
|
||||
0x77, 0x7b, 0x7e, 0x82,
|
||||
0x86, 0x8a, 0x8d, 0x91,
|
||||
0x95, 0x99, 0x9d, 0xa1,
|
||||
0xa5, 0xa9, 0xac, 0xb0,
|
||||
0xb4, 0xb8, 0xbc, 0xbf,
|
||||
0xc3, 0xc7, 0xca, 0xce,
|
||||
0xd1, 0xd5, 0xd8, 0xdb,
|
||||
0xde, 0xe1, 0xe4, 0xe7,
|
||||
0xe9, 0xec, 0xee, 0xf0,
|
||||
0xf2, 0xf4, 0xf6, 0xf8,
|
||||
0xf9, 0xfa, 0xfc, 0xfc,
|
||||
0xfd, 0xfe, 0xfe, 0xfe,
|
||||
0xfe, 0xfe, 0xfe, 0xfe,
|
||||
0xfd, 0xfc, 0xfb, 0xfa,
|
||||
0xf8, 0xf7, 0xf5, 0xf3,
|
||||
0xf1, 0xef, 0xed, 0xeb,
|
||||
0xe8, 0xe5, 0xe3, 0xe0,
|
||||
0xdd, 0xda, 0xd6, 0xd3,
|
||||
0xd0, 0xcc, 0xc9, 0xc5,
|
||||
0xc1, 0xbe, 0xba, 0xb6,
|
||||
0xb2, 0xae, 0xaa, 0xa7,
|
||||
0xa3, 0x9f, 0x9b, 0x97,
|
||||
0x93, 0x8f, 0x8b, 0x88,
|
||||
0x84, 0x80, 0x7c, 0x79,
|
||||
0x75, 0x72, 0x6e, 0x6a,
|
||||
0x67, 0x64, 0x60, 0x5d,
|
||||
0x5a, 0x57, 0x54, 0x51,
|
||||
0x4e, 0x4b, 0x48, 0x45
|
||||
#endif /* 128 bytes table */
|
||||
|
||||
#if RGBLIGHT_BREATHE_TABLE_SIZE == 64
|
||||
0x44, 0x4a,
|
||||
0x4f, 0x55,
|
||||
0x5c, 0x62,
|
||||
0x69, 0x70,
|
||||
0x77, 0x7e,
|
||||
0x86, 0x8d,
|
||||
0x95, 0x9d,
|
||||
0xa5, 0xac,
|
||||
0xb4, 0xbc,
|
||||
0xc3, 0xca,
|
||||
0xd1, 0xd8,
|
||||
0xde, 0xe4,
|
||||
0xe9, 0xee,
|
||||
0xf2, 0xf6,
|
||||
0xf9, 0xfc,
|
||||
0xfd, 0xfe,
|
||||
0xfe, 0xfe,
|
||||
0xfd, 0xfb,
|
||||
0xf8, 0xf5,
|
||||
0xf1, 0xed,
|
||||
0xe8, 0xe3,
|
||||
0xdd, 0xd6,
|
||||
0xd0, 0xc9,
|
||||
0xc1, 0xba,
|
||||
0xb2, 0xaa,
|
||||
0xa3, 0x9b,
|
||||
0x93, 0x8b,
|
||||
0x84, 0x7c,
|
||||
0x75, 0x6e,
|
||||
0x67, 0x60,
|
||||
0x5a, 0x54,
|
||||
0x4e, 0x48
|
||||
#endif /* 64 bytes table */
|
||||
};
|
||||
|
||||
static const int table_scale = 256/sizeof(rgblight_effect_breathe_table);
|
||||
|
||||
#endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */
|
|
@ -1,40 +1,40 @@
|
|||
SRC += drashna.c \
|
||||
process_records.c
|
||||
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||
|
||||
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
||||
SRC += secrets.c
|
||||
SRC += secrets.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||
SRC += tap_dances.c
|
||||
SRC += tap_dances.c
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM),AVR)
|
||||
EXTRAFLAGS += -flto
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(strip $(NO_SECRETS)), yes)
|
||||
OPT_DEFS += -DNO_SECRETS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||
SRC += rgb_stuff.c
|
||||
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
||||
OPT_DEFS += -DINDICATOR_LIGHTS
|
||||
endif
|
||||
ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_TWINKLE
|
||||
endif
|
||||
ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_NOEEPROM
|
||||
endif
|
||||
ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
|
||||
endif
|
||||
SRC += rgb_stuff.c
|
||||
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
||||
OPT_DEFS += -DINDICATOR_LIGHTS
|
||||
endif
|
||||
ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_TWINKLE
|
||||
endif
|
||||
ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_NOEEPROM
|
||||
endif
|
||||
ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
|
||||
SRC += rgb_stuff.c
|
||||
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
||||
SRC += rgb_stuff.c
|
||||
endif
|
||||
|
||||
|
||||
|
@ -43,9 +43,9 @@ ifeq ($(strip $(MACROS_ENABLED)), yes)
|
|||
endif
|
||||
|
||||
ifdef CONSOLE_ENABLE
|
||||
ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
|
||||
OPT_DEFS += -DKEYLOGGER_ENABLE
|
||||
endif
|
||||
ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
|
||||
OPT_DEFS += -DKEYLOGGER_ENABLE
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
|
||||
|
|
|
@ -7,65 +7,65 @@ void send_unicode_hex_string(const char* str);
|
|||
/* use X(n) to call the */
|
||||
#ifdef UNICODEMAP_ENABLE
|
||||
enum unicode_name {
|
||||
THINK, // thinking face 🤔
|
||||
GRIN, // grinning face 😊
|
||||
SMRK, // smirk 😏
|
||||
WEARY, // good shit 😩
|
||||
UNAMU, // unamused 😒
|
||||
THINK, // thinking face 🤔
|
||||
GRIN, // grinning face 😊
|
||||
SMRK, // smirk 😏
|
||||
WEARY, // good shit 😩
|
||||
UNAMU, // unamused 😒
|
||||
|
||||
SNEK, // snke 🐍
|
||||
PENGUIN, // 🐧
|
||||
DRAGON, // 🐉
|
||||
MONKEY, // 🐒
|
||||
CHICK, // 🐥
|
||||
BOAR, // 🐗
|
||||
SNEK, // snke 🐍
|
||||
PENGUIN, // 🐧
|
||||
DRAGON, // 🐉
|
||||
MONKEY, // 🐒
|
||||
CHICK, // 🐥
|
||||
BOAR, // 🐗
|
||||
|
||||
OKOK, // 👌
|
||||
EFFU, // 🖕
|
||||
INUP, // 👆
|
||||
THUP, // 👍
|
||||
THDN, // 👎
|
||||
OKOK, // 👌
|
||||
EFFU, // 🖕
|
||||
INUP, // 👆
|
||||
THUP, // 👍
|
||||
THDN, // 👎
|
||||
|
||||
BBB, // dat B 🅱
|
||||
POO, // poop 💩
|
||||
HUNDR, // 100 💯
|
||||
EGGPL, // EGGPLANT 🍆
|
||||
WATER, // wet 💦
|
||||
TUMBLER, // 🥃
|
||||
BBB, // dat B 🅱
|
||||
POO, // poop 💩
|
||||
HUNDR, // 100 💯
|
||||
EGGPL, // EGGPLANT 🍆
|
||||
WATER, // wet 💦
|
||||
TUMBLER, // 🥃
|
||||
|
||||
LIT, // fire 🔥
|
||||
BANG, // ‽
|
||||
IRONY, // ⸮
|
||||
DEGREE // °
|
||||
LIT, // fire 🔥
|
||||
BANG, // ‽
|
||||
IRONY, // ⸮
|
||||
DEGREE // °
|
||||
};
|
||||
|
||||
|
||||
const uint32_t PROGMEM unicode_map[] = {
|
||||
[THINK] = 0x1F914,
|
||||
[GRIN] = 0x1F600,
|
||||
[BBB] = 0x1F171,
|
||||
[POO] = 0x1F4A9,
|
||||
[HUNDR] = 0x1F4AF,
|
||||
[SMRK] = 0x1F60F,
|
||||
[WEARY] = 0x1F629,
|
||||
[EGGPL] = 0x1F346,
|
||||
[WATER] = 0x1F4A6,
|
||||
[LIT] = 0x1F525,
|
||||
[UNAMU] = 0x1F612,
|
||||
[SNEK] = 0x1F40D,
|
||||
[PENGUIN] = 0x1F427,
|
||||
[BOAR] = 0x1F417,
|
||||
[MONKEY] = 0x1F412,
|
||||
[CHICK] = 0x1F425,
|
||||
[DRAGON] = 0x1F409,
|
||||
[OKOK] = 0x1F44C,
|
||||
[EFFU] = 0x1F595,
|
||||
[INUP] = 0x1F446,
|
||||
[THDN] = 0x1F44E,
|
||||
[THUP] = 0x1F44D,
|
||||
[TUMBLER] = 0x1F943,
|
||||
[BANG] = 0x0203D,
|
||||
[IRONY] = 0x02E2E,
|
||||
[DEGREE] = 0x000B0
|
||||
[THINK] = 0x1F914,
|
||||
[GRIN] = 0x1F600,
|
||||
[BBB] = 0x1F171,
|
||||
[POO] = 0x1F4A9,
|
||||
[HUNDR] = 0x1F4AF,
|
||||
[SMRK] = 0x1F60F,
|
||||
[WEARY] = 0x1F629,
|
||||
[EGGPL] = 0x1F346,
|
||||
[WATER] = 0x1F4A6,
|
||||
[LIT] = 0x1F525,
|
||||
[UNAMU] = 0x1F612,
|
||||
[SNEK] = 0x1F40D,
|
||||
[PENGUIN] = 0x1F427,
|
||||
[BOAR] = 0x1F417,
|
||||
[MONKEY] = 0x1F412,
|
||||
[CHICK] = 0x1F425,
|
||||
[DRAGON] = 0x1F409,
|
||||
[OKOK] = 0x1F44C,
|
||||
[EFFU] = 0x1F595,
|
||||
[INUP] = 0x1F446,
|
||||
[THDN] = 0x1F44E,
|
||||
[THUP] = 0x1F44D,
|
||||
[TUMBLER] = 0x1F943,
|
||||
[BANG] = 0x0203D,
|
||||
[IRONY] = 0x02E2E,
|
||||
[DEGREE] = 0x000B0
|
||||
};
|
||||
#endif // UNICODEMAP_ENABLE
|
||||
|
|
|
@ -2,63 +2,64 @@
|
|||
|
||||
|
||||
//define diablo macro timer variables
|
||||
uint16_t diablo_timer[4];
|
||||
uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
|
||||
uint8_t diablo_key_time[4];
|
||||
diablo_timer_t diablo_timer[4];
|
||||
|
||||
uint8_t diablo_times[] = { 0, 0, 1, 3, 5, 10, 30 };
|
||||
|
||||
// has the correct number of seconds elapsed (as defined by diablo_times)
|
||||
bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; };
|
||||
bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer].key_time) < (diablo_timer[dtimer].timer * 1000)) ? false : true; };
|
||||
|
||||
// Cycle through the times for the macro, starting at 0, for disabled.
|
||||
// Max of six values, so don't exceed
|
||||
void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
|
||||
if (state->count >= 7) {
|
||||
diablo_key_time[diablo_key] = diablo_times[0];
|
||||
reset_tap_dance(state);
|
||||
} else {
|
||||
diablo_key_time[diablo_key] = diablo_times[state->count - 1];
|
||||
}
|
||||
void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
|
||||
int index = (int)user_data;
|
||||
if (state->count >= 7) {
|
||||
diablo_timer[index].key_time = diablo_times[0];
|
||||
reset_tap_dance(state);
|
||||
} else {
|
||||
diablo_timer[index].key_time = diablo_times[state->count];
|
||||
}
|
||||
}
|
||||
|
||||
// Would rather have one function for all of this, but no idea how to do that...
|
||||
void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 0); }
|
||||
void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 1); }
|
||||
void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 2); }
|
||||
void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 3); }
|
||||
// One funtion to rule them all!!
|
||||
#define ACTION_TAP_DANCE_DIABLO(arg) { \
|
||||
.fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
|
||||
.user_data = (void *)arg, \
|
||||
}
|
||||
|
||||
//Tap Dance Definitions
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
// tap once to disable, and more to enable timed micros
|
||||
[TD_D3_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
|
||||
[TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
|
||||
[TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
|
||||
[TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
|
||||
// tap once to disable, and more to enable timed micros
|
||||
[TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0),
|
||||
[TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1),
|
||||
[TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2),
|
||||
[TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3),
|
||||
};
|
||||
|
||||
// Sends the key press to system, but only if on the Diablo layer
|
||||
void send_diablo_keystroke(uint8_t diablo_key) {
|
||||
if (IS_LAYER_ON(_DIABLO)) {
|
||||
switch (diablo_key) {
|
||||
case 0:
|
||||
tap_code(KC_1); break;
|
||||
case 1:
|
||||
tap_code(KC_2); break;
|
||||
case 2:
|
||||
tap_code(KC_3); break;
|
||||
case 3:
|
||||
tap_code(KC_4); break;
|
||||
if (IS_LAYER_ON(_DIABLO)) {
|
||||
switch (diablo_key) {
|
||||
case 0:
|
||||
tap_code(KC_1); break;
|
||||
case 1:
|
||||
tap_code(KC_2); break;
|
||||
case 2:
|
||||
tap_code(KC_3); break;
|
||||
case 3:
|
||||
tap_code(KC_4); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Checks each of the 4 timers/keys to see if enough time has elapsed
|
||||
// Runs the "send string" command if enough time has passed, and resets the timer.
|
||||
void run_diablo_macro_check(void) {
|
||||
uint8_t dtime;
|
||||
for (dtime = 0; dtime < 4; dtime++) {
|
||||
if (check_dtimer(dtime) && diablo_key_time[dtime]) {
|
||||
diablo_timer[dtime] = timer_read();
|
||||
send_diablo_keystroke(dtime);
|
||||
uint8_t dtime;
|
||||
for (dtime = 0; dtime < 4; dtime++) {
|
||||
if (check_dtimer(dtime) && diablo_timer[dtime].key_time) {
|
||||
diablo_timer[dtime].timer = timer_read();
|
||||
send_diablo_keystroke(dtime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,18 +2,21 @@
|
|||
#include "drashna.h"
|
||||
|
||||
//define diablo macro timer variables
|
||||
extern uint16_t diablo_timer[4];
|
||||
extern uint8_t diablo_times[];
|
||||
extern uint8_t diablo_key_time[4];
|
||||
typedef struct {
|
||||
uint16_t timer;
|
||||
uint8_t key_time;
|
||||
} diablo_timer_t;
|
||||
|
||||
extern diablo_timer_t diablo_timer[4];
|
||||
|
||||
void run_diablo_macro_check(void);
|
||||
|
||||
#ifdef TAP_DANCE_ENABLE
|
||||
enum {
|
||||
TD_D3_1 = 0,
|
||||
TD_D3_2,
|
||||
TD_D3_3,
|
||||
TD_D3_4
|
||||
TD_D3_1 = 0,
|
||||
TD_D3_2,
|
||||
TD_D3_3,
|
||||
TD_D3_4
|
||||
};
|
||||
#endif // TAP_DANCE_ENABLE
|
||||
|
|
|
@ -6,7 +6,7 @@ arguments, we need a wrapper in order for these definitions to be
|
|||
expanded before being used as arguments to the LAYOUT_xxx macro.
|
||||
*/
|
||||
#if (!defined(LAYOUT) && defined(KEYMAP))
|
||||
#define LAYOUT KEYMAP
|
||||
# define LAYOUT KEYMAP
|
||||
#endif
|
||||
|
||||
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
|
||||
|
@ -15,6 +15,7 @@ expanded before being used as arguments to the LAYOUT_xxx macro.
|
|||
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
||||
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
|
||||
#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__)
|
||||
#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__)
|
||||
|
||||
/*
|
||||
Blocks for each of the four major keyboard layouts
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue