[Keyboard] IDOBAO ID87v2 code rewrite and include factory keymap (#17232)

master^2
Vino Rodrigues 2022-07-02 22:32:32 +10:00 committed by GitHub
parent 4aca94d247
commit 7a5f76d40a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 711 additions and 389 deletions

View File

@ -1,144 +1,78 @@
// Copyright 2022 peepeetee (@peepeetee)
// Copyright 2022 vinorodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x6964 // "id"
#define PRODUCT_ID 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
/* ----------------
* RGB Matrix stuff
* ---------------- */
#define RGB_DI_PIN E2
# define DRIVER_LED_TOTAL 103 /* 16 Bottom 87 top*/
#ifdef RGB_DI_PIN
# define RGBLED_NUM 103 /* 16 Bottom 87 top*/
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#endif
#ifdef RGB_MATRIX_ENABLE
# 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
// RGB Matrix config
#if defined(RGB_MATRIX_ENABLE)
#define DRIVER_LED_TOTAL 103
#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_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
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# define ENABLE_RGB_MATRIX_SPLASH
# define ENABLE_RGB_MATRIX_MULTISPLASH
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
#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
/* RGB_MATRIX_FRAMEBUFFER_EFFECTS -- do not enable */
// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
/* RGB_MATRIX_KEYPRESSES | 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_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
* These options are also useful to firmware size reduction.
*/
* ----------------------- */
/* disable debug print */
//#define NO_DEBUG
@ -150,7 +84,3 @@
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#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",
"url": "https://www.idobao.net/products/idobao-id87-80-hot-swappable-mechanical-keyboard-kit",
"maintainer": "qmk",
"manufacturer": "IDOBAO",
"keyboard_name": "ID87v2",
"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": {
"LAYOUT_tkl_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{"label":"~", "x":0, "y":1.5},
{"label":"1", "x":1, "y":1.5},
{"label":"2", "x":2, "y":1.5},
{"label":"3", "x":3, "y":1.5},
{"label":"4", "x":4, "y":1.5},
{"label":"5", "x":5, "y":1.5},
{"label":"6", "x":6, "y":1.5},
{"label":"7", "x":7, "y":1.5},
{"label":"8", "x":8, "y":1.5},
{"label":"9", "x":9, "y":1.5},
{"label":"0", "x":10, "y":1.5},
{"label":"-", "x":11, "y":1.5},
{"label":"=", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"PgUp", "x":17.25, "y":1.5},
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
{"label":"E", "x":3.5, "y":2.5},
{"label":"R", "x":4.5, "y":2.5},
{"label":"T", "x":5.5, "y":2.5},
{"label":"Y", "x":6.5, "y":2.5},
{"label":"U", "x":7.5, "y":2.5},
{"label":"I", "x":8.5, "y":2.5},
{"label":"O", "x":9.5, "y":2.5},
{"label":"P", "x":10.5, "y":2.5},
{"label":"[", "x":11.5, "y":2.5},
{"label":"]", "x":12.5, "y":2.5},
{"label":"\\", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"PgDn", "x":17.25, "y":2.5},
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
{"label":"A", "x":1.75, "y":3.5},
{"label":"S", "x":2.75, "y":3.5},
{"label":"D", "x":3.75, "y":3.5},
{"label":"F", "x":4.75, "y":3.5},
{"label":"G", "x":5.75, "y":3.5},
{"label":"H", "x":6.75, "y":3.5},
{"label":"J", "x":7.75, "y":3.5},
{"label":"K", "x":8.75, "y":3.5},
{"label":"L", "x":9.75, "y":3.5},
{"label":";", "x":10.75, "y":3.5},
{"label":"'", "x":11.75, "y":3.5},
{"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
{"label":"Z", "x":2.25, "y":4.5},
{"label":"X", "x":3.25, "y":4.5},
{"label":"C", "x":4.25, "y":4.5},
{"label":"V", "x":5.25, "y":4.5},
{"label":"B", "x":6.25, "y":4.5},
{"label":"N", "x":7.25, "y":4.5},
{"label":"M", "x":8.25, "y":4.5},
{"label":",", "x":9.25, "y":4.5},
{"label":".", "x":10.25, "y":4.5},
{"label":"/", "x":11.25, "y":4.5},
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
{"label":"Up", "x":16.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"Win", "x":1.25, "y":5.5, "w":1.25},
{"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
{"label":"Alt", "x":10, "y":5.5, "w":1.25},
{"label":"Win", "x":11.25, "y":5.5, "w":1.25},
{"label":"LT(1, KC_APP)", "x":12.5, "y":5.5, "w":1.25},
{"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
{"label":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5}
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6.5, "y": 0 },
{ "matrix": [0, 7], "x": 7.5, "y": 0 },
{ "matrix": [0, 8], "x": 8.5, "y": 0 },
{ "matrix": [6, 8], "x": 9.5, "y": 0 },
{ "matrix": [6, 7], "x": 11, "y": 0 },
{ "matrix": [6, 5], "x": 12, "y": 0 },
{ "matrix": [6, 4], "x": 13, "y": 0 },
{ "matrix": [6, 3], "x": 14, "y": 0 },
{ "matrix": [6, 6], "x": 15.25, "y": 0 },
{ "matrix": [6, 2], "x": 16.25, "y": 0 },
{ "matrix": [6, 1], "x": 17.25, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.25 },
{ "matrix": [1, 3], "x": 3, "y": 1.25 },
{ "matrix": [1, 4], "x": 4, "y": 1.25 },
{ "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "matrix": [1, 6], "x": 6, "y": 1.25 },
{ "matrix": [1, 7], "x": 7, "y": 1.25 },
{ "matrix": [1, 8], "x": 8, "y": 1.25 },
{ "matrix": [7, 8], "x": 9, "y": 1.25 },
{ "matrix": [7, 0], "x": 10, "y": 1.25 },
{ "matrix": [7, 7], "x": 11, "y": 1.25 },
{ "matrix": [7, 5], "x": 12, "y": 1.25 },
{ "matrix": [7, 3], "x": 13, "y": 1.25, "w": 2 },
{ "matrix": [7, 6], "x": 15.25, "y": 1.25 },
{ "matrix": [7, 2], "x": 16.25, "y": 1.25 },
{ "matrix": [7, 1], "x": 17.25, "y": 1.25 },
{ "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "matrix": [8, 8], "x": 9.5, "y": 2.25 },
{ "matrix": [8, 7], "x": 10.5, "y": 2.25 },
{ "matrix": [8, 5], "x": 11.5, "y": 2.25 },
{ "matrix": [8, 4], "x": 12.5, "y": 2.25 },
{ "matrix": [8, 3], "w": 1.5, "x": 13.5, "y": 2.25 },
{ "matrix": [8, 6], "x": 15.25, "y": 2.25 },
{ "matrix": [8, 2], "x": 16.25, "y": 2.25 },
{ "matrix": [8, 1], "x": 17.25, "y": 2.25 },
{ "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
{ "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "matrix": [9, 8], "x": 9.75, "y": 3.25 },
{ "matrix": [9, 7], "x": 10.75, "y": 3.25 },
{ "matrix": [9, 5], "x": 11.75, "y": 3.25 },
{ "matrix": [9, 3], "x": 12.75, "y": 3.25, "w": 2.25 },
{ "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
{ "matrix": [4, 2], "x": 2.25, "y": 4.25 },
{ "matrix": [4, 3], "x": 3.25, "y": 4.25 },
{ "matrix": [4, 4], "x": 4.25, "y": 4.25 },
{ "matrix": [4, 5], "x": 5.25, "y": 4.25 },
{ "matrix": [4, 6], "x": 6.25, "y": 4.25 },
{ "matrix": [4, 7], "x": 7.25, "y": 4.25 },
{ "matrix": [4, 8], "x": 8.25, "y": 4.25 },
{ "matrix": [10, 8], "x": 9.25, "y": 4.25 },
{ "matrix": [10, 7], "x": 10.25, "y": 4.25 },
{ "matrix": [10, 5], "x": 11.25, "y": 4.25 },
{ "matrix": [10, 4], "x": 12.25, "y": 4.25, "w": 2.75 },
{ "matrix": [9, 2], "x": 16.25, "y": 4.25 },
{ "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
{ "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25 },
{ "matrix": [5, 8], "x": 10, "y": 5.25, "w": 1.25 },
{ "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 2020 Tybera
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/>.
*/
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#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] = {
/*
*
* 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(
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, 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
),
/*
*
* Rst
*
*
* Hu+
*
* TogMod St-Hu-St+
*
* mod
*
* NRO Br+
*
* Sp-Br-Sp+
*
*/
[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
),
_______, 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 2020 Tybera
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/>.
*/
// Copyright 2022 Vino Rodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc 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 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, LT(1, KC_APP), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
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(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
_______, BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
_______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, RGB_MOD
_______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
_______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, MO(2), RGB_VAI,
_______, _______, _______, _______, _______, KC_APP, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_tkl_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
)
};

View File

@ -1,2 +1,3 @@
LTO_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)
* 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)
## ANSI Support
* 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):
@ -22,6 +34,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
* **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
MCU = atmega32u4
# This file intentionally left blank
# ** 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_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
#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 = { {
// Key Matrix to LED Index
{ 102, NO_LED, 101, 100, 99, 98, 97, 96, 95 }, //0
{ 70, 71, 72, 73, 74, 75, 76, 77, 78 }, //1
{ 69, 68, 67, 66, 65, 64, 63, 62, 61 }, //2
{ 40, 41, 42, 43, 44, 45, 46, 47, 48 }, //3
{ 39, NO_LED, 38, 37, 36, 35, 34, 33, 32 }, //4
{ 16, 17, 18, 23, 22, NO_LED, 19, 21, 20 }, //5
{ NO_LED, 87, 88, 90, 91, 92, 89, 93, 94 }, //6
{ 80, 86, 85, 83, NO_LED, 82, 84, 81, 79 }, //7
{ NO_LED, 53, 54, 56, 57, 58, 55, 59, 60 }, //8
{ NO_LED, NO_LED, 27, 52, NO_LED, 51, NO_LED, 50, 49 }, //9
{ NO_LED, 26, 25, NO_LED, 28, 29, 24, 30, 31 } //A
// partially generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser & CSV Excel formula
{ 102, __, 101, 100, 99, 98, 97, 96, 95 },
{ 70, 71, 72, 73, 74, 75, 76, 77, 78 },
{ 69, 68, 67, 66, 65, 64, 63, 62, 61 },
{ 40, 41, 42, 43, 44, 45, 46, 47, 48 },
{ 39, __, 38, 37, 36, 35, 34, 33, 32 },
{ 16, 17, 18, 23, 22, __, 19, 21, 20 },
{ __, 87, 88, 90, 91, 92, 89, 93, 94 },
{ 80, 86, 85, 83, __, 82, 84, 81, 79 },
{ __, 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
{ 13, 51 },{ 40, 51},{ 73, 51},{ 108, 51},{ 141, 51},{ 174, 51},{ 207, 51},
{ 207, 32},
{ 207, 13},{ 174, 13},{ 141, 13},{ 108, 13},{ 73, 13},{ 40, 13},{ 13, 13},
{ 13, 32},
{ 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 },
{ 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 },
{ 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 },
{ 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 },
{ 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 },
{ 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 },
// generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
// underglow
/* colors are pushed to the edge as only the edges can be seen */
{ 0,64 }, { 37,64 }, { 75,64 }, {112,64 }, {149,64 }, {187,64 }, {224,64 },
{224,32 },
{224,0 }, {187,0 }, {149,0 }, {112,0 }, { 75,0 }, { 37,0 }, { 0,0 },
{ 0,32 },
// under-, per-key
/* pattern is complex; starts at btm-lft, zig-zags up, and ends top-lft */
{ 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
{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
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
// underglow
2, 2, 2, 2, 2, 2, 2,
2,
2, 2, 2, 2, 2, 2, 2,
2,
// under-, per-key
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
9,4,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,9,1,4,4,4,4,1,1,1,1,4,4,4,4,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 2020 Tybera
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/>.
*/
// Copyright 2022 vinorodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#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 }, \
}