aboutsummaryrefslogtreecommitdiff
path: root/keyboards/knobgoblin/keymaps/ortho/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/knobgoblin/keymaps/ortho/keymap.c')
-rw-r--r--keyboards/knobgoblin/keymaps/ortho/keymap.c108
1 files changed, 108 insertions, 0 deletions
diff --git a/keyboards/knobgoblin/keymaps/ortho/keymap.c b/keyboards/knobgoblin/keymaps/ortho/keymap.c
new file mode 100644
index 000000000..d545904a5
--- /dev/null
+++ b/keyboards/knobgoblin/keymaps/ortho/keymap.c
@@ -0,0 +1,108 @@
1/* Copyright 2020 MrT1ddl3s
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21
22 [0] = LAYOUT_ortho(
23 KC_EQL, KC_PSLS, KC_PAST, KC_PMNS,
24 KC_P7, KC_P8, KC_P9, KC_PPLS,
25 KC_P4, KC_P5, KC_P6, KC_PPLS,
26 KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT,
27 KC_MUTE, MO(1), KC_P0, KC_PDOT, KC_PENT
28 ),
29
30 [1] = LAYOUT_ortho(
31 KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS,
33 KC_END , KC_UP, KC_PGDN, KC_TRNS,
34 KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC,
35 KC_TRNS, KC_TRNS, KC_BSPC, KC_DEL, KC_TRNS
36 )
37};
38
39/* assign keycodes to the encoder rotation */
40void encoder_update_user(uint8_t index, bool clockwise) {
41
42 if (index == 1) { /* Bottom encoder */
43 if (clockwise) {
44 tap_code(KC_VOLU);
45 } else {
46 tap_code(KC_VOLD);
47 }
48 }
49 if (index == 0) { /* Top encoder */
50 if (clockwise) {
51 tap_code(KC_MNXT);
52 } else {
53 tap_code(KC_MPRV);
54 }
55 }
56}
57#ifdef OLED_DRIVER_ENABLE
58/* rotate screen for proper orentation*/
59oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
60
61/* byte map for the goblin logo, knob goblin text, and level text */
62static void render_logo(void) {
63 static const char PROGMEM my_logo[] = {
64 0x00, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x08, 0x08, 0x08,
65 0x08, 0x08, 0x08, 0x10, 0x20, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x40, 0xe0, 0x00,
66 0x00, 0x03, 0x06, 0x3c, 0x49, 0x91, 0x21, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x00, 0x60, 0x00,
67 0x00, 0x60, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00, 0x21, 0x91, 0x49, 0x3c, 0x06, 0x03, 0x00,
68 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x60, 0x40, 0xc0, 0x06, 0x0e, 0x0f, 0x67, 0x50, 0xc0,
69 0xc0, 0x50, 0x67, 0x0f, 0x0e, 0x06, 0xc0, 0x40, 0x60, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
70 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7b, 0xc7, 0x8e, 0x1e, 0x3e, 0x3e,
71 0x3e, 0x3e, 0x1e, 0x8e, 0xc7, 0x7b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04,
73 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83,
75 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
76 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x04, 0x06, 0x09, 0x10, 0x00, 0x1f, 0x03, 0x06, 0x0c, 0x1f,
77 0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x1f, 0x12, 0x12, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
78 0x00, 0x78, 0xfc, 0x84, 0xa4, 0xa4, 0x68, 0x00, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0xfc, 0x94,
79 0x94, 0x68, 0x00, 0xfc, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x00, 0xfc, 0x18, 0x30, 0x60, 0xfc, 0x00,
80 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
81 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
82 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00,
83 0x00, 0xf0, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
84 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02,
85 0x01, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00
86
87 };
88 oled_write_raw_P(my_logo, sizeof(my_logo));
89}
90
91/* text display for layer indication */
92void oled_task_user(void) {
93
94 render_logo();
95 oled_set_cursor(0,11);
96 oled_advance_char();
97 switch (get_highest_layer(layer_state)) {
98 case 0:
99 oled_write_P(PSTR("ONE\n"), false);
100 break;
101 case 1:
102 oled_write_P(PSTR("TWO\n"), false);
103 break;
104 }
105
106}
107#endif
108