diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h index 22827a5..86b6c22 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/config.h @@ -1,8 +1,8 @@ +#define CHORDAL_HOLD #undef RGB_MATRIX_TIMEOUT #define RGB_MATRIX_TIMEOUT 300000 #define USB_SUSPEND_WAKEUP_DELAY 0 -#define SERIAL_NUMBER "Kqb5l/MaB6VN" #define LAYER_STATE_8BIT #define RGB_MATRIX_STARTUP_SPD 60 diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c index 0e24f87..31ba9d9 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c @@ -11,50 +11,86 @@ enum custom_keycodes { +enum tap_dance_codes { + DANCE_0, + DANCE_1, + DANCE_2, + DANCE_3, + DANCE_4, + DANCE_5, +}; + +#define DUAL_FUNC_0 LT(2, KC_6) +#define DUAL_FUNC_1 LT(14, KC_E) +#define DUAL_FUNC_2 LT(13, KC_F22) +#define DUAL_FUNC_3 LT(7, KC_H) +#define DUAL_FUNC_4 LT(12, KC_0) +#define DUAL_FUNC_5 LT(11, KC_8) +#define DUAL_FUNC_6 LT(1, KC_C) +#define DUAL_FUNC_7 LT(1, KC_F8) +#define DUAL_FUNC_8 LT(3, KC_F12) +#define DUAL_FUNC_9 LT(6, KC_F1) +#define DUAL_FUNC_10 LT(5, KC_W) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_moonlander( - LSFT(KC_LEFT_ALT),KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RIGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, - KC_LEFT_ALT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(3), MEH_T(KC_TAB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, TG(2), KC_GRAVE, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, - KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLASH, KC_EQUAL, KC_UP, TG(1), - KC_LEFT_CTRL, TG(4), KC_LEFT_ALT, KC_COMMA, KC_DOT, KC_LEFT_GUI, MT(MOD_LCTL, KC_ESCAPE),KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, - MT(MOD_LGUI, KC_SPACE),KC_BSPC, KC_DELETE, MT(MOD_RALT, KC_TAB),KC_ENTER, ALL_T(KC_SPACE) + LSFT(KC_LEFT_ALT),KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_RIGHT_ALT, KC_RIGHT_ALT, KC_AMPR, KC_LPRN, KC_ASTR, KC_CIRC, KC_RPRN, KC_NO, + KC_TAB, KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, TG(5), CW_TOGG, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH, + LT(2, KC_ENTER),MT(MOD_LGUI, KC_A),MT(MOD_LALT, KC_O),MT(MOD_LCTL, KC_E),MT(MOD_LSFT, KC_U),LT(4, KC_I), TT(4), KC_GRAVE, LT(4, KC_D), MT(MOD_LSFT, KC_H),MT(MOD_LCTL, KC_T),MT(MOD_LALT, KC_N),MT(MOD_LGUI, KC_S),KC_MINUS, + KC_ESCAPE, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS, + TO(1), TG(3), KC_TRANSPARENT, KC_NO, KC_EQUAL, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_SPACE, KC_BSPC, KC_DELETE, KC_TAB, KC_ENTER, KC_SPACE ), [1] = LAYOUT_moonlander( + LSFT(KC_LEFT_ALT),LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), KC_RIGHT_ALT, KC_RIGHT_ALT, LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), KC_NO, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(5), CW_TOGG, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + LT(2, KC_ENTER),MT(MOD_LGUI, KC_A),MT(MOD_LALT, KC_S),MT(MOD_RCTL, KC_D),MT(MOD_LSFT, KC_F),LT(4, KC_G), TT(4), KC_GRAVE, LT(4, KC_H), MT(MOD_LSFT, KC_J),MT(MOD_RCTL, KC_K),MT(MOD_LALT, KC_L),MT(MOD_LGUI, KC_SCLN),KC_QUOTE, + KC_ESCAPE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLASH, KC_EQUAL, KC_MINUS, KC_TRANSPARENT, + TO(0), TG(3), KC_TRANSPARENT, KC_COMMA, KC_DOT, KC_LEFT_GUI, MT(MOD_LCTL, KC_ESCAPE),KC_LBRC, KC_RBRC, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_SPACE, KC_BSPC, KC_DELETE, KC_TAB, KC_ENTER, KC_SPACE + ), + [2] = LAYOUT_moonlander( KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_INSERT, KC_PAGE_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LPRN, KC_RPRN, KC_HOME, KC_PGDN, KC_END, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT ), - [2] = LAYOUT_moonlander( - KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_TRANSPARENT, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_TRANSPARENT, KC_TRANSPARENT, KC_DOWN, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRANSPARENT, - KC_TRANSPARENT, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRANSPARENT, - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RGB_MODE_FORWARD, RGB_TOG, KC_0, KC_0, KC_DOT, KC_EQUAL, KC_TRANSPARENT, - RGB_VAD, RGB_VAI, TOGGLE_LAYER_COLOR, RGB_SLD, RGB_HUD, RGB_HUI - ), [3] = LAYOUT_moonlander( - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_ON, KC_TRANSPARENT, DM_REC1, DM_REC2, DM_RSTP, KC_TRANSPARENT, QK_BOOT, - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_OFF, KC_TRANSPARENT, DM_PLY1, DM_PLY2, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_UP,KC_TRANSPARENT, - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN1, KC_MS_BTN2, KC_MS_JIGGLER_TOGGLE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN,KC_RIGHT_CTRL, - KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F5, DUAL_FUNC_0, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_I, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRANSPARENT, KC_GRAVE, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLASH, KC_EQUAL, KC_MINUS, KC_UP, + KC_M, KC_TRANSPARENT, KC_LEFT_ALT, KC_COMMA, KC_DOT, KC_ENTER, KC_TRANSPARENT, KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, + KC_SPACE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT ), [4] = LAYOUT_moonlander( - KC_ESCAPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_LEFT_CTRL, KC_LEFT_CTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_LEFT_SHIFT, KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_LEFT_CTRL, KC_TRANSPARENT, KC_LEFT_ALT, KC_TRANSPARENT, KC_B, KC_ENTER, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, - KC_SPACE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + KC_ESCAPE, DUAL_FUNC_1, DUAL_FUNC_2, DUAL_FUNC_3, DUAL_FUNC_4, DUAL_FUNC_5, KC_TRANSPARENT, KC_TRANSPARENT, DUAL_FUNC_6, DUAL_FUNC_7, DUAL_FUNC_8, DUAL_FUNC_9, DUAL_FUNC_10, KC_TRANSPARENT, + KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_ASTR, KC_TRANSPARENT, + KC_TRANSPARENT, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TD(DANCE_0), TD(DANCE_1), TD(DANCE_2), KC_PLUS, KC_TRANSPARENT, + KC_TRANSPARENT, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, TD(DANCE_3), TD(DANCE_4), TD(DANCE_5), KC_SLASH, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RGB_MODE_FORWARD, RGB_TOG, KC_0, KC_X, KC_DOT, KC_EQUAL, KC_TRANSPARENT, + RGB_VAD, RGB_VAI, TOGGLE_LAYER_COLOR, RGB_SLD, RGB_HUD, RGB_HUI + ), + [5] = LAYOUT_moonlander( + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_ON, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_BOOT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_OFF, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_UP,KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_WH_UP, KC_MS_WH_DOWN, KC_MS_JIGGLER_TOGGLE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN,KC_TRANSPARENT, + KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT ), }; +const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM = LAYOUT( + 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', + 'L', 'L', 'L', 'L', 'L', '*', '*', 'R', 'R', 'R', 'R', 'R', + '*', '*', '*', '*', '*', '*' +); @@ -72,15 +108,17 @@ void keyboard_post_init_user(void) { } const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = { - [0] = { {173,205,220}, {131,81,242}, {131,81,242}, {131,81,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {180,255,233}, {14,222,242}, {131,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,255,255}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} }, + [0] = { {173,205,220}, {131,81,242}, {44,233,244}, {131,81,242}, {180,255,233}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {131,81,242}, {180,255,233}, {14,222,242}, {131,81,242}, {131,81,242}, {131,81,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {131,81,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} }, - [1] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + [1] = { {173,205,220}, {131,81,242}, {44,233,244}, {131,81,242}, {220,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {205,82,242}, {180,255,233}, {14,222,242}, {131,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} }, - [2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + [2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, - [3] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {74,255,255}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {41,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,255,255}, {74,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,255,255}, {74,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {210,218,204}, {210,218,204}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + [3] = { {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {80,218,204}, {139,150,241}, {139,150,241}, {87,218,204}, {139,150,241}, {87,218,204}, {139,150,241}, {87,218,204}, {87,218,204}, {139,150,241}, {0,245,245}, {139,150,241}, {139,150,241}, {87,218,204}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {14,222,242}, {80,218,204}, {14,222,242}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {14,222,242}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {14,222,242}, {139,150,241}, {139,150,241}, {139,150,241}, {44,233,244}, {139,150,241}, {139,150,241} }, - [4] = { {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {0,0,0}, {0,245,245}, {0,245,245}, {0,245,245}, {87,218,204}, {0,0,0}, {0,0,0}, {87,218,204}, {0,0,0}, {0,245,245}, {0,0,0}, {87,218,204}, {87,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {87,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {44,233,244}, {0,0,0}, {0,0,0} }, + [4] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {43,141,235}, {80,218,204}, {156,152,231}, {0,0,0}, {14,222,242}, {43,141,235}, {80,218,204}, {156,152,231}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [5] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {180,255,233}, {180,255,233}, {74,255,255}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {210,218,204}, {210,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, }; @@ -101,9 +139,6 @@ void set_layer_color(int layer) { } bool rgb_matrix_indicators_user(void) { - if (rawhid_state.rgb_control) { - return false; - } if (!keyboard_config.disable_layer_led) { switch (biton32(layer_state)) { case 0: @@ -121,6 +156,9 @@ bool rgb_matrix_indicators_user(void) { case 4: set_layer_color(4); break; + case 5: + set_layer_color(5); + break; default: if (rgb_matrix_get_flags() == LED_FLAG_NONE) { rgb_matrix_set_color_all(0, 0, 0); @@ -136,7 +174,256 @@ bool rgb_matrix_indicators_user(void) { } +typedef struct { + bool is_press_action; + uint8_t step; +} tap; +enum { + SINGLE_TAP = 1, + SINGLE_HOLD, + DOUBLE_TAP, + DOUBLE_HOLD, + DOUBLE_SINGLE_TAP, + MORE_TAPS +}; + +static tap dance_state[6]; + +uint8_t dance_step(tap_dance_state_t *state); + +uint8_t dance_step(tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) return SINGLE_TAP; + else return SINGLE_HOLD; + } else if (state->count == 2) { + if (state->interrupted) return DOUBLE_SINGLE_TAP; + else if (state->pressed) return DOUBLE_HOLD; + else return DOUBLE_TAP; + } + return MORE_TAPS; +} + + +void on_dance_0(tap_dance_state_t *state, void *user_data); +void dance_0_finished(tap_dance_state_t *state, void *user_data); +void dance_0_reset(tap_dance_state_t *state, void *user_data); + +void on_dance_0(tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_4); + tap_code16(KC_4); + tap_code16(KC_4); + } + if(state->count > 3) { + tap_code16(KC_4); + } +} + +void dance_0_finished(tap_dance_state_t *state, void *user_data) { + dance_state[0].step = dance_step(state); + switch (dance_state[0].step) { + case SINGLE_TAP: register_code16(KC_4); break; + case DOUBLE_TAP: register_code16(KC_4); register_code16(KC_4); break; + case DOUBLE_HOLD: register_code16(LSFT(KC_D)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_4); register_code16(KC_4); + } +} + +void dance_0_reset(tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[0].step) { + case SINGLE_TAP: unregister_code16(KC_4); break; + case DOUBLE_TAP: unregister_code16(KC_4); break; + case DOUBLE_HOLD: unregister_code16(LSFT(KC_D)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_4); break; + } + dance_state[0].step = 0; +} +void on_dance_1(tap_dance_state_t *state, void *user_data); +void dance_1_finished(tap_dance_state_t *state, void *user_data); +void dance_1_reset(tap_dance_state_t *state, void *user_data); + +void on_dance_1(tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_5); + tap_code16(KC_5); + tap_code16(KC_5); + } + if(state->count > 3) { + tap_code16(KC_5); + } +} + +void dance_1_finished(tap_dance_state_t *state, void *user_data) { + dance_state[1].step = dance_step(state); + switch (dance_state[1].step) { + case SINGLE_TAP: register_code16(KC_5); break; + case DOUBLE_TAP: register_code16(KC_5); register_code16(KC_5); break; + case DOUBLE_HOLD: register_code16(LSFT(KC_E)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_5); register_code16(KC_5); + } +} + +void dance_1_reset(tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[1].step) { + case SINGLE_TAP: unregister_code16(KC_5); break; + case DOUBLE_TAP: unregister_code16(KC_5); break; + case DOUBLE_HOLD: unregister_code16(LSFT(KC_E)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_5); break; + } + dance_state[1].step = 0; +} +void on_dance_2(tap_dance_state_t *state, void *user_data); +void dance_2_finished(tap_dance_state_t *state, void *user_data); +void dance_2_reset(tap_dance_state_t *state, void *user_data); + +void on_dance_2(tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_6); + tap_code16(KC_6); + tap_code16(KC_6); + } + if(state->count > 3) { + tap_code16(KC_6); + } +} + +void dance_2_finished(tap_dance_state_t *state, void *user_data) { + dance_state[2].step = dance_step(state); + switch (dance_state[2].step) { + case SINGLE_TAP: register_code16(KC_6); break; + case DOUBLE_TAP: register_code16(KC_6); register_code16(KC_6); break; + case DOUBLE_HOLD: register_code16(LSFT(KC_F)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_6); register_code16(KC_6); + } +} + +void dance_2_reset(tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[2].step) { + case SINGLE_TAP: unregister_code16(KC_6); break; + case DOUBLE_TAP: unregister_code16(KC_6); break; + case DOUBLE_HOLD: unregister_code16(LSFT(KC_F)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_6); break; + } + dance_state[2].step = 0; +} +void on_dance_3(tap_dance_state_t *state, void *user_data); +void dance_3_finished(tap_dance_state_t *state, void *user_data); +void dance_3_reset(tap_dance_state_t *state, void *user_data); + +void on_dance_3(tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_1); + tap_code16(KC_1); + tap_code16(KC_1); + } + if(state->count > 3) { + tap_code16(KC_1); + } +} + +void dance_3_finished(tap_dance_state_t *state, void *user_data) { + dance_state[3].step = dance_step(state); + switch (dance_state[3].step) { + case SINGLE_TAP: register_code16(KC_1); break; + case DOUBLE_TAP: register_code16(KC_1); register_code16(KC_1); break; + case DOUBLE_HOLD: register_code16(LSFT(KC_A)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_1); register_code16(KC_1); + } +} + +void dance_3_reset(tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[3].step) { + case SINGLE_TAP: unregister_code16(KC_1); break; + case DOUBLE_TAP: unregister_code16(KC_1); break; + case DOUBLE_HOLD: unregister_code16(LSFT(KC_A)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_1); break; + } + dance_state[3].step = 0; +} +void on_dance_4(tap_dance_state_t *state, void *user_data); +void dance_4_finished(tap_dance_state_t *state, void *user_data); +void dance_4_reset(tap_dance_state_t *state, void *user_data); + +void on_dance_4(tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_2); + tap_code16(KC_2); + tap_code16(KC_2); + } + if(state->count > 3) { + tap_code16(KC_2); + } +} + +void dance_4_finished(tap_dance_state_t *state, void *user_data) { + dance_state[4].step = dance_step(state); + switch (dance_state[4].step) { + case SINGLE_TAP: register_code16(KC_2); break; + case DOUBLE_TAP: register_code16(KC_2); register_code16(KC_2); break; + case DOUBLE_HOLD: register_code16(LSFT(KC_B)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_2); register_code16(KC_2); + } +} + +void dance_4_reset(tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[4].step) { + case SINGLE_TAP: unregister_code16(KC_2); break; + case DOUBLE_TAP: unregister_code16(KC_2); break; + case DOUBLE_HOLD: unregister_code16(LSFT(KC_B)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_2); break; + } + dance_state[4].step = 0; +} +void on_dance_5(tap_dance_state_t *state, void *user_data); +void dance_5_finished(tap_dance_state_t *state, void *user_data); +void dance_5_reset(tap_dance_state_t *state, void *user_data); + +void on_dance_5(tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_3); + tap_code16(KC_3); + tap_code16(KC_3); + } + if(state->count > 3) { + tap_code16(KC_3); + } +} + +void dance_5_finished(tap_dance_state_t *state, void *user_data) { + dance_state[5].step = dance_step(state); + switch (dance_state[5].step) { + case SINGLE_TAP: register_code16(KC_3); break; + case DOUBLE_TAP: register_code16(KC_3); register_code16(KC_3); break; + case DOUBLE_HOLD: register_code16(LSFT(KC_C)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_3); register_code16(KC_3); + } +} + +void dance_5_reset(tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[5].step) { + case SINGLE_TAP: unregister_code16(KC_3); break; + case DOUBLE_TAP: unregister_code16(KC_3); break; + case DOUBLE_HOLD: unregister_code16(LSFT(KC_C)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_3); break; + } + dance_state[5].step = 0; +} + +tap_dance_action_t tap_dance_actions[] = { + [DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished, dance_0_reset), + [DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished, dance_1_reset), + [DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished, dance_2_reset), + [DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished, dance_3_reset), + [DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished, dance_4_reset), + [DANCE_5] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_5, dance_5_finished, dance_5_reset), +}; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { @@ -157,10 +444,172 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; - case RGB_SLD: - if (rawhid_state.rgb_control) { - return false; + case DUAL_FUNC_0: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F9); + } else { + unregister_code16(KC_F9); } + } else { + if (record->event.pressed) { + register_code16(KC_F8); + } else { + unregister_code16(KC_F8); + } + } + return false; + case DUAL_FUNC_1: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F1); + } else { + unregister_code16(KC_F1); + } + } else { + if (record->event.pressed) { + register_code16(KC_F11); + } else { + unregister_code16(KC_F11); + } + } + return false; + case DUAL_FUNC_2: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F2); + } else { + unregister_code16(KC_F2); + } + } else { + if (record->event.pressed) { + register_code16(KC_F12); + } else { + unregister_code16(KC_F12); + } + } + return false; + case DUAL_FUNC_3: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F3); + } else { + unregister_code16(KC_F3); + } + } else { + if (record->event.pressed) { + register_code16(KC_F13); + } else { + unregister_code16(KC_F13); + } + } + return false; + case DUAL_FUNC_4: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F4); + } else { + unregister_code16(KC_F4); + } + } else { + if (record->event.pressed) { + register_code16(KC_F14); + } else { + unregister_code16(KC_F14); + } + } + return false; + case DUAL_FUNC_5: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F5); + } else { + unregister_code16(KC_F5); + } + } else { + if (record->event.pressed) { + register_code16(KC_F15); + } else { + unregister_code16(KC_F15); + } + } + return false; + case DUAL_FUNC_6: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F6); + } else { + unregister_code16(KC_F6); + } + } else { + if (record->event.pressed) { + register_code16(KC_F16); + } else { + unregister_code16(KC_F16); + } + } + return false; + case DUAL_FUNC_7: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F7); + } else { + unregister_code16(KC_F7); + } + } else { + if (record->event.pressed) { + register_code16(KC_F17); + } else { + unregister_code16(KC_F17); + } + } + return false; + case DUAL_FUNC_8: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F8); + } else { + unregister_code16(KC_F8); + } + } else { + if (record->event.pressed) { + register_code16(KC_F18); + } else { + unregister_code16(KC_F18); + } + } + return false; + case DUAL_FUNC_9: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F9); + } else { + unregister_code16(KC_F9); + } + } else { + if (record->event.pressed) { + register_code16(KC_F19); + } else { + unregister_code16(KC_F19); + } + } + return false; + case DUAL_FUNC_10: + if (record->tap.count > 0) { + if (record->event.pressed) { + register_code16(KC_F10); + } else { + unregister_code16(KC_F10); + } + } else { + if (record->event.pressed) { + register_code16(KC_F20); + } else { + unregister_code16(KC_F20); + } + } + return false; + case RGB_SLD: if (record->event.pressed) { rgblight_mode(1); } diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json index 884fca9..38542d6 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json @@ -1,6 +1,5 @@ { "modules": [ - "zsa/oryx", "zsa/mousejiggler", "zsa/defaults" ] diff --git a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk index e354f0d..b3db918 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk @@ -1,7 +1,6 @@ CONSOLE_ENABLE = no COMMAND_ENABLE = no AUDIO_ENABLE = no -ORYX_ENABLE = yes -RGB_MATRIX_CUSTOM_KB = yes -DYNAMIC_MACRO_ENABLE = yes +TAP_DANCE_ENABLE = yes SPACE_CADET_ENABLE = no +CAPS_WORD_ENABLE = yes diff --git a/quickshell/.config/quickshell/Modals/Settings/SettingsContent.qml b/quickshell/.config/quickshell/Modals/Settings/SettingsContent.qml index 6ceaec2..2a0ab32 100644 --- a/quickshell/.config/quickshell/Modals/Settings/SettingsContent.qml +++ b/quickshell/.config/quickshell/Modals/Settings/SettingsContent.qml @@ -89,7 +89,7 @@ Item { id: displaysLoader anchors.fill: parent - active: root.currentIndex === 6 + active: root.currentIndex === 5 visible: active asynchronous: true @@ -102,7 +102,7 @@ Item { id: recentAppsLoader anchors.fill: parent - active: root.currentIndex === 7 + active: root.currentIndex === 6 visible: active asynchronous: true @@ -115,7 +115,7 @@ Item { id: themeColorsLoader anchors.fill: parent - active: root.currentIndex === 8 + active: root.currentIndex === 7 visible: active asynchronous: true @@ -124,19 +124,6 @@ Item { } - Loader { - id: aboutLoader - - anchors.fill: parent - active: root.currentIndex === 9 - visible: active - asynchronous: true - - sourceComponent: AboutTab { - } - - } - } } diff --git a/quickshell/.config/quickshell/Modals/Settings/SettingsSidebar.qml b/quickshell/.config/quickshell/Modals/Settings/SettingsSidebar.qml index 42cc362..126f914 100644 --- a/quickshell/.config/quickshell/Modals/Settings/SettingsSidebar.qml +++ b/quickshell/.config/quickshell/Modals/Settings/SettingsSidebar.qml @@ -32,9 +32,6 @@ Rectangle { }, { "text": "Theme & Colors", "icon": "palette" - }, { - "text": "About", - "icon": "info" }] width: 270 diff --git a/quickshell/.config/quickshell/Modules/Settings/AboutTab.qml b/quickshell/.config/quickshell/Modules/Settings/AboutTab.qml deleted file mode 100644 index feff20a..0000000 --- a/quickshell/.config/quickshell/Modules/Settings/AboutTab.qml +++ /dev/null @@ -1,535 +0,0 @@ -import QtQuick -import QtQuick.Controls -import QtQuick.Effects -import qs.Common -import qs.Services -import qs.Widgets - -Item { - id: aboutTab - - property bool isHyprland: CompositorService.isHyprland - - DankFlickable { - anchors.fill: parent - anchors.topMargin: Theme.spacingL - clip: true - contentHeight: mainColumn.height - contentWidth: width - - Column { - id: mainColumn - - width: parent.width - spacing: Theme.spacingXL - - // ASCII Art Header - StyledRect { - width: parent.width - height: asciiSection.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, - Theme.surfaceVariant.b, 0.3) - border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, - Theme.outline.b, 0.2) - border.width: 1 - - Column { - id: asciiSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Item { - width: parent.width - height: asciiText.implicitHeight - - StyledText { - id: asciiText - - text: "██████╗ █████╗ ███╗ ██╗██╗ ██╗\n██╔══██╗██╔══██╗████╗ ██║██║ ██╔╝\n██║ ██║███████║██╔██╗ ██║█████╔╝ \n██║ ██║██╔══██║██║╚██╗██║██╔═██╗ \n██████╔╝██║ ██║██║ ╚████║██║ ██╗\n╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝" - isMonospace: true - font.pixelSize: Theme.fontSizeMedium - color: Theme.primary - anchors.centerIn: parent - } - } - - StyledText { - text: "DankMaterialShell" - font.pixelSize: Theme.fontSizeXLarge - font.weight: Font.Bold - color: Theme.surfaceText - horizontalAlignment: Text.AlignHCenter - width: parent.width - } - - Item { - id: communityIcons - anchors.horizontalCenter: parent.horizontalCenter - height: 24 - width: { - if (isHyprland) { - return compositorButton.width + discordButton.width + Theme.spacingM + redditButton.width + Theme.spacingM - } else { - return compositorButton.width + matrixButton.width + 4 + discordButton.width + Theme.spacingM + redditButton.width + Theme.spacingM - } - } - - // Compositor logo (Niri or Hyprland) - Item { - id: compositorButton - width: 24 - height: 24 - anchors.verticalCenter: parent.verticalCenter - anchors.verticalCenterOffset: -2 - x: 0 - - property bool hovered: false - property string tooltipText: isHyprland ? "Hyprland Website" : "niri GitHub" - - Image { - anchors.fill: parent - source: Qt.resolvedUrl(".").toString().replace( - "file://", "").replace( - "/Modules/Settings/", - "") + (isHyprland ? "/assets/hyprland.svg" : "/assets/niri.svg") - sourceSize: Qt.size(24, 24) - smooth: true - fillMode: Image.PreserveAspectFit - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onEntered: parent.hovered = true - onExited: parent.hovered = false - onClicked: Qt.openUrlExternally( - isHyprland ? "https://hypr.land" : "https://github.com/YaLTeR/niri") - } - } - - // Matrix button (only for Niri) - Item { - id: matrixButton - width: 30 - height: 24 - x: compositorButton.x + compositorButton.width + 4 - visible: !isHyprland - - property bool hovered: false - property string tooltipText: "niri Matrix Chat" - - Image { - anchors.fill: parent - source: Qt.resolvedUrl(".").toString().replace( - "file://", "").replace( - "/Modules/Settings/", - "") + "/assets/matrix-logo-white.svg" - sourceSize: Qt.size(28, 18) - smooth: true - fillMode: Image.PreserveAspectFit - layer.enabled: true - - layer.effect: MultiEffect { - colorization: 1 - colorizationColor: Theme.surfaceText - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onEntered: parent.hovered = true - onExited: parent.hovered = false - onClicked: Qt.openUrlExternally( - "https://matrix.to/#/#niri:matrix.org") - } - } - - // Discord button - Item { - id: discordButton - width: 20 - height: 20 - x: isHyprland ? compositorButton.x + compositorButton.width + Theme.spacingM : matrixButton.x + matrixButton.width + Theme.spacingM - anchors.verticalCenter: parent.verticalCenter - - property bool hovered: false - property string tooltipText: isHyprland ? "Hyprland Discord Server" : "niri Discord Server" - - Image { - anchors.fill: parent - source: Qt.resolvedUrl(".").toString().replace( - "file://", "").replace( - "/Modules/Settings/", - "") + "/assets/discord.svg" - sourceSize: Qt.size(20, 20) - smooth: true - fillMode: Image.PreserveAspectFit - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onEntered: parent.hovered = true - onExited: parent.hovered = false - onClicked: Qt.openUrlExternally( - isHyprland ? "https://discord.com/invite/hQ9XvMUjjr" : "https://discord.gg/vT8Sfjy7sx") - } - } - - // Reddit button - Item { - id: redditButton - width: 20 - height: 20 - x: discordButton.x + discordButton.width + Theme.spacingM - anchors.verticalCenter: parent.verticalCenter - - property bool hovered: false - property string tooltipText: isHyprland ? "r/hyprland Subreddit" : "r/niri Subreddit" - - Image { - anchors.fill: parent - source: Qt.resolvedUrl(".").toString().replace( - "file://", "").replace( - "/Modules/Settings/", - "") + "/assets/reddit.svg" - sourceSize: Qt.size(20, 20) - smooth: true - fillMode: Image.PreserveAspectFit - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onEntered: parent.hovered = true - onExited: parent.hovered = false - onClicked: Qt.openUrlExternally( - isHyprland ? "https://reddit.com/r/hyprland" : "https://reddit.com/r/niri") - } - } - } - } - } - - - // Project Information - StyledRect { - width: parent.width - height: projectSection.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, - Theme.surfaceVariant.b, 0.3) - border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, - Theme.outline.b, 0.2) - border.width: 1 - - Column { - id: projectSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "info" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: "About" - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } - - StyledText { - text: `DankMaterialShell is a modern desktop inspired by MUI 3. -

