1 #include QMK_KEYBOARD_H
8 #define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
10 // Each layer gets a name for readability, which is then used in the keymap matrix below.
11 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
12 // Layer names don't all need to be of the same length, obviously, and you can also skip them
13 // entirely and just use numbers.
17 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 /* Keymap _BL: (Base Layer) Default Layer
19 * ,-------------------.
21 * |----|----|----|----|
22 * | F1 | F2 | F3 | F4 |
23 * |----|----|----|----|
25 * |----|----|----|----|
27 * |----|----|----|----|
29 * |----|----|----|----|
30 * |Left|Down| Up |Rght|
31 * `-------------------'
34 [_BL] = LAYOUT_ortho_6x4(
35 KC_ESC, KC_TAB, KC_MINS,KC_EQL, \
36 KC_F1, KC_F2, KC_F3, KC_F4, \
37 KC_P7, KC_P8, KC_P9, KC_PMNS, \
38 KC_P4, KC_P5, KC_P6, KC_PENT, \
39 KC_P1, KC_P2, KC_P3, KC_BSLS, \
40 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
43 /* Keymap _FL: Function Layer
44 * ,-------------------.
46 * |----|----|----|----|
48 * |----|----|----|----|
50 * |----|----|----|RST |
52 * |----|----|----|----|
54 * |----|----|----| En |
56 * `-------------------'
58 [_FL] = LAYOUT_ortho_6x4(
59 KC_ESC, KC_TAB, KC_BSPC, KC_PEQL, \
60 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
61 KC_P7, KC_P8, KC_P9, RESET, \
62 KC_P4, KC_P5, KC_P6, KC_PENT, \
63 KC_P1, KC_P2, KC_P3, KC_PENT, \
64 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
72 const uint16_t PROGMEM fn_actions[] = {
73 [0] = ACTION_FUNCTION(SHIFT_ESC),
76 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
77 static uint8_t shift_esc_shift_mask;
80 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
81 if (record->event.pressed) {
82 if (shift_esc_shift_mask) {
84 send_keyboard_report();
87 send_keyboard_report();
90 if (shift_esc_shift_mask) {
92 send_keyboard_report();
95 send_keyboard_report();