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