Compare commits
2 commits
8a5517352c
...
13da32970b
| Author | SHA1 | Date | |
|---|---|---|---|
| 13da32970b | |||
| 7b9a972e97 |
9 changed files with 506 additions and 600 deletions
|
|
@ -1,8 +1,8 @@
|
||||||
|
#define CHORDAL_HOLD
|
||||||
#undef RGB_MATRIX_TIMEOUT
|
#undef RGB_MATRIX_TIMEOUT
|
||||||
#define RGB_MATRIX_TIMEOUT 300000
|
#define RGB_MATRIX_TIMEOUT 300000
|
||||||
|
|
||||||
#define USB_SUSPEND_WAKEUP_DELAY 0
|
#define USB_SUSPEND_WAKEUP_DELAY 0
|
||||||
#define SERIAL_NUMBER "Kqb5l/MaB6VN"
|
|
||||||
#define LAYER_STATE_8BIT
|
#define LAYER_STATE_8BIT
|
||||||
|
|
||||||
#define RGB_MATRIX_STARTUP_SPD 60
|
#define RGB_MATRIX_STARTUP_SPD 60
|
||||||
|
|
|
||||||
|
|
@ -11,50 +11,86 @@ enum custom_keycodes {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
enum tap_dance_codes {
|
||||||
|
DANCE_0,
|
||||||
|
DANCE_1,
|
||||||
|
DANCE_2,
|
||||||
|
DANCE_3,
|
||||||
|
DANCE_4,
|
||||||
|
DANCE_5,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define DUAL_FUNC_0 LT(2, KC_6)
|
||||||
|
#define DUAL_FUNC_1 LT(14, KC_E)
|
||||||
|
#define DUAL_FUNC_2 LT(13, KC_F22)
|
||||||
|
#define DUAL_FUNC_3 LT(7, KC_H)
|
||||||
|
#define DUAL_FUNC_4 LT(12, KC_0)
|
||||||
|
#define DUAL_FUNC_5 LT(11, KC_8)
|
||||||
|
#define DUAL_FUNC_6 LT(1, KC_C)
|
||||||
|
#define DUAL_FUNC_7 LT(1, KC_F8)
|
||||||
|
#define DUAL_FUNC_8 LT(3, KC_F12)
|
||||||
|
#define DUAL_FUNC_9 LT(6, KC_F1)
|
||||||
|
#define DUAL_FUNC_10 LT(5, KC_W)
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[0] = LAYOUT_moonlander(
|
[0] = LAYOUT_moonlander(
|
||||||
LSFT(KC_LEFT_ALT),KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RIGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
|
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_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_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,
|
||||||
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,
|
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_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_ESCAPE, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS,
|
||||||
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,
|
TO(1), TG(3), KC_TRANSPARENT, KC_NO, KC_EQUAL, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||||
MT(MOD_LGUI, KC_SPACE),KC_BSPC, KC_DELETE, MT(MOD_RALT, KC_TAB),KC_ENTER, ALL_T(KC_SPACE)
|
KC_SPACE, KC_BSPC, KC_DELETE, KC_TAB, KC_ENTER, KC_SPACE
|
||||||
),
|
),
|
||||||
[1] = LAYOUT_moonlander(
|
[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_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||||
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT,
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT,
|
||||||
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_INSERT, KC_PAGE_UP, KC_TRANSPARENT,
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_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, KC_TRANSPARENT, KC_LPRN, KC_RPRN, KC_HOME, KC_PGDN, KC_END,
|
||||||
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
||||||
),
|
),
|
||||||
[2] = LAYOUT_moonlander(
|
|
||||||
KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
|
||||||
KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
|
||||||
KC_TRANSPARENT, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_TRANSPARENT, KC_TRANSPARENT, KC_DOWN, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRANSPARENT,
|
|
||||||
KC_TRANSPARENT, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRANSPARENT,
|
|
||||||
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RGB_MODE_FORWARD, RGB_TOG, KC_0, KC_0, KC_DOT, KC_EQUAL, KC_TRANSPARENT,
|
|
||||||
RGB_VAD, RGB_VAI, TOGGLE_LAYER_COLOR, RGB_SLD, RGB_HUD, RGB_HUI
|
|
||||||
),
|
|
||||||
[3] = LAYOUT_moonlander(
|
[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_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_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_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_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_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_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_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_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_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_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
KC_SPACE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
||||||
),
|
),
|
||||||
[4] = LAYOUT_moonlander(
|
[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_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_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_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_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_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_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_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_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_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RGB_MODE_FORWARD, RGB_TOG, KC_0, KC_X, KC_DOT, KC_EQUAL, KC_TRANSPARENT,
|
||||||
KC_SPACE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
RGB_VAD, RGB_VAI, TOGGLE_LAYER_COLOR, RGB_SLD, RGB_HUD, RGB_HUI
|
||||||
|
),
|
||||||
|
[5] = LAYOUT_moonlander(
|
||||||
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_ON, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_BOOT,
|
||||||
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, QK_MUSIC_OFF, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||||
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
|
||||||
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_VOL_UP,KC_TRANSPARENT,
|
||||||
|
KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_WH_UP, KC_MS_WH_DOWN, KC_MS_JIGGLER_TOGGLE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN,KC_TRANSPARENT,
|
||||||
|
KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM = LAYOUT(
|
||||||
|
'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||||
|
'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||||
|
'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||||
|
'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||||
|
'L', 'L', 'L', 'L', 'L', '*', '*', 'R', 'R', 'R', 'R', 'R',
|
||||||
|
'*', '*', '*', '*', '*', '*'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -72,15 +108,17 @@ void keyboard_post_init_user(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = {
|
const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = {
|
||||||
[0] = { {173,205,220}, {131,81,242}, {131,81,242}, {131,81,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {180,255,233}, {14,222,242}, {131,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,255,255}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} },
|
[0] = { {173,205,220}, {131,81,242}, {44,233,244}, {131,81,242}, {180,255,233}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {131,81,242}, {180,255,233}, {14,222,242}, {131,81,242}, {131,81,242}, {131,81,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {131,81,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} },
|
||||||
|
|
||||||
[1] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
|
[1] = { {173,205,220}, {131,81,242}, {44,233,244}, {131,81,242}, {220,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {87,218,204}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {205,82,242}, {180,255,233}, {14,222,242}, {131,81,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {205,82,242}, {205,82,242}, {205,82,242}, {14,222,242}, {205,82,242}, {205,82,242}, {131,81,242}, {205,82,242}, {131,81,242}, {44,233,244}, {131,81,242}, {131,81,242} },
|
||||||
|
|
||||||
[2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
|
[2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
|
||||||
|
|
||||||
[3] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {74,255,255}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {41,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,255,255}, {74,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,255,255}, {74,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {210,218,204}, {210,218,204}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
|
[3] = { {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {80,218,204}, {139,150,241}, {139,150,241}, {87,218,204}, {139,150,241}, {87,218,204}, {139,150,241}, {87,218,204}, {87,218,204}, {139,150,241}, {0,245,245}, {139,150,241}, {139,150,241}, {87,218,204}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {14,222,242}, {80,218,204}, {14,222,242}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {14,222,242}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {139,150,241}, {14,222,242}, {139,150,241}, {139,150,241}, {139,150,241}, {44,233,244}, {139,150,241}, {139,150,241} },
|
||||||
|
|
||||||
[4] = { {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {0,245,245}, {0,0,0}, {0,245,245}, {0,245,245}, {0,245,245}, {87,218,204}, {0,0,0}, {0,0,0}, {87,218,204}, {0,0,0}, {0,245,245}, {0,0,0}, {87,218,204}, {87,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {87,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {44,233,244}, {0,0,0}, {0,0,0} },
|
[4] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {43,141,235}, {80,218,204}, {156,152,231}, {0,0,0}, {14,222,242}, {43,141,235}, {80,218,204}, {156,152,231}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {205,255,255}, {205,255,255}, {205,255,255}, {205,255,255}, {14,222,242}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
|
||||||
|
|
||||||
|
[5] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {180,255,233}, {180,255,233}, {180,255,233}, {74,255,255}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {180,255,233}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {210,218,204}, {210,218,204}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -101,9 +139,6 @@ void set_layer_color(int layer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool rgb_matrix_indicators_user(void) {
|
bool rgb_matrix_indicators_user(void) {
|
||||||
if (rawhid_state.rgb_control) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!keyboard_config.disable_layer_led) {
|
if (!keyboard_config.disable_layer_led) {
|
||||||
switch (biton32(layer_state)) {
|
switch (biton32(layer_state)) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
@ -121,6 +156,9 @@ bool rgb_matrix_indicators_user(void) {
|
||||||
case 4:
|
case 4:
|
||||||
set_layer_color(4);
|
set_layer_color(4);
|
||||||
break;
|
break;
|
||||||
|
case 5:
|
||||||
|
set_layer_color(5);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (rgb_matrix_get_flags() == LED_FLAG_NONE) {
|
if (rgb_matrix_get_flags() == LED_FLAG_NONE) {
|
||||||
rgb_matrix_set_color_all(0, 0, 0);
|
rgb_matrix_set_color_all(0, 0, 0);
|
||||||
|
|
@ -136,7 +174,256 @@ bool rgb_matrix_indicators_user(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
bool is_press_action;
|
||||||
|
uint8_t step;
|
||||||
|
} tap;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
SINGLE_TAP = 1,
|
||||||
|
SINGLE_HOLD,
|
||||||
|
DOUBLE_TAP,
|
||||||
|
DOUBLE_HOLD,
|
||||||
|
DOUBLE_SINGLE_TAP,
|
||||||
|
MORE_TAPS
|
||||||
|
};
|
||||||
|
|
||||||
|
static tap dance_state[6];
|
||||||
|
|
||||||
|
uint8_t dance_step(tap_dance_state_t *state);
|
||||||
|
|
||||||
|
uint8_t dance_step(tap_dance_state_t *state) {
|
||||||
|
if (state->count == 1) {
|
||||||
|
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
||||||
|
else return SINGLE_HOLD;
|
||||||
|
} else if (state->count == 2) {
|
||||||
|
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
||||||
|
else if (state->pressed) return DOUBLE_HOLD;
|
||||||
|
else return DOUBLE_TAP;
|
||||||
|
}
|
||||||
|
return MORE_TAPS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void on_dance_0(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_0_finished(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_0_reset(tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
void on_dance_0(tap_dance_state_t *state, void *user_data) {
|
||||||
|
if(state->count == 3) {
|
||||||
|
tap_code16(KC_4);
|
||||||
|
tap_code16(KC_4);
|
||||||
|
tap_code16(KC_4);
|
||||||
|
}
|
||||||
|
if(state->count > 3) {
|
||||||
|
tap_code16(KC_4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_0_finished(tap_dance_state_t *state, void *user_data) {
|
||||||
|
dance_state[0].step = dance_step(state);
|
||||||
|
switch (dance_state[0].step) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_4); break;
|
||||||
|
case DOUBLE_TAP: register_code16(KC_4); register_code16(KC_4); break;
|
||||||
|
case DOUBLE_HOLD: register_code16(LSFT(KC_D)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: tap_code16(KC_4); register_code16(KC_4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_0_reset(tap_dance_state_t *state, void *user_data) {
|
||||||
|
wait_ms(10);
|
||||||
|
switch (dance_state[0].step) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_4); break;
|
||||||
|
case DOUBLE_TAP: unregister_code16(KC_4); break;
|
||||||
|
case DOUBLE_HOLD: unregister_code16(LSFT(KC_D)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: unregister_code16(KC_4); break;
|
||||||
|
}
|
||||||
|
dance_state[0].step = 0;
|
||||||
|
}
|
||||||
|
void on_dance_1(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_1_finished(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_1_reset(tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
void on_dance_1(tap_dance_state_t *state, void *user_data) {
|
||||||
|
if(state->count == 3) {
|
||||||
|
tap_code16(KC_5);
|
||||||
|
tap_code16(KC_5);
|
||||||
|
tap_code16(KC_5);
|
||||||
|
}
|
||||||
|
if(state->count > 3) {
|
||||||
|
tap_code16(KC_5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_1_finished(tap_dance_state_t *state, void *user_data) {
|
||||||
|
dance_state[1].step = dance_step(state);
|
||||||
|
switch (dance_state[1].step) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_5); break;
|
||||||
|
case DOUBLE_TAP: register_code16(KC_5); register_code16(KC_5); break;
|
||||||
|
case DOUBLE_HOLD: register_code16(LSFT(KC_E)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: tap_code16(KC_5); register_code16(KC_5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_1_reset(tap_dance_state_t *state, void *user_data) {
|
||||||
|
wait_ms(10);
|
||||||
|
switch (dance_state[1].step) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_5); break;
|
||||||
|
case DOUBLE_TAP: unregister_code16(KC_5); break;
|
||||||
|
case DOUBLE_HOLD: unregister_code16(LSFT(KC_E)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: unregister_code16(KC_5); break;
|
||||||
|
}
|
||||||
|
dance_state[1].step = 0;
|
||||||
|
}
|
||||||
|
void on_dance_2(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_2_finished(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_2_reset(tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
void on_dance_2(tap_dance_state_t *state, void *user_data) {
|
||||||
|
if(state->count == 3) {
|
||||||
|
tap_code16(KC_6);
|
||||||
|
tap_code16(KC_6);
|
||||||
|
tap_code16(KC_6);
|
||||||
|
}
|
||||||
|
if(state->count > 3) {
|
||||||
|
tap_code16(KC_6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_2_finished(tap_dance_state_t *state, void *user_data) {
|
||||||
|
dance_state[2].step = dance_step(state);
|
||||||
|
switch (dance_state[2].step) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_6); break;
|
||||||
|
case DOUBLE_TAP: register_code16(KC_6); register_code16(KC_6); break;
|
||||||
|
case DOUBLE_HOLD: register_code16(LSFT(KC_F)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: tap_code16(KC_6); register_code16(KC_6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_2_reset(tap_dance_state_t *state, void *user_data) {
|
||||||
|
wait_ms(10);
|
||||||
|
switch (dance_state[2].step) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_6); break;
|
||||||
|
case DOUBLE_TAP: unregister_code16(KC_6); break;
|
||||||
|
case DOUBLE_HOLD: unregister_code16(LSFT(KC_F)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: unregister_code16(KC_6); break;
|
||||||
|
}
|
||||||
|
dance_state[2].step = 0;
|
||||||
|
}
|
||||||
|
void on_dance_3(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_3_finished(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_3_reset(tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
void on_dance_3(tap_dance_state_t *state, void *user_data) {
|
||||||
|
if(state->count == 3) {
|
||||||
|
tap_code16(KC_1);
|
||||||
|
tap_code16(KC_1);
|
||||||
|
tap_code16(KC_1);
|
||||||
|
}
|
||||||
|
if(state->count > 3) {
|
||||||
|
tap_code16(KC_1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_3_finished(tap_dance_state_t *state, void *user_data) {
|
||||||
|
dance_state[3].step = dance_step(state);
|
||||||
|
switch (dance_state[3].step) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_1); break;
|
||||||
|
case DOUBLE_TAP: register_code16(KC_1); register_code16(KC_1); break;
|
||||||
|
case DOUBLE_HOLD: register_code16(LSFT(KC_A)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: tap_code16(KC_1); register_code16(KC_1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_3_reset(tap_dance_state_t *state, void *user_data) {
|
||||||
|
wait_ms(10);
|
||||||
|
switch (dance_state[3].step) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_1); break;
|
||||||
|
case DOUBLE_TAP: unregister_code16(KC_1); break;
|
||||||
|
case DOUBLE_HOLD: unregister_code16(LSFT(KC_A)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: unregister_code16(KC_1); break;
|
||||||
|
}
|
||||||
|
dance_state[3].step = 0;
|
||||||
|
}
|
||||||
|
void on_dance_4(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_4_finished(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_4_reset(tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
void on_dance_4(tap_dance_state_t *state, void *user_data) {
|
||||||
|
if(state->count == 3) {
|
||||||
|
tap_code16(KC_2);
|
||||||
|
tap_code16(KC_2);
|
||||||
|
tap_code16(KC_2);
|
||||||
|
}
|
||||||
|
if(state->count > 3) {
|
||||||
|
tap_code16(KC_2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_4_finished(tap_dance_state_t *state, void *user_data) {
|
||||||
|
dance_state[4].step = dance_step(state);
|
||||||
|
switch (dance_state[4].step) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_2); break;
|
||||||
|
case DOUBLE_TAP: register_code16(KC_2); register_code16(KC_2); break;
|
||||||
|
case DOUBLE_HOLD: register_code16(LSFT(KC_B)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: tap_code16(KC_2); register_code16(KC_2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_4_reset(tap_dance_state_t *state, void *user_data) {
|
||||||
|
wait_ms(10);
|
||||||
|
switch (dance_state[4].step) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_2); break;
|
||||||
|
case DOUBLE_TAP: unregister_code16(KC_2); break;
|
||||||
|
case DOUBLE_HOLD: unregister_code16(LSFT(KC_B)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: unregister_code16(KC_2); break;
|
||||||
|
}
|
||||||
|
dance_state[4].step = 0;
|
||||||
|
}
|
||||||
|
void on_dance_5(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_5_finished(tap_dance_state_t *state, void *user_data);
|
||||||
|
void dance_5_reset(tap_dance_state_t *state, void *user_data);
|
||||||
|
|
||||||
|
void on_dance_5(tap_dance_state_t *state, void *user_data) {
|
||||||
|
if(state->count == 3) {
|
||||||
|
tap_code16(KC_3);
|
||||||
|
tap_code16(KC_3);
|
||||||
|
tap_code16(KC_3);
|
||||||
|
}
|
||||||
|
if(state->count > 3) {
|
||||||
|
tap_code16(KC_3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_5_finished(tap_dance_state_t *state, void *user_data) {
|
||||||
|
dance_state[5].step = dance_step(state);
|
||||||
|
switch (dance_state[5].step) {
|
||||||
|
case SINGLE_TAP: register_code16(KC_3); break;
|
||||||
|
case DOUBLE_TAP: register_code16(KC_3); register_code16(KC_3); break;
|
||||||
|
case DOUBLE_HOLD: register_code16(LSFT(KC_C)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: tap_code16(KC_3); register_code16(KC_3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dance_5_reset(tap_dance_state_t *state, void *user_data) {
|
||||||
|
wait_ms(10);
|
||||||
|
switch (dance_state[5].step) {
|
||||||
|
case SINGLE_TAP: unregister_code16(KC_3); break;
|
||||||
|
case DOUBLE_TAP: unregister_code16(KC_3); break;
|
||||||
|
case DOUBLE_HOLD: unregister_code16(LSFT(KC_C)); break;
|
||||||
|
case DOUBLE_SINGLE_TAP: unregister_code16(KC_3); break;
|
||||||
|
}
|
||||||
|
dance_state[5].step = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished, dance_0_reset),
|
||||||
|
[DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished, dance_1_reset),
|
||||||
|
[DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished, dance_2_reset),
|
||||||
|
[DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished, dance_3_reset),
|
||||||
|
[DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished, dance_4_reset),
|
||||||
|
[DANCE_5] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_5, dance_5_finished, dance_5_reset),
|
||||||
|
};
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
|
@ -157,10 +444,172 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RGB_SLD:
|
case DUAL_FUNC_0:
|
||||||
if (rawhid_state.rgb_control) {
|
if (record->tap.count > 0) {
|
||||||
return false;
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F9);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F9);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F8);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_1:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F1);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F11);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F11);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_2:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F2);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F12);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_3:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F3);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F3);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F13);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F13);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_4:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F4);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F4);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F14);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F14);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_5:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F5);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F5);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F15);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_6:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F6);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F6);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F16);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_7:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F7);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F7);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F17);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F17);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_8:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F8);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F8);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F18);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F18);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_9:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F9);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F9);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F19);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F19);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case DUAL_FUNC_10:
|
||||||
|
if (record->tap.count > 0) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F10);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F10);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code16(KC_F20);
|
||||||
|
} else {
|
||||||
|
unregister_code16(KC_F20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case RGB_SLD:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
rgblight_mode(1);
|
rgblight_mode(1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
"modules": [
|
"modules": [
|
||||||
"zsa/oryx",
|
|
||||||
"zsa/mousejiggler",
|
"zsa/mousejiggler",
|
||||||
"zsa/defaults"
|
"zsa/defaults"
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
CONSOLE_ENABLE = no
|
CONSOLE_ENABLE = no
|
||||||
COMMAND_ENABLE = no
|
COMMAND_ENABLE = no
|
||||||
AUDIO_ENABLE = no
|
AUDIO_ENABLE = no
|
||||||
ORYX_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
RGB_MATRIX_CUSTOM_KB = yes
|
|
||||||
DYNAMIC_MACRO_ENABLE = yes
|
|
||||||
SPACE_CADET_ENABLE = no
|
SPACE_CADET_ENABLE = no
|
||||||
|
CAPS_WORD_ENABLE = yes
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ input {
|
||||||
|
|
||||||
// For example:
|
// For example:
|
||||||
layout "eu,ru"
|
layout "eu,ru"
|
||||||
|
//variant "dvorak,,"
|
||||||
options "grp:lctrl_toggle, ctrl:nocaps"
|
options "grp:lctrl_toggle, ctrl:nocaps"
|
||||||
|
|
||||||
// If this section is empty, niri will fetch xkb settings
|
// If this section is empty, niri will fetch xkb settings
|
||||||
|
|
@ -344,6 +345,14 @@ window-rule {
|
||||||
// This app-id regular expression will work for both:
|
// This app-id regular expression will work for both:
|
||||||
// - host Firefox (app-id is "firefox")
|
// - host Firefox (app-id is "firefox")
|
||||||
// - Flatpak Firefox (app-id is "org.mozilla.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$"
|
match app-id=r#"librewolf$"# title="^Picture-in-Picture$"
|
||||||
open-floating true
|
open-floating true
|
||||||
}
|
}
|
||||||
|
|
@ -610,9 +619,8 @@ binds {
|
||||||
// Mod+Space { switch-layout "next"; }
|
// Mod+Space { switch-layout "next"; }
|
||||||
// Mod+Shift+Space { switch-layout "prev"; }
|
// Mod+Shift+Space { switch-layout "prev"; }
|
||||||
|
|
||||||
Print { screenshot; }
|
Print { spawn "screenshot-annotate.sh"; }
|
||||||
Ctrl+Print { screenshot-screen; }
|
Mod+Shift+S { spawn "screenshot-annotate.sh"; }
|
||||||
Alt+Print { screenshot-window; }
|
|
||||||
|
|
||||||
// Applications such as remote-desktop clients and software KVM switches may
|
// Applications such as remote-desktop clients and software KVM switches may
|
||||||
// request that niri stops processing the keyboard shortcuts defined here
|
// request that niri stops processing the keyboard shortcuts defined here
|
||||||
|
|
|
||||||
2
niri/bin/screenshot-annotate.sh
Executable file
2
niri/bin/screenshot-annotate.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
||||||
|
#!/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
|
||||||
|
|
@ -89,7 +89,7 @@ Item {
|
||||||
id: displaysLoader
|
id: displaysLoader
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
active: root.currentIndex === 6
|
active: root.currentIndex === 5
|
||||||
visible: active
|
visible: active
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
|
|
||||||
|
|
@ -102,7 +102,7 @@ Item {
|
||||||
id: recentAppsLoader
|
id: recentAppsLoader
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
active: root.currentIndex === 7
|
active: root.currentIndex === 6
|
||||||
visible: active
|
visible: active
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
|
|
||||||
|
|
@ -115,7 +115,7 @@ Item {
|
||||||
id: themeColorsLoader
|
id: themeColorsLoader
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
active: root.currentIndex === 8
|
active: root.currentIndex === 7
|
||||||
visible: active
|
visible: active
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
|
|
||||||
|
|
@ -124,19 +124,6 @@ Item {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader {
|
|
||||||
id: aboutLoader
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
active: root.currentIndex === 9
|
|
||||||
visible: active
|
|
||||||
asynchronous: true
|
|
||||||
|
|
||||||
sourceComponent: AboutTab {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,6 @@ Rectangle {
|
||||||
}, {
|
}, {
|
||||||
"text": "Theme & Colors",
|
"text": "Theme & Colors",
|
||||||
"icon": "palette"
|
"icon": "palette"
|
||||||
}, {
|
|
||||||
"text": "About",
|
|
||||||
"icon": "info"
|
|
||||||
}]
|
}]
|
||||||
|
|
||||||
width: 270
|
width: 270
|
||||||
|
|
|
||||||
|
|
@ -1,535 +0,0 @@
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Controls
|
|
||||||
import QtQuick.Effects
|
|
||||||
import qs.Common
|
|
||||||
import qs.Services
|
|
||||||
import qs.Widgets
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: aboutTab
|
|
||||||
|
|
||||||
property bool isHyprland: CompositorService.isHyprland
|
|
||||||
|
|
||||||
DankFlickable {
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.topMargin: Theme.spacingL
|
|
||||||
clip: true
|
|
||||||
contentHeight: mainColumn.height
|
|
||||||
contentWidth: width
|
|
||||||
|
|
||||||
Column {
|
|
||||||
id: mainColumn
|
|
||||||
|
|
||||||
width: parent.width
|
|
||||||
spacing: Theme.spacingXL
|
|
||||||
|
|
||||||
// ASCII Art Header
|
|
||||||
StyledRect {
|
|
||||||
width: parent.width
|
|
||||||
height: asciiSection.implicitHeight + Theme.spacingL * 2
|
|
||||||
radius: Theme.cornerRadius
|
|
||||||
color: Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g,
|
|
||||||
Theme.surfaceVariant.b, 0.3)
|
|
||||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g,
|
|
||||||
Theme.outline.b, 0.2)
|
|
||||||
border.width: 1
|
|
||||||
|
|
||||||
Column {
|
|
||||||
id: asciiSection
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: Theme.spacingL
|
|
||||||
spacing: Theme.spacingM
|
|
||||||
|
|
||||||
Item {
|
|
||||||
width: parent.width
|
|
||||||
height: asciiText.implicitHeight
|
|
||||||
|
|
||||||
StyledText {
|
|
||||||
id: asciiText
|
|
||||||
|
|
||||||
text: "██████╗ █████╗ ███╗ ██╗██╗ ██╗\n██╔══██╗██╔══██╗████╗ ██║██║ ██╔╝\n██║ ██║███████║██╔██╗ ██║█████╔╝ \n██║ ██║██╔══██║██║╚██╗██║██╔═██╗ \n██████╔╝██║ ██║██║ ╚████║██║ ██╗\n╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝"
|
|
||||||
isMonospace: true
|
|
||||||
font.pixelSize: Theme.fontSizeMedium
|
|
||||||
color: Theme.primary
|
|
||||||
anchors.centerIn: parent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StyledText {
|
|
||||||
text: "DankMaterialShell"
|
|
||||||
font.pixelSize: Theme.fontSizeXLarge
|
|
||||||
font.weight: Font.Bold
|
|
||||||
color: Theme.surfaceText
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
width: parent.width
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: communityIcons
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
height: 24
|
|
||||||
width: {
|
|
||||||
if (isHyprland) {
|
|
||||||
return compositorButton.width + discordButton.width + Theme.spacingM + redditButton.width + Theme.spacingM
|
|
||||||
} else {
|
|
||||||
return compositorButton.width + matrixButton.width + 4 + discordButton.width + Theme.spacingM + redditButton.width + Theme.spacingM
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compositor logo (Niri or Hyprland)
|
|
||||||
Item {
|
|
||||||
id: compositorButton
|
|
||||||
width: 24
|
|
||||||
height: 24
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
anchors.verticalCenterOffset: -2
|
|
||||||
x: 0
|
|
||||||
|
|
||||||
property bool hovered: false
|
|
||||||
property string tooltipText: isHyprland ? "Hyprland Website" : "niri GitHub"
|
|
||||||
|
|
||||||
Image {
|
|
||||||
anchors.fill: parent
|
|
||||||
source: Qt.resolvedUrl(".").toString().replace(
|
|
||||||
"file://", "").replace(
|
|
||||||
"/Modules/Settings/",
|
|
||||||
"") + (isHyprland ? "/assets/hyprland.svg" : "/assets/niri.svg")
|
|
||||||
sourceSize: Qt.size(24, 24)
|
|
||||||
smooth: true
|
|
||||||
fillMode: Image.PreserveAspectFit
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
cursorShape: Qt.PointingHandCursor
|
|
||||||
hoverEnabled: true
|
|
||||||
onEntered: parent.hovered = true
|
|
||||||
onExited: parent.hovered = false
|
|
||||||
onClicked: Qt.openUrlExternally(
|
|
||||||
isHyprland ? "https://hypr.land" : "https://github.com/YaLTeR/niri")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Matrix button (only for Niri)
|
|
||||||
Item {
|
|
||||||
id: matrixButton
|
|
||||||
width: 30
|
|
||||||
height: 24
|
|
||||||
x: compositorButton.x + compositorButton.width + 4
|
|
||||||
visible: !isHyprland
|
|
||||||
|
|
||||||
property bool hovered: false
|
|
||||||
property string tooltipText: "niri Matrix Chat"
|
|
||||||
|
|
||||||
Image {
|
|
||||||
anchors.fill: parent
|
|
||||||
source: Qt.resolvedUrl(".").toString().replace(
|
|
||||||
"file://", "").replace(
|
|
||||||
"/Modules/Settings/",
|
|
||||||
"") + "/assets/matrix-logo-white.svg"
|
|
||||||
sourceSize: Qt.size(28, 18)
|
|
||||||
smooth: true
|
|
||||||
fillMode: Image.PreserveAspectFit
|
|
||||||
layer.enabled: true
|
|
||||||
|
|
||||||
layer.effect: MultiEffect {
|
|
||||||
colorization: 1
|
|
||||||
colorizationColor: Theme.surfaceText
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
cursorShape: Qt.PointingHandCursor
|
|
||||||
hoverEnabled: true
|
|
||||||
onEntered: parent.hovered = true
|
|
||||||
onExited: parent.hovered = false
|
|
||||||
onClicked: Qt.openUrlExternally(
|
|
||||||
"https://matrix.to/#/#niri:matrix.org")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Discord button
|
|
||||||
Item {
|
|
||||||
id: discordButton
|
|
||||||
width: 20
|
|
||||||
height: 20
|
|
||||||
x: isHyprland ? compositorButton.x + compositorButton.width + Theme.spacingM : matrixButton.x + matrixButton.width + Theme.spacingM
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
|
|
||||||
property bool hovered: false
|
|
||||||
property string tooltipText: isHyprland ? "Hyprland Discord Server" : "niri Discord Server"
|
|
||||||
|
|
||||||
Image {
|
|
||||||
anchors.fill: parent
|
|
||||||
source: Qt.resolvedUrl(".").toString().replace(
|
|
||||||
"file://", "").replace(
|
|
||||||
"/Modules/Settings/",
|
|
||||||
"") + "/assets/discord.svg"
|
|
||||||
sourceSize: Qt.size(20, 20)
|
|
||||||
smooth: true
|
|
||||||
fillMode: Image.PreserveAspectFit
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
cursorShape: Qt.PointingHandCursor
|
|
||||||
hoverEnabled: true
|
|
||||||
onEntered: parent.hovered = true
|
|
||||||
onExited: parent.hovered = false
|
|
||||||
onClicked: Qt.openUrlExternally(
|
|
||||||
isHyprland ? "https://discord.com/invite/hQ9XvMUjjr" : "https://discord.gg/vT8Sfjy7sx")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reddit button
|
|
||||||
Item {
|
|
||||||
id: redditButton
|
|
||||||
width: 20
|
|
||||||
height: 20
|
|
||||||
x: discordButton.x + discordButton.width + Theme.spacingM
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
|
|
||||||
property bool hovered: false
|
|
||||||
property string tooltipText: isHyprland ? "r/hyprland Subreddit" : "r/niri Subreddit"
|
|
||||||
|
|
||||||
Image {
|
|
||||||
anchors.fill: parent
|
|
||||||
source: Qt.resolvedUrl(".").toString().replace(
|
|
||||||
"file://", "").replace(
|
|
||||||
"/Modules/Settings/",
|
|
||||||
"") + "/assets/reddit.svg"
|
|
||||||
sourceSize: Qt.size(20, 20)
|
|
||||||
smooth: true
|
|
||||||
fillMode: Image.PreserveAspectFit
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
cursorShape: Qt.PointingHandCursor
|
|
||||||
hoverEnabled: true
|
|
||||||
onEntered: parent.hovered = true
|
|
||||||
onExited: parent.hovered = false
|
|
||||||
onClicked: Qt.openUrlExternally(
|
|
||||||
isHyprland ? "https://reddit.com/r/hyprland" : "https://reddit.com/r/niri")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Project Information
|
|
||||||
StyledRect {
|
|
||||||
width: parent.width
|
|
||||||
height: projectSection.implicitHeight + Theme.spacingL * 2
|
|
||||||
radius: Theme.cornerRadius
|
|
||||||
color: Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g,
|
|
||||||
Theme.surfaceVariant.b, 0.3)
|
|
||||||
border.color: Qt.rgba(Theme.outline.r, Theme.outline.g,
|
|
||||||
Theme.outline.b, 0.2)
|
|
||||||
border.width: 1
|
|
||||||
|
|
||||||
Column {
|
|
||||||
id: projectSection
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: Theme.spacingL
|
|
||||||
spacing: Theme.spacingM
|
|
||||||
|
|
||||||
Row {
|
|
||||||
width: parent.width
|
|
||||||
spacing: Theme.spacingM
|
|
||||||
|
|
||||||
DankIcon {
|
|
||||||
name: "info"
|
|
||||||
size: Theme.iconSize
|
|
||||||
color: Theme.primary
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
}
|
|
||||||
|
|
||||||
StyledText {
|
|
||||||
text: "About"
|
|
||||||
font.pixelSize: Theme.fontSizeLarge
|
|
||||||
font.weight: Font.Medium
|
|
||||||
color: Theme.surfaceText
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StyledText {
|
|
||||||
text: `DankMaterialShell is a modern desktop inspired by <a href="https://m3.material.io/" style="text-decoration:none; color:${Theme.primary};">MUI 3</a>.
|
|
||||||
<br /><br/>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: `<a href="https://quickshell.org" style="text-decoration:none; color:${Theme.primary};">Quickshell</a>`
|
|
||||||
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: `<a href="https://github.com/YaLTeR/niri" style="text-decoration:none; color:${Theme.primary};">niri</a>`
|
|
||||||
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: `<a href="https://github.com/hyprwm/Hyprland" style="text-decoration:none; color:${Theme.primary};">hyprland</a>`
|
|
||||||
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: `<a href="https://github.com/AvengeMedia/DankMaterialShell" style="text-decoration:none; color:${Theme.primary};">DankMaterialShell</a>`
|
|
||||||
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: `<a href="https://github.com/AvengeMedia/dgop" style="text-decoration:none; color:${Theme.primary};">dgop</a>`
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue