Merge remote-tracking branch 'upstream/develop' into xap

This commit is contained in:
Nick Brassel 2022-07-02 22:33:43 +10:00
commit 31d8978281
38 changed files with 1912 additions and 884 deletions

View file

@ -0,0 +1,76 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "ansi.h"
#define __ NO_LED
#ifdef RGB_MATRIX_ENABLE
/* Per-key LED's
*
* 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65
*
* 64 63 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 (as seen from top)
*
* 80 81 82 83 84 85
*
* 93 86
*
* 92 91 90 89 88 87
*
*/
led_config_t g_led_config = { {
// Key Matrix to LED Index
/* Generated with: https://xelus.netlify.app/guides/KLE_to_RGB_parser */
{ 8, 21, 34, 49, 64, 79, __, __, __, __, __ },
{ 7, __, 33, 48, 63, 78, __, __, __, __, __ },
{ 6, 20, 32, 47, 62, 77, __, __, 35, 50, 65 },
{ 0, 19, 31, 46, 61, 76, 9, __, 36, __, 67 },
{ 1, 18, 30, 45, 60, 75, 10, 22, 37, 52, 68 },
{ 2, 17, 29, 44, 59, 74, 11, 23, 38, 53, 69 },
{ 5, 16, 28, 43, 58, 73, __, __, __, 51, 66 },
{ 3, 15, 27, 42, 57, 72, 12, 24, 39, 54, 70 },
{ 4, 14, 26, 41, 56, 71, 13, 25, 40, 55, __ },
}, {
/* NB: Reversed order */
// per-key
{224,64 }, {209,64 }, {195,64 }, {173,61 }, {151,61 }, { 94,61 }, { 39,61 }, { 20,61 }, { 2,61 },
{209,52 }, {185,49 }, {165,49 }, {151,49 }, {136,49 }, {121,49 }, {106,49 }, { 92,49 }, { 77,49 }, { 62,49 }, { 48,49 }, { 33,49 }, { 9,49 },
{196,38 }, {173,38 }, {158,38 }, {143,38 }, {129,38 }, {114,38 }, { 99,38 }, { 84,38 }, { 70,38 }, { 55,38 }, { 40,38 }, { 26,38 }, { 6,38 },
{224,26 }, {202,26 }, {184,26 }, {169,26 }, {154,26 }, {140,26 }, {125,26 }, {110,26 }, { 95,26 }, { 81,26 }, { 66,26 }, { 51,26 }, { 37,26 }, { 22,26 }, { 4,26 },
{224,15 }, {198,15 }, {176,15 }, {162,15 }, {147,15 }, {132,15 }, {118,15 }, {103,15 }, { 88,15 }, { 73,15 }, { 59,15 }, { 44,15 }, { 29,15 }, { 15,15 }, { 0,15 },
{224,0 }, {206,0 }, {187,0 }, {173,0 }, {158,0 }, {143,0 }, {125,0 }, {110,0 }, { 95,0 }, { 81,0 }, { 62,0 }, { 48,0 }, { 33,0 }, { 18,0 }, { 0,0 },
// underglow
{ 0,0 }, { 45,0 }, { 90,0 }, {134,0 }, {179,0 }, {224,0 },
{224,32 },
{224,64 }, {179,64 }, {134,64 }, { 90,64 }, { 45,64 }, { 0,64 },
{ 0,32 }
}, {
/* NB: Reversed order */
4, 4, 4, 4, 4, 1, 4, 4, 4,
4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
//
2, 2, 2, 2, 2, 2,
2,
2, 2, 2, 2, 2, 2,
2
} };
#endif

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,97 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* --------------------------------
* Bootmagic Lite key configuration
* use the Esc key
* -------------------------------- */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 5
/* ----------------
* RGB Matrix stuff
* ---------------- */
#define RGB_DI_PIN E2
// RGB Matrix config
#if defined(RGB_DI_PIN) && defined(RGB_MATRIX_ENABLE)
#define DRIVER_LED_TOTAL 94
#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
#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
/* don't need `#if`, animation modes themselves check defines
* #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) */
// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
/* #endif // RGB_MATRIX_FRAMEBUFFER_EFFECTS */
/* don't need `#if`, animation modes themselves check defines
* #if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES) */
#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_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
#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,121 @@
{
"manufacturer": "IDOBAO",
"keyboard_name": "IDOBAO ID80v3",
"maintainer": "vinorodrigues",
"bootloader": "atmel-dfu",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"backlight": false,
"rgblight": false
},
"matrix_pins": {
"cols": ["B7", "B3", "B2", "B1", "B0", "E6", "F1", "F4", "F5", "F6", "F7"],
"rows": ["D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4"]
},
"processor": "atmega32u4",
"url": "https://idobao.net/search?type=product&q=id80*",
"usb": {
"vid": "0x6964",
"pid": "0x0380",
"device_version": "3.0.0"
},
"layouts": {
"LAYOUT_80_ansi": {
"layout": [
{ "matrix": [0, 5], "x": 0, "y": 0 },
{ "matrix": [1, 5], "x": 1.25, "y": 0 },
{ "matrix": [2, 5], "x": 2.25, "y": 0 },
{ "matrix": [3, 5], "x": 3.25, "y": 0 },
{ "matrix": [4, 5], "x": 4.25, "y": 0 },
{ "matrix": [5, 5], "x": 5.5, "y": 0 },
{ "matrix": [6, 5], "x": 6.5, "y": 0 },
{ "matrix": [7, 5], "x": 7.5, "y": 0 },
{ "matrix": [8, 5], "x": 8.5, "y": 0 },
{ "matrix": [7, 10], "x": 9.75, "y": 0 },
{ "matrix": [5, 10], "x": 10.75, "y": 0 },
{ "matrix": [4, 10], "x": 11.75, "y": 0 },
{ "matrix": [3, 10], "x": 12.75, "y": 0 },
{ "matrix": [6, 10], "x": 14, "y": 0 },
{ "matrix": [2, 10], "x": 15.25, "y": 0 },
{ "matrix": [0, 4], "x": 0, "y": 1.25 },
{ "matrix": [1, 4], "x": 1, "y": 1.25 },
{ "matrix": [2, 4], "x": 2, "y": 1.25 },
{ "matrix": [3, 4], "x": 3, "y": 1.25 },
{ "matrix": [4, 4], "x": 4, "y": 1.25 },
{ "matrix": [5, 4], "x": 5, "y": 1.25 },
{ "matrix": [6, 4], "x": 6, "y": 1.25 },
{ "matrix": [7, 4], "x": 7, "y": 1.25 },
{ "matrix": [8, 4], "x": 8, "y": 1.25 },
{ "matrix": [8, 9], "x": 9, "y": 1.25 },
{ "matrix": [7, 9], "x": 10, "y": 1.25 },
{ "matrix": [5, 9], "x": 11, "y": 1.25 },
{ "matrix": [4, 9], "x": 12, "y": 1.25 },
{ "matrix": [6, 9], "x": 13, "y": 1.25, "w": 2 },
{ "matrix": [2, 9], "x": 15.25, "y": 1.25 },
{ "matrix": [0, 3], "x":0, "y":2.25, "w":1.5},
{ "matrix": [1, 3], "x":1.5, "y":2.25},
{ "matrix": [2, 3], "x":2.5, "y":2.25},
{ "matrix": [3, 3], "x":3.5, "y":2.25},
{ "matrix": [4, 3], "x":4.5, "y":2.25},
{ "matrix": [5, 3], "x":5.5, "y":2.25},
{ "matrix": [6, 3], "x":6.5, "y":2.25},
{ "matrix": [7, 3], "x":7.5, "y":2.25},
{ "matrix": [8, 3], "x":8.5, "y":2.25},
{ "matrix": [8, 8], "x":9.5, "y":2.25},
{ "matrix": [7, 8], "x":10.5, "y":2.25},
{ "matrix": [5, 8], "x":11.5, "y":2.25},
{ "matrix": [4, 8], "x":12.5, "y":2.25},
{ "matrix": [3, 8], "x":13.5, "y":2.25, "w":1.5},
{ "matrix": [2, 8], "x":15.25, "y":2.25},
{ "matrix": [0, 2], "x":0, "y":3.25, "w":1.75},
{ "matrix": [1, 2], "x":1.75, "y":3.25},
{ "matrix": [2, 2], "x":2.75, "y":3.25},
{ "matrix": [3, 2], "x":3.75, "y":3.25},
{ "matrix": [4, 2], "x":4.75, "y":3.25},
{ "matrix": [5, 2], "x":5.75, "y":3.25},
{ "matrix": [6, 2], "x":6.75, "y":3.25},
{ "matrix": [7, 2], "x":7.75, "y":3.25},
{ "matrix": [8, 2], "x":8.75, "y":3.25},
{ "matrix": [8, 7], "x":9.75, "y":3.25},
{ "matrix": [7, 7], "x":10.75, "y":3.25},
{ "matrix": [5, 7], "x":11.75, "y":3.25},
{ "matrix": [4, 7], "x":12.75, "y":3.25, "w":2.25},
{ "matrix": [0, 1], "x":0, "y":4.25, "w":2.25},
{ "matrix": [2, 1], "x":2.25, "y":4.25},
{ "matrix": [3, 1], "x":3.25, "y":4.25},
{ "matrix": [4, 1], "x":4.25, "y":4.25},
{ "matrix": [5, 1], "x":5.25, "y":4.25},
{ "matrix": [6, 1], "x":6.25, "y":4.25},
{ "matrix": [7, 1], "x":7.25, "y":4.25},
{ "matrix": [8, 1], "x":8.25, "y":4.25},
{ "matrix": [8, 6], "x":9.25, "y":4.25},
{ "matrix": [7, 6], "x":10.25, "y":4.25},
{ "matrix": [5, 6], "x":11.25, "y":4.25},
{ "matrix": [4, 6], "x":12.25, "y":4.25, "w":1.75},
{ "matrix": [3, 6], "x":14.25, "y":4.5},
{ "matrix": [0, 0], "x":0, "y":5.25, "w":1.25},
{ "matrix": [1, 0], "x":1.25, "y":5.25, "w":1.25},
{ "matrix": [2, 0], "x":2.5, "y":5.25, "w":1.25},
{ "matrix": [6, 0], "y":5.25, "w":6.25},
{ "matrix": [8, 0], "x":10, "y":5.25, "w":1.5},
{ "matrix": [7, 0], "x":11.5, "y":5.25, "w":1.5},
{ "matrix": [5, 0], "x":13.25, "y":5.5},
{ "matrix": [4, 0], "x":14.25, "y":5.5},
{ "matrix": [3, 0], "x":15.25, "y":5.5}
]
}
}
}

