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
+ }
+ }
+}