aboutsummaryrefslogtreecommitdiff
path: root/keyboards/merge/um70/keymaps/via/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/merge/um70/keymaps/via/keymap.c')
-rw-r--r--keyboards/merge/um70/keymaps/via/keymap.c182
1 files changed, 182 insertions, 0 deletions
diff --git a/keyboards/merge/um70/keymaps/via/keymap.c b/keyboards/merge/um70/keymaps/via/keymap.c
new file mode 100644
index 000000000..e71af2d32
--- /dev/null
+++ b/keyboards/merge/um70/keymaps/via/keymap.c
@@ -0,0 +1,182 @@
1/* Copyright 2021 duoshock
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#include <stdio.h>
19
20enum layer_names {
21 _BASE,
22 _ONE,
23 _TWO,
24 _THREE
25};
26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28
29/*
30 * .---------------------------. .-------------------------------. .---.
31 * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |EC |
32 * |-------------------------. .---------------------------------| |---|
33 * |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom|
34 * .---. |-------------------------. '---------------------------------| |---|
35 * |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End|
36 * |---| |----------------------------. '--------------------------------| .---. '---'
37 * |M1 | |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
38 * |---| |----------------------------| |---------------------------' .-----------.
39 * |M2 | |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
40 * '---' '----------------------------' '-----------------------' '-----------'
41 */
42
43[_BASE] = LAYOUT_rspace_split_bksp(
44 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_MUTE,
45 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
46 KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
47 KC_2, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
48 KC_3, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
49),
50
51[_ONE] = LAYOUT_rspace_split_bksp(
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
54 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
55 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
56 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
57),
58[_TWO] = LAYOUT_rspace_split_bksp(
59 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
64),
65[_THREE] = LAYOUT_rspace_split_bksp(
66 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
67 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
68 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
71),
72};
73
74void encoder_update_user(uint8_t index, bool clockwise) {
75 if (index == 0) { /* Master Left */
76 if (clockwise) {
77 tap_code(KC_VOLU);
78 } else {
79 tap_code(KC_VOLD);
80 }
81 } else if (index == 1) { /* Master Right */
82 if (clockwise) {
83 tap_code(KC_VOLU);
84 } else {
85 tap_code(KC_VOLD);
86 }
87 }
88}
89
90
91#ifdef OLED_DRIVER_ENABLE
92void suspend_power_down_user(void) {
93 oled_off();
94}
95
96oled_rotation_t oled_init_user(oled_rotation_t rotation) {
97 if (is_keyboard_master()) {
98 return OLED_ROTATION_90;
99 }
100
101 return rotation;
102}
103
104static void render_logo(void) {
105 static const char PROGMEM raw_logo[] = {
106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192,192,224,224,224,224,224,224,224,224,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
107 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 3, 1, 0, 1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0,254,254,254,252,248,224,192,128,224,248,252,254,254,254, 0, 0,128,128,128,128,128,128, 0, 14, 14, 14, 14,142,238,254,254,126, 30, 4,224,248,252, 62, 30, 14, 14, 14, 30, 62,252,248,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
108 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128, 0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 63, 63,124,112,112,112,112,124, 63, 63, 15, 0, 0, 0,127,127,127, 0, 1, 7, 15, 15, 7, 1, 0,127,127,127, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,112,124,126, 63, 15, 3, 1, 0, 0, 0, 15, 31, 63,124,120,112,112,112,120,124, 63, 31, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 1, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
110 };
111 oled_write_raw_P(raw_logo, sizeof(raw_logo));
112}
113
114
115// 32 * 18 Merge logos
116static const char PROGMEM merge_logo[] = {
117 0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e,
118 0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0,
119 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0,
120 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f,
121 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01,
122 0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
123};
124
125int current_wpm = 0;
126
127static void print_status_narrow(void) {
128 oled_set_cursor(0,1);
129 oled_write_raw_P(merge_logo, sizeof(merge_logo));
130 oled_set_cursor(0,5);
131 oled_write_P(PSTR("-----"), false);
132 oled_set_cursor(0,6);
133 oled_write_P(PSTR("LYR "), false);
134 switch (get_highest_layer(layer_state)) {
135 case _BASE:
136 oled_write_P(PSTR("0"), false);
137 break;
138 case _ONE:
139 oled_write_P(PSTR("1"), false);
140 break;
141 case _TWO:
142 oled_write_P(PSTR("2"), false);
143 break;
144 case _THREE:
145 oled_write_P(PSTR("3"), false);
146 break;
147 default:
148 oled_write_ln_P(PSTR("Undef"), false);
149 }
150 led_t led_usb_state = host_keyboard_led_state();
151 oled_write_ln_P(PSTR(" "), false);
152 oled_write_P(PSTR("CAP "), false);
153 oled_write_P(PSTR("."), led_usb_state.caps_lock);
154 oled_write_P(PSTR("NUM "), false);
155 oled_write_P(PSTR("."), led_usb_state.num_lock);
156 oled_write_P(PSTR("SCR "), false);
157 oled_write_P(PSTR("."), led_usb_state.scroll_lock);
158 //oled_write_ln_P(PSTR(" "), false);
159 oled_write_P(PSTR("-----"), false);
160
161 // WPM counter Start (Need #include <stdio.h> to work)
162 char wpm_str[8];
163 oled_set_cursor(0,13);
164 sprintf(wpm_str, " %03d", current_wpm);
165 oled_write(wpm_str, false);
166 oled_set_cursor(0,14);
167 oled_write(" WPM ", false);
168 // WPM counter End
169}
170
171void oled_task_user(void) {
172 current_wpm = get_current_wpm();
173 if (is_keyboard_master()) {
174 print_status_narrow();
175 //render_logo();
176 } else {
177 render_logo();
178 //print_status_narrow();
179 }
180}
181
182#endif