View file

@ -0,0 +1,56 @@
// 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] = {
/*
*
* EscF1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12Fn1Ins
*
* `~ 1 2 3 4 5 6 7 8 9 0 -_ =+ BackspcHom
*
* Tab Q W E R T Y U I O P [{ ]} \| Del
*
* Caps A S D F G H J K L ;: '" │ Enter │
*
* Shift Z X C V B N M ,< .> /? Shift
*
* CtrlWin Alt Space Alt Ctrl
*
*
*/
[0] = LAYOUT_80_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
KC_GRV, 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_HOME,
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_DEL,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* Rst PScSLkPau Mut
*
* Vl+
*
* Tog ModHu+Hu-Sa+Sa-Br+Br-Sp+Sp- Vl-
*
*
*
* mod NKR
* PUp
*
* HomPDnEnd
*
*/
[1] = LAYOUT_80_ansi(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_RMOD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
)
};

View file

@ -0,0 +1,315 @@
// 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;
bool rgb_disable_underglow:1;
};
} 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
RGB_TUG, // Toggle Underglow
#endif // RGB_MATRIX_ENABLE
KB_VRSN = USER09 // debug, type version
};
#ifndef RGB_MATRIX_ENABLE
#define RGB_TPK _______
#define RGB_TUG _______
#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
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* EscF1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12Fn1Ins
*
* `~ 1 2 3 4 5 6 7 8 9 0 -_ =+ BackspcHom
*
* Tab Q W E R T Y U I O P [{ ]} \| Del
*
* Caps A S D F G H J K L ;: '" │ Enter │
*
* Shift Z X C V B N M ,< .> /? Shift
*
* CtrlWin Alt Space Alt Ctrl
*
*
*/
[_BASE] = LAYOUT_80_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(_FN1), KC_INS,
KC_GRV, 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_HOME,
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_DEL,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* Rst PScSLkPau Mut
*
* Vl+
*
* Tog ModHu+Hu-Sa+Sa-Br+Br-Sp+Sp- Vl-
*
*
*
* modVer NKR
* PUp
*
* HomPDnEnd
*
*/
[_FN1] = LAYOUT_80_ansi(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_RMOD, KB_VRSN, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
[_FN2] = LAYOUT_80_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN3] = LAYOUT_80_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
#ifdef RGB_MATRIX_ENABLE
/*
* RGB Stuff
*/
#define ID80_CAPS_LOCK_KEY_INDEX 34 // position of Caps Lock key
#define ID80_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#undef ID80_CAPS_LOCK_MAX_BRIGHTNESS
#define ID80_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
#endif
#define ID80_CAPS_LOCK_VAL_STEP 8
#ifdef RGB_MATRIX_VAL_STEP
#undef ID80_CAPS_LOCK_VAL_STEP
#define ID80_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
#endif
user_config_t user_config;
void id80_update_rgb_mode(void) {
uint8_t flags = LED_FLAG_ALL;
if (user_config.rgb_disable_perkey && user_config.rgb_disable_underglow) {
flags = 0; // All OFF Condition
} else {
if (user_config.rgb_disable_perkey) {
flags = LED_FLAG_UNDERGLOW | 0xF0;
}
if (user_config.rgb_disable_underglow) {
flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
}
}
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 id80_get_rgb_mode(void) {
user_config.raw = eeconfig_read_kb(); // read config from EEPROM
id80_update_rgb_mode();
}
void keyboard_post_init_user(void) {
id80_get_rgb_mode();
}
void eeconfig_init_user(void) {
// EEPROM is getting reset!
user_config.raw = 0;
id80_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 < ID80_CAPS_LOCK_VAL_STEP) {
v = ID80_CAPS_LOCK_VAL_STEP;
} else if (v < (ID80_CAPS_LOCK_MAX_BRIGHTNESS - ID80_CAPS_LOCK_VAL_STEP)) {
if (!user_config.rgb_disable_perkey) {
v += ID80_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
} // else leave as current brightness
} else {
v = ID80_CAPS_LOCK_MAX_BRIGHTNESS;
}
rgb_matrix_set_color(ID80_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
} else if (user_config.rgb_disable_perkey) {
rgb_matrix_set_color(ID80_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) {
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 (defalt) | on | on |
* | 1 | OFF | on |
* | 2 | on | OFF |
* | 3 | OFF | OFF |
*/
if (record->event.pressed) {
if ( (!user_config.rgb_disable_perkey) && (!user_config.rgb_disable_underglow) ) {
user_config.rgb_disable_perkey = 1;
} 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;
} else {
user_config.rgb_disable_perkey = 0;
user_config.rgb_disable_underglow = 0;
}
id80_update_rgb_mode();
}
return false;
case RGB_TPK:
if (record->event.pressed) {
user_config.rgb_disable_perkey ^= 1;
id80_update_rgb_mode();
}
return false;
case RGB_TUG:
if (record->event.pressed) {
user_config.rgb_disable_underglow ^= 1;
id80_update_rgb_mode();
}
return false;
case EE_CLR:
if (!record->event.pressed) { // on release
id80_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;
default:
return true; /* Process all other keycodes normally */
}
}

View file

@ -0,0 +1,90 @@
// 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] = {
/*
*
* EscF1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12Fn1Ins
*
* `~ 1 2 3 4 5 6 7 8 9 0 -_ =+ BackspcHom
*
* Tab Q W E R T Y U I O P [{ ]} \| Del
*
* Caps A S D F G H J K L ;: '" │ Enter │
*
* Shift Z X C V B N M ,< .> /? Shift
*
* CtrlWin Alt Space Alt Ctrl
*
*
*/
[0] = LAYOUT_80_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
KC_GRV, 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_HOME,
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_DEL,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* Rst PScSLkPau Mut
*
* Vl+
*
* Tog ModHu+Hu-Sa+Sa-Br+Br-Sp+Sp- Vl-
*
*
*
* mod NKR
* PUp
*
* HomPDnEnd
*
*/
[1] = LAYOUT_80_ansi(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_RMOD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
[2] = LAYOUT_80_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_80_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View file

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

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

View file

@ -1,131 +0,0 @@
/*
Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
Copyright 2022 peepeetee
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x6964 /* "id" */
#define PRODUCT_ID 0x0080
#define DEVICE_VER 0x0003
#define MANUFACTURER IDOBAO
#define PRODUCT ID80 v3
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 11
/*
* 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)
*
* The matrix description in the vendor-supplied JSON file for kbfirmware.com
* had 9 columns:
* { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
* and 12 rows:
* { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
* However, the row 6 was completely empty, and the pin F0 was not actually
* routed anywhere on the PCB, therefore this row was removed to save some
* resources (the EEPROM space for dynamic keymaps is especially scarce).
*
* After doing the above change, the matrix was transposed (rows and columns
* were swapped), because a matrix with the COL2ROW layout can be scanned much
* more efficiently than a matrix with the ROW2COL layout (depending on various
* optimizations, the difference in scan rate can be over 2 times). Because of
* this, the "columns" in the matrix layout now mostly correspond to physical
* rows, and the "rows" have mostly vertical physical orientation.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
#define MATRIX_COL_PINS { B7, B3, B2, B1, B0, E6, F1, F4, F5, F6, F7 }
#define DIODE_DIRECTION COL2ROW
#undef RGB_DI_PIN
#define RGB_DI_PIN B6
#ifdef RGB_MATRIX_ENABLE
# define DRIVER_LED_TOTAL 96 /* 16 Bottom 80 top*/
# 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
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGB_MATRIX_KEYPRESSES
# 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 if 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
/* Bootmagic Lite key configuration: use the Esc key */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 5
#define ENCODERS_PAD_A { C7 }
#define ENCODERS_PAD_B { C6 }

View file

@ -1,96 +0,0 @@
{
"keyboard_name": "ID80 v3",
"url": "",
"maintainer": "qmk",
"layouts": {
"LAYOUT": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
{"label":"F2", "x":2.25, "y":0},
{"label":"F3", "x":3.25, "y":0},
{"label":"F4", "x":4.25, "y":0},
{"label":"F5", "x":5.5, "y":0},
{"label":"F6", "x":6.5, "y":0},
{"label":"F7", "x":7.5, "y":0},
{"label":"F8", "x":8.5, "y":0},
{"label":"F9", "x":9.75, "y":0},
{"label":"F10", "x":10.75, "y":0},
{"label":"F11", "x":11.75, "y":0},
{"label":"F12", "x":12.75, "y":0},
{"label":"Fn", "x":14, "y":0},
{"label":"Insert", "x":15.25, "y":0},
{"label":"`", "x":0, "y":1.25},
{"label":"1", "x":1, "y":1.25},
{"label":"2", "x":2, "y":1.25},
{"label":"3", "x":3, "y":1.25},
{"label":"4", "x":4, "y":1.25},
{"label":"5", "x":5, "y":1.25},
{"label":"6", "x":6, "y":1.25},
{"label":"7", "x":7, "y":1.25},
{"label":"8", "x":8, "y":1.25},
{"label":"9", "x":9, "y":1.25},
{"label":"0", "x":10, "y":1.25},
{"label":"-", "x":11, "y":1.25},
{"label":"=", "x":12, "y":1.25},
{"label":"Backspace", "x":13, "y":1.25, "w":2},
{"label":"Home", "x":15.25, "y":1.25},
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
{"label":"Q", "x":1.5, "y":2.25},
{"label":"W", "x":2.5, "y":2.25},
{"label":"E", "x":3.5, "y":2.25},
{"label":"R", "x":4.5, "y":2.25},
{"label":"T", "x":5.5, "y":2.25},
{"label":"Y", "x":6.5, "y":2.25},
{"label":"U", "x":7.5, "y":2.25},
{"label":"I", "x":8.5, "y":2.25},
{"label":"O", "x":9.5, "y":2.25},
{"label":"P", "x":10.5, "y":2.25},
{"label":"[", "x":11.5, "y":2.25},
{"label":"]", "x":12.5, "y":2.25},
{"label":"\\", "x":13.5, "y":2.25, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.25},
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"label":"A", "x":1.75, "y":3.25},
{"label":"S", "x":2.75, "y":3.25},
{"label":"D", "x":3.75, "y":3.25},
{"label":"F", "x":4.75, "y":3.25},
{"label":"G", "x":5.75, "y":3.25},
{"label":"H", "x":6.75, "y":3.25},
{"label":"J", "x":7.75, "y":3.25},
{"label":"K", "x":8.75, "y":3.25},
{"label":"L", "x":9.75, "y":3.25},
{"label":";", "x":10.75, "y":3.25},
{"label":"'", "x":11.75, "y":3.25},
{"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"label":"Shift", "x":0, "y":4.25, "w":2.25},
{"label":"Z", "x":2.25, "y":4.25},
{"label":"X", "x":3.25, "y":4.25},
{"label":"C", "x":4.25, "y":4.25},
{"label":"V", "x":5.25, "y":4.25},
{"label":"B", "x":6.25, "y":4.25},
{"label":"N", "x":7.25, "y":4.25},
{"label":"M", "x":8.25, "y":4.25},
{"label":",", "x":9.25, "y":4.25},
{"label":".", "x":10.25, "y":4.25},
{"label":"/", "x":11.25, "y":4.25},
{"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
{"label":"\u2191", "x":14.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"label":"Win", "x":1.25, "y":5.25, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
{"x":3.75, "y":5.25, "w":6.25},
{"label":"Alt", "x":10, "y":5.25, "w":1.5},
{"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5},
{"label":"\u2190", "x":13.25, "y":5.5},
{"label":"\u2193", "x":14.25, "y":5.5},
{"label":"\u2192", "x":15.25, "y":5.5}
]
}
}
}

View file

@ -1,36 +0,0 @@
/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
KC_GRV, 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_HOME,
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_DEL,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
_______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
),
};

