[Keyboard] Add Idobao Montex RGB (V2) (#16897)

* Add Montex V2 (#10)

* Update readme.md

* Update rules.mk

* Update config.h

* Update keyboards/idobao/montex/v2/config.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Update keyboards/idobao/montex/v2/rules.mk

Add Layouts

Co-authored-by: Drashna Jaelre <drashna@live.com>

* Merged code fron work done with @vinorodrigues

* Update keyboards/idobao/montex/v2/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/idobao/montex/v2/v2.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/idobao/montex/v2/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Removing via_nug keymap

* update to montex code (#11)

* remove VIA_QMK_RGBLIGHT_ENABLE

* more data driven config, simple copyright headers, some code cleanup

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com>
This commit is contained in:
IBNobody 2022-06-15 21:04:30 -05:00 committed by GitHub
parent d3dfa83b40
commit 8e5f8a5ff9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 478 additions and 0 deletions

View file

@ -0,0 +1,93 @@
// Copyright 2022 IBNobody (@IBNobody)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* LED Matrix & Animations */
#define RGB_DI_PIN B1
#if defined(RGB_DI_PIN) && defined(RGB_MATRIX_ENABLE)
#ifndef ID27_DISABLE_UNDERGLOW
#define DRIVER_LED_TOTAL 31 // The number of LEDs connected
#else
#define DRIVER_LED_TOTAL 27 // -4 disabled underglow LEDs
#endif
// #define RGBLIGHT_ANIMATIONS // don't use, please explicitly define
// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // don't use, too few key to make it look good
#define RGB_MATRIX_KEYPRESSES
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
/* *** Items disabled are visually unappealing in a 5x6 key matrix *** */
#define ENABLE_RGB_MATRIX_SOLID_COLOR
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHING
// #define ENABLE_RGB_MATRIX_BAND_SAT
// #define ENABLE_RGB_MATRIX_BAND_VAL
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#define ENABLE_RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
// #define ENABLE_RGB_MATRIX_DUAL_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
#define ENABLE_RGB_MATRIX_RAINDROPS
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */
// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
/* enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined */
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
// define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define ENABLE_RGB_MATRIX_SPLASH
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif // RGB_MATRIX_ENABLE
/* -----------------------
* Feature disable options
* These options are also useful to firmware size reduction.
* ----------------------- */
/* disable debug print */
// #define NO_DEBUG
/* disable print */
// #define NO_PRINT
/* disable action features */
// #define NO_ACTION_LAYER
// #define NO_ACTION_TAPPING
// #define NO_ACTION_ONESHOT

View file

@ -0,0 +1,67 @@
{
"manufacturer": "IDOBAO",
"keyboard_name": "Montex ID27v2",
"maintainer": "IBNobody",
"bootloader": "atmel-dfu",
"diode_direction": "ROW2COL",
"debounce": 5,
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"backlight": false,
"rgblight": false
},
"matrix_pins": {
"cols": ["D5", "D3", "D2", "D1", "D0"],
"rows": ["D4", "D6", "D7", "B4", "B5", "C6"]
},
"processor": "atmega32u4",
"url": "https://idobao.net/search?type=product&q=montex*",
"usb": {
"device_version": "2.0.0",
"pid": "0x0227",
"vid": "0x6964"
}
"layouts": {
"LAYOUT_numpad_6x5": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2, "h": 2 },
{ "matrix": [3, 0], "x": 0, "y": 3 },
{ "matrix": [3, 1], "x": 1, "y": 3 },
{ "matrix": [3, 2], "x": 2, "y": 3 },
{ "matrix": [3, 3], "x": 3, "y": 3 },
{ "matrix": [4, 0], "x": 0, "y": 4 },
{ "matrix": [4, 1], "x": 1, "y": 4 },
{ "matrix": [4, 2], "x": 2, "y": 4 },
{ "matrix": [4, 3], "x": 3, "y": 4 },
{ "matrix": [5, 3], "x": 4, "y": 4, "h": 2 },
{ "matrix": [5, 0], "x": 0, "y": 5 },
{ "matrix": [5, 1], "x": 1, "y": 5, "w": 2 },
{ "matrix": [5, 2], "x": 3, "y": 5 }
]
}
}
}

