mirror of
https://github.com/firewalkwithm3/qmk_firmware.git
synced 2024-11-22 11:30:30 +08:00
[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
|
@ -27,7 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
// #define MASTER_RIGHT
|
||||
#define EE_HANDS
|
||||
|
||||
// #define SSD1306OLED
|
||||
#undef USE_I2C
|
||||
#undef SSD1306OLED
|
||||
|
||||
#define USE_SERIAL_PD2
|
||||
|
||||
|
@ -35,17 +36,42 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
// #define TAPPING_TERM 100
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 27
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 27
|
||||
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 100
|
||||
# define RGBLIGHT_HUE_STEP 8
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# define RGBLIGHT_VAL_STEP 8
|
||||
# define RGBLIGHT_LIMIT_VAL 100
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||
|
||||
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_ALL
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# define DISABLE_RGB_MATRIX_DUAL_BEACON
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
// #define DISABLE_RGB_MATRIX_RAINDROPS
|
||||
// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define B6_AUDIO
|
||||
# define B6_AUDIO
|
||||
// #define NO_MUSIC_MODE
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
#include "drashna.h"
|
||||
#ifdef PROTOCOL_LUFA
|
||||
#include "lufa.h"
|
||||
#include "split_util.h"
|
||||
#endif
|
||||
#ifdef SSD1306OLED
|
||||
#include "ssd1306.h"
|
||||
#endif
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
#include "oled_driver.h"
|
||||
#endif
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
extern uint8_t is_master;
|
||||
|
@ -20,7 +10,7 @@ extern rgblight_config_t rgblight_config;
|
|||
#endif
|
||||
|
||||
enum crkbd_keycodes {
|
||||
RGBRST = NEW_SAFE_RANGE
|
||||
RGBRST = NEW_SAFE_RANGE
|
||||
};
|
||||
|
||||
#define LAYOUT_crkbd_base( \
|
||||
|
@ -31,7 +21,7 @@ enum crkbd_keycodes {
|
|||
LAYOUT_wrapper( \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
||||
KC_TAB, ALT_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, K1A, RGUI_T(KC_QUOT), \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
|
||||
)
|
||||
#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__)
|
||||
|
@ -115,35 +105,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
};
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
setPinOutput(D5);
|
||||
writePinHigh(D5);
|
||||
|
||||
setPinOutput(B0);
|
||||
writePinHigh(B0);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
|
||||
// When add source files to SRC in rules.mk, you can use functions.
|
||||
const char *read_logo(void);
|
||||
char layer_state_str[24];
|
||||
char modifier_state_str[24];
|
||||
char host_led_state_str[24];
|
||||
char keylog_str[24] = {};
|
||||
char keylogs_str[21] = {};
|
||||
int keylogs_str_idx = 0;
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (is_master) {
|
||||
return OLED_ROTATION_270;
|
||||
} else {
|
||||
return rotation;
|
||||
}
|
||||
}
|
||||
|
||||
// const char *read_mode_icon(bool swap);
|
||||
// void set_timelog(void);
|
||||
// const char *read_timelog(void);
|
||||
void render_crkbd_logo(void) {
|
||||
static const char PROGMEM crkbd_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
|
||||
0};
|
||||
oled_write_P(crkbd_logo, false);
|
||||
}
|
||||
|
||||
#define KEYLOG_LEN (int)(32 / OLED_FONT_WIDTH)
|
||||
char keylog_str[KEYLOG_LEN] = {};
|
||||
uint8_t keylogs_str_idx = 0;
|
||||
uint16_t log_timer = 0;
|
||||
|
||||
const char code_to_name[60] = {
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
|
||||
|
@ -153,261 +146,124 @@ const char code_to_name[60] = {
|
|||
'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
|
||||
'#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
|
||||
|
||||
void set_keylog(uint16_t keycode, keyrecord_t *record) {
|
||||
char name = ' ';
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
|
||||
if (keycode < 60) {
|
||||
name = code_to_name[keycode];
|
||||
}
|
||||
// update keylog
|
||||
snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
|
||||
record->event.key.row, record->event.key.col,
|
||||
keycode, name);
|
||||
void add_keylog(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
|
||||
(keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
|
||||
|
||||
// update keylogs
|
||||
if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
|
||||
keylogs_str_idx = 0;
|
||||
for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
|
||||
keylogs_str[i] = ' ';
|
||||
for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
|
||||
keylog_str[i] = keylog_str[i - 1];
|
||||
}
|
||||
}
|
||||
|
||||
keylogs_str[keylogs_str_idx] = name;
|
||||
keylogs_str_idx++;
|
||||
if (keycode < 60) {
|
||||
keylog_str[0] = code_to_name[keycode];
|
||||
}
|
||||
log_timer = timer_read();
|
||||
}
|
||||
|
||||
const char *read_keylog(void) {
|
||||
return keylog_str;
|
||||
void update_log(void) {
|
||||
if (timer_elapsed(log_timer) > 750) {
|
||||
add_keylog(0);
|
||||
}
|
||||
}
|
||||
|
||||
const char *read_keylogs(void) {
|
||||
return keylogs_str;
|
||||
}
|
||||
|
||||
|
||||
const char* read_modifier_state(void) {
|
||||
uint8_t modifiers = get_mods();
|
||||
uint8_t one_shot = get_oneshot_mods();
|
||||
|
||||
snprintf(modifier_state_str, sizeof(modifier_state_str), "Mods:%s %s %s %s",
|
||||
(modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL) ? "CTL" : " ",
|
||||
(modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI) ? "GUI" : " ",
|
||||
(modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT) ? "ALT" : " ",
|
||||
(modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? "SFT" : " "
|
||||
);
|
||||
|
||||
return modifier_state_str;
|
||||
}
|
||||
|
||||
const char *read_host_led_state(void) {
|
||||
uint8_t leds = host_keyboard_leds();
|
||||
|
||||
snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
|
||||
(leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
|
||||
(leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
|
||||
(leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- "
|
||||
);
|
||||
|
||||
return host_led_state_str;
|
||||
}
|
||||
|
||||
const char* read_layer_state(void) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _RAISE:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise ");
|
||||
break;
|
||||
case _LOWER:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower ");
|
||||
break;
|
||||
case _ADJUST:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust ");
|
||||
break;
|
||||
default:
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty ");
|
||||
break;
|
||||
case _COLEMAK:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak");
|
||||
break;
|
||||
case _DVORAK:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak ");
|
||||
break;
|
||||
case _WORKMAN:
|
||||
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Workman");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return layer_state_str;
|
||||
}
|
||||
|
||||
void matrix_scan_keymap(void) {
|
||||
iota_gfx_task();
|
||||
}
|
||||
|
||||
void matrix_render_user(struct CharacterMatrix *matrix) {
|
||||
if (is_master) {
|
||||
//If you want to change the display of OLED, you need to change here
|
||||
matrix_write_ln(matrix, read_layer_state());
|
||||
matrix_write_ln(matrix, read_modifier_state());
|
||||
// matrix_write_ln(matrix, read_keylog());
|
||||
matrix_write_ln(matrix, read_keylogs());
|
||||
// matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
|
||||
// matrix_write(matrix, read_host_led_state());
|
||||
//matrix_write_ln(matrix, read_timelog());
|
||||
} else {
|
||||
matrix_write(matrix, read_logo());
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
|
||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||
dest->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
void iota_gfx_task_user(void) {
|
||||
struct CharacterMatrix matrix;
|
||||
matrix_clear(&matrix);
|
||||
matrix_render_user(&matrix);
|
||||
matrix_update(&display, &matrix);
|
||||
}
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
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:
|
||||
if (record->event.pressed) { set_keylog(keycode, record); }
|
||||
break;
|
||||
// set_timelog();
|
||||
}
|
||||
return true;
|
||||
if (record->event.pressed) { add_keylog(keycode); }
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (is_master) {
|
||||
return OLED_ROTATION_270;
|
||||
} else {
|
||||
return rotation;
|
||||
}
|
||||
}
|
||||
|
||||
void render_crkbd_logo(void) {
|
||||
static const char PROGMEM crkbd_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
|
||||
0};
|
||||
oled_write_P(crkbd_logo, false);
|
||||
}
|
||||
|
||||
|
||||
void render_status(void) {
|
||||
|
||||
oled_write_P(PSTR("Layer"), false);
|
||||
switch (biton32(layer_state)) {
|
||||
case 0:
|
||||
oled_write_P(PSTR("Base "), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_P(PSTR("Adjst"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(PSTR("Unkn "), false);
|
||||
break;
|
||||
}
|
||||
oled_write_P(PSTR("Lyout"), false);
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR("QWRTY"), false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write_P(PSTR("COLMK"), false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write_P(PSTR("DVRAK"), false);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
oled_write_P(PSTR("WRKMN"), false);
|
||||
break;
|
||||
case _NORMAN:
|
||||
oled_write_P(PSTR("NORMN"), false);
|
||||
break;
|
||||
case _MALTRON:
|
||||
oled_write_P(PSTR("MLTRN"), false);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
oled_write_P(PSTR("ECLYN"), false);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
oled_write_P(PSTR("CRPLX"), false);
|
||||
break;
|
||||
}
|
||||
oled_write_P(PSTR("Layer"), false);
|
||||
switch (biton32(layer_state)) {
|
||||
case 0:
|
||||
oled_write_P(PSTR("Base "), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_P(PSTR("Adjst"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(PSTR("Unkn "), false);
|
||||
break;
|
||||
}
|
||||
oled_write_P(PSTR("Lyout"), false);
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR("QWRTY"), false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write_P(PSTR("COLMK"), false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write_P(PSTR("DVRAK"), false);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
oled_write_P(PSTR("WRKMN"), false);
|
||||
break;
|
||||
case _NORMAN:
|
||||
oled_write_P(PSTR("NORMN"), false);
|
||||
break;
|
||||
case _MALTRON:
|
||||
oled_write_P(PSTR("MLTRN"), false);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
oled_write_P(PSTR("ECLYN"), false);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
oled_write_P(PSTR("CRPLX"), false);
|
||||
break;
|
||||
}
|
||||
|
||||
uint8_t modifiers = get_mods();
|
||||
uint8_t one_shot = get_oneshot_mods();
|
||||
uint8_t modifiers = get_mods();
|
||||
uint8_t one_shot = get_oneshot_mods();
|
||||
|
||||
oled_write_P(PSTR("Mods:"), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT ) ? PSTR(" ALT ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false);
|
||||
oled_write_P(PSTR("Mods:"), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT ) ? PSTR(" ALT ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false);
|
||||
|
||||
|
||||
oled_write_P(PSTR("BTMGK"), false);
|
||||
static const char PROGMEM mode_logo[4][4] = {
|
||||
{0x95,0x96,0x0a,0},
|
||||
{0xb5,0xb6,0x0a,0},
|
||||
{0x97,0x98,0x0a,0},
|
||||
{0xb7,0xb8,0x0a,0} };
|
||||
oled_write_P(PSTR("BTMGK"), false);
|
||||
|
||||
if (keymap_config.swap_lalt_lgui != false) {
|
||||
oled_write_P(mode_logo[0], false);
|
||||
oled_write_P(mode_logo[1], false);
|
||||
} else {
|
||||
oled_write_P(mode_logo[2], false);
|
||||
oled_write_P(mode_logo[3], false);
|
||||
}
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
oled_write_P(PSTR(" Mac "), false);
|
||||
} else {
|
||||
oled_write_P(PSTR(" Win "), false);
|
||||
}
|
||||
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
oled_write_P(PSTR("Lock:"), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR(" NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR(" CAPS") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR(" "), false);
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
oled_write_P(PSTR("Lock:"), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR(" NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR(" CAPS") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR(" "), false);
|
||||
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (is_master) {
|
||||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
} else {
|
||||
render_crkbd_logo();
|
||||
oled_scroll_left(); // Turns on scrolling
|
||||
}
|
||||
if (is_master) {
|
||||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
} else {
|
||||
render_crkbd_logo();
|
||||
oled_scroll_left(); // Turns on scrolling
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_scan_keymap(void) { update_log(); }
|
||||
#endif
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case ALT_T(KC_A):
|
||||
return TAPPING_TERM + 100;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
switch (keycode) {
|
||||
case ALT_T(KC_A):
|
||||
return TAPPING_TERM + 100;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,9 +14,10 @@ MIDI_ENABLE = no # MIDI controls
|
|||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
RGB_MATRIX_ENABLE = WS2812
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
@ -24,3 +25,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
|||
BOOTLOADER = qmk-dfu
|
||||
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
|
||||
ifneq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||
RGB_MATRIX_SPLIT_RIGHT=yes
|
||||
endif
|
||||
|
|
|
@ -9,23 +9,17 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
#include "drashna.h"
|
||||
|
||||
// Blank template at the bottom
|
||||
|
||||
enum customKeycodes {
|
||||
URL = 1
|
||||
};
|
||||
|
||||
#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__)
|
||||
#define LAYOUT_gergo_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||
) \
|
||||
LAYOUT_gergo_wrapper( \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
|
||||
KC_TAB, ALT_T(K11), K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RGUI_T(KC_QUOT), \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
|
||||
_______, _______, KC_SPC, LT(_LOWER, KC_BSPC), LT(_RAISE, KC_DEL), KC_ENT, _______, _______ \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
|
||||
KC_TAB, K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, KC_QUOT, \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
|
||||
)
|
||||
|
||||
#define LAYOUT_gergo_base_wrapper(...) LAYOUT_gergo_base(__VA_ARGS__)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
|
@ -29,24 +29,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#define EE_HANDS
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 18 // Number of LEDs
|
||||
#define RGBLED_SPLIT { 9, 9 }
|
||||
#define RGBLIGHT_HUE_STEP 12
|
||||
#define RGBLIGHT_SAT_STEP 12
|
||||
#define RGBLIGHT_VAL_STEP 12
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 18 // Number of LEDs
|
||||
# define RGBLED_SPLIT { 9, 9 }
|
||||
# define RGBLIGHT_HUE_STEP 12
|
||||
# define RGBLIGHT_SAT_STEP 12
|
||||
# define RGBLIGHT_VAL_STEP 12
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
|
||||
#define RGBLIGHT_LIMIT_VAL 225
|
||||
# define RGBLIGHT_LIMIT_VAL 225
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define C6_AUDIO
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define NO_MUSIC_MODE
|
||||
#endif //RGBLIGHT_ENABLE
|
||||
# define C6_AUDIO
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
# define NO_MUSIC_MODE
|
||||
# endif //RGBLIGHT_ENABLE
|
||||
#endif //AUDIO_ENABLE
|
||||
|
||||
#define QMK_ESC_OUTPUT F6 // usually COL
|
||||
|
@ -56,7 +55,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
#undef PRODUCT
|
||||
#ifdef KEYBOARD_keebio_iris_rev2
|
||||
#define PRODUCT Drashna Hacked Iris Rev.2
|
||||
# define PRODUCT Drashna Hacked Iris Rev.2
|
||||
#endif
|
||||
|
||||
#define SHFT_LED1 6
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||
KC_TAB , K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
|
||||
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, CTL_T(K2A), OS_RSFT, \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
|
||||
)
|
||||
#define LAYOUT_iris_base_wrapper(...) LAYOUT_iris_base(__VA_ARGS__)
|
||||
|
@ -113,22 +113,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
setPinOutput(D5);
|
||||
writePinHigh(D5);
|
||||
|
||||
setPinOutput(B0);
|
||||
writePinHigh(B0);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void keyboard_post_init_keymap(void) {
|
||||
#if BACKLIGHT_ENABLE
|
||||
backlight_enable();
|
||||
backlight_level(5);
|
||||
#ifdef BACKLIGHT_BREATHING
|
||||
breathing_enable();
|
||||
#endif
|
||||
backlight_enable();
|
||||
backlight_level(5);
|
||||
#ifdef BACKLIGHT_BREATHING
|
||||
breathing_enable();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ AUDIO_ENABLE = no
|
|||
NKRO_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = no
|
||||
SWAP_HANDS_ENABLE = no
|
||||
SPACE_CADET_ENABLE = no
|
||||
|
||||
INDICATOR_LIGHTS = no
|
||||
MACROS_ENABLED = no
|
||||
|
|
|
@ -21,15 +21,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../drashna/config.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 16 // Number of LEDs
|
||||
#undef RGBLED_SPLIT
|
||||
#define RGBLED_SPLIT { 8, 8 }
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 16 // Number of LEDs
|
||||
# undef RGBLED_SPLIT
|
||||
# define RGBLED_SPLIT { 8, 8 }
|
||||
#endif
|
||||
|
||||
#undef PRODUCT
|
||||
#ifdef KEYBOARD_keebio_iris_rev2
|
||||
#define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit)
|
||||
# define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit)
|
||||
#endif
|
||||
|
||||
#undef SHFT_LED1
|
||||
|
|
|
@ -21,15 +21,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../drashna/config.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 16 // Number of LEDs
|
||||
#undef RGBLED_SPLIT
|
||||
#define RGBLED_SPLIT { 8, 8 }
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 16 // Number of LEDs
|
||||
# undef RGBLED_SPLIT
|
||||
# define RGBLED_SPLIT { 8, 8 }
|
||||
#endif
|
||||
|
||||
#undef PRODUCT
|
||||
#ifdef KEYBOARD_keebio_iris_rev2
|
||||
#define PRODUCT Drashna Hacked Iris Rev.2 (16 LED)
|
||||
# define PRODUCT Drashna Hacked Iris Rev.2 (16 LED)
|
||||
#endif
|
||||
|
||||
#undef SHFT_LED1
|
||||
|
|
|
@ -21,35 +21,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#define MATRIX_ROWS 5
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 16
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 16
|
||||
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||
# define RGBLIGHT_HUE_STEP 8
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# define RGBLIGHT_VAL_STEP 8
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
||||
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#undef PRODUCT
|
||||
#define PRODUCT Drashnas Viterbi Macro Pad
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define C6_AUDIO
|
||||
#define NO_MUSIC_MODE
|
||||
# define C6_AUDIO
|
||||
# define NO_MUSIC_MODE
|
||||
#endif
|
||||
|
||||
#define LAYOUT_ortho_5x7( \
|
||||
|
|
|
@ -8,6 +8,7 @@ RGBLIGHT_ENABLE = yes
|
|||
AUDIO_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
SPLIT_KEYBOARD = no
|
||||
SPACE_CADET_ENABLE = no
|
||||
|
||||
NO_SECRETS = yes
|
||||
MACROS_ENABLED = yes
|
||||
|
|
|
@ -20,6 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "../drashna/config.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 12
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 12
|
||||
#endif
|
||||
|
|
|
@ -39,37 +39,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
)
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGB_DI_PIN D3
|
||||
#define RGBLED_NUM 16 // Number of LEDs
|
||||
#define RGBLED_SPLIT { 8, 8 }
|
||||
# define RGB_DI_PIN D3
|
||||
# define RGBLED_NUM 16 // Number of LEDs
|
||||
# define RGBLED_SPLIT { 8, 8 }
|
||||
|
||||
#define RGBLIGHT_HUE_STEP 12
|
||||
#define RGBLIGHT_SAT_STEP 12
|
||||
#define RGBLIGHT_VAL_STEP 12
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||
# define RGBLIGHT_HUE_STEP 12
|
||||
# define RGBLIGHT_SAT_STEP 12
|
||||
# define RGBLIGHT_VAL_STEP 12
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define C6_AUDIO
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define NO_MUSIC_MODE
|
||||
#endif
|
||||
# define C6_AUDIO
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
# define NO_MUSIC_MODE
|
||||
# endif
|
||||
#endif //AUDIO_ENABLE
|
||||
|
||||
#undef PRODUCT
|
||||
#ifdef KEYBOARD_orthodox_rev1
|
||||
#define PRODUCT Drashna Hacked Orthodox Rev.1
|
||||
# define PRODUCT Drashna Hacked Orthodox Rev.1
|
||||
#elif KEYBOARD_orthodox_rev3
|
||||
#define PRODUCT Drashna Hacked Orthodox Rev.3
|
||||
# define PRODUCT Drashna Hacked Orthodox Rev.3
|
||||
#endif
|
||||
|
||||
#define QMK_ESC_OUTPUT D7 // usually COL
|
||||
#ifdef KEYBOARD_orthodox_rev1
|
||||
#define QMK_ESC_INPUT D4 // usually ROW
|
||||
# define QMK_ESC_INPUT D4 // usually ROW
|
||||
#else
|
||||
#define QMK_ESC_INPUT D2 // usually ROW
|
||||
# define QMK_ESC_INPUT D2 // usually ROW
|
||||
#endif
|
||||
#define QMK_LED B0
|
||||
#define QMK_SPEAKER C6
|
||||
|
|
|
@ -38,8 +38,8 @@ uint8_t last_osm;
|
|||
) \
|
||||
LAYOUT_wrapper( \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
||||
KC_TAB, K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, KC_QUOT, \
|
||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, CTL_T(K2A), KC_MRSF \
|
||||
KC_TAB, K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, KC_QUOT, \
|
||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \
|
||||
)
|
||||
#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)
|
||||
|
||||
|
@ -123,11 +123,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
};
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
setPinOutput(D5);
|
||||
writePinHigh(D5);
|
||||
|
||||
setPinOutput(B0);
|
||||
writePinHigh(B0);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ TAP_DANCE_ENABLE = no
|
|||
RGBLIGHT_ENABLE = yes
|
||||
AUDIO_ENABLE = no
|
||||
NKRO_ENABLE = yes
|
||||
SPACE_CADET_ENABLE = no
|
||||
|
||||
INDICATOR_LIGHTS = yes
|
||||
MACROS_ENABLED = no
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#undef RGBLIGHT_SAT_STEP
|
||||
#define RGBLIGHT_SAT_STEP 12
|
||||
# undef RGBLIGHT_SAT_STEP
|
||||
# define RGBLIGHT_SAT_STEP 12
|
||||
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
|
||||
|
|
|
@ -20,6 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#ifdef UNICODEMAP_ENABLE
|
||||
#include "drashna_unicode.h"
|
||||
#endif // UNICODEMAP_ENABLE
|
||||
#ifndef UNICODE_ENABLE
|
||||
# define UC(x) KC_NO
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
extern bool g_suspend_state;
|
||||
|
@ -28,7 +31,7 @@ extern rgb_config_t rgb_matrix_config;
|
|||
extern userspace_config_t userspace_config;
|
||||
|
||||
enum more_custom_keycodes {
|
||||
KC_SWAP_NUM = NEW_SAFE_RANGE
|
||||
KC_SWAP_NUM = NEW_SAFE_RANGE
|
||||
};
|
||||
|
||||
//define layer change stuff for underglow indicator
|
||||
|
@ -43,7 +46,7 @@ bool skip_leds = false;
|
|||
KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||
KC_TAB, K01, K02, K03, K04, K05, TG(_DIABLO), TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \
|
||||
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
|
||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, CTL_T(K2A), KC_MRSF, \
|
||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \
|
||||
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \
|
||||
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \
|
||||
KC_APP, KC_MENU, \
|
||||
|
@ -305,87 +308,88 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
switch (keycode) {
|
||||
case KC_1:
|
||||
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_2);
|
||||
} else {
|
||||
unregister_code(KC_2);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case KC_2:
|
||||
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_1);
|
||||
} else {
|
||||
unregister_code(KC_1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case KC_SWAP_NUM:
|
||||
if (record->event.pressed) {
|
||||
userspace_config.swapped_numbers ^= 1;
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
}
|
||||
}
|
||||
//switch (keycode) {
|
||||
// case KC_P00:
|
||||
// if (!record->event.pressed) {
|
||||
// register_code(KC_KP_0);
|
||||
// unregister_code(KC_KP_0);
|
||||
// register_code(KC_KP_0);
|
||||
// unregister_code(KC_KP_0);
|
||||
// }
|
||||
// return false;
|
||||
// break;
|
||||
//}
|
||||
return true;
|
||||
switch (keycode) {
|
||||
case KC_1:
|
||||
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_2);
|
||||
} else {
|
||||
unregister_code(KC_2);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case KC_2:
|
||||
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_1);
|
||||
} else {
|
||||
unregister_code(KC_1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case KC_SWAP_NUM:
|
||||
if (record->event.pressed) {
|
||||
userspace_config.swapped_numbers ^= 1;
|
||||
eeconfig_update_user(userspace_config.raw);
|
||||
}
|
||||
break;
|
||||
}
|
||||
//switch (keycode) {
|
||||
// case KC_P00:
|
||||
// if (!record->event.pressed) {
|
||||
// register_code(KC_KP_0);
|
||||
// unregister_code(KC_KP_0);
|
||||
// register_code(KC_KP_0);
|
||||
// unregister_code(KC_KP_0);
|
||||
// }
|
||||
// return false;
|
||||
// break;
|
||||
//}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_scan_keymap(void) { // runs frequently to update info
|
||||
uint8_t modifiers = get_mods();
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
uint8_t one_shot = get_oneshot_mods();
|
||||
uint8_t modifiers = get_mods();
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
uint8_t one_shot = get_oneshot_mods();
|
||||
|
||||
if (!skip_leds) {
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
if (!skip_leds) {
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
|
||||
// Since we're not using the LEDs here for layer indication anymore,
|
||||
// then lets use them for modifier indicators. Shame we don't have 4...
|
||||
// Also, no "else", since we want to know each, independently.
|
||||
if ( ( modifiers | one_shot ) & MOD_MASK_SHIFT || led_usb_state & (1<<USB_LED_CAPS_LOCK) ) {
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_2_set( 50 );
|
||||
}
|
||||
if ( ( modifiers | one_shot ) & MOD_MASK_CTRL) {
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_1_set( 10 );
|
||||
}
|
||||
if ( ( modifiers | one_shot ) & MOD_MASK_ALT) {
|
||||
ergodox_right_led_3_on();
|
||||
ergodox_right_led_3_set( 10 );
|
||||
}
|
||||
|
||||
// Since we're not using the LEDs here for layer indication anymore,
|
||||
// then lets use them for modifier indicators. Shame we don't have 4...
|
||||
// Also, no "else", since we want to know each, independently.
|
||||
if ( ( modifiers | one_shot ) & MOD_MASK_SHIFT || led_usb_state & (1<<USB_LED_CAPS_LOCK) ) {
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_2_set( 50 );
|
||||
}
|
||||
if ( ( modifiers | one_shot ) & MOD_MASK_CTRL) {
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_1_set( 10 );
|
||||
}
|
||||
if ( ( modifiers | one_shot ) & MOD_MASK_ALT) {
|
||||
ergodox_right_led_3_on();
|
||||
ergodox_right_led_3_set( 10 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
bool indicator_is_this_led_used_keyboard(uint8_t index) {
|
||||
switch (index) {
|
||||
case 13 ... 14:
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
switch (index) {
|
||||
case 13 ... 14:
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -393,101 +397,81 @@ bool indicator_is_this_led_used_keyboard(uint8_t index) {
|
|||
|
||||
void suspend_power_down_keymap(void) {
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
rgb_matrix_config.enable = false;
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_keymap(void) {
|
||||
rgb_matrix_config.enable = true;
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
}
|
||||
|
||||
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
|
||||
rgb_led led;
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_rgb_leds[i];
|
||||
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
||||
rgb_matrix_set_color( i, red, green, blue );
|
||||
rgb_led led;
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_rgb_leds[i];
|
||||
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
||||
rgb_matrix_set_color( i, red, green, blue );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rgb_matrix_indicators_user(void) {
|
||||
if (g_suspend_state || !rgb_matrix_config.enable || !userspace_config.rgb_layer_change) { return; }
|
||||
|
||||
switch (biton32(layer_state)) {
|
||||
case _MODS:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _GAMEPAD:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0x00);
|
||||
rgb_matrix_set_color(32, 0x00, 0xFF, 0x00); // Q
|
||||
rgb_matrix_set_color(31, 0x00, 0xFF, 0xFF); // W
|
||||
rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // E
|
||||
rgb_matrix_set_color(29, 0xFF, 0x80, 0x00); // R
|
||||
rgb_matrix_set_color(37, 0x00, 0xFF, 0xFF); // A
|
||||
rgb_matrix_set_color(36, 0x00, 0xFF, 0xFF); // S
|
||||
rgb_matrix_set_color(35, 0x00, 0xFF, 0xFF); // D
|
||||
rgb_matrix_set_color(34, 0x7A, 0x00, 0xFF); // F
|
||||
|
||||
rgb_matrix_set_color(27, 0xFF, 0xFF, 0xFF); // 1
|
||||
rgb_matrix_set_color(26, 0x00, 0xFF, 0x00); // 2
|
||||
rgb_matrix_set_color(25, 0x7A, 0x00, 0xFF); // 3
|
||||
|
||||
break;
|
||||
case _DIABLO:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
|
||||
case _RAISE:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _LOWER:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||
case _ADJUST:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
|
||||
default:
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
|
||||
case _NORMAN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
|
||||
case _MALTRON:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _EUCALYN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0xBF); break;
|
||||
case _CARPLAX:
|
||||
rgb_matrix_layer_helper(0x00, 0x00, 0xFF); break;
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
if (this_mod & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) || this_osm & MOD_MASK_SHIFT) {
|
||||
rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
|
||||
}
|
||||
if (this_mod & MOD_MASK_CTRL || this_osm & MOD_MASK_CTRL) {
|
||||
rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
|
||||
|
||||
}
|
||||
if (this_mod & MOD_MASK_GUI || this_osm & MOD_MASK_GUI) {
|
||||
rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
|
||||
}
|
||||
if (this_mod & MOD_MASK_ALT || this_osm & MOD_MASK_ALT) {
|
||||
rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
|
||||
}
|
||||
if ( userspace_config.rgb_layer_change &&
|
||||
#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
!g_suspend_state &&
|
||||
#endif
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
(!rgblight_config.enable && rgb_matrix_config.enable)
|
||||
#else
|
||||
rgb_matrix_config.enable
|
||||
#endif
|
||||
) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _MODS:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _GAMEPAD:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0x00);
|
||||
rgb_matrix_set_color(32, 0x00, 0xFF, 0x00); // Q
|
||||
rgb_matrix_set_color(31, 0x00, 0xFF, 0xFF); // W
|
||||
rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // E
|
||||
rgb_matrix_set_color(29, 0xFF, 0x80, 0x00); // R
|
||||
rgb_matrix_set_color(37, 0x00, 0xFF, 0xFF); // A
|
||||
rgb_matrix_set_color(36, 0x00, 0xFF, 0xFF); // S
|
||||
rgb_matrix_set_color(35, 0x00, 0xFF, 0xFF); // D
|
||||
rgb_matrix_set_color(34, 0x7A, 0x00, 0xFF); // F
|
||||
|
||||
rgb_matrix_set_color(27, 0xFF, 0xFF, 0xFF); // 1
|
||||
rgb_matrix_set_color(26, 0x00, 0xFF, 0x00); // 2
|
||||
rgb_matrix_set_color(25, 0x7A, 0x00, 0xFF); // 3
|
||||
|
||||
break;
|
||||
case _DIABLO:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
|
||||
case _RAISE:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _LOWER:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||
case _ADJUST:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
|
||||
default:
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
|
||||
case _NORMAN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
|
||||
case _MALTRON:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _EUCALYN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0xBF); break;
|
||||
case _CARPLAX:
|
||||
rgb_matrix_layer_helper(0x00, 0x00, 0xFF); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#if 0
|
||||
#ifdef RGB_MATRIX_KEYPRESSES
|
||||
rgblight_mode(RGB_MATRIX_MULTISPLASH);
|
||||
#else
|
||||
rgblight_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#endif //RGB_MATRIX_INIT
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
TAP_DANCE_ENABLE = yes
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
TAP_DANCE_ENABLE = yes
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
SPACE_CADET_ENABLE = no
|
||||
ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
|
||||
RGBLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = no
|
||||
endif
|
||||
CONSOLE_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
|
||||
UNICODE_ENABLE = yes
|
||||
UNICDOEMAP_ENABLE = no
|
||||
UNICODE_ENABLE = yes
|
||||
UNICDOEMAP_ENABLE = no
|
||||
|
||||
MACROS_ENABLED = no
|
||||
RGBLIGHT_TWINKLE = no
|
||||
INDICATOR_LIGHTS = no
|
||||
MACROS_ENABLED = no
|
||||
RGBLIGHT_TWINKLE = no
|
||||
INDICATOR_LIGHTS = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
|
||||
DEBOUNCE_TYPE = eager_pk
|
||||
|
|
|
@ -6,10 +6,21 @@
|
|||
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Glow
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
|
||||
# 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_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended
|
||||
// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
|
||||
// #define EECONFIG_RGB_MATRIX (uint32_t *)16
|
||||
|
||||
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_ALL
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# define DISABLE_RGB_MATRIX_DUAL_BEACON
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
|
||||
#endif
|
||||
|
|
|
@ -3,18 +3,17 @@
|
|||
// #define B6_AUDIO
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
|
||||
#define RGB_DI_PIN B1
|
||||
#define RGBLED_NUM 16 // Number of LEDs
|
||||
# define RGB_DI_PIN B1
|
||||
# define RGBLED_NUM 16 // Number of LEDs
|
||||
|
||||
#define RGBLIGHT_HUE_STEP 12
|
||||
#define RGBLIGHT_SAT_STEP 12
|
||||
#define RGBLIGHT_VAL_STEP 12
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||
# define RGBLIGHT_HUE_STEP 12
|
||||
# define RGBLIGHT_SAT_STEP 12
|
||||
# define RGBLIGHT_VAL_STEP 12
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#if defined(KEYBOARD_primekb_prime_m)
|
||||
#undef PRODUCT
|
||||
#define PRODUCT Drashna Hacked Prime_M Macro Pad
|
||||
# undef PRODUCT
|
||||
# define PRODUCT Drashna Hacked Prime_M Macro Pad
|
||||
#endif
|
||||
|
|
|
@ -2,49 +2,52 @@
|
|||
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
|
||||
#define RGB_DI_PIN B3
|
||||
#define RGBLED_NUM 13 // Number of LEDs
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_HUE_STEP 12
|
||||
#define RGBLIGHT_SAT_STEP 12
|
||||
#define RGBLIGHT_VAL_STEP 12
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
||||
# define RGB_DI_PIN B3
|
||||
# define RGBLED_NUM 13 // Number of LEDs
|
||||
# define RGBLIGHT_ANIMATIONS
|
||||
# define RGBLIGHT_HUE_STEP 12
|
||||
# define RGBLIGHT_SAT_STEP 12
|
||||
# define RGBLIGHT_VAL_STEP 12
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
# ifdef RGB_MATRIX_ENABLE
|
||||
# define RGBLIGHT_DISABLE_KEYCODES
|
||||
# endif
|
||||
#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_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
|
||||
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
|
||||
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended
|
||||
// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
|
||||
#define EECONFIG_RGB_MATRIX (uint32_t *)15
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended
|
||||
# ifndef KEYBOARD_planck_ez
|
||||
# define EECONFIG_RGB_MATRIX (uint32_t *)15
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(KEYBOARD_lets_split_rev2)
|
||||
#define USE_SERIAL
|
||||
#undef USE_I2C
|
||||
|
||||
#define EE_HANDS
|
||||
# define USE_SERIAL
|
||||
# undef USE_I2C
|
||||
# define EE_HANDS
|
||||
#endif
|
||||
|
||||
#if !defined(KEYBOARD_planck_light)
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define NO_MUSIC_MODE
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
# define NO_MUSIC_MODE
|
||||
# endif // RGBLIGHT_ENABLE
|
||||
#endif // KEYBOARD_planck_light
|
||||
|
||||
|
||||
#if defined(KEYBOARD_planck)
|
||||
#undef PRODUCT
|
||||
#if defined(KEYBOARD_planck_light)
|
||||
#define PRODUCT Drashna Hacked RGB Beacon (Planck Light)
|
||||
#elif defined(KEYBOARD_planck_rev6)
|
||||
#define PRODUCT Drashna Hacked Planck Rev6
|
||||
#elif defined(KEYBOARD_planck_EZ)
|
||||
#define PRODUCT Drashna Hacked Planck EZ
|
||||
#endif
|
||||
# undef PRODUCT
|
||||
# if defined(KEYBOARD_planck_light)
|
||||
# define PRODUCT Drashna Hacked RGB Beacon (Planck Light)
|
||||
# elif defined(KEYBOARD_planck_rev6)
|
||||
# define PRODUCT Drashna Hacked Planck Rev6
|
||||
# elif defined(KEYBOARD_planck_EZ)
|
||||
# define PRODUCT Drashna Hacked Planck EZ
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -58,7 +61,7 @@
|
|||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
|
||||
#define MIDI_BASIC
|
||||
// #define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
|
|
|
@ -34,6 +34,18 @@ enum planck_keycodes {
|
|||
#define BACKLIT OSM(MOD_LSFT)
|
||||
#endif
|
||||
|
||||
#ifdef KEYBOARD_planck_ez
|
||||
# define PLNK_1 BK_LWER
|
||||
# define PLNK_2 SP_LWER
|
||||
# define PLNK_3 KC_NO
|
||||
# define PLNK_4 ET_RAIS
|
||||
#else
|
||||
# define PLNK_1 SP_LWER
|
||||
# define PLNK_2 BK_LWER
|
||||
# define PLNK_3 DL_RAIS
|
||||
# define PLNK_4 ET_RAIS
|
||||
#endif
|
||||
|
||||
#define LAYOUT_ortho_4x12_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
|
@ -42,8 +54,8 @@ enum planck_keycodes {
|
|||
LAYOUT_ortho_4x12_wrapper( \
|
||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
||||
KC_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
|
||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, CTL_T(K2A), KC_ENT, \
|
||||
BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
|
||||
BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||
)
|
||||
#define LAYOUT_ortho_4x12_base_wrapper(...) LAYOUT_ortho_4x12_base(__VA_ARGS__)
|
||||
|
||||
|
@ -130,128 +142,132 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
case BACKLIT:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
switch (keycode) {
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
case BACKLIT:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool music_mask_user(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case RAISE:
|
||||
case LOWER:
|
||||
case BK_LWER:
|
||||
case SP_LWER:
|
||||
case DL_RAIS:
|
||||
case ET_RAIS:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
switch (keycode) {
|
||||
case RAISE:
|
||||
case LOWER:
|
||||
case BK_LWER:
|
||||
case SP_LWER:
|
||||
case DL_RAIS:
|
||||
case ET_RAIS:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
void suspend_power_down_keymap(void) {
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
rgb_matrix_config.enable = false;
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_keymap(void) {
|
||||
rgb_matrix_config.enable = true;
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
}
|
||||
|
||||
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
||||
rgb_led led;
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_rgb_leds[i];
|
||||
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
||||
rgb_matrix_set_color( i, red, green, blue );
|
||||
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
|
||||
rgb_led led;
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
led = g_rgb_leds[i];
|
||||
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
||||
rgb_matrix_set_color( i, red, green, blue );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rgb_matrix_indicators_user(void) {
|
||||
uint8_t this_mod = get_mods();
|
||||
uint8_t this_led = host_keyboard_leds();
|
||||
uint8_t this_osm = get_oneshot_mods();
|
||||
uint8_t this_mod = get_mods();
|
||||
uint8_t this_led = host_keyboard_leds();
|
||||
uint8_t this_osm = get_oneshot_mods();
|
||||
bool is_ez;
|
||||
#ifdef KEYBOARD_planck_ez
|
||||
is_ez = true;
|
||||
#endif
|
||||
|
||||
if (!g_suspend_state && userspace_config.rgb_layer_change &&
|
||||
#if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
||||
(!rgblight_config.enable && rgb_matrix_config.enable)
|
||||
#else
|
||||
rgb_matrix_config.enable
|
||||
if ( userspace_config.rgb_layer_change &&
|
||||
#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
!g_suspend_state &&
|
||||
#endif
|
||||
) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _RAISE:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
||||
case _LOWER:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
||||
case _ADJUST:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
||||
default:
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, true); break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, true); break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, true); break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, true); break;
|
||||
case _NORMAN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D, true); break;
|
||||
case _MALTRON:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, true); break;
|
||||
case _EUCALYN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0xBF, true); break;
|
||||
case _CARPLAX:
|
||||
rgb_matrix_layer_helper(0x00, 0x00, 0xFF, true); break;
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
(!rgblight_config.enable && rgb_matrix_config.enable)
|
||||
#else
|
||||
rgb_matrix_config.enable
|
||||
#endif
|
||||
) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _RAISE:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _LOWER:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||
case _ADJUST:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
|
||||
default:
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
|
||||
case _NORMAN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
|
||||
case _MALTRON:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||
case _EUCALYN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0xBF); break;
|
||||
case _CARPLAX:
|
||||
rgb_matrix_layer_helper(0x00, 0x00, 0xFF); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_set_color(42, 0x00, 0xFF, 0xFF); break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_set_color(42, 0xFF, 0x00, 0xFF); break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_set_color(42, 0x00, 0xFF, 0x00); break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_set_color(42, 0xD9, 0xA5, 0x21); break;
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||
rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||
rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF); break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_set_color(is_ez ? 41 : 42, 0xFF, 0x00, 0xFF); break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0x00); break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21); break;
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||
rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||
rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
|
||||
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_GUI) {
|
||||
rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_ALT) {
|
||||
rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
|
||||
}
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_GUI) {
|
||||
rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
|
||||
}
|
||||
if ( (this_mod | this_osm) & MOD_MASK_ALT) {
|
||||
rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
|
@ -260,57 +276,81 @@ void matrix_init_keymap(void) {
|
|||
#else //RGB_MATRIX_INIT
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#if !defined(CONVERT_TO_PROTON_C) && !defined(KEYBOARD_planck)
|
||||
#if !defined(CONVERT_TO_PROTON_C) && !defined(KEYBOARD_planck)
|
||||
setPinOutput(D5);
|
||||
writePinHigh(D5);
|
||||
|
||||
setPinOutput(B0);
|
||||
writePinHigh(B0);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#endif //RGB_MATRIX_INIT
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
void encoder_update(bool clockwise) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _RAISE:
|
||||
clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
|
||||
break;
|
||||
case _LOWER:
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
clockwise ? rgb_matrix_step() : rgblight_step_reverse();
|
||||
#else
|
||||
clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
|
||||
#endif
|
||||
case _ADJUST:
|
||||
#ifdef AUDIO_CLICKY
|
||||
clockwise ? clicky_freq_up() : clicky_freq_down();
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
|
||||
}
|
||||
#ifdef AUDIO_CLICKY
|
||||
switch (biton32(layer_state)) {
|
||||
case _RAISE:
|
||||
clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
|
||||
break;
|
||||
case _LOWER:
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
clockwise ? rgb_matrix_step() : rgblight_step_reverse();
|
||||
#else
|
||||
clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
|
||||
#endif
|
||||
break;
|
||||
case _ADJUST:
|
||||
#ifdef AUDIO_CLICKY
|
||||
clockwise ? clicky_freq_up() : clicky_freq_down();
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
|
||||
}
|
||||
#ifdef AUDIO_CLICKY
|
||||
clicky_play();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#endif // ENCODER_ENABLE
|
||||
|
||||
#ifdef KEYBOARD_planck_rev6
|
||||
void dip_update(uint8_t index, bool active) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
if(active) { audio_on(); } else { audio_off(); }
|
||||
break;
|
||||
case 1:
|
||||
if(active) { clicky_on(); } else { clicky_off(); }
|
||||
break;
|
||||
case 2:
|
||||
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = active;
|
||||
break;
|
||||
case 3:
|
||||
userspace_config.nuke_switch = active;
|
||||
break;
|
||||
}
|
||||
switch (index) {
|
||||
case 0:
|
||||
if(active) { audio_on(); } else { audio_off(); }
|
||||
break;
|
||||
case 1:
|
||||
if(active) { clicky_on(); } else { clicky_off(); }
|
||||
break;
|
||||
case 2:
|
||||
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = active;
|
||||
break;
|
||||
case 3:
|
||||
userspace_config.nuke_switch = active;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif // KEYBOARD_planck_rev6
|
||||
|
||||
#ifdef KEYBOARD_planck_ez
|
||||
uint32_t layer_state_set_keymap(uint32_t state) {
|
||||
|
||||
palClearPad(GPIOB, 8);
|
||||
palClearPad(GPIOB, 9);
|
||||
switch (biton32(state)) {
|
||||
case _LOWER:
|
||||
palSetPad(GPIOB, 9);
|
||||
break;
|
||||
case _RAISE:
|
||||
palSetPad(GPIOB, 8);
|
||||
break;
|
||||
case _ADJUST:
|
||||
palSetPad(GPIOB, 9);
|
||||
palSetPad(GPIOB, 8);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -5,16 +5,27 @@ CONSOLE_ENABLE = no # Console for debug(+400)
|
|||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
TAP_DANCE_ENABLE = no
|
||||
AUDIO_ENABLE = yes
|
||||
SPACE_CADET_ENABLE = no
|
||||
|
||||
ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
|
||||
RGBLIGHT_ENABLE = yes
|
||||
INDICATOR_LIGHTS = yes
|
||||
RGBLIGHT_TWINKLE = yes
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
INDICATOR_LIGHTS = yes
|
||||
RGBLIGHT_TWINKLE = yes
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
endif
|
||||
ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = no
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = no
|
||||
endif
|
||||
ifneq (,$(findstring planck/ez,$(KEYBOARD))) # Make sure it IS the Planck Light
|
||||
RGBLIGHT_ENABLE = no
|
||||
# SERIAL_LINK_ENABLE = yes
|
||||
ENCODER_ENABLE = no
|
||||
RGB_MATRIX_ENABLE = IS31FL3737
|
||||
INDICATOR_LIGHTS = yes
|
||||
RGBLIGHT_TWINKLE = yes
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(PROTOCOL)), VUSB)
|
||||
|
|
|
@ -3,20 +3,19 @@
|
|||
|
||||
/* ws2812 RGB LED */
|
||||
#if defined(KEYBOARD_fractal)
|
||||
#define RGB_DI_PIN D2
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 29 // Number of LEDs
|
||||
#undef RGBLIGHT_HUE_STEP
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#undef RGBLIGHT_SAT_STEP
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#undef RGBLIGHT_VAL_STEP
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 175
|
||||
#define RGBLIGHT_SLEEP
|
||||
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
|
||||
# define RGB_DI_PIN D2
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLIGHT_ANIMATIONS
|
||||
# define RGBLED_NUM 29 // Number of LEDs
|
||||
# undef RGBLIGHT_HUE_STEP
|
||||
# define RGBLIGHT_HUE_STEP 8
|
||||
# undef RGBLIGHT_SAT_STEP
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# undef RGBLIGHT_VAL_STEP
|
||||
# define RGBLIGHT_VAL_STEP 8
|
||||
# define RGBLIGHT_LIMIT_VAL 175
|
||||
# define RGBLIGHT_SLEEP
|
||||
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
|
||||
#endif
|
||||
|
|
|
@ -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…
Reference in a new issue