configs/keymap.c.old
keymap.c.oldRaw
1/*
2Copyright 2019 @foostan
3Copyright 2020 Drashna Jaelre <@drashna>
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19// INSTRUCTIONS
20// install qmk: python3 -m pip install --user qmk (https://docs.qmk.fm/#/newbs_getting_started)
21// clone repo https://github.com/qmk/qmk_firmware into ~/qmk_firmware
22// copy this file into ~/qmk_firmware/keyboards/crkbd/keymaps/default/keymap.c
23// copy qmk.ini into ~/
24// compile the keymap:
25// > qmk compile -kb crkbd -km default
26// once keyboard connected, execute:
27// > qmk flash
28// or if previous doesn't work, use:
29// > qmk flash -kb crkbd -km default
30
31#include QMK_KEYBOARD_H
32
33const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34 [0] = LAYOUT_split_3x6_3(
35 //,-----------------------------------------------------. ,-----------------------------------------------------.
36 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
37 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
38 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
39 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
40 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
41 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
42 KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT
43 //`--------------------------' `--------------------------'
44
45 ),
46
47 [1] = LAYOUT_split_3x6_3(
48 //,-----------------------------------------------------. ,-----------------------------------------------------.
49 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
50 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
51 KC_LCTL,KC__MUTE,KC__VOLDOWN,KC__VOLUP, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
52 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
53 KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
54 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
55 KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT
56 //`--------------------------' `--------------------------'
57 ),
58
59 [2] = LAYOUT_split_3x6_3(
60 //,-----------------------------------------------------. ,-----------------------------------------------------.
61 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
62 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
63 KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
64 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
65 KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
66 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
67 KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT
68 //`--------------------------' `--------------------------'
69 ),
70
71 [3] = LAYOUT_split_3x6_3(
72 //,-----------------------------------------------------. ,-----------------------------------------------------.
73 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
74 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
75 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F12,
76 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
77 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
78 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
79 KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
80 //`--------------------------' `--------------------------'
81 )
82};
83
84#ifdef OLED_DRIVER_ENABLE
85oled_rotation_t oled_init_user(oled_rotation_t rotation) {
86 if (!is_master) {
87 return OLED_ROTATION_180; // flips the display 180 degrees if offhand
88 }
89 return rotation;
90}
91
92#define L_BASE 0
93#define L_LOWER 2
94#define L_RAISE 4
95#define L_ADJUST 8
96
97void oled_render_layer_state(void) {
98 oled_write_P(PSTR("Layer: "), false);
99 switch (layer_state) {
100 case L_BASE:
101 oled_write_ln_P(PSTR("Default"), false);
102 break;
103 case L_LOWER:
104 oled_write_ln_P(PSTR("Lower"), false);
105 break;
106 case L_RAISE:
107 oled_write_ln_P(PSTR("Raise"), false);
108 break;
109 case L_ADJUST:
110 case L_ADJUST|L_LOWER:
111 case L_ADJUST|L_RAISE:
112 case L_ADJUST|L_LOWER|L_RAISE:
113 oled_write_ln_P(PSTR("Adjust"), false);
114 break;
115 }
116}
117
118
119char keylog_str[24] = {};
120
121const char code_to_name[60] = {
122 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
123 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
124 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
125 '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
126 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
127 '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
128
129void set_keylog(uint16_t keycode, keyrecord_t *record) {
130 char name = ' ';
131 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
132 (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
133 if (keycode < 60) {
134 name = code_to_name[keycode];
135 }
136
137 // update keylog
138 snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
139 record->event.key.row, record->event.key.col,
140 keycode, name);
141}
142
143void oled_render_keylog(void) {
144 oled_write(keylog_str, false);
145}
146
147void render_bootmagic_status(bool status) {
148 /* Show Ctrl-Gui Swap options */
149 static const char PROGMEM logo[][2][3] = {
150 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
151 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
152 };
153 if (status) {
154 oled_write_ln_P(logo[0][0], false);
155 oled_write_ln_P(logo[0][1], false);
156 } else {
157 oled_write_ln_P(logo[1][0], false);
158 oled_write_ln_P(logo[1][1], false);
159 }
160}
161
162void oled_render_logo(void) {
163 static const char PROGMEM crkbd_logo[] = {
164 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
165 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
166 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
167 0};
168 oled_write_P(crkbd_logo, false);
169}
170
171void oled_task_user(void) {
172 if (is_master) {
173 oled_render_layer_state();
174 oled_render_keylog();
175 } else {
176 oled_render_logo();
177 }
178}
179
180bool process_record_user(uint16_t keycode, keyrecord_t *record) {
181 if (record->event.pressed) {
182 set_keylog(keycode, record);
183 }
184 return true;
185}
186#endif // OLED_DRIVER_ENABLE