aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/crkbd/keymaps/oo/config.h28
-rw-r--r--keyboards/crkbd/keymaps/oo/keymap.c165
-rw-r--r--keyboards/crkbd/keymaps/oo/readme.md19
-rw-r--r--keyboards/crkbd/keymaps/oo/rules.mk1
4 files changed, 213 insertions, 0 deletions
diff --git a/keyboards/crkbd/keymaps/oo/config.h b/keyboards/crkbd/keymaps/oo/config.h
new file mode 100644
index 000000000..8dc71430a
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oo/config.h
@@ -0,0 +1,28 @@
1/*
2This is the c configuration file for the keymap
3
4Copyright 2012 Jun Wako <wakojun@gmail.com>
5Copyright 2015 Jack Humbert
6
7This program is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation, either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program. If not, see <http://www.gnu.org/licenses/>.
19*/
20
21#pragma once
22
23#define SPLIT_USB_DETECT
24
25#define TAPPING_FORCE_HOLD
26#define TAPPING_TERM 100
27
28#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/oo/keymap.c b/keyboards/crkbd/keymaps/oo/keymap.c
new file mode 100644
index 000000000..b0b6f538a
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oo/keymap.c
@@ -0,0 +1,165 @@
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_DRIVER_ENABLE
64oled_rotation_t oled_init_user(oled_rotation_t rotation) {
65 if (!is_master) {
66 return OLED_ROTATION_180; // flips the display 180 degrees if offhand
67 }
68 return rotation;
69}
70
71#define L_BASE 0
72#define L_LOWER 2
73#define L_RAISE 4
74#define L_ADJUST 8
75
76void oled_render_layer_state(void) {
77 oled_write_P(PSTR("Layer: "), false);
78 switch (layer_state) {
79 case L_BASE:
80 oled_write_ln_P(PSTR("Default"), false);
81 break;
82 case L_LOWER:
83 oled_write_ln_P(PSTR("Lower"), false);
84 break;
85 case L_RAISE:
86 oled_write_ln_P(PSTR("Raise"), false);
87 break;
88 case L_ADJUST:
89 case L_ADJUST|L_LOWER:
90 case L_ADJUST|L_RAISE:
91 case L_ADJUST|L_LOWER|L_RAISE:
92 oled_write_ln_P(PSTR("Adjust"), false);
93 break;
94 }
95}
96
97
98char keylog_str[24] = {};
99
100const char code_to_name[60] = {
101 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
102 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
103 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
104 '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
105 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
106 '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
107
108void set_keylog(uint16_t keycode, keyrecord_t *record) {
109 char name = ' ';
110 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
111 (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
112 if (keycode < 60) {
113 name = code_to_name[keycode];
114 }
115
116 // update keylog
117 snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
118 record->event.key.row, record->event.key.col,
119 keycode, name);
120}
121
122void oled_render_keylog(void) {
123 oled_write(keylog_str, false);
124}
125
126void render_bootmagic_status(bool status) {
127 /* Show Ctrl-Gui Swap options */
128 static const char PROGMEM logo[][2][3] = {
129 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
130 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
131 };
132 if (status) {
133 oled_write_ln_P(logo[0][0], false);
134 oled_write_ln_P(logo[0][1], false);
135 } else {
136 oled_write_ln_P(logo[1][0], false);
137 oled_write_ln_P(logo[1][1], false);
138 }
139}
140
141void oled_render_logo(void) {
142 static const char PROGMEM crkbd_logo[] = {
143 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
144 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
145 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
146 0};
147 oled_write_P(crkbd_logo, false);
148}
149
150void oled_task_user(void) {
151 if (is_master) {
152 oled_render_layer_state();
153 oled_render_keylog();
154 } else {
155 oled_render_logo();
156 }
157}
158
159bool process_record_user(uint16_t keycode, keyrecord_t *record) {
160 if (record->event.pressed) {
161 set_keylog(keycode, record);
162 }
163 return true;
164}
165#endif // OLED_DRIVER_ENABLE
diff --git a/keyboards/crkbd/keymaps/oo/readme.md b/keyboards/crkbd/keymaps/oo/readme.md
new file mode 100644
index 000000000..e7ef68659
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oo/readme.md
@@ -0,0 +1,19 @@
1# Build instructions
2
3```zsh
4# if this is a fresh install of QMK, don't forget to run setup
5# or you might be missing necessary tools and libraries!
6# https://docs.qmk.fm/#/newbs_getting_started
7$ qmk setup
8
9# using json via the configurator can be easier than starting from scratch
10# but you will need to go back and make the formatting readable for future edits
11$ qmk json2c -o keymap.c keymap.json
12
13# compile; use appropriate tool for your microcontroller
14$ qmk compile -kb crkbd/rev1/common -km oo
15
16# flash; each side has to be done separately
17$ qmk flash -kb crkbd/rev1/common -km oo
18
19```
diff --git a/keyboards/crkbd/keymaps/oo/rules.mk b/keyboards/crkbd/keymaps/oo/rules.mk
new file mode 100644
index 000000000..c58266213
--- /dev/null
+++ b/keyboards/crkbd/keymaps/oo/rules.mk
@@ -0,0 +1 @@
OLED_DRIVER_ENABLE = yes