306 lines
28 KiB
C
306 lines
28 KiB
C
#include QMK_KEYBOARD_H
|
|
|
|
#ifdef OS_DETECTION_ENABLE
|
|
#include "os_detection.h"
|
|
#endif
|
|
|
|
#include "dgvigil.h"
|
|
|
|
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
|
|
|
enum combos {
|
|
FA_GUI,
|
|
FS_ALT,
|
|
FD_CTL,
|
|
JQUOT_GUI,
|
|
JL_ALT,
|
|
JK_CTL
|
|
};
|
|
|
|
const uint16_t PROGMEM fa_combo[] = {KC_F, KC_A, COMBO_END};
|
|
const uint16_t PROGMEM fs_combo[] = {KC_F, KC_S, COMBO_END};
|
|
const uint16_t PROGMEM fd_combo[] = {KC_F, KC_D, COMBO_END};
|
|
const uint16_t PROGMEM jquote_combo[] = {KC_J, KC_QUOT, COMBO_END};
|
|
const uint16_t PROGMEM jl_combo[] = {KC_J, KC_L, COMBO_END};
|
|
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
|
|
|
combo_t key_combos[] = {
|
|
[FA_GUI] = COMBO(fa_combo, KC_LGUI),
|
|
[FS_ALT] = COMBO(fs_combo, KC_LALT),
|
|
[FD_CTL] = COMBO(fd_combo, KC_LCTL),
|
|
[JQUOT_GUI] = COMBO(jquote_combo, KC_RGUI),
|
|
[JL_ALT] = COMBO(jl_combo, KC_RALT),
|
|
[JK_CTL] = COMBO(jk_combo, KC_RCTL),
|
|
};
|
|
|
|
|
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
[_QWERTY] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MUTE,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
KC_TAB, __________________BASE_L1____________________, __________________BASE_R1____________________, KC_GRV,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
KC_LCTL, __________________BASE_L2____________________, __________________BASE_R2____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
KC_LSFT, __________________BASE_L3____________________,SPOTLI, _______, __________________BASE_R3____________________, KC_RSFT,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
___________THUMB_L3________, ___________THUMB_R3________
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_COLEMAK_DH] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________COLEML1____________________, __________________COLEMR1____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________COLEML2____________________, __________________COLEMR2____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________COLEML3____________________, SPOTLI, _______, __________________COLEMR3____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
___________THUMB_L3________, ___________THUMB_R3________
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_NAV] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, RGB_TOG,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________EMPTY_____________________, __________________NAV_R1____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________NAV_L2____________________, __________________NAV_R2____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________NAV_L3____________________, WINDOWS, _______, __________________NAV_R3____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
___________THUMB_L3________, ___________THUMB_R3________
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_NUM] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________NUM_L1____________________, _________________BOOT_R1____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________NUM_L2____________________, __________________EMPTY_____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________NUM_L3____________________, KC_LPRN, _______, __________________EMPTY_____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
_________NUM_TH_L3________, ___________THUMB_3__BLANK__
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_SYM] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________SYM_L1____________________, __________________EMPTY_____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________SYM_L2____________________, __________________EMPTY_____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________SYM_L3____________________, _______, _______, __________________EMPTY_____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
_________SYM_TH_L3________, ___________THUMB_3__BLANK__
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_FUN] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________FUN_L1____________________, _________________BOOT_R1____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________FUN_L2____________________, __________________EMPTY_____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________FUN_L3____________________, _______, _______, __________________EMPTY_____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
___________THUMB_3__BLANK__, ___________THUMB_3__BLANK__
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_MUS] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, _________________BOOT_L1____________________, __________________EMPTY_____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________EMPTY_____________________, __________________MUS_R2____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________EMPTY_____________________, _______, _______, __________________MUS_R3____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
___________THUMB_3__BLANK__, ___________THUMB_3__BLANK__
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
),
|
|
|
|
[_MOUSE] = LAYOUT_wrapper(
|
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
|
_______, _______, _______, _______, _______, KC_LPAD, SPOTLI, _______, _______, _______, _______, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________EMPTY_____________________, __________________MOU_R1____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________EMPTY_____________________, __________________MOU_R2____________________, _______,
|
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
|
|
_______, __________________EMPTY_____________________, _______, _______, __________________MOU_R3____________________, _______,
|
|
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
|
|
___________THUMB_3__BLANK__, ___________THUMB_3__BLANK__
|
|
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
|
|
)
|
|
};
|
|
|
|
uint8_t mod_state;
|
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
static bool isWindows = false;
|
|
mod_state = get_mods();
|
|
switch (keycode) {
|
|
case WINDOWS:
|
|
if (record->event.pressed) {
|
|
isWindows = !isWindows;
|
|
}
|
|
return false;
|
|
case COPY:
|
|
if (record->event.pressed) {
|
|
if (isWindows) {
|
|
tap_code16(LCTL(KC_C));
|
|
} else {
|
|
tap_code16(LGUI(KC_C));
|
|
}
|
|
return false;
|
|
}
|
|
case PASTE:
|
|
if (record->event.pressed) {
|
|
if (isWindows) {
|
|
tap_code16(LCTL(KC_V));
|
|
} else {
|
|
tap_code16(LGUI(KC_V));
|
|
}
|
|
return false;
|
|
}
|
|
case CUT:
|
|
if (record->event.pressed) {
|
|
if (isWindows) {
|
|
tap_code16(LCTL(KC_X));
|
|
} else {
|
|
tap_code16(LGUI(KC_X));
|
|
}
|
|
return false;
|
|
}
|
|
case UNDO:
|
|
if (record->event.pressed) {
|
|
if (isWindows) {
|
|
tap_code16(LCTL(KC_Z));
|
|
} else {
|
|
tap_code16(LGUI(KC_Z));
|
|
}
|
|
return false;
|
|
}
|
|
case REDO:
|
|
if (record->event.pressed) {
|
|
if (isWindows) {
|
|
tap_code16(LCTL(KC_Y));
|
|
} else {
|
|
tap_code16(LSG(KC_Z));
|
|
}
|
|
return false;
|
|
}
|
|
case SALL:
|
|
if (record->event.pressed) {
|
|
if (isWindows) {
|
|
tap_code16(LCTL(KC_A));
|
|
} else {
|
|
tap_code16(LGUI(KC_A));
|
|
}
|
|
return false;
|
|
}
|
|
case M_PASS1:
|
|
if (record->event.pressed) {
|
|
SEND_STRING("P0plarLake!2023");
|
|
}
|
|
return false;
|
|
case M_PASS2:
|
|
if (record->event.pressed) {
|
|
SEND_STRING("CindieVerano!2024");
|
|
}
|
|
return false;
|
|
case M_PASS3:
|
|
if (record->event.pressed) {
|
|
SEND_STRING("1290");
|
|
}
|
|
return false;
|
|
case M_PASS4:
|
|
if (record->event.pressed) {
|
|
SEND_STRING("Thel0ve0fchrist!");
|
|
}
|
|
return false;
|
|
case SPOTLI:
|
|
if (record->event.pressed) {
|
|
tap_code16(LGUI(KC_SPACE));
|
|
}
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
|
[_QWERTY] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
|
[_NAV] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) },
|
|
[_NUM] = { ENCODER_CCW_CW(C(KC_LEFT), C(KC_RIGHT)), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(KC_B, KC_B) },
|
|
[_SYM] = { ENCODER_CCW_CW(C(KC_TAB), S(C(KC_TAB))), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
|
|
[_MOUSE] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
|
|
[_FUN] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
|
|
[_MUS] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
|
|
[_COLEMAK_DH] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
|
};
|
|
|
|
|
|
// Onboard LED
|
|
#ifdef RGBLIGHT_ENABLE
|
|
// Configure LED
|
|
void keyboard_post_init_user(void) {
|
|
// Initialize RGB to static black
|
|
rgblight_enable_noeeprom();
|
|
rgblight_sethsv_noeeprom(HSV_BLACK);
|
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
|
}
|
|
|
|
// Change LED
|
|
void housekeeping_task_user(void) {
|
|
// Caps lock status
|
|
if (host_keyboard_led_state().caps_lock) {
|
|
rgblight_setrgb_at(4, 4, 0, 0);
|
|
} else {
|
|
// Layers
|
|
switch (get_highest_layer(layer_state | default_layer_state)) {
|
|
case 0:
|
|
rgblight_setrgb_at(4, 4, 4, 0);
|
|
break;
|
|
case 1:
|
|
rgblight_setrgb_at(4, 4, 4, 0);
|
|
break;
|
|
case 2:
|
|
rgblight_setrgb_at(4, 4, 4, 0);
|
|
break;
|
|
case 3:
|
|
rgblight_setrgb_at(4, 4, 4, 0);
|
|
break;
|
|
case 4:
|
|
rgblight_setrgb_at(0, 0, 4, 0);
|
|
break;
|
|
case 5:
|
|
rgblight_setrgb_at(0, 4, 0, 0);
|
|
break;
|
|
case 6:
|
|
rgblight_setrgb_at(0, 0, 4, 0);
|
|
break;
|
|
case 7:
|
|
rgblight_setrgb_at(0, 0, 4, 0);
|
|
break;
|
|
case 8:
|
|
rgblight_setrgb_at(0, 0, 4, 0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
#endif
|