View file

@ -1 +0,0 @@
# The default keymap for id80

View file

@ -1,52 +0,0 @@
/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
KC_GRV, 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_HOME,
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_DEL,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
_______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};

View file

@ -1,27 +1,36 @@
# ID80v3 # IDOBAO ID80v3
![ID80v3](https://i.imgur.com/PGvZfQj.jpg) ![IDOBAO ID80](https://i.imgur.com/977ENjp.png)
A 75% hotswap in-switch RGB keyboard with an encoder. A 75% hotswap keyboard from IDOBAO.
* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) ## ANSI Support
* Hardware Supported: ID80v3
* Hardware Availability: Not avaliable yet * Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
* Hardware Supported: **IDOBAO ID80v3**
* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=id80*)
## ANSI Layout
![](https://idobao.github.io/kle/idobao-id80.png)
## Compiling and Flashing
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
make idobao/id80/v3:default make idobao/id80/v3/ansi:default
Flashing example for this keyboard: Flashing example for this keyboard:
make idobao/id80/v3:default:flash make idobao/id80/v3/ansi: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). 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 ## Bootloader
Enter the bootloader in 3 ways: 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 * **Bootmagic reset**: Hold down the [Escape] key (the top left key) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB * **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 * **Keycode in layout**: Press the key mapped to `RESET` if it is available

View file

@ -1,23 +1,2 @@
# MCU name # Defalt to the ansi version
MCU = atmega32u4 DEFAULT_FOLDER = idobao/id80/v3/ansi
# 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 = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
LTO_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

View file

@ -1,62 +0,0 @@
// Copyright 2022 peepeetee (@peepeetee)
// Copyright 2022 Xelus22
// SPDX-License-Identifier: GPL-2.0-or-later
#include "v3.h"
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
if (clockwise) {
tap_code_delay(KC_VOLU, 10);
} else {
tap_code_delay(KC_VOLD, 10);
}
}
return true;
}
#endif
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 8, 9, 34, 35, 64, 65, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
{ 7, NO_LED, 33, 36, 63, 66, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
{ 6, 10, 32, 37, 62, 67, NO_LED, NO_LED, 49, 50, 79 },
{ 0, 11, 31, 38, 61, 68, 21, NO_LED, 48, NO_LED, 77 },
{ 1, 12, 30, 39, 60, 69, 20, 22, 47, 52, 76 },
{ 2, 13, 29, 40, 59, 70, 19, 23, 46, 53, 75 },
{ 5, 14, 28, 41, 58, 71, NO_LED, NO_LED, NO_LED, 51, 78 },
{ 3, 15, 27, 42, 57, 72, 18, 24, 45, 54, 74 },
{ 4, 16, 26, 43, 56, 73, 17, 25, 44, 55, NO_LED },
}, {
// LED Index to Physical Position
{224, 64}, {209, 64}, {195, 64}, {173, 61}, {151, 61}, {94 , 61}, {39 , 61}, {20 , 61}, {2 , 61}, {9 , 50}, {33 , 50},
{48 , 50}, {62 , 50}, {77 , 50}, {92 , 50}, {106, 50}, {121, 50}, {136, 50}, {151, 50}, {165, 50}, {185, 50}, {209, 53},
{196, 39}, {173, 39}, {158, 39}, {143, 39}, {129, 39}, {114, 39}, {99 , 39}, {84 , 39}, {70 , 39}, {55 , 39}, {40 , 39},
{26 , 39}, {6 , 39}, {4 , 28}, {22 , 28}, {37 , 28}, {51 , 28}, {66 , 28}, {81 , 28}, {95 , 28}, {110, 28}, {125, 28},
{140, 28}, {154, 28}, {169, 28}, {184, 28}, {202, 28}, {224, 28}, {224, 17}, {198, 17}, {176, 17}, {162, 17}, {147, 17},
{132, 17}, {118, 17}, {103, 17}, {88 , 17}, {73 , 17}, {59 , 17}, {44 , 17}, {29 , 17}, {15 , 17}, {0 , 17}, {0 , 0},
{18 , 0}, {33 , 0}, {48 , 0}, {62 , 0}, {81 , 0}, {95 , 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {173, 0},
{187, 0}, {206, 0}, {224, 0},
{ 207, 13},
{ 207, 32},
{ 207, 51},{ 174, 51},{ 141, 51},{ 108, 51},{ 73, 51},{ 40, 51},{ 13, 51 },
{ 13, 32},
{ 13, 13},{ 40, 13},{ 73, 13},{ 108, 13},{ 141, 13},{ 174, 13},
}, {
// LED Index to Flag
1,1,1,1,1,4,1,1,1,
1,4,4,4,4,4,4,4,4,4,4,1,1,
1,4,4,4,4,4,4,4,4,4,4,4,1,
1,4,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,4,
1,4,4,4,4,1,1,1,1,4,4,4,4,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
} };
#endif

View file

@ -1,37 +0,0 @@
/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT( \
K50, K51, K52, K53, K54, K55, K56, K57, K58, KA7, KA5, KA4, KA3, KA6, KA2, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K98, K97, K95, K94, K96, K92, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K88, K87, K85, K84, K83, K82, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K78, K77, K75, K74, \
K10, K12, K13, K14, K15, K16, K17, K18, K68, K67, K65, K64, K63, \
K00, K01, K02, K06, K08, K07, K05, K04, K03 \
) { \
{ K00, K10, K20, K30, K40, K50, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ K01, KC_NO, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, K82, K92, KA2 }, \
{ K03, K13, K23, K33, K43, K53, K63, KC_NO, K83, KC_NO, KA3 }, \
{ K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4 }, \
{ K05, K15, K25, K35, K45, K55, K65, K75, K85, K95, KA5 }, \
{ K06, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, K96, KA6 }, \
{ K07, K17, K27, K37, K47, K57, K67, K77, K87, K97, KA7 }, \
{ K08, K18, K28, K38, K48, K58, K68, K78, K88, K98, KC_NO }, \
}

View file

@ -1,144 +1,78 @@
// Copyright 2022 peepeetee (@peepeetee) // Copyright 2022 vinorodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* ----------------
#define VENDOR_ID 0x6964 // "id" * RGB Matrix stuff
#define PRODUCT_ID 0x0087 * ---------------- */
#define DEVICE_VER 0x0002
#define MANUFACTURER IDOBAO
#define PRODUCT ID87
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 9
/*
* 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 { E6, B0, B1, B2, B3, B7, F7, F6, F5, F4, F1 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
#define LED_CAPS_LOCK_PIN C7
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING
#define RGB_DI_PIN E2 #define RGB_DI_PIN E2
# define DRIVER_LED_TOTAL 103 /* 16 Bottom 87 top*/
#ifdef RGB_DI_PIN // RGB Matrix config
# define RGBLED_NUM 103 /* 16 Bottom 87 top*/ #if defined(RGB_MATRIX_ENABLE)
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#endif #define DRIVER_LED_TOTAL 103
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
// RGB Matrix Animation modes. Explicitly enabled #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
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects #define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGB_MATRIX_KEYPRESSES #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
# define ENABLE_RGB_MATRIX_ALPHAS_MODS #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN #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 #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
# define ENABLE_RGB_MATRIX_BREATHING #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
# define ENABLE_RGB_MATRIX_BAND_SAT #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
# define ENABLE_RGB_MATRIX_BAND_VAL #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
# define ENABLE_RGB_MATRIX_CYCLE_ALL #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
# define ENABLE_RGB_MATRIX_DUAL_BEACON #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
# define ENABLE_RGB_MATRIX_RAINDROPS #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
# define ENABLE_RGB_MATRIX_HUE_BREATHING #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 #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 #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP /* RGB_MATRIX_FRAMEBUFFER_EFFECTS -- do not enable */
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE /* RGB_MATRIX_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE #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_CROSS #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_MULTICROSS #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS #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_MULTINEXUS #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_SPLASH #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_MULTISPLASH #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_SOLID_SPLASH #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
#endif #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
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* -----------------------
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
#define FORCE_NKRO
/*
* Feature disable options * Feature disable options
* These options are also useful to firmware size reduction. * These options are also useful to firmware size reduction.
*/ * ----------------------- */
/* disable debug print */ /* disable debug print */
//#define NO_DEBUG //#define NO_DEBUG
@ -150,7 +84,3 @@
//#define NO_ACTION_LAYER //#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING //#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT //#define NO_ACTION_ONESHOT
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

View file

