aboutsummaryrefslogtreecommitdiff
path: root/keyboards/0xcb/1337/keymaps/jakob/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/0xcb/1337/keymaps/jakob/keymap.c')
-rw-r--r--keyboards/0xcb/1337/keymaps/jakob/keymap.c186
1 files changed, 186 insertions, 0 deletions
diff --git a/keyboards/0xcb/1337/keymaps/jakob/keymap.c b/keyboards/0xcb/1337/keymaps/jakob/keymap.c
new file mode 100644
index 000000000..f4a075844
--- /dev/null
+++ b/keyboards/0xcb/1337/keymaps/jakob/keymap.c
@@ -0,0 +1,186 @@
1/*
2Copyright 2021 0xCB - Conor Burns
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#include QMK_KEYBOARD_H
18// clang-format off
19enum layer_names {
20 _HOME,
21 _MISC,
22 _RGB,
23 _BLED
24};
25
26const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27[_HOME] = LAYOUT(
28 KC_MPRV, KC_MNXT, KC_MPLY,
29 KC_PGUP, KC_PGDN, TO(3),
30 KC_HOME, KC_END, TO(1)
31),
32[_MISC] = LAYOUT(
33 _______, _______, _______,
34 _______, _______, TO(0),
35 _______, _______, TO(2)
36),
37[_RGB] = LAYOUT(
38 RGB_HUI, RGB_HUD, RGB_MOD,
39 RGB_SAI, RGB_SAD, TO(1),
40 RGB_SPI, RGB_SPD, TO(3)
41),
42[_BLED] = LAYOUT(
43 BL_STEP, BL_BRTG, BL_TOGG,
44 BL_ON, BL_OFF, TO(2),
45 BL_INC, BL_DEC, TO(0)
46)
47};
48// clang-format on
49
50/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
51#ifdef ENCODER_ENABLE
52bool encoder_update_user(uint8_t index, bool clockwise) {
53 if (IS_LAYER_ON(_RGB)) {
54 #ifdef RGBLIGHT_ENABLE
55 if (clockwise) {
56 rgblight_increase_val();
57 } else {
58 rgblight_decrease_val();
59 }
60 #endif
61 } else if (IS_LAYER_ON(_BLED)) {
62 if (clockwise) {
63 backlight_increase();
64 } else {
65 backlight_decrease();
66 }
67 } else {
68 if (clockwise) {
69 tap_code16(C(A(KC_UP)));
70 } else {
71 tap_code16(C(A(KC_DOWN)));
72 }
73 }
74 return true;
75}
76#endif
77
78/* oled stuff :) */
79#ifdef OLED_ENABLE
80uint16_t startup_timer;
81
82oled_rotation_t oled_init_user(oled_rotation_t rotation) {
83 startup_timer = timer_read();
84 return rotation;
85}
86
87static void render_logo(void) {
88 static const char PROGMEM raw_logo[] = {
89 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
93 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
94 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
95 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
96 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97 };
98 oled_write_raw_P(raw_logo, sizeof(raw_logo));
99}
100static void render_logo_font(void) {
101 static const char PROGMEM qmk_logo[] = {
102 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
103 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4,
104 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
105 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00
106 };
107
108 oled_write_P(qmk_logo, false);
109}
110/* Shows the name of the current layer and locks for the host (CAPS etc.) */
111static void render_info(void) {
112 oled_write_P(PSTR("Layer: "), false);
113
114 switch (get_highest_layer(layer_state)) {
115 case _HOME:
116 oled_write_ln_P(PSTR("HOME"), false);
117 break;
118 case _MISC:
119 oled_write_ln_P(PSTR("MISC"), false);
120 break;
121 case _RGB:
122 oled_write_ln_P(PSTR("RGB"), false);
123 break;
124 case _BLED:
125 oled_write_ln_P(PSTR("Backlight"), false);
126 break;
127 default:
128 oled_write_ln_P(PSTR("Undefined"), false);
129 }
130 led_t led_state = host_keyboard_led_state();
131 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
132 oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
133 oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
134}
135static void render_rgbled_status(bool) {
136 char string[4];
137 if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
138 uint16_t m = rgblight_get_mode();
139 string[3] = '\0';
140 string[2] = '0' + m % 10;
141 string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
142 string[0] = m / 10 ? '0' + m / 10 : ' ';
143 oled_write_P(PSTR("Conf:"), false);
144 oled_write(string, false);
145 uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
146 string[3] = '\0';
147 string[2] = '0' + h % 10;
148 string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
149 string[0] = h / 10 ? '0' + h / 10 : ' ';
150 oled_write_P(PSTR(","), false);
151 oled_write(string, false);
152 uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
153 string[3] = '\0';
154 string[2] = '0' + s % 10;
155 string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
156 string[0] = s / 10 ? '0' + s / 10 : ' ';
157 oled_write_P(PSTR(","), false);
158 oled_write(string, false);
159 uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
160 string[3] = '\0';
161 string[2] = '0' + v % 10;
162 string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
163 string[0] = v / 10 ? '0' + v / 10 : ' ';
164 oled_write_P(PSTR(","), false);
165 oled_write(string, false);
166 oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
167 } else {
168 oled_write_ln_P(PSTR("\n"), false);
169 }
170}
171bool oled_task_user(void) {
172 static bool finished_timer = false;
173 if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
174 render_logo();
175 } else {
176 if (!finished_timer) {
177 oled_clear();
178 finished_timer = true;
179 }
180 render_info();
181 render_rgbled_status(true);
182 render_logo_font();
183 }
184 return false;
185}
186#endif