summaryrefslogtreecommitdiff
path: root/keyboards/doio/kb16/rev1/keymaps
diff options
context:
space:
mode:
authorHorrorTroll <sonicvipduc@gmail.com>2022-10-27 00:59:30 +0700
committerGitHub <noreply@github.com>2022-10-26 18:59:30 +0100
commit9dec43a0f2ebfb0af1aea7e43b651cc67fd39a32 (patch)
tree7ab369fc9dda3139c49c6d1483a043aba85be67b /keyboards/doio/kb16/rev1/keymaps
parentcd8099539b289c2d990d30be33d47bdb535ee911 (diff)
Added new keyboard DOIO KB16 (Rev 2) (#18699)
Diffstat (limited to 'keyboards/doio/kb16/rev1/keymaps')
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/bongocat/config.h45
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/bongocat/keymap.c148
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/bongocat/rules.mk17
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/default/keymap.c140
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/default/rules.mk2
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/via/keymap.c140
-rw-r--r--keyboards/doio/kb16/rev1/keymaps/via/rules.mk4
7 files changed, 496 insertions, 0 deletions
diff --git a/keyboards/doio/kb16/rev1/keymaps/bongocat/config.h b/keyboards/doio/kb16/rev1/keymaps/bongocat/config.h
new file mode 100644
index 0000000000..bb22eebb1b
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/bongocat/config.h
@@ -0,0 +1,45 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Additional thing to reduce compiled size */
+#define NO_ACTION_ONESHOT
+#define LAYER_STATE_8BIT
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix config */
+ #undef RGB_MATRIX_KEYPRESSES
+
+ /* RGB Matrix effect */
+ #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #undef ENABLE_RGB_MATRIX_BREATHING
+ #undef ENABLE_RGB_MATRIX_BAND_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_VAL
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #undef ENABLE_RGB_MATRIX_DUAL_BEACON
+ #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #undef ENABLE_RGB_MATRIX_RAINDROPS
+ #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #undef ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #undef ENABLE_RGB_MATRIX_HUE_WAVE
+ #undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+ #undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+ #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#endif
diff --git a/keyboards/doio/kb16/rev1/keymaps/bongocat/keymap.c b/keyboards/doio/kb16/rev1/keymaps/bongocat/keymap.c
new file mode 100644
index 0000000000..bda4731a99
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/bongocat/keymap.c
@@ -0,0 +1,148 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// OLED animation
+#include "./lib/bongocat/bongocat.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN1,
+ _FN2
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ 5 │ 6 │ 7 │ 8 │
+ ├───┼───┼───┼───┤
+ │ 9 │ 0 │ ↑ │Ent│ ┌───┐
+ ├───┼───┼───┼───┤ │Mut│
+ │Fn2│ ← │ ↓ │ → │ └───┘
+ └───┴───┴───┴───┘
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ ! │ @ │ # │ $ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ % │ ^ │ & │ * │
+ ├───┼───┼───┼───┤
+ │ ( │ ) │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_MPLY,
+ KC_5, KC_6, KC_7, KC_8, TO(_FN),
+ KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE,
+ MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN] = LAYOUT(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, TO(_FN1),
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, TO(_FN2),
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │Spi│Spd│ │ │ │ │ │TO0│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │Sai│Sad│ │ │
+ ├───┼───┼───┼───┤
+ │Tog│Mod│Hui│ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │Vai│Hud│Vad│ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN2] = LAYOUT(
+ RGB_SPI, RGB_SPD, _______, QK_BOOT, _______,
+ RGB_SAI, RGB_SAD, _______, _______, TO(_BASE),
+ RGB_TOG, RGB_MOD, RGB_HUI, _______, _______,
+ _______, RGB_VAI, RGB_HUD, RGB_VAD
+ ),
+};
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+
+ render_bongocat();
+ oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top)
+ oled_write_P(PSTR("WPM:"), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string
+ oled_set_cursor(17, 2);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_set_cursor(17, 3);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
+
+ return true;
+ }
+#endif
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/doio/kb16/rev1/keymaps/bongocat/rules.mk b/keyboards/doio/kb16/rev1/keymaps/bongocat/rules.mk
new file mode 100644
index 0000000000..78d071eab3
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/bongocat/rules.mk
@@ -0,0 +1,17 @@
+SRC += ./lib/bongocat/bongocat.c
+
+# Build Options
+# change yes to no to disable
+#
+MOUSEKEY_ENABLE = no # Mouse keys
+
+VIA_ENABLE = yes
+
+# Additional thing to reduce compiled size
+GRAVE_ESC_ENABLE = no
+
+# OLED enabled
+WPM_ENABLE = yes
+
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/doio/kb16/rev1/keymaps/default/keymap.c b/keyboards/doio/kb16/rev1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6ab8294efe
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/default/keymap.c
@@ -0,0 +1,140 @@
+/* Copyright 2022 DOIO
+ * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// OLED animation
+#include "./lib/layer_status/layer_status.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN1,
+ _FN2
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ 5 │ 6 │ 7 │ 8 │
+ ├───┼───┼───┼───┤
+ │ 9 │ 0 │ ↑ │Ent│ ┌───┐
+ ├───┼───┼───┼───┤ │Mut│
+ │Fn2│ ← │ ↓ │ → │ └───┘
+ └───┴───┴───┴───┘
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ ! │ @ │ # │ $ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ % │ ^ │ & │ * │
+ ├───┼───┼───┼───┤
+ │ ( │ ) │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_MPLY,
+ KC_5, KC_6, KC_7, KC_8, TO(_FN),
+ KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE,
+ MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN] = LAYOUT(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, TO(_FN1),
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, TO(_FN2),
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │Spi│Spd│ │ │ │ │ │TO0│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │Sai│Sad│ │ │
+ ├───┼───┼───┼───┤
+ │Tog│Mod│Hui│ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │Vai│Hud│Vad│ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN2] = LAYOUT(
+ RGB_SPI, RGB_SPD, _______, QK_BOOT, _______,
+ RGB_SAI, RGB_SAD, _______, _______, TO(_BASE),
+ RGB_TOG, RGB_MOD, RGB_HUI, _______, _______,
+ _______, RGB_VAI, RGB_HUD, RGB_VAD
+ ),
+};
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ render_layer_status();
+
+ return true;
+ }
+#endif
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/doio/kb16/rev1/keymaps/default/rules.mk b/keyboards/doio/kb16/rev1/keymaps/default/rules.mk
new file mode 100644
index 0000000000..00003ba11b
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/doio/kb16/rev1/keymaps/via/keymap.c b/keyboards/doio/kb16/rev1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..61c582fa1c
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/via/keymap.c
@@ -0,0 +1,140 @@
+/* Copyright 2022 DOIO
+ * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// OLED animation
+#include "lib/layer_status/layer_status.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN1,
+ _FN2
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ 5 │ 6 │ 7 │ 8 │
+ ├───┼───┼───┼───┤
+ │ 9 │ 0 │ ↑ │Ent│ ┌───┐
+ ├───┼───┼───┼───┤ │Mut│
+ │Fn2│ ← │ ↓ │ → │ └───┘
+ └───┴───┴───┴───┘
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ ! │ @ │ # │ $ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ % │ ^ │ & │ * │
+ ├───┼───┼───┼───┤
+ │ ( │ ) │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_MPLY,
+ KC_5, KC_6, KC_7, KC_8, TO(_FN),
+ KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE,
+ MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN] = LAYOUT(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, TO(_FN1),
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, TO(_FN2),
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐
+ │Spi│Spd│ │ │ │ │ │TO0│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │Sai│Sad│ │ │
+ ├───┼───┼───┼───┤
+ │Tog│Mod│Hui│ │ ┌───┐
+ ├───┼───┼───┼───┤ │ │
+ │ │Vai│Hud│Vad│ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 */
+ [_FN2] = LAYOUT(
+ RGB_SPI, RGB_SPD, _______, QK_BOOT, _______,
+ RGB_SAI, RGB_SAD, _______, _______, TO(_BASE),
+ RGB_TOG, RGB_MOD, RGB_HUI, _______, _______,
+ _______, RGB_VAI, RGB_HUD, RGB_VAD
+ ),
+};
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ render_layer_status();
+
+ return true;
+ }
+#endif
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/doio/kb16/rev1/keymaps/via/rules.mk b/keyboards/doio/kb16/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..d76c12896f
--- /dev/null
+++ b/keyboards/doio/kb16/rev1/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes