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>pull/17402/head
@ -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 |
@ -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 } | |||
] | |||
} | |||
} | |||
} |
@ -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 | |||
) | |||
}; |
@ -0,0 +1,3 @@ | |||
# The default keymap for RGB Version | |||
![](https://idobao.github.io/kle/idobao-id27-v2.png) |
@ -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( | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______, _______, | |||
_______, _______, _______, _______, _______, | |||
_______, _______, _______ | |||
) | |||
}; |
@ -0,0 +1,3 @@ | |||
# The VIA keymap for RGB Version | |||
![](https://idobao.github.io/kle/idobao-id27-v2.png) |
@ -0,0 +1,2 @@ | |||
VIA_ENABLE = yes | |||
LTO_ENABLE = yes |
@ -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 |
@ -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 |
@ -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 |
@ -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, ___ }, \ | |||
} |