[Keymap] RGB Changes for Drashna Keyboards (#5803)
* Disable a bunch of reactive modes * Enable rgb matrix for Corne Keyboard * Convert CRKBD to rgb matrix * Add Gergo keyboard layout * Make Diablo 3 tap dance better * Add basic support for Planck EZ * Fix RGB Matrix stuff * Fix keycodes for Planck EZ * Update CRKBD OLED stuff * Fix typo for sleep on ergodox glow * Improve my gergo layout * Scrolling OLED key logger! * Change gergo layout * Hnadle unicode keycodes if unicode is disabled * Disable COMMAND/CONSOLE for gergo * Fix right side control * Re-enable LTO for all platforms Since I got updated arm gcc binaries that no longer error out on lto * Update formatting to match newer community standards Poor 2 space * Re-alight startup animation to use new HUE range * Streamline gitlab ci scripts * Disabled Space Cadet * Add support for breathing table * Enable new LTO Option And clean up defines that will now be repeatitive * Remove vscode settings * Additional formatting cleanup of config.h files
This commit is contained in:
parent
7a751f1141
commit
f3d5b1091d
38 changed files with 1414 additions and 1444 deletions
|
@ -27,7 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// #define MASTER_RIGHT
|
// #define MASTER_RIGHT
|
||||||
#define EE_HANDS
|
#define EE_HANDS
|
||||||
|
|
||||||
// #define SSD1306OLED
|
#undef USE_I2C
|
||||||
|
#undef SSD1306OLED
|
||||||
|
|
||||||
#define USE_SERIAL_PD2
|
#define USE_SERIAL_PD2
|
||||||
|
|
||||||
|
@ -35,17 +36,42 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// #define TAPPING_TERM 100
|
// #define TAPPING_TERM 100
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLED_NUM 27
|
# define RGBLED_NUM 27
|
||||||
|
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
# define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
# define RGBLIGHT_SAT_STEP 8
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
# define RGBLIGHT_VAL_STEP 8
|
||||||
#define RGBLIGHT_LIMIT_VAL 100
|
# define RGBLIGHT_LIMIT_VAL 100
|
||||||
#endif
|
#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
|
#ifdef AUDIO_ENABLE
|
||||||
#define B6_AUDIO
|
# define B6_AUDIO
|
||||||
// #define NO_MUSIC_MODE
|
// #define NO_MUSIC_MODE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include "drashna.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 keymap_config_t keymap_config;
|
||||||
extern uint8_t is_master;
|
extern uint8_t is_master;
|
||||||
|
@ -20,7 +10,7 @@ extern rgblight_config_t rgblight_config;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum crkbd_keycodes {
|
enum crkbd_keycodes {
|
||||||
RGBRST = NEW_SAFE_RANGE
|
RGBRST = NEW_SAFE_RANGE
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LAYOUT_crkbd_base( \
|
#define LAYOUT_crkbd_base( \
|
||||||
|
@ -31,7 +21,7 @@ enum crkbd_keycodes {
|
||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
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), \
|
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 \
|
LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
|
||||||
)
|
)
|
||||||
#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__)
|
#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) {
|
void matrix_init_keymap(void) {
|
||||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
#ifndef CONVERT_TO_PROTON_C
|
||||||
#ifdef SSD1306OLED
|
|
||||||
iota_gfx_init(!has_usb()); // turns on the display
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CONVERT_TO_PROTON_C
|
|
||||||
setPinOutput(D5);
|
setPinOutput(D5);
|
||||||
writePinHigh(D5);
|
writePinHigh(D5);
|
||||||
|
|
||||||
setPinOutput(B0);
|
setPinOutput(B0);
|
||||||
writePinHigh(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.
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
const char *read_logo(void);
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
char layer_state_str[24];
|
if (is_master) {
|
||||||
char modifier_state_str[24];
|
return OLED_ROTATION_270;
|
||||||
char host_led_state_str[24];
|
} else {
|
||||||
char keylog_str[24] = {};
|
return rotation;
|
||||||
char keylogs_str[21] = {};
|
}
|
||||||
int keylogs_str_idx = 0;
|
}
|
||||||
|
|
||||||
// const char *read_mode_icon(bool swap);
|
void render_crkbd_logo(void) {
|
||||||
// void set_timelog(void);
|
static const char PROGMEM crkbd_logo[] = {
|
||||||
// const char *read_timelog(void);
|
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] = {
|
const char code_to_name[60] = {
|
||||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
|
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
|
||||||
|
@ -153,261 +146,124 @@ const char code_to_name[60] = {
|
||||||
'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
|
'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
|
||||||
'#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
|
'#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
|
||||||
|
|
||||||
void set_keylog(uint16_t keycode, keyrecord_t *record) {
|
void add_keylog(uint16_t keycode) {
|
||||||
char name = ' ';
|
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
|
||||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
|
(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);
|
|
||||||
|
|
||||||
// update keylogs
|
for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
|
||||||
if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
|
keylog_str[i] = keylog_str[i - 1];
|
||||||
keylogs_str_idx = 0;
|
|
||||||
for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
|
|
||||||
keylogs_str[i] = ' ';
|
|
||||||
}
|
}
|
||||||
}
|
if (keycode < 60) {
|
||||||
|
keylog_str[0] = code_to_name[keycode];
|
||||||
keylogs_str[keylogs_str_idx] = name;
|
}
|
||||||
keylogs_str_idx++;
|
log_timer = timer_read();
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *read_keylog(void) {
|
void update_log(void) {
|
||||||
return keylog_str;
|
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) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
if (record->event.pressed) { add_keylog(keycode); }
|
||||||
case KC_A ... KC_SLASH:
|
return true;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#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) {
|
void render_status(void) {
|
||||||
|
|
||||||
oled_write_P(PSTR("Layer"), false);
|
oled_write_P(PSTR("Layer"), false);
|
||||||
switch (biton32(layer_state)) {
|
switch (biton32(layer_state)) {
|
||||||
case 0:
|
case 0:
|
||||||
oled_write_P(PSTR("Base "), false);
|
oled_write_P(PSTR("Base "), false);
|
||||||
break;
|
break;
|
||||||
case _RAISE:
|
case _RAISE:
|
||||||
oled_write_P(PSTR("Raise"), false);
|
oled_write_P(PSTR("Raise"), false);
|
||||||
break;
|
break;
|
||||||
case _LOWER:
|
case _LOWER:
|
||||||
oled_write_P(PSTR("Lower"), false);
|
oled_write_P(PSTR("Lower"), false);
|
||||||
break;
|
break;
|
||||||
case _ADJUST:
|
case _ADJUST:
|
||||||
oled_write_P(PSTR("Adjst"), false);
|
oled_write_P(PSTR("Adjst"), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
oled_write_P(PSTR("Unkn "), false);
|
oled_write_P(PSTR("Unkn "), false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
oled_write_P(PSTR("Lyout"), false);
|
oled_write_P(PSTR("Lyout"), false);
|
||||||
switch (biton32(default_layer_state)) {
|
switch (biton32(default_layer_state)) {
|
||||||
case _QWERTY:
|
case _QWERTY:
|
||||||
oled_write_P(PSTR("QWRTY"), false);
|
oled_write_P(PSTR("QWRTY"), false);
|
||||||
break;
|
break;
|
||||||
case _COLEMAK:
|
case _COLEMAK:
|
||||||
oled_write_P(PSTR("COLMK"), false);
|
oled_write_P(PSTR("COLMK"), false);
|
||||||
break;
|
break;
|
||||||
case _DVORAK:
|
case _DVORAK:
|
||||||
oled_write_P(PSTR("DVRAK"), false);
|
oled_write_P(PSTR("DVRAK"), false);
|
||||||
break;
|
break;
|
||||||
case _WORKMAN:
|
case _WORKMAN:
|
||||||
oled_write_P(PSTR("WRKMN"), false);
|
oled_write_P(PSTR("WRKMN"), false);
|
||||||
break;
|
break;
|
||||||
case _NORMAN:
|
case _NORMAN:
|
||||||
oled_write_P(PSTR("NORMN"), false);
|
oled_write_P(PSTR("NORMN"), false);
|
||||||
break;
|
break;
|
||||||
case _MALTRON:
|
case _MALTRON:
|
||||||
oled_write_P(PSTR("MLTRN"), false);
|
oled_write_P(PSTR("MLTRN"), false);
|
||||||
break;
|
break;
|
||||||
case _EUCALYN:
|
case _EUCALYN:
|
||||||
oled_write_P(PSTR("ECLYN"), false);
|
oled_write_P(PSTR("ECLYN"), false);
|
||||||
break;
|
break;
|
||||||
case _CARPLAX:
|
case _CARPLAX:
|
||||||
oled_write_P(PSTR("CRPLX"), false);
|
oled_write_P(PSTR("CRPLX"), false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t modifiers = get_mods();
|
uint8_t modifiers = get_mods();
|
||||||
uint8_t one_shot = get_oneshot_mods();
|
uint8_t one_shot = get_oneshot_mods();
|
||||||
|
|
||||||
oled_write_P(PSTR("Mods:"), false);
|
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_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false);
|
||||||
oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : 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_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( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false);
|
||||||
|
|
||||||
|
|
||||||
oled_write_P(PSTR("BTMGK"), 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} };
|
|
||||||
|
|
||||||
if (keymap_config.swap_lalt_lgui != false) {
|
if (keymap_config.swap_lalt_lgui) {
|
||||||
oled_write_P(mode_logo[0], false);
|
oled_write_P(PSTR(" Mac "), false);
|
||||||
oled_write_P(mode_logo[1], false);
|
} else {
|
||||||
} else {
|
oled_write_P(PSTR(" Win "), false);
|
||||||
oled_write_P(mode_logo[2], false);
|
}
|
||||||
oled_write_P(mode_logo[3], false);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t led_usb_state = host_keyboard_leds();
|
uint8_t led_usb_state = host_keyboard_leds();
|
||||||
oled_write_P(PSTR("Lock:"), false);
|
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_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_CAPS_LOCK) ? PSTR(" CAPS") : PSTR(" "), false);
|
||||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : 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) {
|
void oled_task_user(void) {
|
||||||
if (is_master) {
|
if (is_master) {
|
||||||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||||
} else {
|
} else {
|
||||||
render_crkbd_logo();
|
render_crkbd_logo();
|
||||||
oled_scroll_left(); // Turns on scrolling
|
oled_scroll_left(); // Turns on scrolling
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void matrix_scan_keymap(void) { update_log(); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint16_t get_tapping_term(uint16_t keycode) {
|
uint16_t get_tapping_term(uint16_t keycode) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case ALT_T(KC_A):
|
case ALT_T(KC_A):
|
||||||
return TAPPING_TERM + 100;
|
return TAPPING_TERM + 100;
|
||||||
default:
|
default:
|
||||||
return TAPPING_TERM;
|
return TAPPING_TERM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,9 +14,10 @@ MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE = no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
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
|
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||||
|
RGB_MATRIX_ENABLE = WS2812
|
||||||
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
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
|
BOOTLOADER = qmk-dfu
|
||||||
|
|
||||||
OLED_DRIVER_ENABLE = yes
|
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 QMK_KEYBOARD_H
|
||||||
#include "drashna.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( \
|
#define LAYOUT_gergo_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_gergo_wrapper( \
|
LAYOUT_gergo_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
|
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), \
|
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, CTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
_______, _______, KC_SPC, LT(_LOWER, KC_BSPC), LT(_RAISE, KC_DEL), KC_ENT, _______, _______ \
|
KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
|
||||||
)
|
)
|
||||||
|
|
||||||
#define LAYOUT_gergo_base_wrapper(...) LAYOUT_gergo_base(__VA_ARGS__)
|
#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
|
#define EE_HANDS
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLED_NUM 18 // Number of LEDs
|
# define RGBLED_NUM 18 // Number of LEDs
|
||||||
#define RGBLED_SPLIT { 9, 9 }
|
# define RGBLED_SPLIT { 9, 9 }
|
||||||
#define RGBLIGHT_HUE_STEP 12
|
# define RGBLIGHT_HUE_STEP 12
|
||||||
#define RGBLIGHT_SAT_STEP 12
|
# define RGBLIGHT_SAT_STEP 12
|
||||||
#define RGBLIGHT_VAL_STEP 12
|
# define RGBLIGHT_VAL_STEP 12
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
|
||||||
|
|
||||||
#define RGBLIGHT_LIMIT_VAL 225
|
# define RGBLIGHT_LIMIT_VAL 225
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
#define C6_AUDIO
|
# define C6_AUDIO
|
||||||
#ifdef RGBLIGHT_ENABLE
|
# ifdef RGBLIGHT_ENABLE
|
||||||
#define NO_MUSIC_MODE
|
# define NO_MUSIC_MODE
|
||||||
#endif //RGBLIGHT_ENABLE
|
# endif //RGBLIGHT_ENABLE
|
||||||
#endif //AUDIO_ENABLE
|
#endif //AUDIO_ENABLE
|
||||||
|
|
||||||
#define QMK_ESC_OUTPUT F6 // usually COL
|
#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
|
#undef PRODUCT
|
||||||
#ifdef KEYBOARD_keebio_iris_rev2
|
#ifdef KEYBOARD_keebio_iris_rev2
|
||||||
#define PRODUCT Drashna Hacked Iris Rev.2
|
# define PRODUCT Drashna Hacked Iris Rev.2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SHFT_LED1 6
|
#define SHFT_LED1 6
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||||
KC_TAB , K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
|
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, \
|
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 \
|
LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE \
|
||||||
)
|
)
|
||||||
#define LAYOUT_iris_base_wrapper(...) LAYOUT_iris_base(__VA_ARGS__)
|
#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) {
|
void matrix_init_keymap(void) {
|
||||||
#ifndef CONVERT_TO_PROTON_C
|
#ifndef CONVERT_TO_PROTON_C
|
||||||
setPinOutput(D5);
|
setPinOutput(D5);
|
||||||
writePinHigh(D5);
|
writePinHigh(D5);
|
||||||
|
|
||||||
setPinOutput(B0);
|
setPinOutput(B0);
|
||||||
writePinHigh(B0);
|
writePinHigh(B0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void keyboard_post_init_keymap(void) {
|
void keyboard_post_init_keymap(void) {
|
||||||
#if BACKLIGHT_ENABLE
|
#if BACKLIGHT_ENABLE
|
||||||
backlight_enable();
|
backlight_enable();
|
||||||
backlight_level(5);
|
backlight_level(5);
|
||||||
#ifdef BACKLIGHT_BREATHING
|
#ifdef BACKLIGHT_BREATHING
|
||||||
breathing_enable();
|
breathing_enable();
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ AUDIO_ENABLE = no
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = no
|
BACKLIGHT_ENABLE = no
|
||||||
SWAP_HANDS_ENABLE = no
|
SWAP_HANDS_ENABLE = no
|
||||||
|
SPACE_CADET_ENABLE = no
|
||||||
|
|
||||||
INDICATOR_LIGHTS = no
|
INDICATOR_LIGHTS = no
|
||||||
MACROS_ENABLED = no
|
MACROS_ENABLED = no
|
||||||
|
|
|
@ -21,15 +21,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "../drashna/config.h"
|
#include "../drashna/config.h"
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLED_NUM 16 // Number of LEDs
|
# define RGBLED_NUM 16 // Number of LEDs
|
||||||
#undef RGBLED_SPLIT
|
# undef RGBLED_SPLIT
|
||||||
#define RGBLED_SPLIT { 8, 8 }
|
# define RGBLED_SPLIT { 8, 8 }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef PRODUCT
|
#undef PRODUCT
|
||||||
#ifdef KEYBOARD_keebio_iris_rev2
|
#ifdef KEYBOARD_keebio_iris_rev2
|
||||||
#define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit)
|
# define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef SHFT_LED1
|
#undef SHFT_LED1
|
||||||
|
|
|
@ -21,15 +21,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "../drashna/config.h"
|
#include "../drashna/config.h"
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLED_NUM 16 // Number of LEDs
|
# define RGBLED_NUM 16 // Number of LEDs
|
||||||
#undef RGBLED_SPLIT
|
# undef RGBLED_SPLIT
|
||||||
#define RGBLED_SPLIT { 8, 8 }
|
# define RGBLED_SPLIT { 8, 8 }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef PRODUCT
|
#undef PRODUCT
|
||||||
#ifdef KEYBOARD_keebio_iris_rev2
|
#ifdef KEYBOARD_keebio_iris_rev2
|
||||||
#define PRODUCT Drashna Hacked Iris Rev.2 (16 LED)
|
# define PRODUCT Drashna Hacked Iris Rev.2 (16 LED)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef SHFT_LED1
|
#undef SHFT_LED1
|
||||||
|
|
|
@ -21,35 +21,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define MATRIX_ROWS 5
|
#define MATRIX_ROWS 5
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLED_NUM 16
|
# define RGBLED_NUM 16
|
||||||
|
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
# define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
# define RGBLIGHT_SAT_STEP 8
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
# define RGBLIGHT_VAL_STEP 8
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
|
||||||
#endif // RGBLIGHT_ENABLE
|
#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
|
#undef PRODUCT
|
||||||
#define PRODUCT Drashnas Viterbi Macro Pad
|
#define PRODUCT Drashnas Viterbi Macro Pad
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
#define C6_AUDIO
|
# define C6_AUDIO
|
||||||
#define NO_MUSIC_MODE
|
# define NO_MUSIC_MODE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LAYOUT_ortho_5x7( \
|
#define LAYOUT_ortho_5x7( \
|
||||||
|
|
|
@ -8,6 +8,7 @@ RGBLIGHT_ENABLE = yes
|
||||||
AUDIO_ENABLE = yes
|
AUDIO_ENABLE = yes
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
SPLIT_KEYBOARD = no
|
SPLIT_KEYBOARD = no
|
||||||
|
SPACE_CADET_ENABLE = no
|
||||||
|
|
||||||
NO_SECRETS = yes
|
NO_SECRETS = yes
|
||||||
MACROS_ENABLED = yes
|
MACROS_ENABLED = yes
|
||||||
|
|
|
@ -20,6 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "../drashna/config.h"
|
#include "../drashna/config.h"
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLED_NUM 12
|
# define RGBLED_NUM 12
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,37 +39,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
)
|
)
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#define RGB_DI_PIN D3
|
# define RGB_DI_PIN D3
|
||||||
#define RGBLED_NUM 16 // Number of LEDs
|
# define RGBLED_NUM 16 // Number of LEDs
|
||||||
#define RGBLED_SPLIT { 8, 8 }
|
# define RGBLED_SPLIT { 8, 8 }
|
||||||
|
|
||||||
#define RGBLIGHT_HUE_STEP 12
|
# define RGBLIGHT_HUE_STEP 12
|
||||||
#define RGBLIGHT_SAT_STEP 12
|
# define RGBLIGHT_SAT_STEP 12
|
||||||
#define RGBLIGHT_VAL_STEP 12
|
# define RGBLIGHT_VAL_STEP 12
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
#define C6_AUDIO
|
# define C6_AUDIO
|
||||||
#ifdef RGBLIGHT_ENABLE
|
# ifdef RGBLIGHT_ENABLE
|
||||||
#define NO_MUSIC_MODE
|
# define NO_MUSIC_MODE
|
||||||
#endif
|
# endif
|
||||||
#endif //AUDIO_ENABLE
|
#endif //AUDIO_ENABLE
|
||||||
|
|
||||||
#undef PRODUCT
|
#undef PRODUCT
|
||||||
#ifdef KEYBOARD_orthodox_rev1
|
#ifdef KEYBOARD_orthodox_rev1
|
||||||
#define PRODUCT Drashna Hacked Orthodox Rev.1
|
# define PRODUCT Drashna Hacked Orthodox Rev.1
|
||||||
#elif KEYBOARD_orthodox_rev3
|
#elif KEYBOARD_orthodox_rev3
|
||||||
#define PRODUCT Drashna Hacked Orthodox Rev.3
|
# define PRODUCT Drashna Hacked Orthodox Rev.3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define QMK_ESC_OUTPUT D7 // usually COL
|
#define QMK_ESC_OUTPUT D7 // usually COL
|
||||||
#ifdef KEYBOARD_orthodox_rev1
|
#ifdef KEYBOARD_orthodox_rev1
|
||||||
#define QMK_ESC_INPUT D4 // usually ROW
|
# define QMK_ESC_INPUT D4 // usually ROW
|
||||||
#else
|
#else
|
||||||
#define QMK_ESC_INPUT D2 // usually ROW
|
# define QMK_ESC_INPUT D2 // usually ROW
|
||||||
#endif
|
#endif
|
||||||
#define QMK_LED B0
|
#define QMK_LED B0
|
||||||
#define QMK_SPEAKER C6
|
#define QMK_SPEAKER C6
|
||||||
|
|
|
@ -38,8 +38,8 @@ uint8_t last_osm;
|
||||||
) \
|
) \
|
||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
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_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_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__)
|
#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) {
|
void matrix_init_keymap(void) {
|
||||||
#ifndef CONVERT_TO_PROTON_C
|
#ifndef CONVERT_TO_PROTON_C
|
||||||
setPinOutput(D5);
|
setPinOutput(D5);
|
||||||
writePinHigh(D5);
|
writePinHigh(D5);
|
||||||
|
|
||||||
setPinOutput(B0);
|
setPinOutput(B0);
|
||||||
writePinHigh(B0);
|
writePinHigh(B0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ TAP_DANCE_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
|
SPACE_CADET_ENABLE = no
|
||||||
|
|
||||||
INDICATOR_LIGHTS = yes
|
INDICATOR_LIGHTS = yes
|
||||||
MACROS_ENABLED = no
|
MACROS_ENABLED = no
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#undef RGBLIGHT_SAT_STEP
|
# undef RGBLIGHT_SAT_STEP
|
||||||
#define RGBLIGHT_SAT_STEP 12
|
# define RGBLIGHT_SAT_STEP 12
|
||||||
|
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
|
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#ifdef UNICODEMAP_ENABLE
|
#ifdef UNICODEMAP_ENABLE
|
||||||
#include "drashna_unicode.h"
|
#include "drashna_unicode.h"
|
||||||
#endif // UNICODEMAP_ENABLE
|
#endif // UNICODEMAP_ENABLE
|
||||||
|
#ifndef UNICODE_ENABLE
|
||||||
|
# define UC(x) KC_NO
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
extern bool g_suspend_state;
|
extern bool g_suspend_state;
|
||||||
|
@ -28,7 +31,7 @@ extern rgb_config_t rgb_matrix_config;
|
||||||
extern userspace_config_t userspace_config;
|
extern userspace_config_t userspace_config;
|
||||||
|
|
||||||
enum more_custom_keycodes {
|
enum more_custom_keycodes {
|
||||||
KC_SWAP_NUM = NEW_SAFE_RANGE
|
KC_SWAP_NUM = NEW_SAFE_RANGE
|
||||||
};
|
};
|
||||||
|
|
||||||
//define layer change stuff for underglow indicator
|
//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_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_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_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), \
|
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), \
|
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \
|
||||||
KC_APP, KC_MENU, \
|
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) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case KC_1:
|
case KC_1:
|
||||||
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
register_code(KC_2);
|
register_code(KC_2);
|
||||||
} else {
|
} else {
|
||||||
unregister_code(KC_2);
|
unregister_code(KC_2);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KC_2:
|
case KC_2:
|
||||||
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
register_code(KC_1);
|
register_code(KC_1);
|
||||||
} else {
|
} else {
|
||||||
unregister_code(KC_1);
|
unregister_code(KC_1);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KC_SWAP_NUM:
|
case KC_SWAP_NUM:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
userspace_config.swapped_numbers ^= 1;
|
userspace_config.swapped_numbers ^= 1;
|
||||||
eeconfig_update_user(userspace_config.raw);
|
eeconfig_update_user(userspace_config.raw);
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
//switch (keycode) {
|
}
|
||||||
// case KC_P00:
|
//switch (keycode) {
|
||||||
// if (!record->event.pressed) {
|
// case KC_P00:
|
||||||
// register_code(KC_KP_0);
|
// if (!record->event.pressed) {
|
||||||
// unregister_code(KC_KP_0);
|
// register_code(KC_KP_0);
|
||||||
// register_code(KC_KP_0);
|
// unregister_code(KC_KP_0);
|
||||||
// unregister_code(KC_KP_0);
|
// register_code(KC_KP_0);
|
||||||
// }
|
// unregister_code(KC_KP_0);
|
||||||
// return false;
|
// }
|
||||||
// break;
|
// return false;
|
||||||
//}
|
// break;
|
||||||
return true;
|
//}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_keymap(void) { // runs frequently to update info
|
void matrix_scan_keymap(void) { // runs frequently to update info
|
||||||
uint8_t modifiers = get_mods();
|
uint8_t modifiers = get_mods();
|
||||||
uint8_t led_usb_state = host_keyboard_leds();
|
uint8_t led_usb_state = host_keyboard_leds();
|
||||||
uint8_t one_shot = get_oneshot_mods();
|
uint8_t one_shot = get_oneshot_mods();
|
||||||
|
|
||||||
if (!skip_leds) {
|
if (!skip_leds) {
|
||||||
ergodox_board_led_off();
|
ergodox_board_led_off();
|
||||||
ergodox_right_led_1_off();
|
ergodox_right_led_1_off();
|
||||||
ergodox_right_led_2_off();
|
ergodox_right_led_2_off();
|
||||||
ergodox_right_led_3_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) {
|
bool indicator_is_this_led_used_keyboard(uint8_t index) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 13 ... 14:
|
case 13 ... 14:
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -393,101 +397,81 @@ bool indicator_is_this_led_used_keyboard(uint8_t index) {
|
||||||
|
|
||||||
void suspend_power_down_keymap(void) {
|
void suspend_power_down_keymap(void) {
|
||||||
rgb_matrix_set_suspend_state(true);
|
rgb_matrix_set_suspend_state(true);
|
||||||
rgb_matrix_config.enable = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void suspend_wakeup_init_keymap(void) {
|
void suspend_wakeup_init_keymap(void) {
|
||||||
rgb_matrix_config.enable = true;
|
|
||||||
rgb_matrix_set_suspend_state(false);
|
rgb_matrix_set_suspend_state(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
|
||||||
rgb_led led;
|
rgb_led led;
|
||||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_rgb_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
||||||
rgb_matrix_set_color( i, red, green, blue );
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rgb_matrix_indicators_user(void) {
|
void rgb_matrix_indicators_user(void) {
|
||||||
if (g_suspend_state || !rgb_matrix_config.enable || !userspace_config.rgb_layer_change) { return; }
|
if ( userspace_config.rgb_layer_change &&
|
||||||
|
#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||||
switch (biton32(layer_state)) {
|
!g_suspend_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);
|
|
||||||
}
|
|
||||||
#endif
|
#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
|
#endif //RGB_MATRIX_INIT
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
SPACE_CADET_ENABLE = no
|
||||||
ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
|
ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
RGB_MATRIX_ENABLE = no
|
RGB_MATRIX_ENABLE = no
|
||||||
endif
|
endif
|
||||||
CONSOLE_ENABLE = no
|
CONSOLE_ENABLE = no
|
||||||
BOOTMAGIC_ENABLE = yes
|
BOOTMAGIC_ENABLE = yes
|
||||||
|
|
||||||
UNICODE_ENABLE = yes
|
UNICODE_ENABLE = yes
|
||||||
UNICDOEMAP_ENABLE = no
|
UNICDOEMAP_ENABLE = no
|
||||||
|
|
||||||
MACROS_ENABLED = no
|
MACROS_ENABLED = no
|
||||||
RGBLIGHT_TWINKLE = no
|
RGBLIGHT_TWINKLE = no
|
||||||
INDICATOR_LIGHTS = no
|
INDICATOR_LIGHTS = no
|
||||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||||
|
|
||||||
DEBOUNCE_TYPE = eager_pk
|
DEBOUNCE_TYPE = eager_pk
|
||||||
|
|
|
@ -6,10 +6,21 @@
|
||||||
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Glow
|
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Glow
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_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_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
|
||||||
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
// #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 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 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
|
#endif
|
||||||
|
|
|
@ -3,18 +3,17 @@
|
||||||
// #define B6_AUDIO
|
// #define B6_AUDIO
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
|
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
|
||||||
#define RGB_DI_PIN B1
|
# define RGB_DI_PIN B1
|
||||||
#define RGBLED_NUM 16 // Number of LEDs
|
# define RGBLED_NUM 16 // Number of LEDs
|
||||||
|
|
||||||
#define RGBLIGHT_HUE_STEP 12
|
# define RGBLIGHT_HUE_STEP 12
|
||||||
#define RGBLIGHT_SAT_STEP 12
|
# define RGBLIGHT_SAT_STEP 12
|
||||||
#define RGBLIGHT_VAL_STEP 12
|
# define RGBLIGHT_VAL_STEP 12
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#if defined(KEYBOARD_primekb_prime_m)
|
#if defined(KEYBOARD_primekb_prime_m)
|
||||||
#undef PRODUCT
|
# undef PRODUCT
|
||||||
#define PRODUCT Drashna Hacked Prime_M Macro Pad
|
# define PRODUCT Drashna Hacked Prime_M Macro Pad
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,49 +2,52 @@
|
||||||
|
|
||||||
|
|
||||||
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
|
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
|
||||||
#define RGB_DI_PIN B3
|
# define RGB_DI_PIN B3
|
||||||
#define RGBLED_NUM 13 // Number of LEDs
|
# define RGBLED_NUM 13 // Number of LEDs
|
||||||
#define RGBLIGHT_ANIMATIONS
|
# define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLIGHT_HUE_STEP 12
|
# define RGBLIGHT_HUE_STEP 12
|
||||||
#define RGBLIGHT_SAT_STEP 12
|
# define RGBLIGHT_SAT_STEP 12
|
||||||
#define RGBLIGHT_VAL_STEP 12
|
# define RGBLIGHT_VAL_STEP 12
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
# define RGBLIGHT_DISABLE_KEYCODES
|
||||||
|
# endif
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_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_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
|
||||||
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
// #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 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
|
#endif
|
||||||
|
|
||||||
#if defined(KEYBOARD_lets_split_rev2)
|
#if defined(KEYBOARD_lets_split_rev2)
|
||||||
#define USE_SERIAL
|
# define USE_SERIAL
|
||||||
#undef USE_I2C
|
# undef USE_I2C
|
||||||
|
# define EE_HANDS
|
||||||
#define EE_HANDS
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(KEYBOARD_planck_light)
|
#if !defined(KEYBOARD_planck_light)
|
||||||
#ifdef RGBLIGHT_ENABLE
|
# ifdef RGBLIGHT_ENABLE
|
||||||
#define NO_MUSIC_MODE
|
# define NO_MUSIC_MODE
|
||||||
#endif // RGBLIGHT_ENABLE
|
# endif // RGBLIGHT_ENABLE
|
||||||
#endif // KEYBOARD_planck_light
|
#endif // KEYBOARD_planck_light
|
||||||
|
|
||||||
|
|
||||||
#if defined(KEYBOARD_planck)
|
#if defined(KEYBOARD_planck)
|
||||||
#undef PRODUCT
|
# undef PRODUCT
|
||||||
#if defined(KEYBOARD_planck_light)
|
# if defined(KEYBOARD_planck_light)
|
||||||
#define PRODUCT Drashna Hacked RGB Beacon (Planck Light)
|
# define PRODUCT Drashna Hacked RGB Beacon (Planck Light)
|
||||||
#elif defined(KEYBOARD_planck_rev6)
|
# elif defined(KEYBOARD_planck_rev6)
|
||||||
#define PRODUCT Drashna Hacked Planck Rev6
|
# define PRODUCT Drashna Hacked Planck Rev6
|
||||||
#elif defined(KEYBOARD_planck_EZ)
|
# elif defined(KEYBOARD_planck_EZ)
|
||||||
#define PRODUCT Drashna Hacked Planck EZ
|
# define PRODUCT Drashna Hacked Planck EZ
|
||||||
#endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -58,7 +61,7 @@
|
||||||
- MIDI notes can be sent when in Music mode is on
|
- MIDI notes can be sent when in Music mode is on
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MIDI_BASIC
|
// #define MIDI_BASIC
|
||||||
|
|
||||||
/* enable advanced MIDI features:
|
/* enable advanced MIDI features:
|
||||||
- MIDI notes can be added to the keymap
|
- MIDI notes can be added to the keymap
|
||||||
|
|
|
@ -34,6 +34,18 @@ enum planck_keycodes {
|
||||||
#define BACKLIT OSM(MOD_LSFT)
|
#define BACKLIT OSM(MOD_LSFT)
|
||||||
#endif
|
#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( \
|
#define LAYOUT_ortho_4x12_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||||
|
@ -42,8 +54,8 @@ enum planck_keycodes {
|
||||||
LAYOUT_ortho_4x12_wrapper( \
|
LAYOUT_ortho_4x12_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
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_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, \
|
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, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
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__)
|
#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) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
#ifdef BACKLIGHT_ENABLE
|
case BACKLIT:
|
||||||
case BACKLIT:
|
if (record->event.pressed) {
|
||||||
if (record->event.pressed) {
|
register_code(KC_RSFT);
|
||||||
register_code(KC_RSFT);
|
#ifdef BACKLIGHT_ENABLE
|
||||||
#ifdef BACKLIGHT_ENABLE
|
backlight_step();
|
||||||
backlight_step();
|
#endif
|
||||||
#endif
|
} else {
|
||||||
} else {
|
unregister_code(KC_RSFT);
|
||||||
unregister_code(KC_RSFT);
|
}
|
||||||
}
|
return false;
|
||||||
return false;
|
break;
|
||||||
break;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool music_mask_user(uint16_t keycode) {
|
bool music_mask_user(uint16_t keycode) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case RAISE:
|
case RAISE:
|
||||||
case LOWER:
|
case LOWER:
|
||||||
case BK_LWER:
|
case BK_LWER:
|
||||||
case SP_LWER:
|
case SP_LWER:
|
||||||
case DL_RAIS:
|
case DL_RAIS:
|
||||||
case ET_RAIS:
|
case ET_RAIS:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
|
||||||
void suspend_power_down_keymap(void) {
|
void suspend_power_down_keymap(void) {
|
||||||
rgb_matrix_set_suspend_state(true);
|
rgb_matrix_set_suspend_state(true);
|
||||||
rgb_matrix_config.enable = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void suspend_wakeup_init_keymap(void) {
|
void suspend_wakeup_init_keymap(void) {
|
||||||
rgb_matrix_config.enable = true;
|
|
||||||
rgb_matrix_set_suspend_state(false);
|
rgb_matrix_set_suspend_state(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
|
void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
|
||||||
rgb_led led;
|
rgb_led led;
|
||||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||||
led = g_rgb_leds[i];
|
led = g_rgb_leds[i];
|
||||||
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
|
||||||
rgb_matrix_set_color( i, red, green, blue );
|
rgb_matrix_set_color( i, red, green, blue );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rgb_matrix_indicators_user(void) {
|
void rgb_matrix_indicators_user(void) {
|
||||||
uint8_t this_mod = get_mods();
|
uint8_t this_mod = get_mods();
|
||||||
uint8_t this_led = host_keyboard_leds();
|
uint8_t this_led = host_keyboard_leds();
|
||||||
uint8_t this_osm = get_oneshot_mods();
|
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 ( userspace_config.rgb_layer_change &&
|
||||||
#if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
|
#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||||
(!rgblight_config.enable && rgb_matrix_config.enable)
|
!g_suspend_state &&
|
||||||
#else
|
|
||||||
rgb_matrix_config.enable
|
|
||||||
#endif
|
#endif
|
||||||
) {
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
switch (biton32(layer_state)) {
|
(!rgblight_config.enable && rgb_matrix_config.enable)
|
||||||
case _RAISE:
|
#else
|
||||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
|
rgb_matrix_config.enable
|
||||||
case _LOWER:
|
#endif
|
||||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
|
) {
|
||||||
case _ADJUST:
|
switch (biton32(layer_state)) {
|
||||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
|
case _RAISE:
|
||||||
default:
|
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
|
||||||
switch (biton32(default_layer_state)) {
|
case _LOWER:
|
||||||
case _QWERTY:
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||||
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, true); break;
|
case _ADJUST:
|
||||||
case _COLEMAK:
|
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
|
||||||
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, true); break;
|
default:
|
||||||
case _DVORAK:
|
switch (biton32(default_layer_state)) {
|
||||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, true); break;
|
case _QWERTY:
|
||||||
case _WORKMAN:
|
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
|
||||||
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, true); break;
|
case _COLEMAK:
|
||||||
case _NORMAN:
|
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
|
||||||
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D, true); break;
|
case _DVORAK:
|
||||||
case _MALTRON:
|
rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
|
||||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, true); break;
|
case _WORKMAN:
|
||||||
case _EUCALYN:
|
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
|
||||||
rgb_matrix_layer_helper(0xFF, 0x80, 0xBF, true); break;
|
case _NORMAN:
|
||||||
case _CARPLAX:
|
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
|
||||||
rgb_matrix_layer_helper(0x00, 0x00, 0xFF, true); 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)) {
|
switch (biton32(default_layer_state)) {
|
||||||
case _QWERTY:
|
case _QWERTY:
|
||||||
rgb_matrix_set_color(42, 0x00, 0xFF, 0xFF); break;
|
rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF); break;
|
||||||
case _COLEMAK:
|
case _COLEMAK:
|
||||||
rgb_matrix_set_color(42, 0xFF, 0x00, 0xFF); break;
|
rgb_matrix_set_color(is_ez ? 41 : 42, 0xFF, 0x00, 0xFF); break;
|
||||||
case _DVORAK:
|
case _DVORAK:
|
||||||
rgb_matrix_set_color(42, 0x00, 0xFF, 0x00); break;
|
rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0x00); break;
|
||||||
case _WORKMAN:
|
case _WORKMAN:
|
||||||
rgb_matrix_set_color(42, 0xD9, 0xA5, 0x21); break;
|
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)) {
|
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(24, 0x00, 0xFF, 0x00);
|
||||||
rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
|
rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
|
||||||
}
|
}
|
||||||
if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
|
if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
|
||||||
rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
|
rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
|
||||||
rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
|
rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
|
||||||
rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
|
rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
|
||||||
|
|
||||||
}
|
}
|
||||||
if ( (this_mod | this_osm) & MOD_MASK_GUI) {
|
if ( (this_mod | this_osm) & MOD_MASK_GUI) {
|
||||||
rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
|
rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
|
||||||
}
|
}
|
||||||
if ( (this_mod | this_osm) & MOD_MASK_ALT) {
|
if ( (this_mod | this_osm) & MOD_MASK_ALT) {
|
||||||
rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
|
rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_init_keymap(void) {
|
void matrix_init_keymap(void) {
|
||||||
|
@ -260,57 +276,81 @@ void matrix_init_keymap(void) {
|
||||||
#else //RGB_MATRIX_INIT
|
#else //RGB_MATRIX_INIT
|
||||||
|
|
||||||
void matrix_init_keymap(void) {
|
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);
|
setPinOutput(D5);
|
||||||
writePinHigh(D5);
|
writePinHigh(D5);
|
||||||
|
|
||||||
setPinOutput(B0);
|
setPinOutput(B0);
|
||||||
writePinHigh(B0);
|
writePinHigh(B0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif //RGB_MATRIX_INIT
|
#endif //RGB_MATRIX_INIT
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
#ifdef ENCODER_ENABLE
|
||||||
void encoder_update(bool clockwise) {
|
void encoder_update(bool clockwise) {
|
||||||
switch (biton32(layer_state)) {
|
switch (biton32(layer_state)) {
|
||||||
case _RAISE:
|
case _RAISE:
|
||||||
clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
|
clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
|
||||||
break;
|
break;
|
||||||
case _LOWER:
|
case _LOWER:
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
clockwise ? rgb_matrix_step() : rgblight_step_reverse();
|
clockwise ? rgb_matrix_step() : rgblight_step_reverse();
|
||||||
#else
|
#else
|
||||||
clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
|
clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
|
||||||
#endif
|
#endif
|
||||||
case _ADJUST:
|
break;
|
||||||
#ifdef AUDIO_CLICKY
|
case _ADJUST:
|
||||||
clockwise ? clicky_freq_up() : clicky_freq_down();
|
#ifdef AUDIO_CLICKY
|
||||||
#endif
|
clockwise ? clicky_freq_up() : clicky_freq_down();
|
||||||
break;
|
#endif
|
||||||
default:
|
break;
|
||||||
clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
|
default:
|
||||||
}
|
clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
|
||||||
#ifdef AUDIO_CLICKY
|
}
|
||||||
|
#ifdef AUDIO_CLICKY
|
||||||
clicky_play();
|
clicky_play();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif // ENCODER_ENABLE
|
#endif // ENCODER_ENABLE
|
||||||
|
|
||||||
#ifdef KEYBOARD_planck_rev6
|
#ifdef KEYBOARD_planck_rev6
|
||||||
void dip_update(uint8_t index, bool active) {
|
void dip_update(uint8_t index, bool active) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case 0:
|
||||||
if(active) { audio_on(); } else { audio_off(); }
|
if(active) { audio_on(); } else { audio_off(); }
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if(active) { clicky_on(); } else { clicky_off(); }
|
if(active) { clicky_on(); } else { clicky_off(); }
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = active;
|
keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = active;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
userspace_config.nuke_switch = active;
|
userspace_config.nuke_switch = active;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // KEYBOARD_planck_rev6
|
#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
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
TAP_DANCE_ENABLE = no
|
TAP_DANCE_ENABLE = no
|
||||||
AUDIO_ENABLE = yes
|
AUDIO_ENABLE = yes
|
||||||
|
SPACE_CADET_ENABLE = no
|
||||||
|
|
||||||
ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
|
ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
INDICATOR_LIGHTS = yes
|
INDICATOR_LIGHTS = yes
|
||||||
RGBLIGHT_TWINKLE = yes
|
RGBLIGHT_TWINKLE = yes
|
||||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||||
endif
|
endif
|
||||||
ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
|
ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
|
||||||
RGB_MATRIX_ENABLE = yes
|
RGB_MATRIX_ENABLE = yes
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
RGBLIGHT_STARTUP_ANIMATION = 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
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(PROTOCOL)), VUSB)
|
ifeq ($(strip $(PROTOCOL)), VUSB)
|
||||||
|
|
|
@ -3,20 +3,19 @@
|
||||||
|
|
||||||
/* ws2812 RGB LED */
|
/* ws2812 RGB LED */
|
||||||
#if defined(KEYBOARD_fractal)
|
#if defined(KEYBOARD_fractal)
|
||||||
#define RGB_DI_PIN D2
|
# define RGB_DI_PIN D2
|
||||||
#undef RGBLED_NUM
|
# undef RGBLED_NUM
|
||||||
#define RGBLIGHT_ANIMATIONS
|
# define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 29 // Number of LEDs
|
# define RGBLED_NUM 29 // Number of LEDs
|
||||||
#undef RGBLIGHT_HUE_STEP
|
# undef RGBLIGHT_HUE_STEP
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
# define RGBLIGHT_HUE_STEP 8
|
||||||
#undef RGBLIGHT_SAT_STEP
|
# undef RGBLIGHT_SAT_STEP
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
# define RGBLIGHT_SAT_STEP 8
|
||||||
#undef RGBLIGHT_VAL_STEP
|
# undef RGBLIGHT_VAL_STEP
|
||||||
#define RGBLIGHT_VAL_STEP 8
|
# define RGBLIGHT_VAL_STEP 8
|
||||||
#define RGBLIGHT_LIMIT_VAL 175
|
# define RGBLIGHT_LIMIT_VAL 175
|
||||||
#define RGBLIGHT_SLEEP
|
# define RGBLIGHT_SLEEP
|
||||||
|
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
|
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
|
|
||||||
|
|
||||||
|
# define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
|
||||||
|
# define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
stages:
|
stages:
|
||||||
- test
|
- test
|
||||||
- build
|
|
||||||
- deploy
|
|
||||||
|
|
||||||
Preliminary Test:
|
QMK Firmware:
|
||||||
stage: test
|
stage: test
|
||||||
variables:
|
variables:
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
|
@ -18,36 +16,7 @@ Preliminary Test:
|
||||||
script:
|
script:
|
||||||
- make test:all
|
- make test:all
|
||||||
- make planck/rev6:default planck/rev5:default
|
- make planck/rev6:default planck/rev5:default
|
||||||
|
- 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
|
||||||
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
|
|
||||||
artifacts:
|
artifacts:
|
||||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
||||||
paths:
|
paths:
|
||||||
|
|
|
@ -2,50 +2,43 @@
|
||||||
|
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
#define AUDIO_CLICKY
|
# define AUDIO_CLICKY
|
||||||
#define STARTUP_SONG SONG(RICK_ROLL)
|
# define STARTUP_SONG SONG(RICK_ROLL)
|
||||||
#define GOODBYE_SONG SONG(SONIC_RING)
|
# define GOODBYE_SONG SONG(SONIC_RING)
|
||||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
|
# define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
|
||||||
SONG(COLEMAK_SOUND), \
|
SONG(COLEMAK_SOUND), \
|
||||||
SONG(DVORAK_SOUND), \
|
SONG(DVORAK_SOUND), \
|
||||||
SONG(OVERWATCH_THEME) \
|
SONG(OVERWATCH_THEME) \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
|
# 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 UNICODE_SONG_OSX SONG(RICK_ROLL)
|
# define UNICODE_SONG_OSX SONG(RICK_ROLL)
|
||||||
#define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
# define UNICODE_SONG_LNX SONG(RICK_ROLL)
|
||||||
#define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
# define UNICODE_SONG_WIN SONG(RICK_ROLL)
|
||||||
#define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
# define UNICODE_SONG_BSD SONG(RICK_ROLL)
|
||||||
#define UNICODE_SONG_WINC SONG(RICK_ROLL)
|
# define UNICODE_SONG_WINC SONG(RICK_ROLL)
|
||||||
|
|
||||||
#endif // !AUDIO_ENABLE
|
#endif // !AUDIO_ENABLE
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#define RGBLIGHT_SLEEP
|
# define RGBLIGHT_SLEEP
|
||||||
#undef RGBLIGHT_ANIMATIONS
|
# undef RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
# define RGBLIGHT_EFFECT_BREATHING
|
||||||
#define RGBLIGHT_EFFECT_SNAKE
|
# define RGBLIGHT_EFFECT_SNAKE
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT
|
# define RGBLIGHT_EFFECT_KNIGHT
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#ifndef ONESHOT_TAP_TOGGLE
|
#ifndef ONESHOT_TAP_TOGGLE
|
||||||
#define ONESHOT_TAP_TOGGLE 2
|
# define ONESHOT_TAP_TOGGLE 2
|
||||||
#endif // !ONESHOT_TAP_TOGGLE
|
#endif // !ONESHOT_TAP_TOGGLE
|
||||||
|
|
||||||
#ifndef ONESHOT_TIMEOUT
|
#ifndef ONESHOT_TIMEOUT
|
||||||
#define ONESHOT_TIMEOUT 3000
|
# define ONESHOT_TIMEOUT 3000
|
||||||
#endif// !ONESHOT_TIMEOUT
|
#endif// !ONESHOT_TIMEOUT
|
||||||
|
|
||||||
#ifndef QMK_KEYS_PER_SCAN
|
#ifndef QMK_KEYS_PER_SCAN
|
||||||
#define QMK_KEYS_PER_SCAN 4
|
# define QMK_KEYS_PER_SCAN 4
|
||||||
#endif // !QMK_KEYS_PER_SCAN
|
#endif // !QMK_KEYS_PER_SCAN
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,24 +55,27 @@
|
||||||
#define FORCE_NKRO
|
#define FORCE_NKRO
|
||||||
|
|
||||||
#ifndef TAPPING_TOGGLE
|
#ifndef TAPPING_TOGGLE
|
||||||
#define TAPPING_TOGGLE 1
|
# define TAPPING_TOGGLE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef TAPPING_TERM
|
#ifdef TAPPING_TERM
|
||||||
#undef TAPPING_TERM
|
# undef TAPPING_TERM
|
||||||
#endif // TAPPING_TERM
|
#endif // TAPPING_TERM
|
||||||
#if defined(KEYBOARD_ergodox_ez)
|
#if defined(KEYBOARD_ergodox_ez)
|
||||||
#define TAPPING_TERM 185
|
# define TAPPING_TERM 185
|
||||||
#elif defined(KEYBOARD_crkbd)
|
#elif defined(KEYBOARD_crkbd)
|
||||||
#define TAPPING_TERM 200
|
# define TAPPING_TERM 200
|
||||||
#else
|
#else
|
||||||
#define TAPPING_TERM 175
|
# define TAPPING_TERM 175
|
||||||
#endif
|
#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
|
#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;
|
userspace_config_t userspace_config;
|
||||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||||
#define DRASHNA_UNICODE_MODE UC_WIN
|
#define DRASHNA_UNICODE_MODE UC_WIN
|
||||||
#else
|
#else
|
||||||
// set to 2 for UC_WIN, set to 4 for UC_WINC
|
// set to 2 for UC_WIN, set to 4 for UC_WINC
|
||||||
#define DRASHNA_UNICODE_MODE 2
|
#define DRASHNA_UNICODE_MODE 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// This block is for all of the gaming macros, as they were all doing
|
// This block is for all of the gaming macros, as they were all doing
|
||||||
// the same thing, but with differring text sent.
|
// the same thing, but with differring text sent.
|
||||||
bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
|
bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
|
||||||
if (!record->event.pressed || override) {
|
if (!record->event.pressed || override) {
|
||||||
uint16_t keycode;
|
uint16_t keycode;
|
||||||
if (userspace_config.is_overwatch) {
|
if (userspace_config.is_overwatch) {
|
||||||
keycode = KC_BSPC;
|
keycode = KC_BSPC;
|
||||||
} else {
|
} else {
|
||||||
keycode = KC_ENTER;
|
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();
|
if (override) wait_ms(3000);
|
||||||
tap_code(keycode);
|
return false;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
|
bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
|
||||||
static uint16_t this_timer;
|
static uint16_t this_timer;
|
||||||
if(pressed) {
|
if(pressed) {
|
||||||
this_timer= timer_read();
|
this_timer= timer_read();
|
||||||
} else {
|
} else {
|
||||||
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
||||||
tap_code(code);
|
tap_code(code);
|
||||||
} else {
|
} else {
|
||||||
register_code(mod_code);
|
register_code(mod_code);
|
||||||
tap_code(code);
|
tap_code(code);
|
||||||
unregister_code(mod_code);
|
unregister_code(mod_code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
|
bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
|
||||||
if(pressed) {
|
if(pressed) {
|
||||||
this_timer= timer_read();
|
this_timer= timer_read();
|
||||||
} else {
|
} else {
|
||||||
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
if (timer_elapsed(this_timer) < TAPPING_TERM){
|
||||||
tap_code(code);
|
tap_code(code);
|
||||||
} else {
|
} else {
|
||||||
register_code(mod_code);
|
register_code(mod_code);
|
||||||
tap_code(code);
|
tap_code(code);
|
||||||
unregister_code(mod_code);
|
unregister_code(mod_code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bootmagic_lite(void) {
|
void bootmagic_lite(void) {
|
||||||
matrix_scan();
|
matrix_scan();
|
||||||
#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
|
#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
|
||||||
wait_ms(DEBOUNCING_DELAY * 2);
|
wait_ms(DEBOUNCING_DELAY * 2);
|
||||||
#elif defined(DEBOUNCE) && DEBOUNCE > 0
|
#elif defined(DEBOUNCE) && DEBOUNCE > 0
|
||||||
wait_ms(DEBOUNCE * 2);
|
wait_ms(DEBOUNCE * 2);
|
||||||
#else
|
#else
|
||||||
wait_ms(30);
|
wait_ms(30);
|
||||||
#endif
|
#endif
|
||||||
matrix_scan();
|
matrix_scan();
|
||||||
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
|
if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
|
||||||
bootloader_jump();
|
bootloader_jump();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add reconfigurable functions here, for keymap customization
|
// 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 user matrix init, set default RGB colors and then
|
||||||
// call the keymap's init function
|
// call the keymap's init function
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
userspace_config.raw = eeconfig_read_user();
|
userspace_config.raw = eeconfig_read_user();
|
||||||
|
|
||||||
#ifdef BOOTLOADER_CATERINA
|
#ifdef BOOTLOADER_CATERINA
|
||||||
DDRD &= ~(1<<5);
|
DDRD &= ~(1<<5);
|
||||||
PORTD &= ~(1<<5);
|
PORTD &= ~(1<<5);
|
||||||
|
|
||||||
DDRB &= ~(1<<0);
|
DDRB &= ~(1<<0);
|
||||||
PORTB &= ~(1<<0);
|
PORTB &= ~(1<<0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||||
get_unicode_input_mode();
|
get_unicode_input_mode();
|
||||||
#endif //UNICODE_ENABLE
|
#endif //UNICODE_ENABLE
|
||||||
matrix_init_keymap();
|
matrix_init_keymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak))
|
__attribute__((weak))
|
||||||
|
@ -125,26 +125,26 @@ void keyboard_post_init_keymap(void){ }
|
||||||
|
|
||||||
void keyboard_post_init_user(void){
|
void keyboard_post_init_user(void){
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
keyboard_post_init_rgb();
|
keyboard_post_init_rgb();
|
||||||
#endif
|
#endif
|
||||||
keyboard_post_init_keymap();
|
keyboard_post_init_keymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
void shutdown_keymap(void) {}
|
void shutdown_keymap(void) {}
|
||||||
|
|
||||||
void shutdown_user (void) {
|
void shutdown_user (void) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
rgblight_enable_noeeprom();
|
rgblight_enable_noeeprom();
|
||||||
rgblight_mode_noeeprom(1);
|
rgblight_mode_noeeprom(1);
|
||||||
rgblight_setrgb_red();
|
rgblight_setrgb_red();
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
// uint16_t timer_start = timer_read();
|
// uint16_t timer_start = timer_read();
|
||||||
// rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
|
// rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
|
||||||
// while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
|
// while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
|
||||||
#endif //RGB_MATRIX_ENABLE
|
#endif //RGB_MATRIX_ENABLE
|
||||||
shutdown_keymap();
|
shutdown_keymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
|
@ -158,7 +158,7 @@ __attribute__ ((weak))
|
||||||
void suspend_wakeup_init_keymap(void) {}
|
void suspend_wakeup_init_keymap(void) {}
|
||||||
|
|
||||||
void suspend_wakeup_init_user(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
|
// No global matrix scan code, so just run keymap's matrix
|
||||||
// scan function
|
// scan function
|
||||||
void matrix_scan_user(void) {
|
void matrix_scan_user(void) {
|
||||||
static bool has_ran_yet;
|
static bool has_ran_yet;
|
||||||
if (!has_ran_yet) {
|
if (!has_ran_yet) {
|
||||||
has_ran_yet = true;
|
has_ran_yet = true;
|
||||||
startup_user();
|
startup_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
|
#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
|
||||||
run_diablo_macro_check();
|
run_diablo_macro_check();
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
matrix_scan_rgb();
|
matrix_scan_rgb();
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
matrix_scan_keymap();
|
matrix_scan_keymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
uint32_t layer_state_set_keymap (uint32_t state) {
|
uint32_t layer_state_set_keymap (uint32_t state) {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
// on layer change, no matter where the change was initiated
|
// on layer change, no matter where the change was initiated
|
||||||
// Then runs keymap's layer change check
|
// Then runs keymap's layer change check
|
||||||
uint32_t layer_state_set_user(uint32_t state) {
|
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
|
#ifdef RGBLIGHT_ENABLE
|
||||||
state = layer_state_set_rgb(state);
|
state = layer_state_set_rgb(state);
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
return layer_state_set_keymap (state);
|
return layer_state_set_keymap (state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
uint32_t default_layer_state_set_keymap (uint32_t state) {
|
uint32_t default_layer_state_set_keymap (uint32_t state) {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Runs state check and changes underglow color and animation
|
// Runs state check and changes underglow color and animation
|
||||||
uint32_t default_layer_state_set_user(uint32_t state) {
|
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
|
#if 0
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
state = default_layer_state_set_rgb(state);
|
state = default_layer_state_set_rgb(state);
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
#endif
|
#endif
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
|
@ -225,16 +225,16 @@ void led_set_keymap(uint8_t usb_led) {}
|
||||||
// So far, I only have keyboard specific code,
|
// So far, I only have keyboard specific code,
|
||||||
// So nothing goes here.
|
// So nothing goes here.
|
||||||
void led_set_user(uint8_t usb_led) {
|
void led_set_user(uint8_t usb_led) {
|
||||||
led_set_keymap(usb_led);
|
led_set_keymap(usb_led);
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
void eeconfig_init_keymap(void) {}
|
void eeconfig_init_keymap(void) {}
|
||||||
|
|
||||||
void eeconfig_init_user(void) {
|
void eeconfig_init_user(void) {
|
||||||
userspace_config.raw = 0;
|
userspace_config.raw = 0;
|
||||||
userspace_config.rgb_layer_change = true;
|
userspace_config.rgb_layer_change = true;
|
||||||
eeconfig_update_user(userspace_config.raw);
|
eeconfig_update_user(userspace_config.raw);
|
||||||
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
#if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
|
||||||
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
set_unicode_input_mode(DRASHNA_UNICODE_MODE);
|
||||||
get_unicode_input_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 "wrappers.h"
|
||||||
#include "process_records.h"
|
#include "process_records.h"
|
||||||
#ifdef TAP_DANCE_ENABLE
|
#ifdef TAP_DANCE_ENABLE
|
||||||
#include "tap_dances.h"
|
# include "tap_dances.h"
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||||
#include "rgb_stuff.h"
|
# include "rgb_stuff.h"
|
||||||
#endif
|
#endif
|
||||||
#if defined(AUDIO_ENABLE) && __GNUC__ > 7
|
#if defined(AUDIO_ENABLE) && __GNUC__ > 7
|
||||||
#if __has_include("drashna_song_list.h")
|
# if __has_include("drashna_song_list.h")
|
||||||
#include "drashna_song_list.h"
|
# include "drashna_song_list.h"
|
||||||
#endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Define layer names */
|
/* Define layer names */
|
||||||
enum userspace_layers {
|
enum userspace_layers {
|
||||||
_QWERTY = 0,
|
_QWERTY = 0,
|
||||||
_NUMLOCK = 0,
|
_NUMLOCK = 0,
|
||||||
_COLEMAK,
|
_COLEMAK,
|
||||||
_DVORAK,
|
_DVORAK,
|
||||||
_WORKMAN,
|
_WORKMAN,
|
||||||
_NORMAN,
|
_NORMAN,
|
||||||
_MALTRON,
|
_MALTRON,
|
||||||
_EUCALYN,
|
_EUCALYN,
|
||||||
_CARPLAX,
|
_CARPLAX,
|
||||||
_MODS, /* layer 8 */
|
_MODS, /* layer 8 */
|
||||||
_GAMEPAD,
|
_GAMEPAD,
|
||||||
_DIABLO,
|
_DIABLO,
|
||||||
_MACROS,
|
_MACROS,
|
||||||
_MEDIA,
|
_MEDIA,
|
||||||
_LOWER,
|
_LOWER,
|
||||||
_RAISE,
|
_RAISE,
|
||||||
_ADJUST,
|
_ADJUST,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -73,14 +73,14 @@ void led_set_keymap(uint8_t usb_led);
|
||||||
void eeconfig_init_keymap(void);
|
void eeconfig_init_keymap(void);
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
uint32_t raw;
|
uint32_t raw;
|
||||||
struct {
|
struct {
|
||||||
bool rgb_layer_change :1;
|
bool rgb_layer_change :1;
|
||||||
bool is_overwatch :1;
|
bool is_overwatch :1;
|
||||||
bool nuke_switch :1;
|
bool nuke_switch :1;
|
||||||
uint8_t unicode_mod :4;
|
uint8_t unicode_mod :4;
|
||||||
bool swapped_numbers :1;
|
bool swapped_numbers :1;
|
||||||
};
|
};
|
||||||
} userspace_config_t;
|
} userspace_config_t;
|
||||||
|
|
||||||
extern userspace_config_t userspace_config;
|
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
|
We use custom codes here, so we can substitute the right stuff
|
||||||
*/
|
*/
|
||||||
#ifdef TAP_DANCE_ENABLE
|
#ifdef TAP_DANCE_ENABLE
|
||||||
#define KC_D3_1 TD(TD_D3_1)
|
# define KC_D3_1 TD(TD_D3_1)
|
||||||
#define KC_D3_2 TD(TD_D3_2)
|
# define KC_D3_2 TD(TD_D3_2)
|
||||||
#define KC_D3_3 TD(TD_D3_3)
|
# define KC_D3_3 TD(TD_D3_3)
|
||||||
#define KC_D3_4 TD(TD_D3_4)
|
# define KC_D3_4 TD(TD_D3_4)
|
||||||
#else // TAP_DANCE_ENABLE
|
#else // TAP_DANCE_ENABLE
|
||||||
#define KC_D3_1 KC_1
|
# define KC_D3_1 KC_1
|
||||||
#define KC_D3_2 KC_2
|
# define KC_D3_2 KC_2
|
||||||
#define KC_D3_3 KC_3
|
# define KC_D3_3 KC_3
|
||||||
#define KC_D3_4 KC_4
|
# define KC_D3_4 KC_4
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
|
|
|
@ -4,12 +4,12 @@ uint16_t copy_paste_timer;
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
|
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
|
// 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
|
// If console is enabled, it will print the matrix position and status of each key pressed
|
||||||
#ifdef KEYLOGGER_ENABLE
|
#ifdef KEYLOGGER_ENABLE
|
||||||
#if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
|
# 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);
|
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
|
||||||
#else
|
# else
|
||||||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
|
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
|
||||||
#endif //KEYLOGGER_ENABLE
|
#endif //KEYLOGGER_ENABLE
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case KC_QWERTY ... KC_CARPLAX:
|
case KC_QWERTY ... KC_CARPLAX:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
set_single_persistent_default_layer(keycode - KC_QWERTY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
|
||||||
if (!record->event.pressed) {
|
if (!record->event.pressed) {
|
||||||
uint8_t temp_mod = get_mods();
|
uint8_t temp_mod = get_mods();
|
||||||
uint8_t temp_osm = get_oneshot_mods();
|
uint8_t temp_osm = get_oneshot_mods();
|
||||||
clear_mods(); clear_oneshot_mods();
|
clear_mods(); clear_oneshot_mods();
|
||||||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
|
||||||
#ifndef MAKE_BOOTLOADER
|
#ifndef MAKE_BOOTLOADER
|
||||||
if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
|
if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if defined(__arm__)
|
#if defined(__arm__)
|
||||||
send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
|
||||||
#elif defined(BOOTLOADER_DFU)
|
#elif defined(BOOTLOADER_DFU)
|
||||||
send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
|
||||||
#elif defined(BOOTLOADER_HALFKAY)
|
#elif defined(BOOTLOADER_HALFKAY)
|
||||||
send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
|
||||||
#elif defined(BOOTLOADER_CATERINA)
|
#elif defined(BOOTLOADER_CATERINA)
|
||||||
send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
|
||||||
#endif // bootloader options
|
#endif // bootloader options
|
||||||
}
|
}
|
||||||
if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); }
|
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);
|
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VRSN: // Prints firmware version
|
case VRSN: // Prints firmware version
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// These are a serious of gaming macros.
|
// These are a serious of gaming macros.
|
||||||
// Only enables for the viterbi, basically,
|
// Only enables for the viterbi, basically,
|
||||||
// to save on firmware space, since it's limited.
|
// to save on firmware space, since it's limited.
|
||||||
#ifdef MACROS_ENABLED
|
#ifdef MACROS_ENABLED
|
||||||
case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
|
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); }
|
if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#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
|
#endif //RGBLIGHT_ENABLE
|
||||||
break;
|
break;
|
||||||
case KC_SALT:
|
case KC_SALT:
|
||||||
return send_game_macro("Salt, salt, salt...", record, false);
|
return send_game_macro("Salt, salt, salt...", record, false);
|
||||||
case KC_MORESALT:
|
case KC_MORESALT:
|
||||||
return send_game_macro("Please sir, can I have some more salt?!", record, false);
|
return send_game_macro("Please sir, can I have some more salt?!", record, false);
|
||||||
case KC_SALTHARD:
|
case KC_SALTHARD:
|
||||||
return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
|
return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
|
||||||
case KC_GOODGAME:
|
case KC_GOODGAME:
|
||||||
return send_game_macro("Good game, everyone!", record, false);
|
return send_game_macro("Good game, everyone!", record, false);
|
||||||
case KC_GLHF:
|
case KC_GLHF:
|
||||||
return send_game_macro("Good luck, have fun!!!", record, false);
|
return send_game_macro("Good luck, have fun!!!", record, false);
|
||||||
case KC_SYMM:
|
case KC_SYMM:
|
||||||
return send_game_macro("Left click to win!", record, false);
|
return send_game_macro("Left click to win!", record, false);
|
||||||
case KC_JUSTGAME:
|
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);
|
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:
|
case KC_TORB:
|
||||||
return send_game_macro("That was positively riveting!", record, false);
|
return send_game_macro("That was positively riveting!", record, false);
|
||||||
case KC_AIM:
|
case KC_AIM:
|
||||||
send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
|
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);
|
return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false);
|
||||||
case KC_C9:
|
case KC_C9:
|
||||||
return send_game_macro("OMG!!! C9!!!", record, false);
|
return send_game_macro("OMG!!! C9!!!", record, false);
|
||||||
case KC_GGEZ:
|
case KC_GGEZ:
|
||||||
return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
|
return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
|
||||||
#endif // MACROS_ENABLED
|
#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
|
#ifdef TAP_DANCE_ENABLE
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
uint8_t dtime;
|
uint8_t dtime;
|
||||||
for (dtime = 0; dtime < 4; dtime++) {
|
for (dtime = 0; dtime < 4; dtime++) {
|
||||||
diablo_key_time[dtime] = diablo_times[0];
|
diablo_timer[dtime].key_time = diablo_times[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case KC_CCCV: // One key copy/paste
|
case KC_CCCV: // One key copy/paste
|
||||||
if(record->event.pressed){
|
if(record->event.pressed){
|
||||||
copy_paste_timer = timer_read();
|
copy_paste_timer = timer_read();
|
||||||
} else {
|
} else {
|
||||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||||
register_code(KC_LCTL);
|
register_code(KC_LCTL);
|
||||||
tap_code(KC_C);
|
tap_code(KC_C);
|
||||||
unregister_code(KC_LCTL);
|
unregister_code(KC_LCTL);
|
||||||
} else { // Tap, paste
|
} else { // Tap, paste
|
||||||
register_code(KC_LCTL);
|
register_code(KC_LCTL);
|
||||||
tap_code(KC_V);
|
tap_code(KC_V);
|
||||||
unregister_code(KC_LCTL);
|
unregister_code(KC_LCTL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#ifdef UNICODE_ENABLE
|
#ifdef UNICODE_ENABLE
|
||||||
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
case UC_TABL: // ┬─┬ノ( º _ ºノ)
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
|
send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UC_SHRG: // ¯\_(ツ)_/¯
|
case UC_SHRG: // ¯\_(ツ)_/¯
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
|
send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UC_DISA: // ಠ_ಠ
|
case UC_DISA: // ಠ_ಠ
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
send_unicode_hex_string("0CA0 005F 0CA0");
|
send_unicode_hex_string("0CA0 005F 0CA0");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return process_record_keymap(keycode, record) &&
|
return process_record_keymap(keycode, record) &&
|
||||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||||
process_record_user_rgb(keycode, record) &&
|
process_record_user_rgb(keycode, record) &&
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
process_record_secrets(keycode, record);
|
process_record_secrets(keycode, record);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,48 +2,48 @@
|
||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
|
|
||||||
#if defined(KEYMAP_SAFE_RANGE)
|
#if defined(KEYMAP_SAFE_RANGE)
|
||||||
#define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
|
# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
|
||||||
#else
|
#else
|
||||||
#define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
|
# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum userspace_custom_keycodes {
|
enum userspace_custom_keycodes {
|
||||||
VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
|
VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
|
||||||
KC_QWERTY, // Sets default layer to QWERTY
|
KC_QWERTY, // Sets default layer to QWERTY
|
||||||
KC_COLEMAK, // Sets default layer to COLEMAK
|
KC_COLEMAK, // Sets default layer to COLEMAK
|
||||||
KC_DVORAK, // Sets default layer to DVORAK
|
KC_DVORAK, // Sets default layer to DVORAK
|
||||||
KC_WORKMAN, // Sets default layer to WORKMAN
|
KC_WORKMAN, // Sets default layer to WORKMAN
|
||||||
KC_NORMAN, // Sets default layer to NORMAN
|
KC_NORMAN, // Sets default layer to NORMAN
|
||||||
KC_MALTRON, // Sets default layer to MALTRON
|
KC_MALTRON, // Sets default layer to MALTRON
|
||||||
KC_EUCALYN, // Sets default layer to EUCALYN
|
KC_EUCALYN, // Sets default layer to EUCALYN
|
||||||
KC_CARPLAX, // Sets default layer to CARPLAX
|
KC_CARPLAX, // Sets default layer to CARPLAX
|
||||||
KC_DIABLO_CLEAR, // Clears all Diablo Timers
|
KC_DIABLO_CLEAR, // Clears all Diablo Timers
|
||||||
KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
|
KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat)
|
||||||
KC_SALT, // See drashna.c for details
|
KC_SALT, // See drashna.c for details
|
||||||
KC_MORESALT,
|
KC_MORESALT,
|
||||||
KC_SALTHARD,
|
KC_SALTHARD,
|
||||||
KC_GOODGAME,
|
KC_GOODGAME,
|
||||||
KC_SYMM,
|
KC_SYMM,
|
||||||
KC_JUSTGAME,
|
KC_JUSTGAME,
|
||||||
KC_GLHF,
|
KC_GLHF,
|
||||||
KC_TORB,
|
KC_TORB,
|
||||||
KC_AIM,
|
KC_AIM,
|
||||||
KC_C9,
|
KC_C9,
|
||||||
KC_GGEZ,
|
KC_GGEZ,
|
||||||
KC_MAKE, // Run keyboard's customized make command
|
KC_MAKE, // Run keyboard's customized make command
|
||||||
KC_RGB_T, // Toggles RGB Layer Indication mode
|
KC_RGB_T, // Toggles RGB Layer Indication mode
|
||||||
KC_SECRET_1, // test1
|
KC_SECRET_1, // test1
|
||||||
KC_SECRET_2, // test2
|
KC_SECRET_2, // test2
|
||||||
KC_SECRET_3, // test3
|
KC_SECRET_3, // test3
|
||||||
KC_SECRET_4, // test4
|
KC_SECRET_4, // test4
|
||||||
KC_SECRET_5, // test5
|
KC_SECRET_5, // test5
|
||||||
KC_CCCV, // Hold to copy, tap to paste
|
KC_CCCV, // Hold to copy, tap to paste
|
||||||
KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
|
KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
|
||||||
UC_FLIP, // (ಠ痊ಠ)┻━┻
|
UC_FLIP, // (ಠ痊ಠ)┻━┻
|
||||||
UC_TABL, // ┬─┬ノ( º _ ºノ)
|
UC_TABL, // ┬─┬ノ( º _ ºノ)
|
||||||
UC_SHRG, // ¯\_(ツ)_/¯
|
UC_SHRG, // ¯\_(ツ)_/¯
|
||||||
UC_DISA, // ಠ_ಠ
|
UC_DISA, // ಠ_ಠ
|
||||||
NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes
|
NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes
|
||||||
};
|
};
|
||||||
|
|
||||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
||||||
|
|
|
@ -11,80 +11,80 @@ extern rgb_config_t rgb_matrix_config;
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
void rgblight_sethsv_default_helper(uint8_t index) {
|
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
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#ifdef INDICATOR_LIGHTS
|
#ifdef INDICATOR_LIGHTS
|
||||||
void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
|
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 (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
|
||||||
if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) ) {
|
if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) ) {
|
||||||
#ifdef SHFT_LED1
|
#ifdef SHFT_LED1
|
||||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
|
||||||
#endif // SHFT_LED1
|
#endif // SHFT_LED1
|
||||||
#ifdef SHFT_LED2
|
#ifdef SHFT_LED2
|
||||||
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
|
||||||
#endif // SHFT_LED2
|
#endif // SHFT_LED2
|
||||||
} else {
|
} else {
|
||||||
#ifdef SHFT_LED1
|
#ifdef SHFT_LED1
|
||||||
rgblight_sethsv_default_helper(SHFT_LED1);
|
rgblight_sethsv_default_helper(SHFT_LED1);
|
||||||
#endif // SHFT_LED1
|
#endif // SHFT_LED1
|
||||||
#ifdef SHFT_LED2
|
#ifdef SHFT_LED2
|
||||||
rgblight_sethsv_default_helper(SHFT_LED2);
|
rgblight_sethsv_default_helper(SHFT_LED2);
|
||||||
#endif // 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) {
|
void matrix_scan_indicator(void) {
|
||||||
if (has_initialized) {
|
if (has_initialized) {
|
||||||
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //INDICATOR_LIGHTS
|
#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_keymap(uint8_t index) { return false; }
|
||||||
|
|
||||||
bool rgblight_twinkle_is_led_used(uint8_t index) {
|
bool rgblight_twinkle_is_led_used(uint8_t index) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
#ifdef INDICATOR_LIGHTS
|
#ifdef INDICATOR_LIGHTS
|
||||||
#ifdef SHFT_LED1
|
#ifdef SHFT_LED1
|
||||||
case SHFT_LED1:
|
case SHFT_LED1:
|
||||||
return true;
|
return true;
|
||||||
#endif //SHFT_LED1
|
#endif //SHFT_LED1
|
||||||
#ifdef SHFT_LED2
|
#ifdef SHFT_LED2
|
||||||
case SHFT_LED2:
|
case SHFT_LED2:
|
||||||
return true;
|
return true;
|
||||||
#endif //SHFT_LED2
|
#endif //SHFT_LED2
|
||||||
#ifdef CTRL_LED1
|
#ifdef CTRL_LED1
|
||||||
case CTRL_LED1:
|
case CTRL_LED1:
|
||||||
return true;
|
return true;
|
||||||
#endif //CTRL_LED1
|
#endif //CTRL_LED1
|
||||||
#ifdef CTRL_LED2
|
#ifdef CTRL_LED2
|
||||||
case CTRL_LED2:
|
case CTRL_LED2:
|
||||||
return true;
|
return true;
|
||||||
#endif //CTRL_LED2
|
#endif //CTRL_LED2
|
||||||
#ifdef GUI_LED1
|
#ifdef GUI_LED1
|
||||||
case GUI_LED1:
|
case GUI_LED1:
|
||||||
return true;
|
return true;
|
||||||
#endif //GUI_LED1
|
#endif //GUI_LED1
|
||||||
#ifdef GUI_LED2
|
#ifdef GUI_LED2
|
||||||
case GUI_LED2:
|
case GUI_LED2:
|
||||||
return true;
|
return true;
|
||||||
#endif //GUI_LED2
|
#endif //GUI_LED2
|
||||||
#ifdef ALT_LED1
|
#ifdef ALT_LED1
|
||||||
case ALT_LED1:
|
case ALT_LED1:
|
||||||
return true;
|
return true;
|
||||||
#endif //ALT_LED1
|
#endif //ALT_LED1
|
||||||
#ifdef ALT_LED2
|
#ifdef ALT_LED2
|
||||||
case ALT_LED2:
|
case ALT_LED2:
|
||||||
return true;
|
return true;
|
||||||
#endif //ALT_LED2
|
#endif //ALT_LED2
|
||||||
#endif //INDICATOR_LIGHTS
|
#endif //INDICATOR_LIGHTS
|
||||||
default:
|
default:
|
||||||
return rgblight_twinkle_is_led_used_keymap(index);
|
return rgblight_twinkle_is_led_used_keymap(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
|
void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
|
||||||
bool litup = false;
|
bool litup = false;
|
||||||
for (uint8_t light_index = 0 ; light_index < RGBLED_NUM ; ++light_index ) {
|
for (uint8_t light_index = 0 ; light_index < RGBLED_NUM ; ++light_index ) {
|
||||||
if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) {
|
if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) {
|
||||||
rgblight_fadeout *light = &lights[light_index];
|
rgblight_fadeout *light = &lights[light_index];
|
||||||
litup = true;
|
litup = true;
|
||||||
|
|
||||||
if (light->life) {
|
if (light->life) {
|
||||||
light->life -= 1;
|
light->life -= 1;
|
||||||
if (biton32(layer_state) == 0) {
|
if (biton32(layer_state) == 0) {
|
||||||
sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
|
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) {
|
||||||
if (litup && biton32(layer_state) == 0) {
|
rgblight_set();
|
||||||
rgblight_set();
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_rgb_light(void) {
|
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) {
|
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)) {
|
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||||
keycode = keycode & 0xFF;
|
keycode = keycode & 0xFF;
|
||||||
}
|
}
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
#ifdef RGBLIGHT_TWINKLE
|
#ifdef RGBLIGHT_TWINKLE
|
||||||
case KC_A ... KC_SLASH:
|
case KC_A ... KC_SLASH:
|
||||||
case KC_F1 ... KC_F12:
|
case KC_F1 ... KC_F12:
|
||||||
case KC_INSERT ... KC_UP:
|
case KC_INSERT ... KC_UP:
|
||||||
case KC_KP_SLASH ... KC_KP_DOT:
|
case KC_KP_SLASH ... KC_KP_DOT:
|
||||||
case KC_F13 ... KC_F24:
|
case KC_F13 ... KC_F24:
|
||||||
case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
|
case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
|
||||||
if (record->event.pressed) { start_rgb_light(); }
|
if (record->event.pressed) { start_rgb_light(); }
|
||||||
return true; break;
|
return true; break;
|
||||||
#endif // RGBLIGHT_TWINKLE
|
#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 defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
userspace_config.rgb_layer_change ^= 1;
|
userspace_config.rgb_layer_change ^= 1;
|
||||||
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||||
eeconfig_update_user(userspace_config.raw);
|
eeconfig_update_user(userspace_config.raw);
|
||||||
if (userspace_config.rgb_layer_change) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
return false; break;
|
return false; break;
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
|
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 (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) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
userspace_config.rgb_layer_change = false;
|
userspace_config.rgb_layer_change = false;
|
||||||
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
|
||||||
eeconfig_update_user(userspace_config.raw);
|
eeconfig_update_user(userspace_config.raw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true; break;
|
return true; break;
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -248,28 +250,28 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
void keyboard_post_init_rgb(void) {
|
void keyboard_post_init_rgb(void) {
|
||||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
|
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||||
if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
|
if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
|
||||||
if (rgblight_config.enable) {
|
if (rgblight_config.enable) {
|
||||||
layer_state_set_user(layer_state);
|
layer_state_set_user(layer_state);
|
||||||
uint16_t old_hue = rgblight_config.hue;
|
uint16_t old_hue = rgblight_config.hue;
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||||
for (uint16_t i = 360; i > 0; i--) {
|
for (uint16_t i = 255; i > 0; i--) {
|
||||||
rgblight_sethsv_noeeprom( ( i + old_hue) % 360, 255, 255);
|
rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
|
||||||
matrix_scan();
|
matrix_scan();
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
layer_state_set_user(layer_state);
|
layer_state_set_user(layer_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_rgb(void) {
|
void matrix_scan_rgb(void) {
|
||||||
#ifdef RGBLIGHT_TWINKLE
|
#ifdef RGBLIGHT_TWINKLE
|
||||||
scan_rgblight_fadeout();
|
scan_rgblight_fadeout();
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#ifdef INDICATOR_LIGHTS
|
#ifdef INDICATOR_LIGHTS
|
||||||
matrix_scan_indicator();
|
matrix_scan_indicator();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -277,99 +279,60 @@ void matrix_scan_rgb(void) {
|
||||||
|
|
||||||
uint32_t layer_state_set_rgb(uint32_t state) {
|
uint32_t layer_state_set_rgb(uint32_t state) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
if (userspace_config.rgb_layer_change) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
switch (biton32(state)) {
|
switch (biton32(state)) {
|
||||||
case _MACROS:
|
case _MACROS:
|
||||||
rgblight_sethsv_noeeprom_orange();
|
rgblight_sethsv_noeeprom_orange();
|
||||||
userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
|
userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
|
||||||
break;
|
break;
|
||||||
case _MEDIA:
|
case _MEDIA:
|
||||||
rgblight_sethsv_noeeprom_chartreuse();
|
rgblight_sethsv_noeeprom_chartreuse();
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
|
||||||
break;
|
break;
|
||||||
case _GAMEPAD:
|
case _GAMEPAD:
|
||||||
rgblight_sethsv_noeeprom_orange();
|
rgblight_sethsv_noeeprom_orange();
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
|
||||||
break;
|
break;
|
||||||
case _DIABLO:
|
case _DIABLO:
|
||||||
rgblight_sethsv_noeeprom_red();
|
rgblight_sethsv_noeeprom_red();
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||||
break;
|
break;
|
||||||
case _RAISE:
|
case _RAISE:
|
||||||
rgblight_sethsv_noeeprom_yellow();
|
rgblight_sethsv_noeeprom_yellow();
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||||
break;
|
break;
|
||||||
case _LOWER:
|
case _LOWER:
|
||||||
rgblight_sethsv_noeeprom_green();
|
rgblight_sethsv_noeeprom_green();
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||||||
break;
|
break;
|
||||||
case _ADJUST:
|
case _ADJUST:
|
||||||
rgblight_sethsv_noeeprom_red();
|
rgblight_sethsv_noeeprom_red();
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
|
||||||
break;
|
break;
|
||||||
default: // for any other layers, or the default layer
|
default: // for any other layers, or the default layer
|
||||||
switch (biton32(default_layer_state)) {
|
switch (biton32(default_layer_state)) {
|
||||||
case _COLEMAK:
|
case _COLEMAK:
|
||||||
rgblight_sethsv_noeeprom_magenta(); break;
|
rgblight_sethsv_noeeprom_magenta(); break;
|
||||||
case _DVORAK:
|
case _DVORAK:
|
||||||
rgblight_sethsv_noeeprom_springgreen(); break;
|
rgblight_sethsv_noeeprom_springgreen(); break;
|
||||||
case _WORKMAN:
|
case _WORKMAN:
|
||||||
rgblight_sethsv_noeeprom_goldenrod(); break;
|
rgblight_sethsv_noeeprom_goldenrod(); break;
|
||||||
case _NORMAN:
|
case _NORMAN:
|
||||||
rgblight_sethsv_noeeprom_coral(); break;
|
rgblight_sethsv_noeeprom_coral(); break;
|
||||||
case _MALTRON:
|
case _MALTRON:
|
||||||
rgblight_sethsv_noeeprom_yellow(); break;
|
rgblight_sethsv_noeeprom_yellow(); break;
|
||||||
case _EUCALYN:
|
case _EUCALYN:
|
||||||
rgblight_sethsv_noeeprom_pink(); break;
|
rgblight_sethsv_noeeprom_pink(); break;
|
||||||
case _CARPLAX:
|
case _CARPLAX:
|
||||||
rgblight_sethsv_noeeprom_blue(); break;
|
rgblight_sethsv_noeeprom_blue(); break;
|
||||||
default:
|
default:
|
||||||
rgblight_sethsv_noeeprom_cyan(); break;
|
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
|
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;
|
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
|
#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 \
|
SRC += drashna.c \
|
||||||
process_records.c
|
process_records.c
|
||||||
|
|
||||||
|
LINK_TIME_OPTIMIZATION_ENABLE = yes
|
||||||
|
|
||||||
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
|
||||||
SRC += secrets.c
|
SRC += secrets.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||||
SRC += tap_dances.c
|
SRC += tap_dances.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),AVR)
|
|
||||||
EXTRAFLAGS += -flto
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(strip $(NO_SECRETS)), yes)
|
ifeq ($(strip $(NO_SECRETS)), yes)
|
||||||
OPT_DEFS += -DNO_SECRETS
|
OPT_DEFS += -DNO_SECRETS
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
|
||||||
SRC += rgb_stuff.c
|
SRC += rgb_stuff.c
|
||||||
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
|
||||||
OPT_DEFS += -DINDICATOR_LIGHTS
|
OPT_DEFS += -DINDICATOR_LIGHTS
|
||||||
endif
|
endif
|
||||||
ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
|
ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
|
||||||
OPT_DEFS += -DRGBLIGHT_TWINKLE
|
OPT_DEFS += -DRGBLIGHT_TWINKLE
|
||||||
endif
|
endif
|
||||||
ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
|
ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
|
||||||
OPT_DEFS += -DRGBLIGHT_NOEEPROM
|
OPT_DEFS += -DRGBLIGHT_NOEEPROM
|
||||||
endif
|
endif
|
||||||
ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
|
ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
|
||||||
OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
|
OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
|
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
||||||
SRC += rgb_stuff.c
|
SRC += rgb_stuff.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,9 +43,9 @@ ifeq ($(strip $(MACROS_ENABLED)), yes)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONSOLE_ENABLE
|
ifdef CONSOLE_ENABLE
|
||||||
ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
|
ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
|
||||||
OPT_DEFS += -DKEYLOGGER_ENABLE
|
OPT_DEFS += -DKEYLOGGER_ENABLE
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
|
ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
|
||||||
|
|
|
@ -7,65 +7,65 @@ void send_unicode_hex_string(const char* str);
|
||||||
/* use X(n) to call the */
|
/* use X(n) to call the */
|
||||||
#ifdef UNICODEMAP_ENABLE
|
#ifdef UNICODEMAP_ENABLE
|
||||||
enum unicode_name {
|
enum unicode_name {
|
||||||
THINK, // thinking face 🤔
|
THINK, // thinking face 🤔
|
||||||
GRIN, // grinning face 😊
|
GRIN, // grinning face 😊
|
||||||
SMRK, // smirk 😏
|
SMRK, // smirk 😏
|
||||||
WEARY, // good shit 😩
|
WEARY, // good shit 😩
|
||||||
UNAMU, // unamused 😒
|
UNAMU, // unamused 😒
|
||||||
|
|
||||||
SNEK, // snke 🐍
|
SNEK, // snke 🐍
|
||||||
PENGUIN, // 🐧
|
PENGUIN, // 🐧
|
||||||
DRAGON, // 🐉
|
DRAGON, // 🐉
|
||||||
MONKEY, // 🐒
|
MONKEY, // 🐒
|
||||||
CHICK, // 🐥
|
CHICK, // 🐥
|
||||||
BOAR, // 🐗
|
BOAR, // 🐗
|
||||||
|
|
||||||
OKOK, // 👌
|
OKOK, // 👌
|
||||||
EFFU, // 🖕
|
EFFU, // 🖕
|
||||||
INUP, // 👆
|
INUP, // 👆
|
||||||
THUP, // 👍
|
THUP, // 👍
|
||||||
THDN, // 👎
|
THDN, // 👎
|
||||||
|
|
||||||
BBB, // dat B 🅱
|
BBB, // dat B 🅱
|
||||||
POO, // poop 💩
|
POO, // poop 💩
|
||||||
HUNDR, // 100 💯
|
HUNDR, // 100 💯
|
||||||
EGGPL, // EGGPLANT 🍆
|
EGGPL, // EGGPLANT 🍆
|
||||||
WATER, // wet 💦
|
WATER, // wet 💦
|
||||||
TUMBLER, // 🥃
|
TUMBLER, // 🥃
|
||||||
|
|
||||||
LIT, // fire 🔥
|
LIT, // fire 🔥
|
||||||
BANG, // ‽
|
BANG, // ‽
|
||||||
IRONY, // ⸮
|
IRONY, // ⸮
|
||||||
DEGREE // °
|
DEGREE // °
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const uint32_t PROGMEM unicode_map[] = {
|
const uint32_t PROGMEM unicode_map[] = {
|
||||||
[THINK] = 0x1F914,
|
[THINK] = 0x1F914,
|
||||||
[GRIN] = 0x1F600,
|
[GRIN] = 0x1F600,
|
||||||
[BBB] = 0x1F171,
|
[BBB] = 0x1F171,
|
||||||
[POO] = 0x1F4A9,
|
[POO] = 0x1F4A9,
|
||||||
[HUNDR] = 0x1F4AF,
|
[HUNDR] = 0x1F4AF,
|
||||||
[SMRK] = 0x1F60F,
|
[SMRK] = 0x1F60F,
|
||||||
[WEARY] = 0x1F629,
|
[WEARY] = 0x1F629,
|
||||||
[EGGPL] = 0x1F346,
|
[EGGPL] = 0x1F346,
|
||||||
[WATER] = 0x1F4A6,
|
[WATER] = 0x1F4A6,
|
||||||
[LIT] = 0x1F525,
|
[LIT] = 0x1F525,
|
||||||
[UNAMU] = 0x1F612,
|
[UNAMU] = 0x1F612,
|
||||||
[SNEK] = 0x1F40D,
|
[SNEK] = 0x1F40D,
|
||||||
[PENGUIN] = 0x1F427,
|
[PENGUIN] = 0x1F427,
|
||||||
[BOAR] = 0x1F417,
|
[BOAR] = 0x1F417,
|
||||||
[MONKEY] = 0x1F412,
|
[MONKEY] = 0x1F412,
|
||||||
[CHICK] = 0x1F425,
|
[CHICK] = 0x1F425,
|
||||||
[DRAGON] = 0x1F409,
|
[DRAGON] = 0x1F409,
|
||||||
[OKOK] = 0x1F44C,
|
[OKOK] = 0x1F44C,
|
||||||
[EFFU] = 0x1F595,
|
[EFFU] = 0x1F595,
|
||||||
[INUP] = 0x1F446,
|
[INUP] = 0x1F446,
|
||||||
[THDN] = 0x1F44E,
|
[THDN] = 0x1F44E,
|
||||||
[THUP] = 0x1F44D,
|
[THUP] = 0x1F44D,
|
||||||
[TUMBLER] = 0x1F943,
|
[TUMBLER] = 0x1F943,
|
||||||
[BANG] = 0x0203D,
|
[BANG] = 0x0203D,
|
||||||
[IRONY] = 0x02E2E,
|
[IRONY] = 0x02E2E,
|
||||||
[DEGREE] = 0x000B0
|
[DEGREE] = 0x000B0
|
||||||
};
|
};
|
||||||
#endif // UNICODEMAP_ENABLE
|
#endif // UNICODEMAP_ENABLE
|
||||||
|
|
|
@ -2,63 +2,64 @@
|
||||||
|
|
||||||
|
|
||||||
//define diablo macro timer variables
|
//define diablo macro timer variables
|
||||||
uint16_t diablo_timer[4];
|
diablo_timer_t diablo_timer[4];
|
||||||
uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
|
|
||||||
uint8_t diablo_key_time[4];
|
uint8_t diablo_times[] = { 0, 0, 1, 3, 5, 10, 30 };
|
||||||
|
|
||||||
// has the correct number of seconds elapsed (as defined by diablo_times)
|
// 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.
|
// Cycle through the times for the macro, starting at 0, for disabled.
|
||||||
// Max of six values, so don't exceed
|
// 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) {
|
void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
if (state->count >= 7) {
|
int index = (int)user_data;
|
||||||
diablo_key_time[diablo_key] = diablo_times[0];
|
if (state->count >= 7) {
|
||||||
reset_tap_dance(state);
|
diablo_timer[index].key_time = diablo_times[0];
|
||||||
} else {
|
reset_tap_dance(state);
|
||||||
diablo_key_time[diablo_key] = diablo_times[state->count - 1];
|
} 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...
|
// One funtion to rule them all!!
|
||||||
void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 0); }
|
#define ACTION_TAP_DANCE_DIABLO(arg) { \
|
||||||
void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 1); }
|
.fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
|
||||||
void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 2); }
|
.user_data = (void *)arg, \
|
||||||
void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 3); }
|
}
|
||||||
|
|
||||||
//Tap Dance Definitions
|
//Tap Dance Definitions
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
// tap once to disable, and more to enable timed micros
|
// tap once to disable, and more to enable timed micros
|
||||||
[TD_D3_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
|
[TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0),
|
||||||
[TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
|
[TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1),
|
||||||
[TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
|
[TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2),
|
||||||
[TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
|
[TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sends the key press to system, but only if on the Diablo layer
|
// Sends the key press to system, but only if on the Diablo layer
|
||||||
void send_diablo_keystroke(uint8_t diablo_key) {
|
void send_diablo_keystroke(uint8_t diablo_key) {
|
||||||
if (IS_LAYER_ON(_DIABLO)) {
|
if (IS_LAYER_ON(_DIABLO)) {
|
||||||
switch (diablo_key) {
|
switch (diablo_key) {
|
||||||
case 0:
|
case 0:
|
||||||
tap_code(KC_1); break;
|
tap_code(KC_1); break;
|
||||||
case 1:
|
case 1:
|
||||||
tap_code(KC_2); break;
|
tap_code(KC_2); break;
|
||||||
case 2:
|
case 2:
|
||||||
tap_code(KC_3); break;
|
tap_code(KC_3); break;
|
||||||
case 3:
|
case 3:
|
||||||
tap_code(KC_4); break;
|
tap_code(KC_4); break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks each of the 4 timers/keys to see if enough time has elapsed
|
// 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.
|
// Runs the "send string" command if enough time has passed, and resets the timer.
|
||||||
void run_diablo_macro_check(void) {
|
void run_diablo_macro_check(void) {
|
||||||
uint8_t dtime;
|
uint8_t dtime;
|
||||||
for (dtime = 0; dtime < 4; dtime++) {
|
for (dtime = 0; dtime < 4; dtime++) {
|
||||||
if (check_dtimer(dtime) && diablo_key_time[dtime]) {
|
if (check_dtimer(dtime) && diablo_timer[dtime].key_time) {
|
||||||
diablo_timer[dtime] = timer_read();
|
diablo_timer[dtime].timer = timer_read();
|
||||||
send_diablo_keystroke(dtime);
|
send_diablo_keystroke(dtime);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,18 +2,21 @@
|
||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
|
|
||||||
//define diablo macro timer variables
|
//define diablo macro timer variables
|
||||||
extern uint16_t diablo_timer[4];
|
|
||||||
extern uint8_t diablo_times[];
|
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);
|
void run_diablo_macro_check(void);
|
||||||
|
|
||||||
#ifdef TAP_DANCE_ENABLE
|
#ifdef TAP_DANCE_ENABLE
|
||||||
enum {
|
enum {
|
||||||
TD_D3_1 = 0,
|
TD_D3_1 = 0,
|
||||||
TD_D3_2,
|
TD_D3_2,
|
||||||
TD_D3_3,
|
TD_D3_3,
|
||||||
TD_D3_4
|
TD_D3_4
|
||||||
};
|
};
|
||||||
#endif // TAP_DANCE_ENABLE
|
#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.
|
expanded before being used as arguments to the LAYOUT_xxx macro.
|
||||||
*/
|
*/
|
||||||
#if (!defined(LAYOUT) && defined(KEYMAP))
|
#if (!defined(LAYOUT) && defined(KEYMAP))
|
||||||
#define LAYOUT KEYMAP
|
# define LAYOUT KEYMAP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
|
#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_wrapper(...) LAYOUT(__VA_ARGS__)
|
||||||
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
|
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
|
||||||
#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__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
|
Blocks for each of the four major keyboard layouts
|
||||||
|
|
Loading…
Reference in a new issue