From 825ef0bd963a031281748089ea1d603d8963111b Mon Sep 17 00:00:00 2001
From: Blake <blake@ghost7.com>
Date: Wed, 2 Sep 2020 01:31:34 +0100
Subject: [PATCH] add keebio/bdn9:ghostseven keymap (#10154)

Keebio BDN9 Additional Keymap - Rev Encoders
---
 .../keebio/bdn9/keymaps/ghostseven/config.h   | 20 ++++++
 .../keebio/bdn9/keymaps/ghostseven/keymap.c   | 70 +++++++++++++++++++
 2 files changed, 90 insertions(+)
 create mode 100644 keyboards/keebio/bdn9/keymaps/ghostseven/config.h
 create mode 100644 keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c

diff --git a/keyboards/keebio/bdn9/keymaps/ghostseven/config.h b/keyboards/keebio/bdn9/keymaps/ghostseven/config.h
new file mode 100644
index 0000000000..6df867d575
--- /dev/null
+++ b/keyboards/keebio/bdn9/keymaps/ghostseven/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2020 GhostSeven <work@ghost7.com>
+ *
+ * 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
+
+#ifdef RGB_MATRIX_ENABLE
+#    define RGB_MATRIX_KEYPRESSES
+#endif
diff --git a/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c b/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c
new file mode 100644
index 0000000000..445e6e896a
--- /dev/null
+++ b/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c
@@ -0,0 +1,70 @@
+/* Copyright 2020 GhostSeven <work@ghost7.com>
+ *
+ * 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
+
+enum encoder_names {
+  _LEFT,
+  _RIGHT,
+  _MIDDLE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /*
+        | Knob 1: Vol Dn/Up |      | Knob 2: Page Dn/Up |
+        | Press: Mute       | Home | Press: Play/Pause  |
+        | Hold: Layer 2     | Up   | Enter              |
+        | Left              | Down | Right              |
+     */
+    [0] = LAYOUT(
+        KC_MUTE, KC_HOME, KC_MPLY,
+        MO(1)  , KC_UP  , KC_ENT,
+        KC_LEFT, KC_DOWN, KC_RGHT
+    ),
+    /*
+        | RESET          | Shift+CMD+B (Build VS Code) | Media Stop |
+        | Held: Layer 2  | Home | RGB Mode   |
+        | Media Previous | End  | Media Next |
+     */
+    [1] = LAYOUT(
+        RESET  , S(G(KC_B)), KC_STOP,
+        _______, KC_HOME, RGB_MOD,
+        KC_MPRV, KC_END , KC_MNXT
+    ),
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+    if (index == _LEFT) {
+        if (clockwise) {
+            tap_code(KC_VOLD);
+        } else {
+            tap_code(KC_VOLU);
+        }
+    }
+    else if (index == _MIDDLE) {
+        if (clockwise) {
+            tap_code(KC_UP);
+        } else {
+            tap_code(KC_DOWN);
+        }
+    }
+    else if (index == _RIGHT) {
+        if (clockwise) {
+            tap_code(KC_PGUP);
+        } else {
+            tap_code(KC_PGDN);
+        }
+    }
+}