View file

@ -0,0 +1,54 @@
// Copyright 2022 IBNobody (@IBNobody)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* EscTab F1CalBsp
*
* CtrNum / * -
*
* Gui 7 8 9
* +
* Alt 4 5 6
*
* Shi 1 2 3
* Ent
* MO1 0 .
*
*/
[0] = LAYOUT_numpad_6x5(
KC_GESC, KC_TAB, KC_F1, KC_CALC, KC_BSPC,
KC_LCTRL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_LGUI, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_LALT, KC_P4, KC_P5, KC_P6,
KC_LSHIFT, KC_P1, KC_P2, KC_P3, KC_PENT,
MO(1), KC_P0, KC_PDOT
),
/*
*
* RstTOGMODPScSLk
*
* Hu+ Sp-Sp+Br-
*
* Hu-Hom PgU
* Br+
* St+
*
* St-End PgD
* Ent
* mo1Insert Del
*
*/
[1] = LAYOUT_numpad_6x5(
QK_BOOT, RGB_TOG, RGB_MOD, KC_PSCR, KC_SLCK,
RGB_HUI, XXXXXXX, RGB_SPD, RGB_SPI, RGB_VAD,
RGB_HUD, KC_HOME, KC_UP, KC_PGUP, RGB_VAI,
RGB_SAI, KC_LEFT, XXXXXXX, KC_RGHT,
RGB_SAD, KC_END, KC_DOWN, KC_PGDN, KC_ENT,
_______, KC_INS, KC_DEL
)
};

View file

@ -0,0 +1,6 @@
// Copyright 2022 IBNobody (@IBNobody)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 6

View file

