Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2022-07-02 12:49:19 +00:00
commit fcc14b8838
14 changed files with 816 additions and 0 deletions

View File

@ -108,6 +108,8 @@ However, this does rely on the bootloader being set by the keyboard. If this inf
In this case, you'll have to fall back on specifying the bootloader. See the [Flashing Firmware](flashing.md) Guide for more details. In this case, you'll have to fall back on specifying the bootloader. See the [Flashing Firmware](flashing.md) Guide for more details.
!> If your bootloader is not detected by `qmk flash`, try running `qmk doctor` for suggestions on how to fix common problems.
## Test It Out! ## Test It Out!
Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out! Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!

View File

@ -0,0 +1,102 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* NB: Most configuration information resides in `info.json` */
/* ----------------
* RGB Matrix stuff
* ---------------- */
#define RGB_DI_PIN B7
// RGB Matrix config
#if defined(RGB_DI_PIN) && defined(RGB_MATRIX_ENABLE)
/* Denwir case is solid back. Please disable underglow at compile with compile command line:
*
* `make idobao/id63:default UNDERGLOW=off`
*
* */
#ifndef ID63_DISABLE_UNDERGLOW
#define DRIVER_LED_TOTAL 75
#else
#define DRIVER_LED_TOTAL (75 - 12)
#endif
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
#define RGB_MATRIX_KEYPRESSES
// do not enable RGB_MATRIX_FRAMEBUFFER_EFFECTS as these effects don't work will with this LED placement
// changes to this list will break the sequence set in the VIA `json` file.
/* Standard animation set */
#define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
#define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
#define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
#define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
#define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
#define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
#define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
#define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
#define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
#define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
#define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // ** do not enable
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW // ** do not enable
// #define ENABLE_RGB_MATRIX_PIXEL_RAIN // ** do not enable
/* RGB_MATRIX_FRAMEBUFFER_EFFECTS */
// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP // ** do not enable
// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN // ** do not enable
/* RGB_MATRIX_KEYPRESSES */
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
#define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
#define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
#define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
#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,68 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "id63.h"
#define __ NO_LED
#ifdef RGB_MATRIX_ENABLE
/* Pre-key LED addresses
*
* 62 61 60 59 58 57 56 55 54 53 52 51 50 49
*
* 48 47 46 45 44 43 42 41 40 39 38 37 36 35
*
* 34 33 32 31 30 29 28 27 26 25 24 23 22
*
* 21 20 19 18 17 16 15 14 13 12 11 10 9
*
* 8 7 6 5 4 3 2 1 0
*
*
* Underglow LED addresses (as seen from top / [Esc] = top left)
*
* 63 64 65 66 67 68
*
*
* 74 73 72 71 70 69
*
*/
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49 },
{ 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35 },
{ 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, __, 22 },
{ 21, __, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9 },
{ 8, 7, __, 6, __, __, 5, __, __, 4, 3, 2, 1, 0 },
}, {
// LED Index to Physical Position
// generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
/* NB: Reverse & upside-down order! */
{224,64 }, {208,64 }, {192,64 }, {176,64 }, {160,64 }, {102,64 }, { 42,64 }, { 22,64 }, { 2,64 },
{224,48 }, {208,48 }, {186,48 }, {164,48 }, {148,48 }, {132,48 }, {116,48 }, {100,48 }, { 84,48 }, { 68,48 }, { 52,48 }, { 36,48 }, { 10,48 },
{214,32 }, {188,32 }, {172,32 }, {156,32 }, {140,32 }, {124,32 }, {108,32 }, { 92,32 }, { 76,32 }, { 60,32 }, { 44,32 }, { 28,32 }, { 6,32 },
{220,16 }, {200,16 }, {184,16 }, {168,16 }, {152,16 }, {136,16 }, {120,16 }, {104,16 }, { 88,16 }, { 72,16 }, { 56,16 }, { 40,16 }, { 24,16 }, { 4,16 },
{216,0 }, {192,0 }, {176,0 }, {160,0 }, {144,0 }, {128,0 }, {112,0 }, { 96,0 }, { 80,0 }, { 64,0 }, { 48,0 }, { 32,0 }, { 16,0 }, { 0,0 }
// underglow LEDs (positions pushed to nearest edge to match edge key colors)
#ifndef ID63_DISABLE_UNDERGLOW
, { 0,0 }, { 45,0 }, { 90,0 }, {134,0 }, {179,0 }, {224,0 },
{224,64 }, {179,64 }, {134,64 }, { 90,64 }, { 45,64 }, { 0,64 }
#endif
}, {
// LED Index to Flag
/* NB: Reverse & upside-down order! */
4, 4, 4, 1, 1, 4, 1, 1, 1,
1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
// underglow LEDs
#ifndef ID63_DISABLE_UNDERGLOW
, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2
#endif
} };
#endif // RGB_MATRIX_ENABLE