The goal is to provide a high level of functionality and customization so that it can be a suitable replacement for complete desktop environments like Gnome, KDE, or Cosmic. - ` - textFormat: Text.RichText - font.pixelSize: Theme.fontSizeMedium - linkColor: Theme.primary - onLinkActivated: url => Qt.openUrlExternally(url) - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - - MouseArea { - anchors.fill: parent - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.NoButton - propagateComposedEvents: true - } - } - } - } - - // Technical Details - StyledRect { - width: parent.width - height: techSection.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, - Theme.surfaceVariant.b, 0.3) - border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, - Theme.outline.b, 0.2) - border.width: 1 - - Column { - id: techSection - - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Row { - width: parent.width - spacing: Theme.spacingM - - DankIcon { - name: "code" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: "Technical Details" - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } - - Grid { - width: parent.width - columns: 2 - columnSpacing: Theme.spacingL - rowSpacing: Theme.spacingS - - StyledText { - text: "Framework:" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: `Quickshell` - linkColor: Theme.primary - textFormat: Text.RichText - onLinkActivated: url => Qt.openUrlExternally(url) - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - - MouseArea { - anchors.fill: parent - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.NoButton - propagateComposedEvents: true - } - } - - StyledText { - text: "Language:" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: "QML (Qt Modeling Language)" - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - } - - StyledText { - text: "Compositor:" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - Row { - spacing: 4 - - StyledText { - text: `niri` - font.pixelSize: Theme.fontSizeMedium - linkColor: Theme.primary - textFormat: Text.RichText - color: Theme.surfaceVariantText - onLinkActivated: url => Qt.openUrlExternally(url) - anchors.verticalCenter: parent.verticalCenter - - MouseArea { - anchors.fill: parent - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.NoButton - propagateComposedEvents: true - } - } - - StyledText { - text: "&" - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: `hyprland` - font.pixelSize: Theme.fontSizeMedium - linkColor: Theme.primary - textFormat: Text.RichText - color: Theme.surfaceVariantText - onLinkActivated: url => Qt.openUrlExternally(url) - anchors.verticalCenter: parent.verticalCenter - - MouseArea { - anchors.fill: parent - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.NoButton - propagateComposedEvents: true - } - } - } - - StyledText { - text: "Github:" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - Row { - spacing: 4 - - StyledText { - text: `DankMaterialShell` - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - linkColor: Theme.primary - textFormat: Text.RichText - onLinkActivated: url => Qt.openUrlExternally(url) - anchors.verticalCenter: parent.verticalCenter - - MouseArea { - anchors.fill: parent - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.NoButton - propagateComposedEvents: true - } - } - - StyledText { - text: "- Support Us With a Star ⭐" - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - anchors.verticalCenter: parent.verticalCenter - } - } - - StyledText { - text: "System Monitoring:" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - Row { - spacing: 4 - - StyledText { - text: `dgop` - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - linkColor: Theme.primary - textFormat: Text.RichText - onLinkActivated: url => Qt.openUrlExternally(url) - anchors.verticalCenter: parent.verticalCenter - - MouseArea { - anchors.fill: parent - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.NoButton - propagateComposedEvents: true - } - } - - StyledText { - text: "- Stateless System Monitoring" - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - anchors.verticalCenter: parent.verticalCenter - } - } - } - } - } - - } - } - - // Community tooltip - positioned absolutely above everything - Rectangle { - id: communityTooltip - parent: aboutTab - z: 1000 - - property var hoveredButton: { - if (compositorButton.hovered) return compositorButton - if (matrixButton.visible && matrixButton.hovered) return matrixButton - if (discordButton.hovered) return discordButton - if (redditButton.hovered) return redditButton - return null - } - - property string tooltipText: hoveredButton ? hoveredButton.tooltipText : "" - - visible: hoveredButton !== null && tooltipText !== "" - width: tooltipLabel.implicitWidth + 24 - height: tooltipLabel.implicitHeight + 12 - - color: Theme.surfaceContainer - radius: Theme.cornerRadius - border.width: 1 - border.color: Theme.outlineMedium - - x: hoveredButton ? hoveredButton.mapToItem(aboutTab, hoveredButton.width / 2, 0).x - width / 2 : 0 - y: hoveredButton ? communityIcons.mapToItem(aboutTab, 0, 0).y - height - 8 : 0 - - layer.enabled: true - layer.effect: MultiEffect { - shadowEnabled: true - shadowOpacity: 0.15 - shadowVerticalOffset: 2 - shadowBlur: 0.5 - } - - StyledText { - id: tooltipLabel - anchors.centerIn: parent - text: communityTooltip.tooltipText - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceText - } - } -}