crkbd/keymaps/prithugoswami/keymap.c (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
/* * based off of original crkbd config by foostan * https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd */ #include QMK_KEYBOARD_H #include "raw_hid.h" #include <stdio.h> void raw_hid_receive(uint8_t *data, uint8_t length) { rgblight_setrgb(data[0], data[1], data[2]); return; } uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: return 130; case LT(2, KC_SPC): case LT(1, KC_ENT): return 175; case LALT_T(KC_L): case LALT_T(KC_S): return 250; default: return TAPPING_TERM; } } const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_split_3x6_3( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, LALT_T(KC_S), LSFT_T(KC_D), KC_F, KC_G, KC_H, KC_J, RSFT_T(KC_K), LALT_T(KC_L), KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, XXXXXXX , KC_LGUI, LT(2, KC_ENT), LT(3, KC_SPC), MO(4), XXXXXXX ), [1] = LAYOUT_split_3x6_3( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, LALT_T(KC_S), LSFT_T(KC_D), KC_F, KC_G, KC_H, KC_J, RSFT_T(KC_K), LALT_T(KC_L), KC_SCLN, KC_QUOT, MO(2), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, KC_LGUI , LT(7, KC_ESC), KC_SPC, LT(3, KC_SPC), MO(4), TG(1) ), [2] = LAYOUT_split_3x6_3( KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_MINS, KC_INS, XXXXXXX, KC_LCTL, XXXXXXX, KC_LALT, KC_LSFT, CAPS_WORD, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_HOME, KC_PGUP, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_END, KC_PGDN, _______, KC_LGUI, _______, LT(5, KC_SPC), KC_MS_BTN1, KC_MS_BTN2 ), [3] = LAYOUT_split_3x6_3( KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_LCTL, XXXXXXX, KC_LALT, KC_LSFT, UC(0x20b9), UC(0x2014), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE, KC_GRV, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS, KC_TILD, XXXXXXX, KC_LGUI, LT(5, KC_ENT), _______, _______, _______ ), [4] = LAYOUT_split_3x6_3( KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX, XXXXXXX, KC_LCTL, XXXXXXX, KC_LALT, KC_LSFT, MO(6), XXXXXXX, KC_0, KC_4, KC_5, KC_6, XXXXXXX, XXXXXXX, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX, XXXXXXX, _______, KC_LGUI, KC_ENT, _______, _______, KC_DEL ), [5] = LAYOUT_split_3x6_3( QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, TG(1), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, _______, KC_ENT, KC_SPC, _______, _______ ), [6] = LAYOUT_split_3x6_3( KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, KC_LCTL, XXXXXXX, KC_LALT, KC_LSFT, XXXXXXX, XXXXXXX, KC_F11, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F10, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, _______, KC_LGUI, KC_ENT, _______, _______, KC_DEL ), [7] = LAYOUT_split_3x6_3( KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, KC_LCTL, KC_ESC, KC_LALT, KC_LSFT, XXXXXXX, C(KC_BSLS), KC_F11, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX, KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, XXXXXXX, KC_F10, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, _______, _______, KC_ENT, _______, _______, KC_DEL ), }; #ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } return rotation; } #define L_BASE 0 #define L_LOWER 2 #define L_RAISE 4 #define L_ADJUST 8 void oled_render_layer_state(void) { oled_write_P(PSTR("Layer: "), false); switch (layer_state) { case L_BASE: oled_write_ln_P(PSTR("Default"), false); break; case L_LOWER: oled_write_ln_P(PSTR("Lower"), false); break; case L_RAISE: oled_write_ln_P(PSTR("Raise"), false); break; case L_ADJUST: case L_ADJUST|L_LOWER: case L_ADJUST|L_RAISE: case L_ADJUST|L_LOWER|L_RAISE: oled_write_ln_P(PSTR("Adjust"), false); break; } } char keylog_str[24] = {}; const char code_to_name[60] = { ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; void set_keylog(uint16_t keycode, keyrecord_t *record) { char name = ' '; if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } if (keycode < 60) { name = code_to_name[keycode]; } // update keylog snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", record->event.key.row, record->event.key.col, keycode, name); } void oled_render_keylog(void) { oled_write(keylog_str, false); } void render_bootmagic_status(bool status) { /* Show Ctrl-Gui Swap options */ static const char PROGMEM logo[][2][3] = { {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, }; if (status) { oled_write_ln_P(logo[0][0], false); oled_write_ln_P(logo[0][1], false); } else { oled_write_ln_P(logo[1][0], false); oled_write_ln_P(logo[1][1], false); } } void oled_render_logo(void) { static const char PROGMEM crkbd_logo[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0}; oled_write_P(crkbd_logo, false); } bool oled_task_user(void) { if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { set_keylog(keycode, record); } return true; } #endif // OLED_ENABLE |