View File

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

View File

@ -0,0 +1,102 @@
{
"manufacturer": "IDOBAO",
"keyboard_name": "ID63",
"maintainer": "vinorodrigues",
"bootloader": "atmel-dfu",
"diode_direction": "COL2ROW",
"debounce": 5,
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"backlight": false,
"rgblight": false
},
"matrix_pins": {
"cols": ["C7", "F6", "F5", "F4", "F1", "B3", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7"],
"rows": ["B0", "B1", "B2", "E6", "F7"]
},
"processor": "atmega32u4",
"url": "https://idobao.net/search?type=product&q=id63*",
"usb": {
"device_version": "1.0.0",
"pid": "0x0063",
"vid": "0x6964"
},
"layouts": {
"LAYOUT_63_ansi": {
"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": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [0, 10], "x": 10, "y": 0 },
{ "matrix": [0, 11], "x": 11, "y": 0 },
{ "matrix": [0, 12], "x": 12, "y": 0 },
{ "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{ "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{ "matrix": [1, 1], "x": 1.5, "y": 1 },
{ "matrix": [1, 2], "x": 2.5, "y": 1 },
{ "matrix": [1, 3], "x": 3.5, "y": 1 },
{ "matrix": [1, 4], "x": 4.5, "y": 1 },
{ "matrix": [1, 5], "x": 5.5, "y": 1 },
{ "matrix": [1, 6], "x": 6.5, "y": 1 },
{ "matrix": [1, 7], "x": 7.5, "y": 1 },
{ "matrix": [1, 8], "x": 8.5, "y": 1 },
{ "matrix": [1, 9], "x": 9.5, "y": 1 },
{ "matrix": [1, 10], "x": 10.5, "y": 1 },
{ "matrix": [1, 11], "x": 11.5, "y": 1 },
{ "matrix": [1, 12], "x": 12.5, "y": 1 },
{ "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 },
{ "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1.75, "y": 2 },
{ "matrix": [2, 2], "x": 2.75, "y": 2 },
{ "matrix": [2, 3], "x": 3.75, "y": 2 },
{ "matrix": [2, 4], "x": 4.75, "y": 2 },
{ "matrix": [2, 5], "x": 5.75, "y": 2 },
{ "matrix": [2, 6], "x": 6.75, "y": 2 },
{ "matrix": [2, 7], "x": 7.75, "y": 2 },
{ "matrix": [2, 8], "x": 8.75, "y": 2 },
{ "matrix": [2, 9], "x": 9.75, "y": 2 },
{ "matrix": [2, 10], "x": 10.75, "y": 2 },
{ "matrix": [2, 11], "x": 11.75, "y": 2 },
{ "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 },
{ "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25 },
{ "matrix": [3, 2], "x": 2.25, "y": 3 },
{ "matrix": [3, 3], "x": 3.25, "y": 3 },
{ "matrix": [3, 4], "x": 4.25, "y": 3 },
{ "matrix": [3, 5], "x": 5.25, "y": 3 },
{ "matrix": [3, 6], "x": 6.25, "y": 3 },
{ "matrix": [3, 7], "x": 7.25, "y": 3 },
{ "matrix": [3, 8], "x": 8.25, "y": 3 },
{ "matrix": [3, 9], "x": 9.25, "y": 3 },
{ "matrix": [3, 10], "x": 10.25, "y": 3 },
{ "matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.75 },
{ "matrix": [3, 12], "x": 13, "y": 3 },
{ "matrix": [3, 13], "x": 14, "y": 3 },
{ "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
{ "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
{ "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
{ "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25 },
{ "matrix": [4, 9], "x": 10, "y": 4 },
{ "matrix": [4, 10], "x": 11, "y": 4 },
{ "matrix": [4, 11], "x": 12, "y": 4 },
{ "matrix": [4, 12], "x": 13, "y": 4 },
{ "matrix": [4, 13], "x": 14, "y": 4 }
]
}
}
}

View File

@ -0,0 +1,48 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc 1 2 3 4 5 6 7 8 9 0 - = Backspc
*
* Tab Q W E R T Y U I O P [ ] \
*
* Caps A S D F G H J K L ; ' Enter
*
* Shift Z X C V B N M , . Shift Up /
*
* CtrlWin Alt Fn MnuLf Dn Rt
*
*/
[0] = LAYOUT_63_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* ~ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 Del
*
* togup modhu+hu-sa+sa-br+br-prnslkpus Ins
*
* lf dn rt sp+sp-
*
* RstNKR PUp
*
* HomPDnEnd
*
*/
[1] = LAYOUT_63_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, QK_BOOT, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
)
};

View File

@ -0,0 +1,7 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/* Denwir D60 has solid back case - no underglow LED's are visible. */
#define ID63_DISABLE_UNDERGLOW

View File

@ -0,0 +1,359 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// Copyright 2022 IDOBAO (@idobaokb)
// SPDX-License-Identifier: GPL-2.0-or-later
/* ------------------------------------------------------------------
* This is the IDOBAO factory default keymap ;)
* ------------------------------------------------------------------ */
#include QMK_KEYBOARD_H
#include "version.h"
#ifdef RGB_MATRIX_ENABLE
typedef union {
uint32_t raw;
struct {
bool rgb_disable_perkey:1;
#ifndef ID63_DISABLE_UNDERGLOW
bool rgb_disable_underglow:1;
#endif // ID63_DISABLE_UNDERGLOW
};
} user_config_t;
#endif // RGB_MATRIX_ENABLE
enum {
_BASE = 0,
_FN1,
_FN2,
_FN3
};
enum {
KC_MCON = USER00, // macOS Open Mission Control
KC_LPAD, // macOS Open Launchpad
#ifdef RGB_MATRIX_ENABLE
RGB_TPK, // Toggle Per-Key
#ifndef ID63_DISABLE_UNDERGLOW
RGB_TUG, // Toggle Underglow
#endif // ID63_DISABLE_UNDERGLOW
#endif // RGB_MATRIX_ENABLE
KB_VRSN = USER09 // debug, type version
};
#ifndef RGB_MATRIX_ENABLE
#define RGB_TPK _______
#define RGB_TUG _______
#else
#ifdef ID63_DISABLE_UNDERGLOW
#define RGB_TUG _______
#endif // ID63_DISABLE_UNDERGLOW
#endif // RGB_MATRIX_ENABLE
enum macos_consumer_usages {
_AC_SHOW_ALL_WINDOWS = 0x29F, // mapped to KC_MCON
_AC_SHOW_ALL_APPS = 0x2A0 // mapped to KC_LPAD
};
/* Special Keys */
#define SK_LT1C LT(_FN1, KC_CAPS) // Layer Tap 1, i.e., Tap = Caps Lock, Hold = Layer 1
#define SK_LT2A LT(_FN2, KC_APP) // Layer Tap 2, i.e., Tap = Menu, Hold = Layer 2
/* key matrix */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc 1 2 3 4 5 6 7 8 9 0 - = Backspc
*
* Tab Q W E R T Y U I O P [ ] \
*
* *Caps* A S D F G H J K L ; ' Enter *Caps* => Tap = Caps Lock, Hold = Layer 1 (Fn1)
*
* Shift Z X C V B N M , . Shift Up /
*
* CtrlWin Alt Fn1*M*Lf Dn Rt *M* => Tap = Menu, Hold = Layer 2 (Fn2)
*
*/
[_BASE] = LAYOUT_63_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
SK_LT1C, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, FN_MO13, SK_LT2A, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* ~ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 Del
*
* TogHu+Sa+Br+Sp+prnslkpus Ins
*
* Caps ModHu-Sa-Br-Sp-
*
* VerRstNKR PUp /
*
* HomPDnEnd
*
*/
[_FN1] = LAYOUT_63_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, _______, KC_UP, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, KB_VRSN, QK_BOOT, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
_______, _______, _______, _______, _______, MO(_FN3), KC_HOME, KC_PGDN, KC_END
),
[_FN2] = LAYOUT_63_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCON, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_POWER,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, MO(_FN3), _______, _______, _______, _______
),
[_FN3] = LAYOUT_63_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
uint8_t mod_state;
bool delkey_registered;
#ifdef RGB_MATRIX_ENABLE
/*
* RGB Stuff
*/
#define ID63_CAPS_LOCK_KEY_INDEX 34 // position of Caps Lock key
#define ID63_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#undef ID63_CAPS_LOCK_MAX_BRIGHTNESS
#define ID63_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
#endif
#define ID63_CAPS_LOCK_VAL_STEP 8
#ifdef RGB_MATRIX_VAL_STEP
#undef ID63_CAPS_LOCK_VAL_STEP
#define ID63_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
#endif
user_config_t user_config;
void id63_update_rgb_mode(void) {
uint8_t flags = LED_FLAG_ALL;
if (user_config.rgb_disable_perkey
#ifndef ID63_DISABLE_UNDERGLOW
&& user_config.rgb_disable_underglow
#endif // ID63_DISABLE_UNDERGLOW
) {
flags = 0; // All OFF Condition
} else {
if (user_config.rgb_disable_perkey) {
#ifndef ID63_DISABLE_UNDERGLOW
flags = LED_FLAG_UNDERGLOW | 0xF0;
#else
flags = 0xF0;
#endif // ID63_DISABLE_UNDERGLOW
}
#ifndef ID63_DISABLE_UNDERGLOW
if (user_config.rgb_disable_underglow) {
flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
}
#endif // ID63_DISABLE_UNDERGLOW
}
if (flags == 0) {
rgb_matrix_set_flags(0);
rgb_matrix_set_color_all(HSV_OFF);
} else {
rgb_matrix_set_flags(flags);
rgb_matrix_enable_noeeprom();
}
eeconfig_update_kb(user_config.raw); // write back to EEPROM
}
void id63_get_rgb_mode(void) {
user_config.raw = eeconfig_read_kb(); // read config from EEPROM
id63_update_rgb_mode();
}
void keyboard_post_init_user(void) {
id63_get_rgb_mode();
}
void eeconfig_init_user(void) {
// EEPROM is getting reset!
user_config.raw = 0;
id63_update_rgb_mode();
}
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
// Caps Lock key stuff
if (host_keyboard_led_state().caps_lock) {
uint8_t v = rgb_matrix_get_val();
if (v < ID63_CAPS_LOCK_VAL_STEP) {
v = ID63_CAPS_LOCK_VAL_STEP;
} else if (v < (ID63_CAPS_LOCK_MAX_BRIGHTNESS - ID63_CAPS_LOCK_VAL_STEP)) {
if (!user_config.rgb_disable_perkey) {
v += ID63_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
} // else leave as current brightness
} else {
v = ID63_CAPS_LOCK_MAX_BRIGHTNESS;
}
rgb_matrix_set_color(ID63_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
} else if (user_config.rgb_disable_perkey) {
rgb_matrix_set_color(ID63_CAPS_LOCK_KEY_INDEX, HSV_OFF); // off
}
}
#endif // RGB_MATRIX_ENABLE
/*
* Extra keys and RGB Toggle handler
*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
mod_state = get_mods();
switch (keycode) {
// handle RGB toggle key - this ensures caps lock always works
#ifdef RGB_MATRIX_ENABLE
case QK_BOOT:
if (record->event.pressed) {
rgb_matrix_set_color_all(RGB_MATRIX_MAXIMUM_BRIGHTNESS, 0, 0); // All red
rgb_matrix_driver.flush();
}
return true;
case RGB_TOG:
/* roll through the LED modes
* | Level | Per-key | Underglow |
* |-------------|---------|-----------|
* | 0 (default) | on | on |
* | 1 | OFF | on |
* | 2 | on | OFF |
* | 3 | OFF | OFF |
*
* for ID63_DISABLE_UNDERGLOW
* | Level | Per-key |
* |-------------|---------|
* | 0 (default) | on |
* | 1 | OFF |
*/
if (record->event.pressed) {
if ( (!user_config.rgb_disable_perkey)
#ifndef ID63_DISABLE_UNDERGLOW
&& (!user_config.rgb_disable_underglow)
#endif // ID63_DISABLE_UNDERGLOW
) {
user_config.rgb_disable_perkey = 1;
#ifndef ID63_DISABLE_UNDERGLOW
} else if ( user_config.rgb_disable_perkey && (!user_config.rgb_disable_underglow) ) {
user_config.rgb_disable_perkey = 0;
user_config.rgb_disable_underglow = 1;
} else if ( (!user_config.rgb_disable_perkey) && user_config.rgb_disable_underglow ) {
user_config.rgb_disable_perkey = 1;
#endif // ID63_DISABLE_UNDERGLOW
} else {
user_config.rgb_disable_perkey = 0;
#ifndef ID63_DISABLE_UNDERGLOW
user_config.rgb_disable_underglow = 0;
#endif // ID63_DISABLE_UNDERGLOW
}
id63_update_rgb_mode();
}
return false;
case RGB_TPK:
if (record->event.pressed) {
user_config.rgb_disable_perkey ^= 1;
id63_update_rgb_mode();
}
return false;
#ifndef ID63_DISABLE_UNDERGLOW
case RGB_TUG:
if (record->event.pressed) {
user_config.rgb_disable_underglow ^= 1;
id63_update_rgb_mode();
}
return false;
#endif // ID63_DISABLE_UNDERGLOW
case EE_CLR:
if (!record->event.pressed) { // on release
id63_get_rgb_mode();
}
return true; // let this one pass on
#endif // RGB_MATRIX_ENABLE
// print firmware version
case KB_VRSN:
if (!get_mods()) {
if (!record->event.pressed) {
SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " (v" QMK_VERSION ")");
}
}
return false;
// @see: https://github.com/qmk/qmk_firmware/issues/10111#issuecomment-752300353
case KC_MCON:
if (record->event.pressed) {
host_consumer_send(_AC_SHOW_ALL_WINDOWS);
} else {
host_consumer_send(0);
}
return false;
case KC_LPAD:
if (record->event.pressed) {
host_consumer_send(_AC_SHOW_ALL_APPS);
} else {
host_consumer_send(0);
}
return false;
// Shift + Backspace = Delete, see: https://docs.qmk.fm/#/feature_advanced_keycodes?id=shift-backspace-for-delete
case KC_BSPC:
if (record->event.pressed) {
if (mod_state & MOD_MASK_SHIFT) {
del_mods(MOD_MASK_SHIFT);
register_code(KC_DEL);
delkey_registered = true;
set_mods(mod_state);
return false;
}
} else {
if (delkey_registered) {
unregister_code(KC_DEL);
delkey_registered = false;
return false;
}
}
return true;
default:
return true; /* Process all other keycodes normally */
}
}

View File

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

View File

@ -0,0 +1,64 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc 1 2 3 4 5 6 7 8 9 0 - = Backspc
*
* Tab Q W E R T Y U I O P [ ] \
*
* Caps A S D F G H J K L ; ' Enter
*
* Shift Z X C V B N M , . Shift Up /
*
* CtrlWin Alt Fn MnuLf Dn Rt
*
*/
[0] = LAYOUT_63_ansi(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* ~ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 Del
*
* togup modhu+hu-sa+sa-br+br-prnslkpus Ins
*
* Caps lf dn rt sp+sp-
*
* RstNRK PUp
*
* HomPDnEnd
*
*/
[1] = LAYOUT_63_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, QK_BOOT, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT_63_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_63_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

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

View File

@ -0,0 +1,8 @@
# The Denwir D60 case has a sealed/solid undercase,
# this enables switching off thoes LEDs
# Usage: `make idobao/id63:default UNDERGLOW=off`
UNDERGLOW ?= yes
ifneq ($(strip $(UNDERGLOW)), yes)
OPT_DEFS += -DID63_DISABLE_UNDERGLOW
endif

View File

@ -0,0 +1,39 @@
# IDOBAO ID63
![IDOBAO ID63](https://i.imgur.com/DxlOr9xh.png)
*The ID63 Keyboard Kit brings a tailored gasket-mounted build to an ultra-compact 60% layout with a unique ribbed side texture.*
## ANSI Support
* Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
* Hardware Supported: **IDOBAO ID63**
* Hardware Availability: [Drop.com](https://drop.com/buy/idobao-id63-60-gasket-hot-swappable-aluminum-mechanical-keyboard-kit) & [IDOBAO.net](https://idobao.net/search?type=product&q=id63*)
## Layout
![IDOBAO ID63](https://idobao.github.io/kle/idobao-id63.png)
## Compiling and Flashing
Make example for this keyboard (after setting up your build environment):
qmk compile -kb idobao/id63 -km default
*{..or..}*
make idobao/id63:default
Flashing example for this keyboard:
make idobao/id63: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 [Escape] key 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`, default is [Fn]+[B]

View File

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