diff options
Diffstat (limited to 'keyboards/orthodox/keymaps/drashna/keymap.c')
-rw-r--r-- | keyboards/orthodox/keymaps/drashna/keymap.c | 236 |
1 files changed, 128 insertions, 108 deletions
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c index a15fa6f753..de7d4e1080 100644 --- a/keyboards/orthodox/keymaps/drashna/keymap.c +++ b/keyboards/orthodox/keymaps/drashna/keymap.c @@ -45,6 +45,7 @@ enum custom_keycodes { LOWER, RAISE, ADJUST, + KC_MAKE }; // Fillers to make layering more clear @@ -52,21 +53,17 @@ enum custom_keycodes { #define XXXXXXX KC_NO #ifdef RGBLIGHT_ENABLE -//define layer change stuff for underglow indicator -#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); -#define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); -#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); -#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); -#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); -#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); -#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); -#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); - -//This is both for underglow, and Diablo 3 macros -bool has_layer_changed = true; -static uint8_t current_layer = 10; +#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); +#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); +#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); +#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); +#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); +#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); +#define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); +#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); #endif + #ifdef TAP_DANCE_ENABLE enum { TD_FLSH = 0, @@ -84,8 +81,8 @@ void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif - reset_keyboard(); reset_tap_dance(state); + reset_keyboard(); } } @@ -137,9 +134,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + KC_MAKE, RESET, TD(TD_FLSH), _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, XXXXXXX, _______, _______, XXXXXXX, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \ ) @@ -149,6 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_workman[][2] = SONG(PLOVER_SONG); #endif void persistent_default_layer_set(uint16_t default_layer) { @@ -159,23 +157,23 @@ void persistent_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: - if (record->event.pressed) { + if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); + PLAY_SONG(tone_qwerty); #endif - persistent_default_layer_set(1UL<<_QWERTY); - } - return false; - break; + persistent_default_layer_set(1UL<<_QWERTY); + } + return false; + break; case COLEMAK: - if (record->event.pressed) { + if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); + PLAY_SONG(tone_colemak); #endif - persistent_default_layer_set(1UL<<_COLEMAK); - } - return false; - break; + persistent_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -188,102 +186,124 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case WORKMAN: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); + PLAY_SONG(tone_workman); #endif persistent_default_layer_set(1UL << _WORKMAN); } return false; break; case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + case KC_MAKE: + if (!record->event.pressed) { +#ifdef RGBLIGHT_ENABLE + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); +#else + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no"SS_TAP(X_ENTER)); +#endif + } + return false; + break; + } return true; } -#ifdef RGBLIGHT_ENABLE +void matrix_init_user(void) { // Runs boot tasks for keyboard +#ifdef RGBLIGHT_ENABLE + uint8_t default_layer = eeconfig_read_default_layer(); + rgblight_enable(); + if (default_layer & (1UL << _COLEMAK)) { + rgblight_set_magenta; +} + else if (default_layer & (1UL << _DVORAK)) { + rgblight_set_green; + } + else if (default_layer & (1UL << _WORKMAN)) { + rgblight_set_purple; + } + else { + rgblight_set_teal; + } +#endif +}; void matrix_scan_user(void) { // runs frequently to update info - uint8_t layer = biton32(layer_state); - if (layer != current_layer) { - has_layer_changed = true; - current_layer = layer; - } - // Check layer, and apply color if its changed since last check - if (has_layer_changed) { - uint8_t default_layer = 0; - default_layer = eeconfig_read_default_layer(); - - switch (layer) { - case _QWERTY: - if (default_layer & (1UL << _COLEMAK)) { - rgblight_set_magenta; - } - else if (default_layer & (1UL << _DVORAK)) { - rgblight_set_green; - } - else if (default_layer & (1UL << _WORKMAN)) { - rgblight_set_purple; - } - else { - rgblight_set_teal; - } - rgblight_mode(1); - break; - case _COLEMAK: - rgblight_set_magenta; - rgblight_mode(1); - break; - case _DVORAK: - rgblight_set_green; - rgblight_mode(1); - break; - case _RAISE: - rgblight_set_blue; - rgblight_mode(2); - break; - case _LOWER: - rgblight_set_orange; - rgblight_mode(3); - break; - case _ADJUST: - rgblight_set_red; - rgblight_mode(17); - break; - case 6: - rgblight_set_urine; - break; +}; + +uint32_t layer_state_set_kb(uint32_t state) { // runs on layer switch +#ifdef RGBLIGHT_ENABLE + uint8_t default_layer = eeconfig_read_default_layer(); + + switch (biton32(state)) { + case _COLEMAK: + rgblight_set_magenta; + rgblight_mode(1); + break; + case _DVORAK: + rgblight_set_green; + rgblight_mode(1); + break; + case _RAISE: + rgblight_set_yellow; + rgblight_mode(5); + break; + case _LOWER: + rgblight_set_orange; + rgblight_mode(5); + break; + case _ADJUST: + rgblight_set_red; + rgblight_mode(23); + break; + case 6: + rgblight_set_blue; + break; + case _QWERTY: + if (default_layer & (1UL << _COLEMAK)) { + rgblight_set_magenta; + } + else if (default_layer & (1UL << _DVORAK)) { + rgblight_set_green; } - has_layer_changed = false; + else if (default_layer & (1UL << _WORKMAN)) { + rgblight_set_purple; + } + else { + rgblight_set_teal; + } + rgblight_mode(1); + break; } - - }; -#endif
\ No newline at end of file +#endif + return state; +} |