From 465dd1e7cec0ad65be867f79de910f47d94bd749 Mon Sep 17 00:00:00 2001
From: jotix <69703151+jotix@users.noreply.github.com>
Date: Sat, 5 Mar 2022 21:46:27 -0300
Subject: [PATCH] Bm40hsrgb jotix vial (#130)

* leds on in layers 4 & 5

* bm40hsrgb jotix_vial keymap
---
 .../bm40hsrgb/keymaps/jotix_vial/config.h     |  57 +++++++++
 .../bm40hsrgb/keymaps/jotix_vial/keymap.c     | 110 ++++++++++++++++++
 .../bm40hsrgb/keymaps/jotix_vial/readme.md    |   1 +
 .../bm40hsrgb/keymaps/jotix_vial/rules.mk     |   9 ++
 .../bm40hsrgb/keymaps/jotix_vial/vial.json    |  15 +++
 5 files changed, 192 insertions(+)
 create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/config.h
 create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/keymap.c
 create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/readme.md
 create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/rules.mk
 create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/vial.json

diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/config.h
new file mode 100644
index 0000000000..99837a6e0e
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/config.h
@@ -0,0 +1,57 @@
+#pragma once
+
+/* Configuration for Vial */
+#define VIAL_KEYBOARD_UID {0x6A, 0x02, 0xE7, 0x64, 0x1D, 0x59, 0x0D, 0xC8}
+
+// to unlock the keyboard
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 11 }
+
+// number of layers
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
+#define VIAL_COMBO_ENTRIES 16
+
+// make the firmware size smaller by undefining some rgb effects
+#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#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_BAND_SPIRAL_SAT
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#undef ENABLE_RGB_MATRIX_CYCLE_ALL
+#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#undef ENABLE_RGB_MATRIX_RAINDROPS
+#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#undef ENABLE_RGB_MATRIX_HUE_BREATHING
+#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
+#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#undef ENABLE_RGB_MATRIX_SPLASH
+#undef ENABLE_RGB_MATRIX_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/keymap.c
new file mode 100644
index 0000000000..1e2078afff
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/keymap.c
@@ -0,0 +1,110 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_planck_mit ( 
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
+    KC_ESC, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_BSPC,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    KC_TAB, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    KC_LSFT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,KC_ENT,
+// ├───────┼───────┼───────┼───────┼───────┼───────────────┼───────┼───────┼───────┼───────┼───────┤
+    KC_LCTL,KC_LGUI,KC_LALT,KC_RALT,MO(1),  KC_SPC,         MO(2),  KC_LEFT,KC_DOWN,KC_UP,  KC_RGHT
+// └───────┴───────┴───────┴───────┴───────┴───────────────┴───────┴───────┴───────┴───────┴───────┘
+), 
+
+[1] = LAYOUT_planck_mit (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
+    KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   _______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    KC_CAPS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_MINS,KC_EQL, KC_LBRC,KC_RBRC,KC_BSLS,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, _______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────────────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,        MO(3),  _______,_______,_______,_______
+// └───────┴───────┴───────┴───────┴───────┴───────────────┴───────┴───────┴───────┴───────┴───────┘
+),
+
+[2] = LAYOUT_planck_mit (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
+    KC_TILD,KC_EXLM,KC_AT,  KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,KC_PIPE,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,KC_F7,  KC_F8,  KC_F9,  KC_F10, KC_F11, KC_F12, _______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────────────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,MO(3),  _______,        _______,_______,_______,_______,_______
+// └───────┴───────┴───────┴───────┴───────┴───────────────┴───────┴───────┴───────┴───────┴───────┘
+),
+
+[3] = LAYOUT_planck_mit (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
+    _______,RESET,  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────────────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,        _______,_______,_______,_______,_______
+// └───────┴───────┴───────┴───────┴───────┴───────────────┴───────┴───────┴───────┴───────┴───────┘
+),
+
+[4] = LAYOUT_planck_mit (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────────────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,        _______,_______,_______,_______,_______
+// └───────┴───────┴───────┴───────┴───────┴───────────────┴───────┴───────┴───────┴───────┴───────┘
+),
+
+[5] = LAYOUT_planck_mit (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────────────┼───────┼───────┼───────┼───────┼───────┤
+    _______,_______,_______,_______,_______,_______,        _______,_______,_______,_______,_______
+// └───────┴───────┴───────┴───────┴───────┴───────────────┴───────┴───────┴───────┴───────┴───────┘
+),
+
+};
+
+bool led_update_user(led_t led_state) {
+  // NumLock allways on
+  if (!led_state.num_lock) {
+    tap_code(KC_NUMLOCK);
+  }
+  return true;
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+  
+  // Caps Lock indicator on alphanumeric flagged keys:
+  if (host_keyboard_led_state().caps_lock) {
+    for (uint8_t i = led_min; i <= led_max; i++) {
+      if (g_led_config.flags[i] & LED_FLAG_KEYLIGHT) {
+        rgb_matrix_set_color(i, RGB_WHITE);
+      }
+    }
+  }
+
+  // Layer indicator with only configured keys:
+  if (get_highest_layer(layer_state) > 0) {uint8_t layer = get_highest_layer(layer_state);
+    for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
+      for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
+        uint8_t index = g_led_config.matrix_co[row][col];
+        if (index >= led_min && index <= led_max && index != NO_LED && 
+          keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {
+          rgb_matrix_set_color(index, RGB_RED);
+        }
+      }
+    }
+  }
+}
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/readme.md
new file mode 100644
index 0000000000..bf731c966c
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/readme.md
@@ -0,0 +1 @@
+# The vial jotix-keymap for bm40hsrgb
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/rules.mk
new file mode 100644
index 0000000000..7b442ee3cc
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/rules.mk
@@ -0,0 +1,9 @@
+BOOTMAGIC_ENABLE = yes
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+COMBO_ENABLE = yes
+TAP_DANCE_ENABLE = no
+LTO_ENABLE = no
+QMK_SETTINGS = no
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/vial.json b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/vial.json
new file mode 100644
index 0000000000..678c882dce
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/jotix_vial/vial.json
@@ -0,0 +1,15 @@
+{
+  "name": "bm40hsrgb",
+  "vendorId": "0x4B50",
+  "productId": "0x3430",
+  "lighting": "vialrgb",
+  "matrix": { "rows": 4, "cols": 12 },
+  "layouts": {
+	  "keymap": [
+      ["0,0","0,1","0,2","0,3","0,4","0,5","0,6","0,7","0,8","0,9","0,10","0,11"],
+      ["1,0","1,1","1,2","1,3","1,4","1,5","1,6","1,7","1,8","1,9","1,10","1,11"],
+      ["2,0","2,1","2,2","2,3","2,4","2,5","2,6","2,7","2,8","2,9","2,10","2,11"],
+      ["3,0","3,1","3,2","3,3","3,4",{"w": 2},"3,5","3,7","3,8","3,9","3,10","3,11"]
+    ]
+  }
+}