diff --git a/keyboards/idobao/montex/v2/config.h b/keyboards/idobao/montex/v2/config.h new file mode 100755 index 00000000000..47d43ca458a --- /dev/null +++ b/keyboards/idobao/montex/v2/config.h @@ -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 diff --git a/keyboards/idobao/montex/v2/info.json b/keyboards/idobao/montex/v2/info.json new file mode 100755 index 00000000000..62715ec00a5 --- /dev/null +++ b/keyboards/idobao/montex/v2/info.json @@ -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 } + ] + } + } +} diff --git a/keyboards/idobao/montex/v2/keymaps/default/keymap.c b/keyboards/idobao/montex/v2/keymaps/default/keymap.c new file mode 100755 index 00000000000..b51de4317bc --- /dev/null +++ b/keyboards/idobao/montex/v2/keymaps/default/keymap.c @@ -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] = { + /* + * ┌───┌───┬───┬───┬───┐ + * │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 + ) +}; diff --git a/keyboards/idobao/montex/v2/keymaps/via/config.h b/keyboards/idobao/montex/v2/keymaps/via/config.h new file mode 100755 index 00000000000..40b377f958f --- /dev/null +++ b/keyboards/idobao/montex/v2/keymaps/via/config.h @@ -0,0 +1,6 @@ +// Copyright 2022 IBNobody (@IBNobody) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 diff --git a/keyboards/idobao/montex/v2/keymaps/via/keymap.c b/keyboards/idobao/montex/v2/keymaps/via/keymap.c new file mode 100755 index 00000000000..7f336b7d506 --- /dev/null +++ b/keyboards/idobao/montex/v2/keymaps/via/keymap.c @@ -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] = { + /* + * ┌───┬───┬───┬───┬───┐ + * │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 + ), + + /* 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( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______ + ) +}; diff --git a/keyboards/idobao/montex/v2/keymaps/via/rules.mk b/keyboards/idobao/montex/v2/keymaps/via/rules.mk new file mode 100755 index 00000000000..36b7ba9cbc9 --- /dev/null +++ b/keyboards/idobao/montex/v2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/idobao/montex/v2/post_rules.mk b/keyboards/idobao/montex/v2/post_rules.mk new file mode 100644 index 00000000000..f2d43fa6ac4 --- /dev/null +++ b/keyboards/idobao/montex/v2/post_rules.mk @@ -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 diff --git a/keyboards/idobao/montex/v2/readme.md b/keyboards/idobao/montex/v2/readme.md new file mode 100755 index 00000000000..793507b8f1f --- /dev/null +++ b/keyboards/idobao/montex/v2/readme.md @@ -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.
+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 diff --git a/keyboards/idobao/montex/v2/rules.mk b/keyboards/idobao/montex/v2/rules.mk new file mode 100755 index 00000000000..205f56d5fd0 --- /dev/null +++ b/keyboards/idobao/montex/v2/rules.mk @@ -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 diff --git a/keyboards/idobao/montex/v2/v2.c b/keyboards/idobao/montex/v2/v2.c new file mode 100755 index 00000000000..0f06aa708e8 --- /dev/null +++ b/keyboards/idobao/montex/v2/v2.c @@ -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 diff --git a/keyboards/idobao/montex/v2/v2.h b/keyboards/idobao/montex/v2/v2.h new file mode 100755 index 00000000000..3f486480db6 --- /dev/null +++ b/keyboards/idobao/montex/v2/v2.h @@ -0,0 +1,6 @@ +// Copyright 2022 IBNobody (@IBNobody) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h"