@ -0,0 +1,114 @@
// Copyright 2022 IBNobody (@IBNobody)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum montex_layers {
_BASE,
_FN,
_EMPTY2, // Just to initialize dynamic layers in VIA
_EMPTY3,
_EMPTY4,
_EMPTY5
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* EscTab F1CalBsp
*
* CtrNum / * -
*
* Gui 7 8 9
* +
* Alt 4 5 6
*
* Shi 1 2 3
* Ent
* MO1 0 .
*
*/
[_BASE] = LAYOUT_numpad_6x5(
KC_GESC, KC_TAB, KC_F1, KC_CALC, KC_BSPC,
KC_LCTRL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_LGUI, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_LALT, KC_P4, KC_P5, KC_P6,
KC_LSHIFT, KC_P1, KC_P2, KC_P3, KC_PENT,
MO(1), KC_P0, KC_PDOT
),
/*
*
* RstTOGMODPSsSLk
*
* Hu+ Sp-Sp+Br-
*
* Hu-Hom PgU
* Br+
* St+
*
* St-End PgD
* Ent
* mo1Insert Del
*
*/
[_FN] = LAYOUT_numpad_6x5(
QK_BOOT, RGB_TOG, RGB_MOD, KC_PSCR, KC_SLCK,
RGB_HUI, XXXXXXX, RGB_SPD, RGB_SPI, RGB_VAD,
RGB_HUD, KC_HOME, KC_UP, KC_PGUP, RGB_VAI,
RGB_SAI, KC_LEFT, XXXXXXX, KC_RGHT,
RGB_SAD, KC_END, KC_DOWN, KC_PGDN, KC_ENT,
_______, KC_INS, KC_DEL
),
/* 4 extra layers incase you want to map the top row to layer buttons
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
[_EMPTY2] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______
),
[_EMPTY3] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______
),
[_EMPTY4] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______
),
[_EMPTY5] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______
)
};

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

View file

@ -0,0 +1,8 @@
# some (if not most) Montex have a solid back plate,
# this enables switching off the bottom facing LEDs
# Usage: `make idobao/montex/v2:default UNDERGLOW=off`
UNDERGLOW ?= yes
ifneq ($(strip $(UNDERGLOW)), yes)
OPT_DEFS += -DID27_DISABLE_UNDERGLOW
endif

View file

@ -0,0 +1,41 @@
# IDOBAO Montex V2
![MONTEX V2](https://i.imgur.com/uHEispxh.png)
A hotswap RGB numpad from IDOBAO.
## Numeric Keypad
* Keyboard Maintainer:
- [IBNobody](https://github.com/IBNobody)
- [vinorodrigues](https://github.com/vinorodrigues)
* Hardware Supported: **IDOBAO Montex V2**
* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=montex*)
## Layout
![](https://idobao.github.io/kle/idobao-id27-v2.png)
## Compiling and Flashing
Make example for this keyboard (after setting up your build environment):
make idobao/montex/v2:default
Flashing example for this keyboard:
make idobao/montex/v2:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.<br>
Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `RESET` if it is available

View file

@ -0,0 +1,5 @@
# This file intentionally mostly left blank
# ** settings are data driven & stored in `info.json` **
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

82
keyboards/idobao/montex/v2/v2.c Executable file
View file

@ -0,0 +1,82 @@
// Copyright 2022 IBNobody (@IBNobody)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "v2.h"
#define __ NO_LED
#ifdef RGB_MATRIX_ENABLE
/* Under-, Per-key
*
* 4 3 2 1 0
*
* 5 6 7 8 9
*
* 14 13 12 11
* 10
* 15 16 17 18
*
* 23 22 21 20
* 19
* 24 25 26
*
*
* Underglow (from top / [Esc] = top left)
*
*
*
* 29 30
*
*
*
*
*
* 28 27
*
*
*
*/
led_config_t g_led_config = { {
// Key Matrix to LED Index
// Montex v2 WS2812 are laid in a Z-shape with index 0 = top-right
// Based on: https://xelus.netlify.app/guides/KLE_to_RGB_parser
{ 4, 3, 2, 1, 0},
{ 5, 6, 7, 8, 9},
{ 14, 13, 12, 11, 10},
{ 15, 16, 17, 18, __},
{ 23, 22, 21, 20, __},
{ 24, 25, 26, 19, __}
}, {
// LED Index to Physical Position
// per-key
// Based on: https://xelus.netlify.app/guides/KLE_to_RGB_parser
{224,0 }, {168,0 }, {112,0 }, { 56,0 }, { 0,0 }, // top row
{ 0,17 }, { 56,17 }, {112,17 }, {168,17 }, {224,17 }, // num-lk & /*- (reversed)
{224,35 }, {168,29 }, {112,29 }, { 56,29 }, { 0,29 }, // 789+
{ 0,41 }, { 56,41 }, {112,41 }, {168,41 }, // 456 (reversed)
{224,58 }, {168,52 }, {112,52 }, { 56,52 }, // 123
{ 0,52 }, { 0,64 }, { 84,64 }, {168,64 } // 0. & enter (reversed)
// underglow LEDs (positions pushed to nearest edge to match edge key colors)
#ifndef ID27_DISABLE_UNDERGLOW
, {224,64 }, { 0,64 },
{ 0,0 }, { 224,0 }
#endif
}, {
// LED Index to Flag
// LED_FLAG_MODIFIER 0x01, LED_FLAG_UNDERGLOW 0x02, LED_FLAG_KEYLIGHT 0x04, LED_FLAG_INDICATOR 0x08
// per-key
1, 1, 1, 1, 1,
4, 4, 4, 4, 4,
4, 4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4
// underglow
#ifndef ID27_DISABLE_UNDERGLOW
, 2, 2, 2, 2
#endif
} };
#endif

View file

@ -0,0 +1,6 @@
// Copyright 2022 IBNobody (@IBNobody)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"