summaryrefslogtreecommitdiff
path: root/keyboards/orthodox/keymaps/drashna/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/orthodox/keymaps/drashna/keymap.c')
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c236
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;
+}