161 lines
7.2 KiB
C
161 lines
7.2 KiB
C
|
#include "frederik.h"
|
||
|
|
||
|
#include QMK_KEYBOARD_H
|
||
|
|
||
|
enum alt_keycodes {
|
||
|
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||
|
U_T_AGCR, //USB Toggle Automatic GCR control
|
||
|
DBG_TOG, //DEBUG Toggle On / Off
|
||
|
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||
|
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||
|
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||
|
MD_BOOT, //Restart into bootloader after hold timeout
|
||
|
};
|
||
|
|
||
|
|
||
|
// clang-format off
|
||
|
#define LAYOUT_dropALT_base( \
|
||
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||
|
) \
|
||
|
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_MINS, KC_EQL , KC_BSPC, KC_DEL , \
|
||
|
KC_TAB , K01 , K02 , K03 , K04 , K05 , K06 , K07 , K08 , K09 , K0A , KC_LBRC, KC_RBRC, KC_BSLS, RGB_TOG, \
|
||
|
KC_CAPS, K11 , K12 , K13 , K14 , K15 , K16 , K17 , K18 , K19 , K1A , KC_QUOT, KC_ENT , KC_HOME, \
|
||
|
KC_LSFT, K21 , K22 , K23 , K24 , K25 , K26 , K27 , K28 , K29 , K2A , KC_RSFT, KC_UP , KC_END , \
|
||
|
KC_LCTL, KC_LGUI, KC_LALT, LT(_NAV, KC_SPC), KC_RALT, KC_LEAD, KC_LEFT, KC_DOWN, KC_RIGHT \
|
||
|
)
|
||
|
|
||
|
|
||
|
/* Re-pass though to allow templates to be used */
|
||
|
#define LAYOUT_dropALT_base_wrapper(...) LAYOUT_dropALT_base(__VA_ARGS__)
|
||
|
|
||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||
|
|
||
|
[_QWERTY] = LAYOUT_dropALT_base_wrapper(
|
||
|
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
|
||
|
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
|
||
|
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
|
||
|
),
|
||
|
|
||
|
[_WORKMAN] = LAYOUT_dropALT_base_wrapper(
|
||
|
_________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
|
||
|
_________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
|
||
|
_________________WORKMAN_L3________________, _________________WORKMAN_R3________________
|
||
|
),
|
||
|
|
||
|
[_LOWER] = LAYOUT_dropALT_base_wrapper(
|
||
|
_________________LOWER_L1__________________, _________________LOWER_R1__________________,
|
||
|
_________________LOWER_L2__________________, _________________LOWER_R2__________________,
|
||
|
_________________LOWER_L3__________________, _________________LOWER_R3__________________
|
||
|
),
|
||
|
[_RAISE] = LAYOUT_dropALT_base_wrapper(
|
||
|
_________________RAISE_L1__________________, _________________RAISE_R1__________________,
|
||
|
_________________RAISE_L2__________________, _________________RAISE_R2__________________,
|
||
|
_________________RAISE_L3__________________, _________________RAISE_R3__________________
|
||
|
),
|
||
|
[_ADJUST] = LAYOUT_dropALT_base_wrapper(
|
||
|
_________________ADJUST_L1_________________, _________________ADJUST_R1_________________,
|
||
|
_________________ADJUST_L2_________________, _________________ADJUST_R2_________________,
|
||
|
_________________ADJUST_L3_________________, _________________ADJUST_R3_________________
|
||
|
),
|
||
|
[_NAV] = LAYOUT_dropALT_base_wrapper(
|
||
|
___________________NAV_L1__________________, ___________________NAV_R1__________________,
|
||
|
___________________NAV_L2__________________, ___________________NAV_R2__________________,
|
||
|
___________________NAV_L3__________________, ___________________NAV_R3__________________
|
||
|
),
|
||
|
// [_LAYERINDEX] = LAYOUT_wrapper(
|
||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||
|
// ),
|
||
|
};
|
||
|
|
||
|
// Runs just one time when the keyboard initializes.
|
||
|
void matrix_init_user(void) {
|
||
|
};
|
||
|
|
||
|
// Runs constantly in the background, in a loop.
|
||
|
void matrix_scan_user(void) {
|
||
|
};
|
||
|
|
||
|
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||
|
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||
|
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||
|
|
||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||
|
static uint32_t key_timer;
|
||
|
|
||
|
switch (keycode) {
|
||
|
case U_T_AUTO:
|
||
|
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||
|
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||
|
}
|
||
|
return false;
|
||
|
case U_T_AGCR:
|
||
|
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||
|
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||
|
}
|
||
|
return false;
|
||
|
case DBG_TOG:
|
||
|
if (record->event.pressed) {
|
||
|
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||
|
}
|
||
|
return false;
|
||
|
case DBG_MTRX:
|
||
|
if (record->event.pressed) {
|
||
|
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||
|
}
|
||
|
return false;
|
||
|
case DBG_KBD:
|
||
|
if (record->event.pressed) {
|
||
|
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||
|
}
|
||
|
return false;
|
||
|
case DBG_MOU:
|
||
|
if (record->event.pressed) {
|
||
|
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||
|
}
|
||
|
return false;
|
||
|
case MD_BOOT:
|
||
|
if (record->event.pressed) {
|
||
|
key_timer = timer_read32();
|
||
|
} else {
|
||
|
if (timer_elapsed32(key_timer) >= 500) {
|
||
|
reset_keyboard();
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
case RGB_TOG:
|
||
|
if (record->event.pressed) {
|
||
|
switch (rgb_matrix_get_flags()) {
|
||
|
case LED_FLAG_ALL: {
|
||
|
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
|
||
|
rgb_matrix_set_color_all(0, 0, 0);
|
||
|
}
|
||
|
break;
|
||
|
case LED_FLAG_KEYLIGHT: {
|
||
|
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||
|
rgb_matrix_set_color_all(0, 0, 0);
|
||
|
}
|
||
|
break;
|
||
|
case LED_FLAG_UNDERGLOW: {
|
||
|
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||
|
rgb_matrix_disable_noeeprom();
|
||
|
}
|
||
|
break;
|
||
|
default: {
|
||
|
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||
|
rgb_matrix_enable_noeeprom();
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
default:
|
||
|
return true; //Process all other keycodes normally
|
||
|
}
|
||
|
}
|