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 86b6c22..22827a5 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 31ba9d9..0e24f87 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.c @@ -11,86 +11,50 @@ 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_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 + 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) ), [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_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_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_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 ), - [3] = LAYOUT_moonlander( - 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, 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, + [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 ), - [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, + [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_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 + 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 + ), + [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 ), }; -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', - '*', '*', '*', '*', '*', '*' -); @@ -108,17 +72,15 @@ void keyboard_post_init_user(void) { } const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = { - [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} }, + [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} }, - [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} }, + [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} }, - [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} }, + [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} }, - [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} }, + [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} }, - [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} }, + [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} }, }; @@ -139,6 +101,9 @@ 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: @@ -156,9 +121,6 @@ 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); @@ -174,256 +136,7 @@ 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) { @@ -444,172 +157,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; - 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 (rawhid_state.rgb_control) { + return false; + } 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 38542d6..884fca9 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/keymap.json @@ -1,5 +1,6 @@ { "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 b3db918..e354f0d 100644 --- a/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk +++ b/moonlander/qmk_firmware/keyboards/zsa/moonlander/keymaps/main/rules.mk @@ -1,6 +1,7 @@ CONSOLE_ENABLE = no COMMAND_ENABLE = no AUDIO_ENABLE = no -TAP_DANCE_ENABLE = yes +ORYX_ENABLE = yes +RGB_MATRIX_CUSTOM_KB = yes +DYNAMIC_MACRO_ENABLE = yes SPACE_CADET_ENABLE = no -CAPS_WORD_ENABLE = yes diff --git a/niri/.config/niri/config.kdl b/niri/.config/niri/config.kdl index 48ec161..0e85fc8 100644 --- a/niri/.config/niri/config.kdl +++ b/niri/.config/niri/config.kdl @@ -14,7 +14,6 @@ input { // For example: layout "eu,ru" - //variant "dvorak,," options "grp:lctrl_toggle, ctrl:nocaps" // If this section is empty, niri will fetch xkb settings @@ -345,14 +344,6 @@ window-rule { // This app-id regular expression will work for both: // - host Firefox (app-id is "firefox") // - Flatpak Firefox (app-id is "org.mozilla.firefox") - match app-id="com.gabm.satty" - open-floating true - open-focused true - min-width 700 - min-height 400 -} - -window-rule { match app-id=r#"librewolf$"# title="^Picture-in-Picture$" open-floating true } @@ -619,8 +610,9 @@ binds { // Mod+Space { switch-layout "next"; } // Mod+Shift+Space { switch-layout "prev"; } - Print { spawn "screenshot-annotate.sh"; } - Mod+Shift+S { spawn "screenshot-annotate.sh"; } + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } // Applications such as remote-desktop clients and software KVM switches may // request that niri stops processing the keyboard shortcuts defined here diff --git a/niri/bin/screenshot-annotate.sh b/niri/bin/screenshot-annotate.sh deleted file mode 100755 index 9b81711..0000000 --- a/niri/bin/screenshot-annotate.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -grim -g "$(slurp -w 0)" -t ppm - | satty --early-exit --copy-command 'wl-copy' --filename='-' -o '~/Pictures/Screenshots/Screenshot-%Y-%m-%d_%H:%M:%S.png' --initial-tool brush diff --git a/quickshell/.config/quickshell/Modals/Settings/SettingsContent.qml b/quickshell/.config/quickshell/Modals/Settings/SettingsContent.qml index 2a0ab32..6ceaec2 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 === 5 + active: root.currentIndex === 6 visible: active asynchronous: true @@ -102,7 +102,7 @@ Item { id: recentAppsLoader anchors.fill: parent - active: root.currentIndex === 6 + active: root.currentIndex === 7 visible: active asynchronous: true @@ -115,7 +115,7 @@ Item { id: themeColorsLoader anchors.fill: parent - active: root.currentIndex === 7 + active: root.currentIndex === 8 visible: active asynchronous: true @@ -124,6 +124,19 @@ 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 126f914..42cc362 100644 --- a/quickshell/.config/quickshell/Modals/Settings/SettingsSidebar.qml +++ b/quickshell/.config/quickshell/Modals/Settings/SettingsSidebar.qml @@ -32,6 +32,9 @@ 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 new file mode 100644 index 0000000..feff20a --- /dev/null +++ b/quickshell/.config/quickshell/Modules/Settings/AboutTab.qml @@ -0,0 +1,535 @@ +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 + } + } +}