~ruther/qmk_firmware

8e128452db4a5c93f0214a1f6ea38e213445235c — peepeetee 3 years ago 8e5f8a5
[Keyboard] Idobao Montex V2(RGB) (#15865)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Christian Hofstede <4440939+chofstede@users.noreply.github.com>
Co-authored-by: Vino Rodrigues <github@m.vinorodrigues.com>
Co-authored-by: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com>
A keyboards/idobao/montex/v1rgb/config.h => keyboards/idobao/montex/v1rgb/config.h +95 -0
@@ 0,0 1,95 @@
// Copyright 2022 peepeetee (@peepeetee)
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID       0x6964  // "id"
#define PRODUCT_ID      0x0127
#define DEVICE_VER      0x0001
#define MANUFACTURER    IDOBAO
#define PRODUCT         Montex RGB

/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5

/*
 * Keyboard Matrix Assignments
 *
 * Change this to how you wired your keyboard
 * COLS: AVR pins used for columns, left to right
 * ROWS: AVR pins used for rows, top to bottom
 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
 *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
 */
#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5, C6 }
#define MATRIX_COL_PINS { D5, D3, D2, D1, D0 }

#define DIODE_DIRECTION ROW2COL

#define RGB_DI_PIN B1

#if defined(RGB_DI_PIN) && defined(RGB_MATRIX_ENABLE)

    // The number of LEDs connected
    #define DRIVER_LED_TOTAL 31

    #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
    #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

A keyboards/idobao/montex/v1rgb/info.json => keyboards/idobao/montex/v1rgb/info.json +36 -0
@@ 0,0 1,36 @@
{
    "keyboard_name": "IDOBAO MONTEX RGB",
    "layouts": {
        "LAYOUT_numpad_6x5": {
            "layout": [
                { "label": "K00 (D4,D5)", "x": 0, "y": 0 },
                { "label": "K01 (D4,D3)", "x": 1, "y": 0 },
                { "label": "K02 (D4,D2)", "x": 2, "y": 0 },
                { "label": "K03 (D4,D1)", "x": 3, "y": 0 },
                { "label": "K04 (D4,D0)", "x": 4, "y": 0 },
                { "label": "K10 (D6,D5)", "x": 0, "y": 1 },
                { "label": "K11 (D6,D3)", "x": 1, "y": 1 },
                { "label": "K12 (D6,D2)", "x": 2, "y": 1 },
                { "label": "K13 (D6,D1)", "x": 3, "y": 1 },
                { "label": "K14 (D6,D0)", "x": 4, "y": 1 },
                { "label": "K20 (D7,D5)", "x": 0, "y": 2 },
                { "label": "K21 (D7,D3)", "x": 1, "y": 2 },
                { "label": "K22 (D7,D2)", "x": 2, "y": 2 },
                { "label": "K23 (D7,D1)", "x": 3, "y": 2 },
                { "label": "K24 (D7,D0)", "x": 4, "y": 2, "h": 2 },
                { "label": "K30 (B4,D5)", "x": 0, "y": 3 },
                { "label": "K31 (B4,D3)", "x": 1, "y": 3 },
                { "label": "K32 (B4,D2)", "x": 2, "y": 3 },
                { "label": "K33 (B4,D1)", "x": 3, "y": 3 },
                { "label": "K40 (B5,D5)", "x": 0, "y": 4 },
                { "label": "K41 (B5,D3)", "x": 1, "y": 4 },
                { "label": "K42 (B5,D2)", "x": 2, "y": 4 },
                { "label": "K43 (B5,D1)", "x": 3, "y": 4 },
                { "label": "K53 (C6,D1)", "x": 4, "y": 4, "h": 2 },
                { "label": "K50 (C6,D5)", "x": 0, "y": 5 },
                { "label": "K51 (C6,D3)", "x": 1, "y": 5, "w": 2 },
                { "label": "K52 (C6,D2)", "x": 3, "y": 5 }
            ]
        }
    }
}

A keyboards/idobao/montex/v1rgb/keymaps/default/keymap.c => keyboards/idobao/montex/v1rgb/keymaps/default/keymap.c +54 -0
@@ 0,0 1,54 @@
// Copyright 2022 peepeetee (@peepeetee)
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*
     * ┌───┬───┬───┬───┬───┐
     * │Esc│Tab│ F1│Cal│Bsp│
     * ├───┼───┼───┼───┼───┤
     * │Ctr│Num│ / │ * │ - │
     * ├───┼───┼───┼───┼───┤
     * │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
    ),

    /*
     * ┌───┬───┬───┬───┬───┐
     * │Rst│TOG│MOD│PSc│SLk│
     * ├───┼───┼───┼───┼───┤
     * │Hu+│   │Sp-│Sp+│Br-│
     * ├───┼───┼───┼───┼───┤
     * │Hu-│Hom│ ↑ │PgU│   │
     * ├───┼───┼───┼───┤Br+│
     * │St+│ ← │   │ → │   │
     * ├───┼───┼───┼───┼───┤
     * │St-│End│ ↓ │PgD│   │
     * ├───┼───┴───┼───┤Ent│
     * │mo1│Insert │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
    )
};

A keyboards/idobao/montex/v1rgb/keymaps/default/readme.md => keyboards/idobao/montex/v1rgb/keymaps/default/readme.md +3 -0
@@ 0,0 1,3 @@
# The default keymap for RGB Version

![](https://idobao.github.io/kle/idobao-id27-v2.png)

A keyboards/idobao/montex/v1rgb/keymaps/via/keymap.c => keyboards/idobao/montex/v1rgb/keymaps/via/keymap.c +94 -0
@@ 0,0 1,94 @@
// Copyright 2022 peepeetee (@peepeetee)
// 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
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /*
     * ┌───┌───┬───┬───┬───┐
     * │Esc│Tab│ F1│Cal│Bsp│
     * ├───┼───┼───┼───┼───┤
     * │Ctr│Num│ / │ * │ - │
     * ├───┼───┼───┼───┼───┤
     * │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
    ),

    /*
     * ┌───┬───┬───┬───┬───┐
     * │Rst│TOG│MOD│PSs│SLk│
     * ├───┼───┼───┼───┼───┤
     * │Hu+│   │Sp-│Sp+│Br-│
     * ├───┼───┼───┼───┼───┤
     * │Hu-│Hom│ ↑ │PgU│   │
     * ├───┼───┼───┼───┤Br+│
     * │St+│ ← │   │ → │   │
     * ├───┼───┼───┼───├───┤
     * │St-│End│ ↓ │PgD│   │
     * ├───┼───┴───┼───┤Ent│
     * │mo1│Insert │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
    ),

    /*
     * ┌───┬───┬───┬───┬───┐
     * │   │   │   │   │   │
     * ├───┼───┼───┼───┼───┤
     * │   │   │   │   │   │
     * ├───┼───┼───┼───┼───┤
     * │   │   │   │   │   │
     * ├───┼───┼───┼───┤   │
     * │   │   │   │   │   │
     * ├───┼───┼───┼───├───┤
     * │   │   │   │   │   │
     * ├───┼───┴───┼───┤   │
     * │   │       │   │   │
     * └───┴───────┴───┴───┘
     */
    [_EMPTY2] = LAYOUT_numpad_6x5(
        _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______,
        _______, _______, _______, _______,
        _______, _______, _______, _______, _______,
        _______, _______,           _______
    ),

    [_EMPTY3] = LAYOUT_numpad_6x5(
        _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______,
        _______, _______, _______, _______,
        _______, _______, _______, _______, _______,
        _______, _______,           _______
    )
};