@ -1,97 +1,126 @@
{ {
"keyboard_name": "ID87", "manufacturer": "IDOBAO",
"url": "https://www.idobao.net/products/idobao-id87-80-hot-swappable-mechanical-keyboard-kit", "keyboard_name": "ID87v2",
"maintainer": "qmk", "maintainer": "vinorodrigues",
"bootloader": "atmel-dfu",
"diode_direction": "ROW2COL",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"backlight": false,
"rgblight": false
},
"debounce": 5,
"matrix_pins": {
"cols": ["D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4"],
"rows": ["E6", "B0", "B1", "B2", "B3", "B7", "F7", "F6", "F5", "F4", "F1"]
},
"processor": "atmega32u4",
"url": "https://idobao.net/search?type=product&q=ID87*",
"usb": {
"vid": "0x6964",
"pid": "0x0287",
"device_version": "2.0.0"
},
"layouts": { "layouts": {
"LAYOUT_tkl_ansi": { "LAYOUT_tkl_ansi": {
"layout": [ "layout": [
{"label":"Esc", "x":0, "y":0}, { "matrix": [0, 0], "x": 0, "y": 0 },
{"label":"F1", "x":2, "y":0}, { "matrix": [0, 2], "x": 2, "y": 0 },
{"label":"F2", "x":3, "y":0}, { "matrix": [0, 3], "x": 3, "y": 0 },
{"label":"F3", "x":4, "y":0}, { "matrix": [0, 4], "x": 4, "y": 0 },
{"label":"F4", "x":5, "y":0}, { "matrix": [0, 5], "x": 5, "y": 0 },
{"label":"F5", "x":6.5, "y":0}, { "matrix": [0, 6], "x": 6.5, "y": 0 },
{"label":"F6", "x":7.5, "y":0}, { "matrix": [0, 7], "x": 7.5, "y": 0 },
{"label":"F7", "x":8.5, "y":0}, { "matrix": [0, 8], "x": 8.5, "y": 0 },
{"label":"F8", "x":9.5, "y":0}, { "matrix": [6, 8], "x": 9.5, "y": 0 },
{"label":"F9", "x":11, "y":0}, { "matrix": [6, 7], "x": 11, "y": 0 },
{"label":"F10", "x":12, "y":0}, { "matrix": [6, 5], "x": 12, "y": 0 },
{"label":"F11", "x":13, "y":0}, { "matrix": [6, 4], "x": 13, "y": 0 },
{"label":"F12", "x":14, "y":0}, { "matrix": [6, 3], "x": 14, "y": 0 },
{"label":"PrtSc", "x":15.25, "y":0}, { "matrix": [6, 6], "x": 15.25, "y": 0 },
{"label":"Scroll Lock", "x":16.25, "y":0}, { "matrix": [6, 2], "x": 16.25, "y": 0 },
{"label":"Pause", "x":17.25, "y":0}, { "matrix": [6, 1], "x": 17.25, "y": 0 },
{"label":"~", "x":0, "y":1.5},
{"label":"1", "x":1, "y":1.5}, { "matrix": [1, 0], "x": 0, "y": 1.25 },
{"label":"2", "x":2, "y":1.5}, { "matrix": [1, 1], "x": 1, "y": 1.25 },
{"label":"3", "x":3, "y":1.5}, { "matrix": [1, 2], "x": 2, "y": 1.25 },
{"label":"4", "x":4, "y":1.5}, { "matrix": [1, 3], "x": 3, "y": 1.25 },
{"label":"5", "x":5, "y":1.5}, { "matrix": [1, 4], "x": 4, "y": 1.25 },
{"label":"6", "x":6, "y":1.5}, { "matrix": [1, 5], "x": 5, "y": 1.25 },
{"label":"7", "x":7, "y":1.5}, { "matrix": [1, 6], "x": 6, "y": 1.25 },
{"label":"8", "x":8, "y":1.5}, { "matrix": [1, 7], "x": 7, "y": 1.25 },
{"label":"9", "x":9, "y":1.5}, { "matrix": [1, 8], "x": 8, "y": 1.25 },
{"label":"0", "x":10, "y":1.5}, { "matrix": [7, 8], "x": 9, "y": 1.25 },
{"label":"-", "x":11, "y":1.5}, { "matrix": [7, 0], "x": 10, "y": 1.25 },
{"label":"=", "x":12, "y":1.5}, { "matrix": [7, 7], "x": 11, "y": 1.25 },
{"label":"Backspace", "x":13, "y":1.5, "w":2}, { "matrix": [7, 5], "x": 12, "y": 1.25 },
{"label":"Insert", "x":15.25, "y":1.5}, { "matrix": [7, 3], "x": 13, "y": 1.25, "w": 2 },
{"label":"Home", "x":16.25, "y":1.5}, { "matrix": [7, 6], "x": 15.25, "y": 1.25 },
{"label":"PgUp", "x":17.25, "y":1.5}, { "matrix": [7, 2], "x": 16.25, "y": 1.25 },
{"label":"Tab", "x":0, "y":2.5, "w":1.5}, { "matrix": [7, 1], "x": 17.25, "y": 1.25 },
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5}, { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 },
{"label":"E", "x":3.5, "y":2.5}, { "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{"label":"R", "x":4.5, "y":2.5}, { "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{"label":"T", "x":5.5, "y":2.5}, { "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{"label":"Y", "x":6.5, "y":2.5}, { "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{"label":"U", "x":7.5, "y":2.5}, { "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{"label":"I", "x":8.5, "y":2.5}, { "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{"label":"O", "x":9.5, "y":2.5}, { "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{"label":"P", "x":10.5, "y":2.5}, { "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{"label":"[", "x":11.5, "y":2.5}, { "matrix": [8, 8], "x": 9.5, "y": 2.25 },
{"label":"]", "x":12.5, "y":2.5}, { "matrix": [8, 7], "x": 10.5, "y": 2.25 },
{"label":"\\", "x":13.5, "y":2.5, "w":1.5}, { "matrix": [8, 5], "x": 11.5, "y": 2.25 },
{"label":"Delete", "x":15.25, "y":2.5}, { "matrix": [8, 4], "x": 12.5, "y": 2.25 },
{"label":"End", "x":16.25, "y":2.5}, { "matrix": [8, 3], "w": 1.5, "x": 13.5, "y": 2.25 },
{"label":"PgDn", "x":17.25, "y":2.5}, { "matrix": [8, 6], "x": 15.25, "y": 2.25 },
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, { "matrix": [8, 2], "x": 16.25, "y": 2.25 },
{"label":"A", "x":1.75, "y":3.5}, { "matrix": [8, 1], "x": 17.25, "y": 2.25 },
{"label":"S", "x":2.75, "y":3.5},
{"label":"D", "x":3.75, "y":3.5}, { "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
{"label":"F", "x":4.75, "y":3.5}, { "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{"label":"G", "x":5.75, "y":3.5}, { "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{"label":"H", "x":6.75, "y":3.5}, { "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{"label":"J", "x":7.75, "y":3.5}, { "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{"label":"K", "x":8.75, "y":3.5}, { "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{"label":"L", "x":9.75, "y":3.5}, { "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{"label":";", "x":10.75, "y":3.5}, { "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{"label":"'", "x":11.75, "y":3.5}, { "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, { "matrix": [9, 8], "x": 9.75, "y": 3.25 },
{"label":"Shift", "x":0, "y":4.5, "w":2.25}, { "matrix": [9, 7], "x": 10.75, "y": 3.25 },
{"label":"Z", "x":2.25, "y":4.5}, { "matrix": [9, 5], "x": 11.75, "y": 3.25 },
{"label":"X", "x":3.25, "y":4.5}, { "matrix": [9, 3], "x": 12.75, "y": 3.25, "w": 2.25 },
{"label":"C", "x":4.25, "y":4.5},
{"label":"V", "x":5.25, "y":4.5}, { "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
{"label":"B", "x":6.25, "y":4.5}, { "matrix": [4, 2], "x": 2.25, "y": 4.25 },
{"label":"N", "x":7.25, "y":4.5}, { "matrix": [4, 3], "x": 3.25, "y": 4.25 },
{"label":"M", "x":8.25, "y":4.5}, { "matrix": [4, 4], "x": 4.25, "y": 4.25 },
{"label":",", "x":9.25, "y":4.5}, { "matrix": [4, 5], "x": 5.25, "y": 4.25 },
{"label":".", "x":10.25, "y":4.5}, { "matrix": [4, 6], "x": 6.25, "y": 4.25 },
{"label":"/", "x":11.25, "y":4.5}, { "matrix": [4, 7], "x": 7.25, "y": 4.25 },
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, { "matrix": [4, 8], "x": 8.25, "y": 4.25 },
{"label":"Up", "x":16.25, "y":4.5}, { "matrix": [10, 8], "x": 9.25, "y": 4.25 },
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, { "matrix": [10, 7], "x": 10.25, "y": 4.25 },
{"label":"Win", "x":1.25, "y":5.5, "w":1.25}, { "matrix": [10, 5], "x": 11.25, "y": 4.25 },
{"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, { "matrix": [10, 4], "x": 12.25, "y": 4.25, "w": 2.75 },
{"label":"Space", "x":3.75, "y":5.5, "w":6.25}, { "matrix": [9, 2], "x": 16.25, "y": 4.25 },
{"label":"Alt", "x":10, "y":5.5, "w":1.25},
{"label":"Win", "x":11.25, "y":5.5, "w":1.25}, { "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
{"label":"LT(1, KC_APP)", "x":12.5, "y":5.5, "w":1.25}, { "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
{"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, { "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
{"label":"Left", "x":15.25, "y":5.5}, { "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25 },
{"label":"Down", "x":16.25, "y":5.5}, { "matrix": [5, 8], "x": 10, "y": 5.25, "w": 1.25 },
{"label":"Right", "x":17.25, "y":5.5} { "matrix": [5, 7], "x": 11.25, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 4], "x": 12.5, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 3], "x": 13.75, "y": 5.25, "w": 1.25 },
{ "matrix": [10, 6], "x": 15.25, "y": 5.25 },
{ "matrix": [10, 2], "x": 16.25, "y": 5.25 },
{ "matrix": [10, 1], "x": 17.25, "y": 5.25 }
] ]
} }
} }

View file

@ -1,35 +1,58 @@
/* // Copyright 2022 Vino Rodrigues (@vinorodrigues)
Copyright 2020 Tybera // SPDX-License-Identifier: GPL-2.0-or-later
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#define LT_1_AP LT(1, KC_APP) // Tap = Menu, Hold = MO(1)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backsp InsHomPgU
*
* Tab Q W E R T Y U I O P [ ] \ DelEndPgD
*
* Caps A S D F G H J K L ; ' Enter
*
* Shift Z X C V B N M , . / Shift
*
* CtrlGUI Alt Alt GUIFn1*Ctrl Fn1* => Tap = Menu, Hold = MO(1)
*
*/
[0] = LAYOUT_tkl_ansi( [0] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS, KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, 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_INS, KC_HOME, KC_PGUP, KC_GRV, 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_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN, 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_DEL, KC_END, KC_PGDN,
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_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_SLSH, KC_RSFT, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1, KC_APP), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT_1_AP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
_______, BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
_______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, RGB_MOD
), ),
/*
*
* Rst
*
*
* Hu+
*
* TogMod St-Hu-St+
*
* mod
*
* NRO Br+
*
* Sp-Br-Sp+
*
*/
[1] = LAYOUT_tkl_ansi(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
_______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
_______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
)
}; };

View file

@ -1 +0,0 @@
# The default keymap for id87

View file

@ -0,0 +1,4 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#define DYNAMIC_KEYMAP_LAYER_COUNT 3

View file

@ -0,0 +1,299 @@
// 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;
bool rgb_disable_underglow:1;
};
} user_config_t;
#endif // RGB_MATRIX_ENABLE
enum {
KC_MCON = USER00, // macOS Open Mission Control
KC_LPAD, // macOS Open Launchpad
#ifdef RGB_MATRIX_ENABLE
RGB_TPK, // Toggle Per-Key
RGB_TUG, // Toggle Underglow
#endif // RGB_MATRIX_ENABLE
KB_VRSN = USER09 // debug, type version
};
#ifndef RGB_MATRIX_ENABLE
#define RGB_TPK _______
#define RGB_TUG _______
#endif
enum macos_consumer_usages {
_AC_SHOW_ALL_WINDOWS = 0x29F, // mapped to KC_MCON
_AC_SHOW_ALL_APPS = 0x2A0 // mapped to KC_LPAD
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backspc InsHomPgU
*
* Tab Q W E R T Y U I O P [ ] \ DelEndPgD
*
* Caps A S D F G H J K L ; ' Enter
*
* Shift Z X C V B N M , . / Shift
*
* CtrlGUI Alt space Alt GUIMO(1Ctrl
*
*/
[0] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, 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_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
*
* Rst BR+BR-mMCmLP Br-Br+PrvPly NxtMutVl-Vl+
*
*
* Hu+
*
* TogMod St-Hu-St+
*
* mod
*
* Ver NRO MO(2) Br+
*
* Sp-Br-Sp+
*
*/
[1] = LAYOUT_tkl_ansi(
QK_BOOT, KC_BRID, KC_BRIU, KC_MCON, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
_______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
_______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KB_VRSN, _______, NK_TOGG, _______, _______, _______, _______, MO(2), RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
),
/*
*
*
*
*
* M00M01M02M03M04M05M06M07M08M09M10
*
* M11M12M13M14M15M16
*
*
*
*
*
*
*
*/
[2] = LAYOUT_tkl_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
MACRO00, MACRO01, MACRO02, MACRO03, MACRO04, MACRO05, MACRO06, MACRO07, MACRO08, MACRO09, MACRO10, _______, _______, _______, _______, _______, _______,
_______, MACRO11, MACRO12, MACRO13, MACRO14, MACRO15, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
#ifdef RGB_MATRIX_ENABLE
/*
* RGB Stuff
*/
#define ID87_CAPS_LOCK_KEY_INDEX 40 // position of Caps Lock key
#define ID87_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#undef ID87_CAPS_LOCK_MAX_BRIGHTNESS
#define ID87_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
#endif
#define ID87_CAPS_LOCK_VAL_STEP 8
#ifdef RGB_MATRIX_VAL_STEP
#undef ID87_CAPS_LOCK_VAL_STEP
#define ID87_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
#endif
user_config_t user_config;
void id87_update_rgb_mode(void) {
uint8_t flags = LED_FLAG_ALL;
if (user_config.rgb_disable_perkey && user_config.rgb_disable_underglow) {
flags = 0; // All OFF Condition
} else {
if (user_config.rgb_disable_perkey) {
flags = LED_FLAG_UNDERGLOW | 0xF0;
}
if (user_config.rgb_disable_underglow) {
flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
}
}
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 id87_get_rgb_mode(void) {
user_config.raw = eeconfig_read_kb(); // read config from EEPROM
id87_update_rgb_mode();
}
void keyboard_post_init_user(void) {
id87_get_rgb_mode();
}
void eeconfig_init_user(void) {
// EEPROM is getting reset!
user_config.raw = 0;
id87_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 < ID87_CAPS_LOCK_VAL_STEP) {
v = ID87_CAPS_LOCK_VAL_STEP;
} else if (v < (ID87_CAPS_LOCK_MAX_BRIGHTNESS - ID87_CAPS_LOCK_VAL_STEP)) {
if (!user_config.rgb_disable_perkey) {
v += ID87_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
} // else leave as current brightness
} else {
v = ID87_CAPS_LOCK_MAX_BRIGHTNESS;
}
rgb_matrix_set_color(ID87_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
} else if (user_config.rgb_disable_perkey) {
rgb_matrix_set_color(ID87_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) {
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 (defalt) | on | on |
* | 1 | OFF | on |
* | 2 | on | OFF |
* | 3 | OFF | OFF |
*/
if (record->event.pressed) {
if ( (!user_config.rgb_disable_perkey) && (!user_config.rgb_disable_underglow) ) {
user_config.rgb_disable_perkey = 1;
} 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;
} else {
user_config.rgb_disable_perkey = 0;
user_config.rgb_disable_underglow = 0;
}
id87_update_rgb_mode();
}
return false;
case RGB_TPK:
if (record->event.pressed) {
user_config.rgb_disable_perkey ^= 1;
id87_update_rgb_mode();
}
return false;
case RGB_TUG:
if (record->event.pressed) {
user_config.rgb_disable_underglow ^= 1;
id87_update_rgb_mode();
}
return false;
case EE_CLR:
if (!record->event.pressed) { // on release
id87_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;
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,4 @@
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#define DYNAMIC_KEYMAP_LAYER_COUNT 3

View file

@ -1,50 +1,81 @@
/* // Copyright 2022 Vino Rodrigues (@vinorodrigues)
Copyright 2020 Tybera // SPDX-License-Identifier: GPL-2.0-or-later
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi( /*
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS, *
KC_GRV, 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_INS, KC_HOME, KC_PGUP, * Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse
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_DEL, KC_END, KC_PGDN, *
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_SLSH, KC_RSFT, KC_UP, * ` 1 2 3 4 5 6 7 8 9 0 - = Backsp InsHomPgU
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1, KC_APP), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT *
* Tab Q W E R T Y U I O P [ ] \ DelEndPgD
*
* Caps A S D F G H J K L ; ' Enter
*
* Shift Z X C V B N M , . / Shift
*
* CtrlGUI Alt Alt GUIMO(1Ctrl
*
*/
[0] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, 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_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
/*
*
* Rst
*
*
* Hu+
*
* TogMod St-Hu-St+
*
* mod
*
* NRO MO(2) Br+
*
* Sp-Br-Sp+
*
*/
[1] = LAYOUT_tkl_ansi( [1] = LAYOUT_tkl_ansi(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
_______, BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, BL_INC, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, MO(2), RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, RGB_MOD _______, _______, _______, _______, _______, KC_APP, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
), ),
[2] = LAYOUT_tkl_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, /*
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ * M00M01M02M03M04M05M06M07M08M09M10
), *
[3] = LAYOUT_tkl_ansi( * M11M12M13M14M15M16
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, *
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ *
), *
*/
[2] = LAYOUT_tkl_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
MACRO00, MACRO01, MACRO02, MACRO03, MACRO04, MACRO05, MACRO06, MACRO07, MACRO08, MACRO09, MACRO10, _______, _______, _______, _______, _______, _______,
_______, MACRO11, MACRO12, MACRO13, MACRO14, MACRO15, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
}; };

View file

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

View file

@ -1,12 +1,24 @@
# ID87 v2 # IDOBAO ID87 v2
![ID87 v2](https://i.imgur.com/woTSycN.jpg) ![IDOBAO ID87](https://i.imgur.com/LIpWjog.png)
A TKL keyboard with hotswap sockets and in switch RGB. A TKL hotswap board from IDOBAO.
* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) ## ANSI Support
* Hardware Supported: ID87 v2
* Hardware Availability: [Drop](https://drop.com/buy/idobao-id87-v2-tkl-mechanical-keyboard-kit), [idobao](https://idobao.net/products/idobao-id87-v2-tkl-pcb-mounted-hot-swappable-mechanical-keyboard-kit) * Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
* Hardware Supported:
- **IDOBAO ID87v2**
- **IDOBAO ID87 Crystal**
- **IDOBAO ID87 Bestype**
- **IDOBAO ID87 Charm** *(Limited Edition)*
* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=ID87*)
## ANSI Layout
![](https://idobao.github.io/kle/idobao-id87.png)
## Compiling & Flashing
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
@ -22,6 +34,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 3 ways: 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 * **Bootmagic reset**: Hold down the [Escape] key *(the top left)* and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB * **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 * **Keycode in layout**: Press the key mapped to `RESET` *(default is [Fn]+[Escape])*

View file

@ -1,22 +1,5 @@
# MCU name # This file intentionally left blank
MCU = atmega32u4 # ** settings are data driven & stored in `info.json` **
# 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 = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812 RGB_MATRIX_DRIVER = WS2812
LAYOUTS = tkl_ansi

View file

@ -1,45 +1,83 @@
// Copyright 2022 peepeetee (@peepeetee) // Copyright 2022 vinorodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include "v2.h" #include "v2.h"
#ifdef RGB_MATRIX_ENABLE #define __ NO_LED
#if defined(RGB_MATRIX_ENABLE)
/* Under-, Per-Key
*
* 102 10110099 98 97 96 95 94 93 92 91 90 89 88 87
*
*
* 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
*
* 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53
*
* 40 41 42 43 44 45 46 47 48 49 50 51 52
*
* 39 38 37 36 35 34 33 32 31 30 29 28 27
*
* 16 17 18 19 20 21 22 23 24 25 26
*
*
* Underglow (as seen from top)
*
* 14 13 12 11 10 9 8
*
* 15 7
*
* 0 1 2 3 4 5 6
*
*/
led_config_t g_led_config = { { led_config_t g_led_config = { {
// Key Matrix to LED Index // Key Matrix to LED Index
{ 102, NO_LED, 101, 100, 99, 98, 97, 96, 95 }, //0 // partially generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser & CSV Excel formula
{ 70, 71, 72, 73, 74, 75, 76, 77, 78 }, //1
{ 69, 68, 67, 66, 65, 64, 63, 62, 61 }, //2 { 102, __, 101, 100, 99, 98, 97, 96, 95 },
{ 40, 41, 42, 43, 44, 45, 46, 47, 48 }, //3 { 70, 71, 72, 73, 74, 75, 76, 77, 78 },
{ 39, NO_LED, 38, 37, 36, 35, 34, 33, 32 }, //4 { 69, 68, 67, 66, 65, 64, 63, 62, 61 },
{ 16, 17, 18, 23, 22, NO_LED, 19, 21, 20 }, //5 { 40, 41, 42, 43, 44, 45, 46, 47, 48 },
{ NO_LED, 87, 88, 90, 91, 92, 89, 93, 94 }, //6 { 39, __, 38, 37, 36, 35, 34, 33, 32 },
{ 80, 86, 85, 83, NO_LED, 82, 84, 81, 79 }, //7 { 16, 17, 18, 23, 22, __, 19, 21, 20 },
{ NO_LED, 53, 54, 56, 57, 58, 55, 59, 60 }, //8 { __, 87, 88, 90, 91, 92, 89, 93, 94 },
{ NO_LED, NO_LED, 27, 52, NO_LED, 51, NO_LED, 50, 49 }, //9 { 80, 86, 85, 83, __, 82, 84, 81, 79 },
{ NO_LED, 26, 25, NO_LED, 28, 29, 24, 30, 31 } //A { __, 53, 54, 56, 57, 58, 55, 59, 60 },
{ __, __, 27, 52, __, 51, __, 50, 49 },
{ __, 26, 25, __, 28, 29, 24, 30, 31 }
}, { }, {
// LED Index to Physical Position // LED Index to Physical Position
{ 13, 51 },{ 40, 51},{ 73, 51},{ 108, 51},{ 141, 51},{ 174, 51},{ 207, 51}, // generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
{ 207, 32}, // underglow
{ 207, 13},{ 174, 13},{ 141, 13},{ 108, 13},{ 73, 13},{ 40, 13},{ 13, 13}, /* colors are pushed to the edge as only the edges can be seen */
{ 13, 32}, { 0,64 }, { 37,64 }, { 75,64 }, {112,64 }, {149,64 }, {187,64 }, {224,64 },
{224,32 },
{ 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 }, {224,0 }, {187,0 }, {149,0 }, {112,0 }, { 75,0 }, { 37,0 }, { 0,0 },
{ 205, 49 }, { 165, 49 }, { 142, 49 }, { 130, 49 }, { 118, 49 }, { 106, 49 }, { 94, 49 }, { 82, 49 }, { 70, 49 }, { 58, 49 }, { 46, 49 }, { 34, 49 }, { 14, 49 }, { 0,32 },
{ 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 }, { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 }, // under-, per-key
{ 217, 30 }, { 205, 30 }, { 193, 30 }, { 172, 30 }, { 157, 30 }, { 145, 30 }, { 133, 30 }, { 121, 30 }, { 109, 30 }, { 97, 30 }, { 85, 30 }, { 73, 30 }, { 61, 30 }, { 49, 30 }, { 37, 30 }, { 25, 30 }, { 10, 30 }, /* pattern is complex; starts at btm-lft, zig-zags up, and ends top-lft */
{ 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 }, { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 }, { 217, 20 }, { 2,64 }, { 18,64 }, { 34,64 }, { 83,64 }, {131,64 }, {148,64 }, {164,64 }, {180,64 }, {198,64 }, {211,64 }, {224,64 }, // lf-2-rt, btm
{ 217, 5 }, { 205, 5 }, { 193, 5 }, { 175, 5 }, { 163, 5 }, { 151, 5 }, { 139, 5 }, { 121, 5 }, { 109, 5 }, { 97, 5 }, { 85, 5 }, { 67, 5 }, { 55, 5 }, { 43, 5 }, { 31, 5 },{ 7, 5 }, {211,52 }, {170,52 }, {146,52 }, {133,52 }, {120,52 }, {107,52 }, { 94,52 }, { 81,52 }, { 68,52 }, { 55,52 }, { 42,52 }, { 29,52 }, { 8,52 }, // rt-2-lf**
{ 5,40 }, { 23,40 }, { 36,40 }, { 49,40 }, { 62,40 }, { 75,40 }, { 88,40 }, {101,40 }, {114,40 }, {127,40 }, {140,40 }, {153,40 }, {174,40 }, // lf-2-rt
{224,27 }, {211,27 }, {198,27 }, {179,27 }, {162,27 }, {149,27 }, {136,27 }, {123,27 }, {110,27 }, { 97,27 }, { 84,27 }, { 71,27 }, { 58,27 }, { 45,27 }, { 32,27 }, { 19,27 }, { 3,27 }, // rt-2-lf**
{ 0,15 }, { 13,15 }, { 26,15 }, { 39,15 }, { 52,15 }, { 65,15 }, { 78,15 }, { 91,15 }, {104,15 }, {117,15 }, {130,15 }, {143,15 }, {156,15 }, {175,15 }, {198,15 }, {211,15 }, {224,15 }, // lf-2-rt
{224,0 }, {211,0 }, {198,0 }, {182,0 }, {169,0 }, {156,0 }, {143,0 }, {123,0 }, {110,0 }, { 97,0 }, { 84,0 }, { 65,0 }, { 52,0 }, { 39,0 }, { 26,0 }, { 0,0 }, // rt-2-lf**, top
}, { }, {
// LED Index to Flag // LED Index to Flag
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // underglow
2, 2, 2, 2, 2, 2, 2,
1,1,1,4,1,1,1,1,1,1,1, 2,
1,1,4,4,4,4,4,4,4,4,4,4,1, 2, 2, 2, 2, 2, 2, 2,
9,4,4,4,4,4,4,4,4,4,4,4,1, 2,
1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1, // under-, per-key
4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
1,9,1,4,4,4,4,1,1,1,1,4,4,4,4,1 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
} }; } };
#endif #endif // RGB_MATRIX_ENABLE

View file

@ -1,40 +1,6 @@
/* // Copyright 2022 vinorodrigues (@vinorodrigues)
Copyright 2020 Tybera // SPDX-License-Identifier: GPL-2.0-or-later
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"
#define LAYOUT_tkl_ansi( \
K00, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K73, K76, K72, K71, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K83, K86, K82, K81, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K93, \
K40, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, K92, \
K50, K51, K52, K56, K58, K57, K54, K53, KA6, KA2, KA1 \
) { \
{ K00, KC_NO, K02, K03, K04, K05, K06, K07, K08 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
{ K40, KC_NO, K42, K43, K44, K45, K46, K47, K48 }, \
{ K50, K51, K52, K53, K54, KC_NO, K56, K57, K58 }, \
{ KC_NO, K61, K62, K63, K64, K65, K66, K67, K68 }, \
{ K70, K71, K72, K73, KC_NO, K75, K76, K77, K78 }, \
{ KC_NO, K81, K82, K83, K84, K85, K86, K87, K88 }, \
{ KC_NO, KC_NO, K92, K93, KC_NO, K95, KC_NO, K97, K98 }, \
{ KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
}

View file

@ -0,0 +1,19 @@
/* Copyright 2022 charlesrocket
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define UNICODE_SELECTED_MODES UC_BSD, UC_MAC, UC_LNX

View file

@ -17,43 +17,207 @@
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
enum alt_keycodes { enum alt_keycodes {
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active L_BRI = SAFE_RANGE, //LED Brightness Increase //Working
U_T_AGCR, //USB Toggle Automatic GCR control L_BRD, //LED Brightness Decrease //Working
DBG_TOG, //DEBUG Toggle On / Off L_EDG_I, //LED Edge Brightness Increase
DBG_MTRX, //DEBUG Toggle Matrix Prints L_EDG_D, //LED Edge Brightness Decrease
DBG_KBD, //DEBUG Toggle Keyboard Prints L_EDG_M, //LED Edge lighting mode
DBG_MOU, //DEBUG Toggle Mouse Prints L_PTN, //LED Pattern Select Next //Working
MD_BOOT, //Restart into bootloader after hold timeout L_PTP, //LED Pattern Select Previous //Working
L_PSI, //LED Pattern Speed Increase //Working
L_PSD, //LED Pattern Speed Decrease //Working
L_RATIOD,
L_RATIOI,
L_T_MD, //LED Toggle Mode //Working
L_T_ONF, //LED Toggle On / Off //Broken
L_ON, //LED On //Broken
L_OFF, //LED Off //Broken
L_T_BR, //LED Toggle Breath Effect //Working
L_T_PTD, //LED Toggle Scrolling Pattern Direction //Working
U_T_AGCR, //USB Toggle Automatic GCR control //Working
DBG_TOG, //DEBUG Toggle On / Off //
DBG_MTRX, //DEBUG Toggle Matrix Prints //
DBG_KBD, //DEBUG Toggle Keyboard Prints //
DBG_MOU, //DEBUG Toggle Mouse Prints //
DBG_FAC, //DEBUG Factory light testing (All on white)
MD_BOOT //Restart into bootloader after hold timeout //Working
}; };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi_blocker( [0] = LAYOUT(
KC_ESC, 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_DEL, KC_ESC, 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_DEL,
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_HOME, 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_HOME,
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_PGUP, 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_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_65_ansi_blocker( [1] = LAYOUT(
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_MUTE, 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_MUTE,
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD, _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD,
_______, LAG_SWP, LAG_NRM, _______, KC_APP, _______, KC_HOME, KC_PGDN, KC_END MO(2), _______, _______, DBG_FAC, KC_APP, _______, KC_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, UC_RMOD, UC_MOD, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______,
_______, LAG_SWP, LAG_NRM, _______, _______, TG(3), _______, _______, _______
),
[3] = LAYOUT(
XP(0,1), XP(2,3), XP(4,5), XP(6,7), XP(8,9), XP(10,11), XP(12,13), XP(14,15), XP(16,17), XP(18,19), XP(20,21), XP(22,23), XP(24,25), _______, _______,
_______, KC_QUES, XP(27,28), XP(29,31), X(32), XP(33,34), X(35), X(36), XP(37,38), XP(39,40), XP(41,42), XP(43,44), XP(45,46), _______, _______,
_______, XP(47,48), X(49), X(50), KC_UNDS, XP(52,5), XP(53,54), XP(55,56), KC_QUOT, XP(59,60), XP(61,62), XP(63,64), _______, _______,
_______, XP(65,66), X(67), XP(68,69), X(70), X(71), X(72), X(73), KC_PIPE, XP(75,76), X(77), XP(78,79), _______, _______,
_______, _______, _______, _______, _______, TG(3), _______, _______, _______
), ),
}; };
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)) #define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL)) #define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT)) #define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static uint32_t key_timer; static uint32_t key_timer;
static uint8_t scroll_effect = 0;
switch (keycode) { switch (keycode) {
case U_T_AUTO: case L_BRI ... U_T_AGCR:
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode"); md_led_changed();
}
break;
}
switch (keycode) {
case L_BRI:
if (record->event.pressed) {
if (LED_GCR_STEP > LED_GCR_MAX - gcr_desired) gcr_desired = LED_GCR_MAX;
else gcr_desired += LED_GCR_STEP;
if (led_animation_breathing) gcr_breathe = gcr_desired;
}
return false;
case L_BRD:
if (record->event.pressed) {
if (LED_GCR_STEP > gcr_desired) gcr_desired = 0;
else gcr_desired -= LED_GCR_STEP;
if (led_animation_breathing) gcr_breathe = gcr_desired;
}
return false;
case L_EDG_M:
if (record->event.pressed) {
led_edge_mode++;
if (led_edge_mode > LED_EDGE_MODE_MAX) {
led_edge_mode = LED_EDGE_MODE_ALL;
}
}
return false;
case L_EDG_I:
if (record->event.pressed) {
led_edge_brightness += 0.1;
if (led_edge_brightness > 1) { led_edge_brightness = 1; }
}
return false;
case L_EDG_D:
if (record->event.pressed) {
led_edge_brightness -= 0.1;
if (led_edge_brightness < 0) { led_edge_brightness = 0; }
}
return false;
case L_RATIOI:
if (record->event.pressed) {
led_ratio_brightness += 0.2;
if (led_ratio_brightness > 2.0) { led_ratio_brightness = 2.0; }
}
return false;
case L_RATIOD:
if (record->event.pressed) {
led_ratio_brightness -= 0.2;
if (led_ratio_brightness < 0.0) { led_ratio_brightness = 0.0; }
}
return false;
case L_PTN:
if (record->event.pressed) {
if (led_animation_id == led_setups_count - 1) led_animation_id = 0;
else led_animation_id++;
}
return false;
case L_PTP:
if (record->event.pressed) {
if (led_animation_id == 0) led_animation_id = led_setups_count - 1;
else led_animation_id--;
}
return false;
case L_PSI:
if (record->event.pressed) {
led_animation_speed += ANIMATION_SPEED_STEP;
}
return false;
case L_PSD:
if (record->event.pressed) {
led_animation_speed -= ANIMATION_SPEED_STEP;
if (led_animation_speed < 0) led_animation_speed = 0;
}
return false;
case L_T_MD:
if (record->event.pressed) {
led_lighting_mode++;
if (led_lighting_mode > LED_MODE_MAX_INDEX) led_lighting_mode = LED_MODE_NORMAL;
}
return false;
case L_T_ONF:
if (record->event.pressed) {
led_enabled = !led_enabled;
I2C3733_Control_Set(led_enabled);
}
return false;
case L_ON:
if (record->event.pressed) {
led_enabled = 1;
I2C3733_Control_Set(led_enabled);
}
return false;
case L_OFF:
if (record->event.pressed) {
led_enabled = 0;
I2C3733_Control_Set(led_enabled);
}
return false;
case L_T_BR:
if (record->event.pressed) {
led_animation_breathing = !led_animation_breathing;
if (led_animation_breathing) {
gcr_breathe = gcr_desired;
led_animation_breathe_cur = BREATHE_MIN_STEP;
breathe_dir = 1;
}
}
return false;
case L_T_PTD:
if (record->event.pressed) {
scroll_effect++;
if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left)
led_animation_direction = 1;
led_animation_orientation = 0;
led_animation_circular = 0;
} else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom)
led_animation_direction = 1;
led_animation_orientation = 1;
led_animation_circular = 0;
} else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top)
led_animation_direction = 0;
led_animation_orientation = 1;
led_animation_circular = 0;
} else if (scroll_effect == 4) { //Patterns with scroll explode from center
led_animation_direction = 0;
led_animation_orientation = 0;
led_animation_circular = 1;
} else if (scroll_effect == 5) { //Patterns with scroll implode on center
led_animation_direction = 1;
led_animation_orientation = 0;
led_animation_circular = 1;
} else { //Patterns with scroll move horizontal (Left to right)
scroll_effect = 0;
led_animation_direction = 0;
led_animation_orientation = 0;
led_animation_circular = 0;
}
} }
return false; return false;
case U_T_AGCR: case U_T_AGCR:
@ -61,6 +225,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
} }
return false; return false;
case DBG_FAC:
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
led_lighting_mode = LED_MODE_NORMAL;
led_edge_brightness = 1;
led_edge_mode = LED_EDGE_MODE_ALL;
led_animation_breathing = 0;
led_animation_id = 7; //led_programs.c led_setups leds_white index
gcr_desired = LED_GCR_MAX;
led_enabled = 1;
I2C3733_Control_Set(led_enabled);
}
return false;
case DBG_TOG: case DBG_TOG:
if (record->event.pressed) { if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
@ -90,33 +266,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
} }
return false; return false;
case RGB_TOG:
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
rgb_matrix_set_color_all(0, 0, 0);
}
break;
case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
}
break;
case LED_FLAG_UNDERGLOW: {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_disable_noeeprom();
}
break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable_noeeprom();
}
break;
}
}
return false;
default: default:
return true; return true;
} }
} }
led_instruction_t led_instructions[] = {
{ .flags = LED_FLAG_USE_ROTATE_PATTERN },
{ .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id0 = 0x1, .b = 253, .layer = 1 },
{ .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id0 = 0x1, .r = 253, .b = 253, .layer = 2 },
{ .flags = LED_FLAG_MATCH_LAYER | LED_FLAG_USE_PATTERN, .pattern_id = 8, .layer = 3 },
{ .end = 1 }
};

View file

@ -0,0 +1,3 @@
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
UNICODEMAP_ENABLE = yes
APL_ENABLE = yes

183
users/charlesrocket/apl.c Normal file
View file

@ -0,0 +1,183 @@
/* Copyright 2022 charlesrocket
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum unicode_names {
DIAMOND,
QUAD_DIAMOND,
DIAERESIS,
IBEAM,
MACRON,
DEL_TILDE,
LESS,
DEL_STILE,
LESS_EQUAL,
DELTA_STILE,
EQUALS,
CIRCLE_STILE,
GREATER_EQUAL,
CIRCLE_BACKSLASH,
GREATER,
CIRCLED_MINUS,
NOT_EQUAL,
CIRCLE_STAR,
OR,
DOWN_CARET_TILDE,
AND,
UP_CARET_TILDE,
MULT,
EXCL,
DIVISION,
QUAD_DIVIDE,
QUESTION_MARK,
OMEGA,
OMEGA_UNDERBAR,
EPSILON,
SMALL_ELEMENT,
EPSILON_UNDERBAR,
RHO,
TILDE,
TILDE_DIAERESIS,
UPWARDS_ARROW,
DOWNWARDS_ARROW,
IOTA,
IOTA_UNDERBAR,
WHITE_CIRCLE,
CIRCLE_DIAERESIS,
STAR_OPERATOR,
STAR_DIAERESIS,
LEFT_ARROW,
QUOTE_QUAD,
RIGHT_ARROW,
ZILDE,
ALPHA,
ALPHA_UNDERBAR,
LEFT_CEILING,
LEFT_FLOOR,
LOW_LINE,
NABLA,
INCREMENT,
DELTA_UNDERBAR,
RING_OPERATOR,
JOT_DIAERESIS,
APOSTROPHE,
QUAD_EQUAL,
QUAD,
SQUISH_QUAD,
DOWN_TACK_JOT,
IDENTICAL,
UP_TACK_JOT,
NOT_IDENTICAL,
RIGHT_TACK,
LEFT_TACK,
SUBSET,
SUPERSET,
CHI,
INTERSECTION,
UNION,
UP_TACK,
DOWN_TACK,
VERTICAL_LINE,
UP_SHOE_JOT,
COMMA_BAR,
BACKSLASH_BAR,
SLASH_BAR,
QUAD_COLON
};
const uint32_t PROGMEM unicode_map[] = {
[DIAMOND] = 0x25CA, // ◊ 0
[QUAD_DIAMOND] = 0x233A, // ⌺
[DIAERESIS] = 0x00A8, // ¨
[IBEAM] = 0x2336, // ⌶
[MACRON] = 0x00AF, // ¯
[DEL_TILDE] = 0x236B, // ⍫ 5
[LESS] = 0x003C, // <
[DEL_STILE] = 0x2352, // ⍒
[LESS_EQUAL] = 0x2264, // ≤
[DELTA_STILE] = 0x234B, // ⍋
[EQUALS] = 0x003D, // = 10
[CIRCLE_STILE] = 0x233D, // ⌽
[GREATER_EQUAL] = 0x2265, // ≥
[CIRCLE_BACKSLASH] = 0x2349, // ⍉
[GREATER] = 0x003E, // >
[CIRCLED_MINUS] = 0x2296, // ⊖ 15
[NOT_EQUAL] = 0x2260, // ≠
[CIRCLE_STAR] = 0x235F, // ⍟
[OR] = 0x2228, //
[DOWN_CARET_TILDE] = 0x2371, // ⍱
[AND] = 0x2227, // ∧ 20
[UP_CARET_TILDE] = 0x2372, // ⍲
[MULT] = 0x00D7, // ×
[EXCL] = 0x0021, // !
[DIVISION] = 0x00F7, // ÷
[QUAD_DIVIDE] = 0x2339, // ⌹ 25
[QUESTION_MARK] = 0x003F, // ?
[OMEGA] = 0x2375, // ⍵
[OMEGA_UNDERBAR] = 0x2379, // ⍹
[EPSILON] = 0x03B5, // ε
[SMALL_ELEMENT] = 0x220A, // ∊ 30
[EPSILON_UNDERBAR] = 0x2377, // ⍷
[RHO] = 0x2374, //
[TILDE] = 0x007E, // ~
[TILDE_DIAERESIS] = 0x2368, // ⍨
[UPWARDS_ARROW] = 0x2191, // ↑ 35
[DOWNWARDS_ARROW] = 0x2193, // ↓
[IOTA] = 0x2373, //
[IOTA_UNDERBAR] = 0x2378, // ⍸
[WHITE_CIRCLE] = 0x25CB, // ○
[CIRCLE_DIAERESIS] = 0x2365, // ⍥ 40
[STAR_OPERATOR] = 0x22C6, // ⋆
[STAR_DIAERESIS] = 0x2363, // ⍣
[LEFT_ARROW] = 0x2190, // ←
[QUOTE_QUAD] = 0x235E, // ⍞
[RIGHT_ARROW] = 0x2192, // → 45
[ZILDE] = 0x236C, // ⍬
[ALPHA] = 0x237A, //
[ALPHA_UNDERBAR] = 0x2376, // ⍶
[LEFT_CEILING] = 0x2308, // ⌈
[LEFT_FLOOR] = 0x230A, // ⌊ 50
[LOW_LINE] = 0x005F, // _
[NABLA] = 0x2207, // ∇
[INCREMENT] = 0x2206, // ∆
[DELTA_UNDERBAR] = 0x2359, // ⍙
[RING_OPERATOR] = 0x2218, // ∘ 55
[JOT_DIAERESIS] = 0x2364, // ⍤
[APOSTROPHE] = 0x0027, // '
[QUAD_EQUAL] = 0x2338, // ⌸
[QUAD] = 0x2395, // ⎕
[SQUISH_QUAD] = 0x2337, // ⌷ 60
[DOWN_TACK_JOT] = 0x234E, // ⍎
[IDENTICAL] = 0x2261, // ≡
[UP_TACK_JOT] = 0x2355, // ⍕
[NOT_IDENTICAL] = 0x2262, // ≢
[RIGHT_TACK] = 0x22A2, // ⊢ 65
[LEFT_TACK] = 0x22A3, // ⊣
[SUBSET] = 0x2282, // ⊂
[SUPERSET] = 0x2283, // ⊃
[CHI] = 0x03C7, // χ
[INTERSECTION] = 0x2229, // ∩ 70
[UNION] = 0x222A, //
[UP_TACK] = 0x22A5, // ⊥
[DOWN_TACK] = 0x22A4, //
[VERTICAL_LINE] = 0x007C, // |
[UP_SHOE_JOT] = 0x235D, // ⍝ 75
[COMMA_BAR] = 0x236A, // ⍪
[BACKSLASH_BAR] = 0x2340, // ⍀
[SLASH_BAR] = 0x233F, // ⌿
[QUAD_COLON] = 0x2360, // ⍠ 79
};

View file

@ -0,0 +1,3 @@
ifeq ($(strip $(APL_ENABLE)), yes)
SRC += apl.c
endif