From dee48383ff00000e29dc4da97b27555cbac4777b Mon Sep 17 00:00:00 2001
From: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com>
Date: Mon, 10 Oct 2022 14:17:21 +1100
Subject: [PATCH] [Keyboard] New IDOBAO ID61 (a.k.a. Denwir D60) (#17362)

* initial upload

* adjust keymap

* Delete config.h

* Update post.rules.mk

* remapped to correct pins

* add idobao keymap

* disable underglow

* minor fix

* right menu on windows

* imgur

* ID61_process_special_k() function

* KC_APP fix

* Update keymap.c

* pre-pr touchups

* enum layouts

* review changes recommended by tzarc

* refactor special keys to common lib

* rename layout and add info.json labels

* account for 15 possible USER keys

* post drashna review

* Fn Arrow keys added

* post review edits

* use bitmask instead of bool array in specialk.c

* move to community layout
---
 keyboards/idobao/id61/keymaps/via/keymap.c | 77 ++++++++++++++++++++++
 keyboards/idobao/id61/keymaps/via/rules.mk |  3 +
 2 files changed, 80 insertions(+)
 create mode 100644 keyboards/idobao/id61/keymaps/via/keymap.c
 create mode 100644 keyboards/idobao/id61/keymaps/via/rules.mk

diff --git a/keyboards/idobao/id61/keymaps/via/keymap.c b/keyboards/idobao/id61/keymaps/via/keymap.c
new file mode 100644
index 00000000..6935194d
--- /dev/null
+++ b/keyboards/idobao/id61/keymaps/via/keymap.c
@@ -0,0 +1,77 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /*
+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+     * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│
+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+     * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │
+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+     * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter │
+     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+     * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │  Shift   │
+     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+     * │Ctrl│Win │Alt │                        │ Fn │Alt │Menu│Ctrl│
+     * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+     */
+    [0] = LAYOUT_60_ansi(
+        KC_GESC, 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_BSPC,
+        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_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_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             MO(1),   KC_RALT, KC_APP, KC_RCTL
+    ),
+
+    /*
+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+     * │ ~ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│       │
+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+     * │     │   │ ↑ │   │   │Tog│Hu+│Sa+│Br+│Sp+│PSc│Hom│End│     │
+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+     * │      │ ← │ ↓ │ → │   │Mod│Hu-│Sa-│Br-│Sp-│PUp│PDn│        │
+     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+     * │        │   │   │   │   │Rst│NKR│   │   │Ins│Del│    ↑     │
+     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+     * │    │    │    │                        │    │ ←  │ ↓  │ →  │
+     * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+     */
+    [1] = LAYOUT_60_ansi(
+        KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______,
+        _______, _______, KC_UP,   _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_PSCR, KC_HOME, KC_END,  _______,
+        _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_PGUP, KC_PGDN, _______,
+        _______,          _______, _______, _______, _______, QK_BOOT, NK_TOGG, _______, _______, KC_INS,  KC_DEL,  KC_UP,
+        _______, _______, _______,                            _______,                            _______, KC_LEFT, KC_DOWN, KC_RGHT
+    ),
+
+    /*
+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+     * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │
+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+     * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │
+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+     * │      │   │   │   │   │   │   │   │   │   │   │   │        │
+     * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+     * │        │   │   │   │   │   │   │   │   │   │   │          │
+     * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+     * │    │    │    │                        │    │    │    │    │
+     * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+     */
+    [2] = LAYOUT_60_ansi(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______
+    ),
+
+    [3] = LAYOUT_60_ansi(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______
+    )
+};
diff --git a/keyboards/idobao/id61/keymaps/via/rules.mk b/keyboards/idobao/id61/keymaps/via/rules.mk
new file mode 100644
index 00000000..974ef996
--- /dev/null
+++ b/keyboards/idobao/id61/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes