2 #include QMK_KEYBOARD_H
11 enum custom_keycodes {
12 M_COPY = SAFE_RANGE, // KC_FN5: MACRO_COPY_CUT
13 M_SHFCT, // KC_FN6: MACRO_SHIFT_CONTROL
14 M_CTALT // KC_FN7: MACRO_CONTROL_ALT
17 #define SC_UNDO LCTL(KC_Z)
18 #define SC_REDO LCTL(KC_Y)
19 #define SC_CUT LCTL(KC_X)
20 #define SC_COPY LCTL(KC_C)
21 #define SC_PSTE LCTL(KC_V)
22 #define SC_SELA LCTL(KC_A)
23 #define SC_SAVE LCTL(KC_S)
24 #define SC_OPEN LCTL(KC_O)
25 #define SC_ACLS LALT(KC_F4)
26 #define SC_CCLS LCTL(KC_F4)
28 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 [LAYER_BASE] = LAYOUT( \
31 KC_ESC, KC_TAB, KC_BSLS, MO(2), \
32 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
33 KC_P7, KC_P8, KC_P9, KC_PEQL, \
34 KC_P4, KC_P5, KC_P6, KC_PPLS, \
35 KC_P1, KC_P2, KC_P3, XXXXXXX, \
36 KC_P0, KC_PCMM, KC_PDOT, KC_PENT ),
38 [LAYER_EDIT] = LAYOUT( \
39 KC_ESC, KC_TAB, KC_SPC, _______, \
40 TG(1), SC_PSTE, SC_REDO, SC_UNDO, \
41 KC_HOME, KC_UP, KC_PGUP, KC_LALT, \
42 KC_LEFT, M_COPY, KC_RGHT, KC_LCTL, \
43 KC_END, KC_DOWN, KC_PGDN, XXXXXXX, \
44 KC_BSPC, KC_PENT, KC_DEL, M_SHFCT ),
46 [LAYER_FUNCTION] = LAYOUT( \
47 BL_TOGG, BL_INC, BL_DEC, _______, \
48 TG(1), _______, _______, _______, \
49 _______, _______, _______, _______, \
50 _______, _______, _______, _______, \
51 _______, _______, _______, XXXXXXX, \
52 RESET, _______, _______, _______ ),
57 bool process_record_user(uint16_t keycode, keyrecord_t * record) {
58 // MACRODOWN only works in this function
62 if (record->event.pressed) {
63 register_code(KC_LCTL);
64 if (record->tap.count == 1) {
66 unregister_code(KC_C);
67 } else if (record->tap.count == 2) {
69 unregister_code(KC_X);
71 unregister_code(KC_LCTL);
76 if (record->event.pressed) {
77 if (record->tap.count <= 2) register_mods(MOD_BIT(KC_LSFT));
78 if (record->tap.count == 2) register_mods(MOD_BIT(KC_LCTL));
79 if (record->tap.count == 3) register_code(KC_PENT);;
81 unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL));
82 unregister_code(KC_PENT);
87 if (record->event.pressed) {
88 if (record->tap.count < 2) register_mods(MOD_BIT(KC_LCTL));
89 if (record->tap.count >= 2) register_mods(MOD_BIT(KC_LALT));
91 unregister_mods(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT));
99 void led_set_user(uint8_t usb_led)
101 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
110 if (usb_led & (1<<USB_LED_NUM_LOCK)) {