A keyboards/idobao/montex/v1rgb/keymaps/via/readme.md => keyboards/idobao/montex/v1rgb/keymaps/via/readme.md +3 -0
@@ 0,0 1,3 @@
# The VIA keymap for RGB Version

![](https://idobao.github.io/kle/idobao-id27-v2.png)

A keyboards/idobao/montex/v1rgb/keymaps/via/rules.mk => keyboards/idobao/montex/v1rgb/keymaps/via/rules.mk +2 -0
@@ 0,0 1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

A keyboards/idobao/montex/v1rgb/readme.md => keyboards/idobao/montex/v1rgb/readme.md +30 -0
@@ 0,0 1,30 @@
# IDOBAO MONTEX RGB

![MONTEX RGB](https://idobao.github.io/assets/img/idobao-id27.png)

A hotswap RGB numpad from IDOBAO.

* Keyboard Maintainer:
  - [peepeetee](https://github.com/peepeetee)
  - [vinorodrigues](https://github.com/vinorodrigues)
  - [willi-on-fire](https://github.com/willi-on-fire)
* Hardware Supported: IDOBAO MONTEX RGB
* Hardware Availability: [Drop](https://drop.com/buy/idobao-montex-numpad-hotswappable-kit), [AliExpress](https://www.aliexpress.com/item/1005003885788698.html) & [IDOBAO.net](https://idobao.net/collections/20-layout/products/idobao-montex-pad-hot-swappable-keyboard-kit-%E7%9A%84%E5%89%AF%E6%9C%AC)

Make example for this keyboard (after setting up your build environment):

    make idobao/montex/v1rgb:default

Flashing example for this keyboard:

    make idobao/montex/v1rgb: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. 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 [Esc]) 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

A keyboards/idobao/montex/v1rgb/rules.mk => keyboards/idobao/montex/v1rgb/rules.mk +21 -0
@@ 0,0 1,21 @@
# MCU name
MCU = atmega32u4

# Bootloader selection
BOOTLOADER = atmel-dfu

# Build Options
#   change yes to no to disable
#
BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes       # Mouse keys
EXTRAKEY_ENABLE = yes       # Audio control and System control
CONSOLE_ENABLE = no         # Console for debug
COMMAND_ENABLE = no         # Commands for debug and configuration
NKRO_ENABLE = no            # Enable N-Key Rollover
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

LAYOUTS = numpad_6x5

A keyboards/idobao/montex/v1rgb/v1rgb.c => keyboards/idobao/montex/v1rgb/v1rgb.c +58 -0
@@ 0,0 1,58 @@
// Copyright 2022 peepeetee (@peepeetee)
// SPDX-License-Identifier: GPL-2.0-or-later

#include "v1rgb.h"

#ifdef RGB_MATRIX_ENABLE

/* WS2812 indices always start at 0
 * underglow = 0-3
 * note: starting point of 4 and jump from 6 to 7
 * ┌───┌───┐───┬───┬───┐
 * │ 6 │ 5 │ 4 │30 │29 │
 * ├───┼───┘───┼───┼───┤
 * │24 │25 │26 │27 │28 │
 * ├───┼───┼───┼───┼───┤
 * │23 │22 │21 │20 │19 │
 * ├───┼───┼───┼───┤   │
 * │15 │16 │17 │18 │   │
 * ├───┼───┼───┼───┤───┤
 * │14 │13 │12 │11 │10 │
 * ├───┼───┴───┼───┤   │
 * │ 7 │   8   │ 9 │   │
 * └───┴───────┴───┘───┘
 */

led_config_t g_led_config = { {
    // Key Matrix to LED Index
    { 6,  5,  4,  30, 29},
    { 24, 25, 26, 27, 28},
    { 23, 22, 21, 20, 19},
    { 15, 16, 17, 18, NO_LED},
    { 14, 13, 12, 11, NO_LED},
    { 7,  8,  9,  10, NO_LED}
}, {
    // LED Index to Physical Position
    /* underglow: because this is under the kb, you want the colors on the edge (corners) of the acrylic plate */
    { 224,0  }, { 224,64},  {   0,64 }, {  0,0   },              // 0-3 (underglow)
    /* per-key: origins generated from https://xelus.netlify.app/guides/KLE_to_RGB_parser */
    { 112,0  }, {  56,0  }, {   0,0  }, /* ---- */  /* ---- */   // 4-6 (top row middle to left)
    {   0,64 }, {  84,64 }, { 168,64 },                          // 7-9 (jump to bottom left)
    { 224,58 }, { 168,41 }, { 112,41 }, {  56,41 }, {   0,41 },  // 10-14 (flow Z pattern upwards...)
    {   0,29 }, {  56,29 }, { 112,29 }, { 168,29 },              // 15-18
    { 224,35 }, { 168,29 }, { 112,29 }, {  56,29 }, {   0,29 },  // 19-23
    {   0,17 }, {  56,17 }, { 112,17 }, { 168,17 }, { 224,17 },  // 24-28
    /* ---- */  /* ---- */  /* ---- */  { 224,0  }, { 168,0  }   // 29-30 (end at top)
}, {
    // LED Index to Flag
    2, 2, 2, 2,     // 0 1 2 3 (underglow)
    1, 1, 1,        // 4 5 6
    4, 4, 4, 4,     // 7 - 10
    4, 4, 4, 4,     //11 - 14
    4, 4, 4, 4,     //15 - 18
    4, 4, 4, 4, 4,  //19 - 23
    4, 4, 4, 4, 4,  //24 - 28
    1, 1            //29 30
} };

#endif

A keyboards/idobao/montex/v1rgb/v1rgb.h => keyboards/idobao/montex/v1rgb/v1rgb.h +24 -0
@@ 0,0 1,24 @@
// Copyright 2022 peepeetee (@peepeetee)
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include "quantum.h"

#define ___ KC_NO

#define LAYOUT_numpad_6x5( \
    K00, K01, K02, K03, K04, \
    K10, K11, K12, K13, K14, \
    K20, K21, K22, K23, K24, \
    K30, K31, K32, K33, \
    K40, K41, K42, K43, K53, \
    K50, K51,      K52  \
) { \
    { K00, K01, K02, K03, K04 }, \
    { K10, K11, K12, K13, K14 }, \
    { K20, K21, K22, K23, K24 }, \
    { K30, K31, K32, K33, ___ }, \
    { K40, K41, K42, K43, ___ }, \
    { K50, K51, K52, K53, ___ }, \
}