keymap.c (10230B)
1 // Copyright 2023 Alex Stepanov (@alvicstep) 2 // SPDX-License-Identifier: GPL-2.0-or-later 3 4 #include QMK_KEYBOARD_H 5 6 enum layer_names { 7 _BASE, // default layer 8 _KEYPAD, // arrow keys, shifted symbols, HOME, END, PGUP, PGDN, FKeys, CTRL(TAB) 9 _NUMPAD // numpad keys 10 }; 11 12 /* ,------------------------------------------------------------------------------------------------------------------------. 13 * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 |PSCR|SLCK|PAUS|KPAD|BOOT| 14 * |--------+------+------+------+-------+------+--------------------------------+------+------+------+------+------+--------| 15 * | -_ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | =+ | 16 * |--------+------+------+------+-------+------| +------+------+------+------+------+--------| 17 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | 18 * |--------+------+------+------+-------+------| |------+------+------+------+------+--------| 19 * | Del | A | S | D | F | G | | H | J | K | L | ;: | '" | 20 * |--------+------+------+------+-------+------| |------+------+------+------+------+--------| 21 * | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? |Sht/Ent | 22 * `--------+------+------+------+-------+------- `------+------+------+------+------+--------' 23 * | `~ | Gui | Esc |MO(Num)| | [{ | ]} | | | 24 * `----------------------------' `---------------------------' 25 * ,---------------. ,---------------. 26 * |Alt+Tab| Alt | | Alt |TO(Num)| 27 * ,------|------ |-------| |-------+-------+------. 28 * | | | Shift | | Shift | | | 29 * | BkSp | KPAD |-------| |------ | KPAD | Space| 30 * | | | Ctrl | | Ctrl | | | 31 * `----------------------' `----------------------' 32 */ 33 34 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 35 [_BASE] = LAYOUT( 36 KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8, KC_F9,KC_F10,KC_F11,KC_F12,KC_PSCR,KC_SCRL,KC_PAUS,TO(_KEYPAD),QK_BOOT, 37 KC_MINS,KC_1,KC_2,KC_3,KC_4,KC_5, KC_6,KC_7,KC_8,KC_9,KC_0,KC_EQL, 38 KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T, KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLS, 39 KC_DEL,KC_A,KC_S,KC_D,KC_F,KC_G, KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT, 40 KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,SC_SENT, 41 KC_GRV,KC_LGUI,KC_ESC,MO(_NUMPAD), KC_LBRC,KC_RBRC,KC_NO,KC_NO, 42 LALT(KC_TAB),KC_LALT, KC_RALT,TO(_NUMPAD), 43 KC_LSFT, KC_RSFT, 44 KC_BSPC,MO(_KEYPAD),KC_LCTL, KC_RCTL,MO(_KEYPAD),KC_SPC 45 ), 46 /* ,------------------------------------------------------------------------------------------------------------------------. 47 * | | | | | | | | | | | | | | | | | TO(BASE) | | 48 * |--------+------+------+------+------+------+---------------------------------+------+------+------+------+------+--------| 49 * | _ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | 50 * |--------+------+------+------+------+------| |------+------+------+------+------+--------| 51 * | | F1 | F2 | F3 | F4 | F5 | | | Home | Up | End | | | | 52 * |--------+------+------+------+------+------| |------+------+------+------+------+--------| 53 * | | F6 | F7 | F8 | F9 | F10 | | Pgup | Lft | Dwn | Rgt | : | " | 54 * |--------+------+------+------+------+------| |------+------+------+------+------+--------| 55 * | CapsLk | | | | F11 | F12 | | Pgdn | | < | > | ? | | 56 * `--------+------+------+------+------+------' `------+------+------+------+------+--------' 57 * | ~ | INS | | | | { | } | | | 58 * `---------------------------' `---------------------------' 59 * ,--------------. ,--------------------. 60 * |Ctl+Tab| | | | | | 61 * ,------|------ |------| |------+------+------. 62 * | | |Shift | |Shift | | | 63 * | | |------| |------| | | 64 * | | | Ctrl | | Ctrl | | | 65 * `-------------- ------' `--------------------' 66 */ 67 [_KEYPAD] = LAYOUT( 68 KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,TO(_BASE),KC_NO, 69 KC_UNDS,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_PLUS, 70 KC_NO,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5, KC_NO,KC_HOME,KC_UP,KC_END,KC_NO,KC_PIPE, 71 KC_CAPS,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10, KC_PGUP,KC_LEFT,KC_DOWN,KC_RGHT,KC_COLN,KC_DQUO, 72 KC_NO,KC_NO,KC_NO,KC_NO,KC_F11,KC_F12, KC_PGDN,KC_NO,KC_LT,KC_GT,KC_QUES,KC_NO, 73 KC_TILD,KC_INS,KC_NO,KC_NO, KC_LCBR,KC_RCBR,KC_NO,KC_NO, 74 LCTL(KC_TAB),KC_NO, KC_NO,KC_NO, 75 KC_LSFT, KC_RSFT, 76 KC_NO,KC_NO,KC_LCTL, KC_RCTL,KC_NO,KC_NO 77 ), 78 /*,--------+------+------+------+------+------+ +------+------+------+------+------+--------. 79 * | | | | | | | | | Base | = | / | * | | 80 * |--------+------+------+------+------+------| |------+------+------+------+------+--------| 81 * | | | | | | | | | 7 | 8 | 9 | - | | 82 * |--------+------+------+------+------+------| |------+------+------+------+------+--------| 83 * | Del | | | | | | | | 4 | 5 | 6 | + | | 84 * |--------+------+------+------+------+------| |------+------+------+------+------+--------| 85 * | BkSp | | | | | | | | 1 | 2 | 3 |Enter | Enter | 86 * `--------+------+------+------+------+------' `------+------+------+------+------+--------' 87 * | | | | | | . |Enter | | | 88 * `---------------------------' `---------------------------' 89 * ,-------------. ,-------------. 90 * | | | | | Base | 91 * ,------|------|------| |------+------+------. 92 * | | | | | | | | 93 * | BkSp | |------| |------| | 0 | 94 * | | | | | | | | 95 * `--------------------' `--------------------' 96 */ 97 98 [_NUMPAD] = LAYOUT( 99 KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, 100 KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,TO(_BASE),KC_EQL,KC_SLSH,KC_ASTR,KC_NO, 101 KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_7,KC_8,KC_9,KC_MINS,KC_NO, 102 KC_DEL,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_4,KC_5,KC_6,KC_PLUS,KC_NO, 103 KC_BSPC,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KC_NO,KC_1,KC_2,KC_3,KC_ENT,KC_ENT, 104 KC_NO,KC_NO,KC_NO,KC_NO, KC_DOT,KC_ENT,KC_NO,KC_NO, 105 KC_NO,KC_NO, KC_NO,TO(_BASE), 106 KC_NO, KC_NO, 107 KC_BSPC,KC_NO,KC_NO, KC_NO,KC_NO,KC_0 108 ) 109 }; 110 111 layer_state_t layer_state_set_user(layer_state_t state) { 112 //set LEDs which are triggered by a layer change 113 #ifdef LED_COMPOSE_PIN 114 gpio_write_pin(LED_COMPOSE_PIN, !layer_state_cmp(state, _KEYPAD)); 115 #endif 116 117 #ifdef LED_NUM_LOCK_PIN 118 gpio_write_pin(LED_NUM_LOCK_PIN, !layer_state_cmp(state, _NUMPAD)); 119 #endif 120 121 return state; 122 }; 123 124 bool led_update_user(led_t led_state) { 125 #ifdef LED_CAPS_LOCK_PIN 126 gpio_write_pin(LED_CAPS_LOCK_PIN, !led_state.caps_lock); 127 #endif 128 129 #ifdef LED_SCROLL_LOCK_PIN 130 gpio_write_pin(LED_SCROLL_LOCK_PIN, !led_state.scroll_lock); 131 #endif 132 133 //disable default processing of LEDs 134 return false; 135 }