Merge remote-tracking branch 'qmk/master' into merge-2024-04-15

This commit is contained in:
Ilya Zhuravlev
2024-04-15 19:43:02 -06:00
8919 changed files with 113667 additions and 418236 deletions

View File

@@ -23,24 +23,10 @@
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_GND
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 49
#define DRIVER_2_LED_TOTAL 39
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
/* Set led driver current */
#define SNLED27351_CURRENT_TUNE \
{ 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* Enable caps_lock, win os and mac os indicator */
#define CAPS_MAC_WIN_LED_INDEX 63
// 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

View File

@@ -224,6 +224,7 @@
{"matrix":[5, 14], "flags":1, "x":198, "y":64},
{"matrix":[5, 15], "flags":1, "x":211, "y":64},
{"matrix":[4, 14], "flags":1, "x":224, "y":64}
]
],
"sleep": true
}
}

View File

@@ -18,107 +18,107 @@
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_15, G_15, H_15},
{0, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
{0, CB9_CA1, CB7_CA1, CB8_CA1},
{0, CB9_CA2, CB7_CA2, CB8_CA2},
{0, CB9_CA3, CB7_CA3, CB8_CA3},
{0, CB9_CA4, CB7_CA4, CB8_CA4},
{0, CB9_CA5, CB7_CA5, CB8_CA5},
{0, CB9_CA6, CB7_CA6, CB8_CA6},
{0, CB9_CA7, CB7_CA7, CB8_CA7},
{0, CB9_CA8, CB7_CA8, CB8_CA8},
{0, CB9_CA9, CB7_CA9, CB8_CA9},
{0, CB9_CA10, CB7_CA10, CB8_CA10},
{0, CB9_CA11, CB7_CA11, CB8_CA11},
{0, CB9_CA12, CB7_CA12, CB8_CA12},
{0, CB9_CA13, CB7_CA13, CB8_CA13},
{0, CB9_CA15, CB7_CA15, CB8_CA15},
{0, CB9_CA16, CB7_CA16, CB8_CA16},
{1, CB9_CA15, CB7_CA15, CB8_CA15},
{0, C_1, A_1, B_1},
{0, C_2, A_2, B_2},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{1, I_16, G_16, H_16},
{0, CB3_CA1, CB1_CA1, CB2_CA1},
{0, CB3_CA2, CB1_CA2, CB2_CA2},
{0, CB3_CA3, CB1_CA3, CB2_CA3},
{0, CB3_CA4, CB1_CA4, CB2_CA4},
{0, CB3_CA5, CB1_CA5, CB2_CA5},
{0, CB3_CA6, CB1_CA6, CB2_CA6},
{0, CB3_CA7, CB1_CA7, CB2_CA7},
{0, CB3_CA8, CB1_CA8, CB2_CA8},
{0, CB3_CA9, CB1_CA9, CB2_CA9},
{0, CB3_CA10, CB1_CA10, CB2_CA10},
{0, CB3_CA11, CB1_CA11, CB2_CA11},
{0, CB3_CA12, CB1_CA12, CB2_CA12},
{0, CB3_CA13, CB1_CA13, CB2_CA13},
{0, CB3_CA14, CB1_CA14, CB2_CA14},
{0, CB3_CA15, CB1_CA15, CB2_CA15},
{0, CB3_CA16, CB1_CA16, CB2_CA16},
{1, CB9_CA16, CB7_CA16, CB8_CA16},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{1, I_13, G_13, H_13},
{0, CB6_CA1, CB4_CA1, CB5_CA1},
{0, CB6_CA2, CB4_CA2, CB5_CA2},
{0, CB6_CA3, CB4_CA3, CB5_CA3},
{0, CB6_CA4, CB4_CA4, CB5_CA4},
{0, CB6_CA5, CB4_CA5, CB5_CA5},
{0, CB6_CA6, CB4_CA6, CB5_CA6},
{0, CB6_CA7, CB4_CA7, CB5_CA7},
{0, CB6_CA8, CB4_CA8, CB5_CA8},
{0, CB6_CA9, CB4_CA9, CB5_CA9},
{0, CB6_CA10, CB4_CA10, CB5_CA10},
{0, CB6_CA11, CB4_CA11, CB5_CA11},
{0, CB6_CA12, CB4_CA12, CB5_CA12},
{0, CB6_CA13, CB4_CA13, CB5_CA13},
{0, CB6_CA14, CB4_CA14, CB5_CA14},
{0, CB6_CA15, CB4_CA15, CB5_CA15},
{0, CB6_CA16, CB4_CA16, CB5_CA16},
{1, CB9_CA13, CB7_CA13, CB8_CA13},
{1, I_1, G_1, H_1},
{1, I_2, G_2, H_2},
{1, I_3, G_3, H_3},
{1, I_4, G_4, H_4},
{1, I_5, G_5, H_5},
{1, I_6, G_6, H_6},
{1, I_7, G_7, H_7},
{1, I_8, G_8, H_8},
{1, I_9, G_9, H_9},
{1, I_10, G_10, H_10},
{1, I_11, G_11, H_11},
{1, I_12, G_12, H_12},
{1, I_14, G_14, H_14},
{1, CB9_CA1, CB7_CA1, CB8_CA1},
{1, CB9_CA2, CB7_CA2, CB8_CA2},
{1, CB9_CA3, CB7_CA3, CB8_CA3},
{1, CB9_CA4, CB7_CA4, CB8_CA4},
{1, CB9_CA5, CB7_CA5, CB8_CA5},
{1, CB9_CA6, CB7_CA6, CB8_CA6},
{1, CB9_CA7, CB7_CA7, CB8_CA7},
{1, CB9_CA8, CB7_CA8, CB8_CA8},
{1, CB9_CA9, CB7_CA9, CB8_CA9},
{1, CB9_CA10, CB7_CA10, CB8_CA10},
{1, CB9_CA11, CB7_CA11, CB8_CA11},
{1, CB9_CA12, CB7_CA12, CB8_CA12},
{1, CB9_CA14, CB7_CA14, CB8_CA14},
{0, I_14, G_14, H_14}, // CAPS_MAC_WIN_LED_INDEX
{0, CB9_CA14, CB7_CA14, CB8_CA14}, // CAPS_MAC_WIN_LED_INDEX
{1, C_1, A_1, B_1},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
{1, C_5, A_5, B_5},
{1, C_6, A_6, B_6},
{1, C_7, A_7, B_7},
{1, C_8, A_8, B_8},
{1, C_9, A_9, B_9},
{1, C_10, A_10, B_10},
{1, C_11, A_11, B_11},
{1, C_12, A_12, B_12},
{1, C_14, A_14, B_14},
{1, C_16, A_16, B_16},
{1, CB3_CA1, CB1_CA1, CB2_CA1},
{1, CB3_CA3, CB1_CA3, CB2_CA3},
{1, CB3_CA4, CB1_CA4, CB2_CA4},
{1, CB3_CA5, CB1_CA5, CB2_CA5},
{1, CB3_CA6, CB1_CA6, CB2_CA6},
{1, CB3_CA7, CB1_CA7, CB2_CA7},
{1, CB3_CA8, CB1_CA8, CB2_CA8},
{1, CB3_CA9, CB1_CA9, CB2_CA9},
{1, CB3_CA10, CB1_CA10, CB2_CA10},
{1, CB3_CA11, CB1_CA11, CB2_CA11},
{1, CB3_CA12, CB1_CA12, CB2_CA12},
{1, CB3_CA14, CB1_CA14, CB2_CA14},
{1, CB3_CA16, CB1_CA16, CB2_CA16},
{1, F_1, D_1, E_1},
{1, F_2, D_2, E_2},
{1, F_3, D_3, E_3},
{1, F_7, D_7, E_7},
{1, F_11, D_11, E_11},
{1, F_12, D_12, E_12},
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
{1, CB6_CA1, CB4_CA1, CB5_CA1},
{1, CB6_CA2, CB4_CA2, CB5_CA2},
{1, CB6_CA3, CB4_CA3, CB5_CA3},
{1, CB6_CA7, CB4_CA7, CB5_CA7},
{1, CB6_CA11, CB4_CA11, CB5_CA11},
{1, CB6_CA12, CB4_CA12, CB5_CA12},
{1, CB6_CA13, CB4_CA13, CB5_CA13},
{1, CB6_CA14, CB4_CA14, CB5_CA14},
{1, CB6_CA15, CB4_CA15, CB5_CA15},
{1, CB6_CA16, CB4_CA16, CB5_CA16},
{1, CB3_CA15, CB1_CA15, CB2_CA15},
};
// clang-format on

View File

@@ -21,26 +21,11 @@
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
/* LED Matrix Configuration */
#define LED_MATRIX_LED_COUNT 90
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
/* Set led driver current */
#define SNLED27351_CURRENT_TUNE \
{ 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
/* turn off effects when suspended */
#define LED_DISABLE_WHEN_USB_SUSPENDED
/* Enbale caps_lcok, win os and mac os indicator */
#define CAPS_LOCK_LED_INDEX 63
#define MAC_LOCK_LED_INDEX 64
#define WIN_LOCK_LED_INDEX 65
// LED Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
#define LED_MATRIX_KEYPRESSES
#define LED_MATRIX_KEYRELEASES

View File

@@ -107,8 +107,6 @@
"led_matrix": {
"driver": "snled27351",
"animations": {
"none": true,
"solid": true,
"breathing": true,
"band_pinwheel": true,
"band_spiral": true,
@@ -221,6 +219,8 @@
{"matrix":[5, 14], "flags":1, "x":198, "y":64},
{"matrix":[5, 15], "flags":1, "x":211, "y":64},
{"matrix":[3, 15], "flags":1, "x":224, "y":64}
]
],
"sleep": true,
"react_on_keyup": true
}
}

View File

@@ -18,107 +18,107 @@
// clang-format off
#ifdef LED_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
* | | */
{0, A_16}, // esc
{0, A_15}, // f1
{0, A_14}, // f2
{0, A_13}, // f3
{0, A_12}, // f4
{0, A_11}, // f5
{0, A_10}, // f6
{0, A_9}, // f7
{0, A_8}, // f8
{0, A_7}, // f9
{0, A_6}, // f10
{0, A_5}, // f11
{0, A_4}, // f12
{0, A_2}, // print
{0, A_1}, // siri
{0, G_1}, // light
{0, CB1_CA16}, // esc
{0, CB1_CA15}, // f1
{0, CB1_CA14}, // f2
{0, CB1_CA13}, // f3
{0, CB1_CA12}, // f4
{0, CB1_CA11}, // f5
{0, CB1_CA10}, // f6
{0, CB1_CA9}, // f7
{0, CB1_CA8}, // f8
{0, CB1_CA7}, // f9
{0, CB1_CA6}, // f10
{0, CB1_CA5}, // f11
{0, CB1_CA4}, // f12
{0, CB1_CA2}, // print
{0, CB1_CA1}, // siri
{0, CB7_CA1}, // light
{0, B_16}, // ~
{0, B_15}, // 1!
{0, B_14}, // 2@
{0, B_13}, // 3#
{0, B_12}, // 4$
{0, B_11}, // 5%
{0, B_10}, // 6^
{0, B_9}, // 7&
{0, B_8}, // 8*
{0, B_7}, // 9(
{0, B_6}, // 0)
{0, B_5}, // -_
{0, B_4}, // =+
{0, B_3}, // back space
{0, B_2}, // INS
{0, B_1}, // HOME
{0, H_1}, // PGUP
{0, CB2_CA16}, // ~
{0, CB2_CA15}, // 1!
{0, CB2_CA14}, // 2@
{0, CB2_CA13}, // 3#
{0, CB2_CA12}, // 4$
{0, CB2_CA11}, // 5%
{0, CB2_CA10}, // 6^
{0, CB2_CA9}, // 7&
{0, CB2_CA8}, // 8*
{0, CB2_CA7}, // 9(
{0, CB2_CA6}, // 0)
{0, CB2_CA5}, // -_
{0, CB2_CA4}, // =+
{0, CB2_CA3}, // back space
{0, CB2_CA2}, // INS
{0, CB2_CA1}, // HOME
{0, CB8_CA1}, // PGUP
{0, C_16}, // tab
{0, C_15}, // q
{0, C_14}, // w
{0, C_13}, // e
{0, C_12}, // r
{0, C_11}, // t
{0, C_10}, // y
{0, C_9}, // u
{0, C_8}, // i
{0, C_7}, // o
{0, C_6}, // p
{0, C_5}, // [{
{0, C_4}, // ]}
{0, C_3}, // \|
{0, C_2}, // DEL
{0, C_1}, // END
{0, G_6}, // PGDN
{0, CB3_CA16}, // tab
{0, CB3_CA15}, // q
{0, CB3_CA14}, // w
{0, CB3_CA13}, // e
{0, CB3_CA12}, // r
{0, CB3_CA11}, // t
{0, CB3_CA10}, // y
{0, CB3_CA9}, // u
{0, CB3_CA8}, // i
{0, CB3_CA7}, // o
{0, CB3_CA6}, // p
{0, CB3_CA5}, // [{
{0, CB3_CA4}, // ]}
{0, CB3_CA3}, // \|
{0, CB3_CA2}, // DEL
{0, CB3_CA1}, // END
{0, CB7_CA6}, // PGDN
{0, D_16}, // caps lock
{0, D_15}, // a
{0, D_14}, // s
{0, D_13}, // d
{0, D_12}, // f
{0, D_11}, // g
{0, D_10}, // h
{0, D_9}, // j
{0, D_8}, // k
{0, D_7}, // l
{0, D_6}, // ;:
{0, D_5}, // '"
{0, D_3}, // enter
{0, CB4_CA16}, // caps lock
{0, CB4_CA15}, // a
{0, CB4_CA14}, // s
{0, CB4_CA13}, // d
{0, CB4_CA12}, // f
{0, CB4_CA11}, // g
{0, CB4_CA10}, // h
{0, CB4_CA9}, // j
{0, CB4_CA8}, // k
{0, CB4_CA7}, // l
{0, CB4_CA6}, // ;:
{0, CB4_CA5}, // '"
{0, CB4_CA3}, // enter
{0, H_7}, // CPAS
{0, H_8}, // MAC
{0, H_9}, // WIN
{0, CB8_CA7}, // CPAS
{0, CB8_CA8}, // MAC
{0, CB8_CA9}, // WIN
{0, E_16}, // left shift
{0, E_14}, // z
{0, E_13}, // x
{0, E_12}, // c
{0, E_11}, // v
{0, E_10}, // b
{0, E_9}, // b
{0, E_8}, // n
{0, E_7}, // m
{0, E_6}, // ,<
{0, E_5}, // .>
{0, E_3}, // right shift
{0, E_1}, // up
{0, CB5_CA16}, // left shift
{0, CB5_CA14}, // z
{0, CB5_CA13}, // x
{0, CB5_CA12}, // c
{0, CB5_CA11}, // v
{0, CB5_CA10}, // b
{0, CB5_CA9}, // b
{0, CB5_CA8}, // n
{0, CB5_CA7}, // m
{0, CB5_CA6}, // ,<
{0, CB5_CA5}, // .>
{0, CB5_CA3}, // right shift
{0, CB5_CA1}, // up
{0, F_16}, // left ctrl
{0, F_15}, // left command
{0, F_14}, // left option
{0, F_10}, // space
{0, F_6}, // right command
{0, F_5}, // right option
{0, F_4}, // right ctrl
{0, F_3}, // Fn
{0, F_2}, // left
{0, F_1}, // down
{0, G_13}, // right
{0, CB6_CA16}, // left ctrl
{0, CB6_CA15}, // left command
{0, CB6_CA14}, // left option
{0, CB6_CA10}, // space
{0, CB6_CA6}, // right command
{0, CB6_CA5}, // right option
{0, CB6_CA4}, // right ctrl
{0, CB6_CA3}, // Fn
{0, CB6_CA2}, // left
{0, CB6_CA1}, // down
{0, CB7_CA13}, // right
};
// clang-format on

View File

@@ -16,19 +16,6 @@
#include "quantum.h"
// clang-format off
const matrix_row_t matrix_mask[] = {
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111101111,
};
// clang-format on
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {

View File

@@ -16,16 +16,6 @@
#pragma once
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
#define I2C1_TIMINGR_SCLDEL 3U

View File

@@ -8,6 +8,11 @@
"usb": {
"vid": "0x3434"
},
"eeprom": {
"wear_leveling": {
"backing_size": 4096
}
},
"features": {
"bootmagic": true,
"command": false,
@@ -17,6 +22,9 @@
"mousekey": true,
"nkro": true
},
"dip_switch": {
"matrix_grid": [ [5, 4] ]
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]

View File

@@ -24,22 +24,8 @@
#define SNLED27351_CURRENT_TUNE \
{ 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56 }
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable indicator LED*/
#define NUM_LED_INDEX 16
#define CAPS_LED_INDEX 17
#define MAC_LED_INDEX 18
#define WIN_LED_INDEX 19
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
// 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

View File

@@ -261,6 +261,7 @@
{"matrix":[5, 16], "flags":1, "x":180, "y":64},
{"matrix":[5, 17], "flags":4, "x":198, "y":64},
{"matrix":[5, 18], "flags":4, "x":214, "y":64}
]
],
"sleep": true
}
}

View File

@@ -17,126 +17,126 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_15, G_15, H_15},
{0, I_16, G_16, H_16},
{0, L_5, J_5, K_5},
{0, CB9_CA1, CB7_CA1, CB8_CA1},
{0, CB9_CA2, CB7_CA2, CB8_CA2},
{0, CB9_CA3, CB7_CA3, CB8_CA3},
{0, CB9_CA4, CB7_CA4, CB8_CA4},
{0, CB9_CA5, CB7_CA5, CB8_CA5},
{0, CB9_CA6, CB7_CA6, CB8_CA6},
{0, CB9_CA7, CB7_CA7, CB8_CA7},
{0, CB9_CA8, CB7_CA8, CB8_CA8},
{0, CB9_CA9, CB7_CA9, CB8_CA9},
{0, CB9_CA10, CB7_CA10, CB8_CA10},
{0, CB9_CA11, CB7_CA11, CB8_CA11},
{0, CB9_CA12, CB7_CA12, CB8_CA12},
{0, CB9_CA13, CB7_CA13, CB8_CA13},
{0, CB9_CA15, CB7_CA15, CB8_CA15},
{0, CB9_CA16, CB7_CA16, CB8_CA16},
{0, CB12_CA5, CB10_CA5, CB11_CA5},
{0, L_6, J_6, K_6}, // CapsLock
{0, L_7, J_7, K_7}, // NumLock
{0, L_8, J_8, K_8}, // Mac
{0, L_4, J_4, K_4}, // Win
{0, CB12_CA6, CB10_CA6, CB11_CA6}, // CapsLock
{0, CB12_CA7, CB10_CA7, CB11_CA7}, // NumLock
{0, CB12_CA8, CB10_CA8, CB11_CA8}, // Mac
{0, CB12_CA4, CB10_CA4, CB11_CA4}, // Win
{0, C_1, A_1, B_1},
{0, C_2, A_2, B_2},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{0, L_9, J_9, K_9},
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_13, J_13, K_13},
{0, CB3_CA1, CB1_CA1, CB2_CA1},
{0, CB3_CA2, CB1_CA2, CB2_CA2},
{0, CB3_CA3, CB1_CA3, CB2_CA3},
{0, CB3_CA4, CB1_CA4, CB2_CA4},
{0, CB3_CA5, CB1_CA5, CB2_CA5},
{0, CB3_CA6, CB1_CA6, CB2_CA6},
{0, CB3_CA7, CB1_CA7, CB2_CA7},
{0, CB3_CA8, CB1_CA8, CB2_CA8},
{0, CB3_CA9, CB1_CA9, CB2_CA9},
{0, CB3_CA10, CB1_CA10, CB2_CA10},
{0, CB3_CA11, CB1_CA11, CB2_CA11},
{0, CB3_CA12, CB1_CA12, CB2_CA12},
{0, CB3_CA13, CB1_CA13, CB2_CA13},
{0, CB3_CA14, CB1_CA14, CB2_CA14},
{0, CB3_CA15, CB1_CA15, CB2_CA15},
{0, CB3_CA16, CB1_CA16, CB2_CA16},
{0, CB12_CA9, CB10_CA9, CB11_CA9},
{0, CB12_CA10, CB10_CA10, CB11_CA10},
{0, CB12_CA11, CB10_CA11, CB11_CA11},
{0, CB12_CA12, CB10_CA12, CB11_CA12},
{0, CB12_CA13, CB10_CA13, CB11_CA13},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_14, J_14, K_14},
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
{0, CB6_CA1, CB4_CA1, CB5_CA1},
{0, CB6_CA2, CB4_CA2, CB5_CA2},
{0, CB6_CA3, CB4_CA3, CB5_CA3},
{0, CB6_CA4, CB4_CA4, CB5_CA4},
{0, CB6_CA5, CB4_CA5, CB5_CA5},
{0, CB6_CA6, CB4_CA6, CB5_CA6},
{0, CB6_CA7, CB4_CA7, CB5_CA7},
{0, CB6_CA8, CB4_CA8, CB5_CA8},
{0, CB6_CA9, CB4_CA9, CB5_CA9},
{0, CB6_CA10, CB4_CA10, CB5_CA10},
{0, CB6_CA11, CB4_CA11, CB5_CA11},
{0, CB6_CA12, CB4_CA12, CB5_CA12},
{0, CB6_CA13, CB4_CA13, CB5_CA13},
{0, CB6_CA14, CB4_CA14, CB5_CA14},
{0, CB6_CA15, CB4_CA15, CB5_CA15},
{0, CB6_CA16, CB4_CA16, CB5_CA16},
{0, CB12_CA14, CB10_CA14, CB11_CA14},
{0, CB12_CA15, CB10_CA15, CB11_CA15},
{0, CB12_CA16, CB10_CA16, CB11_CA16},
{1, CB12_CA1, CB10_CA1, CB11_CA1},
{1, CB12_CA2, CB10_CA2, CB11_CA2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
{1, C_14, A_14, B_14},
{1, C_13, A_13, B_13},
{1, C_12, A_12, B_12},
{1, C_11, A_11, B_11},
{1, C_10, A_10, B_10},
{1, C_9, A_9, B_9},
{1, C_8, A_8, B_8},
{1, C_7, A_7, B_7},
{1, C_6, A_6, B_6},
{1, C_5, A_5, B_5},
{1, C_3, A_3, B_3},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
{1, CB3_CA16, CB1_CA16, CB2_CA16},
{1, CB3_CA15, CB1_CA15, CB2_CA15},
{1, CB3_CA14, CB1_CA14, CB2_CA14},
{1, CB3_CA13, CB1_CA13, CB2_CA13},
{1, CB3_CA12, CB1_CA12, CB2_CA12},
{1, CB3_CA11, CB1_CA11, CB2_CA11},
{1, CB3_CA10, CB1_CA10, CB2_CA10},
{1, CB3_CA9, CB1_CA9, CB2_CA9},
{1, CB3_CA8, CB1_CA8, CB2_CA8},
{1, CB3_CA7, CB1_CA7, CB2_CA7},
{1, CB3_CA6, CB1_CA6, CB2_CA6},
{1, CB3_CA5, CB1_CA5, CB2_CA5},
{1, CB3_CA3, CB1_CA3, CB2_CA3},
{1, CB12_CA3, CB10_CA3, CB11_CA3},
{1, CB12_CA4, CB10_CA4, CB11_CA4},
{1, CB12_CA5, CB10_CA5, CB11_CA5},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
{1, I_13, G_13, H_13},
{1, I_12, G_12, H_12},
{1, I_11, G_11, H_11},
{1, I_10, G_10, H_10},
{1, I_9, G_9, H_9},
{1, I_8, G_8, H_8},
{1, I_7, G_7, H_7},
{1, I_6, G_6, H_6},
{1, I_5, G_5, H_5},
{1, I_3, G_3, H_3},
{1, I_1, G_1, H_1},
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
{1, L_9, J_9, K_9},
{1, CB9_CA16, CB7_CA16, CB8_CA16},
{1, CB9_CA14, CB7_CA14, CB8_CA14},
{1, CB9_CA13, CB7_CA13, CB8_CA13},
{1, CB9_CA12, CB7_CA12, CB8_CA12},
{1, CB9_CA11, CB7_CA11, CB8_CA11},
{1, CB9_CA10, CB7_CA10, CB8_CA10},
{1, CB9_CA9, CB7_CA9, CB8_CA9},
{1, CB9_CA8, CB7_CA8, CB8_CA8},
{1, CB9_CA7, CB7_CA7, CB8_CA7},
{1, CB9_CA6, CB7_CA6, CB8_CA6},
{1, CB9_CA5, CB7_CA5, CB8_CA5},
{1, CB9_CA3, CB7_CA3, CB8_CA3},
{1, CB9_CA1, CB7_CA1, CB8_CA1},
{1, CB12_CA6, CB10_CA6, CB11_CA6},
{1, CB12_CA7, CB10_CA7, CB11_CA7},
{1, CB12_CA8, CB10_CA8, CB11_CA8},
{1, CB12_CA9, CB10_CA9, CB11_CA9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
{1, F_14, D_14, E_14},
{1, F_10, D_10, E_10},
{1, F_6, D_6, E_6},
{1, F_5, D_5, E_5},
{1, F_4, D_4, E_4},
{1, F_3, D_3, E_3},
{1, F_2, D_2, E_2},
{1, F_1, D_1, E_1},
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
{1, CB6_CA16, CB4_CA16, CB5_CA16},
{1, CB6_CA15, CB4_CA15, CB5_CA15},
{1, CB6_CA14, CB4_CA14, CB5_CA14},
{1, CB6_CA10, CB4_CA10, CB5_CA10},
{1, CB6_CA6, CB4_CA6, CB5_CA6},
{1, CB6_CA5, CB4_CA5, CB5_CA5},
{1, CB6_CA4, CB4_CA4, CB5_CA4},
{1, CB6_CA3, CB4_CA3, CB5_CA3},
{1, CB6_CA2, CB4_CA2, CB5_CA2},
{1, CB6_CA1, CB4_CA1, CB5_CA1},
{1, CB12_CA10, CB10_CA10, CB11_CA10},
{1, CB12_CA11, CB10_CA11, CB11_CA11},
{1, CB12_CA12, CB10_CA12, CB11_CA12},
};
#endif //RGB_MATRIX_ENABLE

View File

@@ -18,26 +18,11 @@
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
/* Set LED driver current */
#define SNLED27351_CURRENT_TUNE \
{ 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0 }
/* LED Matrix Configuration */
#define LED_MATRIX_LED_COUNT 108
/* Enable indicator LED*/
#define NUM_LED_INDEX 16
#define CAPS_LED_INDEX 17
#define MAC_LED_INDEX 18
#define WIN_LED_INDEX 19
/* turn off effects when suspended */
#define LED_DISABLE_WHEN_USB_SUSPENDED
// LED Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
#define LED_MATRIX_KEYPRESSES
#define LED_MATRIX_KEYRELEASES

View File

@@ -124,8 +124,6 @@
"led_matrix": {
"driver": "snled27351",
"animations": {
"none": true,
"solid": true,
"breathing": true,
"band_pinwheel": true,
"band_spiral": true,
@@ -256,6 +254,8 @@
{"matrix":[5, 16], "flags":1, "x":180, "y":64},
{"matrix":[5, 17], "flags":4, "x":198, "y":64},
{"matrix":[5, 19], "flags":4, "x":214, "y":64}
]
],
"sleep": true,
"react_on_keyup": true
}
}

View File

@@ -18,124 +18,124 @@
// clang-format off
#ifdef LED_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
* | | */
{0, A_16},
{0, A_15},
{0, A_14},
{0, A_13},
{0, A_12},
{0, A_11},
{0, A_10},
{0, A_9 },
{0, A_8 },
{0, A_7 },
{0, A_6 },
{0, A_5 },
{0, A_4 },
{0, A_2 },
{0, A_1 },
{0, G_1 },
{0, CB1_CA16},
{0, CB1_CA15},
{0, CB1_CA14},
{0, CB1_CA13},
{0, CB1_CA12},
{0, CB1_CA11},
{0, CB1_CA10},
{0, CB1_CA9 },
{0, CB1_CA8 },
{0, CB1_CA7 },
{0, CB1_CA6 },
{0, CB1_CA5 },
{0, CB1_CA4 },
{0, CB1_CA2 },
{0, CB1_CA1 },
{0, CB7_CA1 },
{0, G_2 },
{0, G_3 }, // NumLock
{0, G_4 }, // Mac
{0, G_5 }, // Win
{0, CB7_CA2 },
{0, CB7_CA3 }, // NumLock
{0, CB7_CA4 }, // Mac
{0, CB7_CA5 }, // Win
{0, B_16},
{0, B_15},
{0, B_14},
{0, B_13},
{0, B_12},
{0, B_11},
{0, B_10},
{0, B_9 },
{0, B_8 },
{0, B_7 },
{0, B_6 },
{0, B_5 },
{0, B_4 },
{0, B_3 },
{0, B_2 },
{0, B_1 },
{0, H_1 },
{0, H_2 },
{0, H_3 },
{0, H_4 },
{0, H_5 },
{0, CB2_CA16},
{0, CB2_CA15},
{0, CB2_CA14},
{0, CB2_CA13},
{0, CB2_CA12},
{0, CB2_CA11},
{0, CB2_CA10},
{0, CB2_CA9 },
{0, CB2_CA8 },
{0, CB2_CA7 },
{0, CB2_CA6 },
{0, CB2_CA5 },
{0, CB2_CA4 },
{0, CB2_CA3 },
{0, CB2_CA2 },
{0, CB2_CA1 },
{0, CB8_CA1 },
{0, CB8_CA2 },
{0, CB8_CA3 },
{0, CB8_CA4 },
{0, CB8_CA5 },
{0, C_16},
{0, C_15},
{0, C_14},
{0, C_13},
{0, C_12},
{0, C_11},
{0, C_10},
{0, C_9 },
{0, C_8 },
{0, C_7 },
{0, C_6 },
{0, C_5 },
{0, C_4 },
{0, C_3 },
{0, C_2 },
{0, C_1 },
{0, G_6 },
{0, G_7 },
{0, G_8 },
{0, G_9 },
{0, G_10},
{0, CB3_CA16},
{0, CB3_CA15},
{0, CB3_CA14},
{0, CB3_CA13},
{0, CB3_CA12},
{0, CB3_CA11},
{0, CB3_CA10},
{0, CB3_CA9 },
{0, CB3_CA8 },
{0, CB3_CA7 },
{0, CB3_CA6 },
{0, CB3_CA5 },
{0, CB3_CA4 },
{0, CB3_CA3 },
{0, CB3_CA2 },
{0, CB3_CA1 },
{0, CB7_CA6 },
{0, CB7_CA7 },
{0, CB7_CA8 },
{0, CB7_CA9 },
{0, CB7_CA10},
{0, D_16},
{0, D_15},
{0, D_14},
{0, D_13},
{0, D_12},
{0, D_11},
{0, D_10},
{0, D_9 },
{0, D_8 },
{0, D_7 },
{0, D_6 },
{0, D_5 },
{0, D_3 },
{0, H_7 },
{0, H_8 },
{0, H_9 },
{0, CB4_CA16},
{0, CB4_CA15},
{0, CB4_CA14},
{0, CB4_CA13},
{0, CB4_CA12},
{0, CB4_CA11},
{0, CB4_CA10},
{0, CB4_CA9 },
{0, CB4_CA8 },
{0, CB4_CA7 },
{0, CB4_CA6 },
{0, CB4_CA5 },
{0, CB4_CA3 },
{0, CB8_CA7 },
{0, CB8_CA8 },
{0, CB8_CA9 },
{0, E_16},
{0, E_14},
{0, E_13},
{0, E_12},
{0, E_11},
{0, E_10},
{0, E_9 },
{0, E_8 },
{0, E_7 },
{0, E_6 },
{0, E_5 },
{0, E_3 },
{0, E_1 },
{0, H_6 },
{0, H_11},
{0, H_12},
{0, H_10},
{0, CB5_CA16},
{0, CB5_CA14},
{0, CB5_CA13},
{0, CB5_CA12},
{0, CB5_CA11},
{0, CB5_CA10},
{0, CB5_CA9 },
{0, CB5_CA8 },
{0, CB5_CA7 },
{0, CB5_CA6 },
{0, CB5_CA5 },
{0, CB5_CA3 },
{0, CB5_CA1 },
{0, CB8_CA6 },
{0, CB8_CA11},
{0, CB8_CA12},
{0, CB8_CA10},
{0, F_16},
{0, F_15},
{0, F_14},
{0, F_10},
{0, F_6 },
{0, F_5 },
{0, F_4 },
{0, F_3 },
{0, F_2 },
{0, F_1 },
{0, G_13},
{0, G_11},
{0, G_12},
{0, CB6_CA16},
{0, CB6_CA15},
{0, CB6_CA14},
{0, CB6_CA10},
{0, CB6_CA6 },
{0, CB6_CA5 },
{0, CB6_CA4 },
{0, CB6_CA3 },
{0, CB6_CA2 },
{0, CB6_CA1 },
{0, CB7_CA13},
{0, CB7_CA11},
{0, CB7_CA12},
};
#endif //LED_MATRIX_ENABLE

View File

@@ -16,18 +16,6 @@
#include "quantum.h"
// clang-format off
const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
0b11111111111111111111,
0b11111111111111111111,
0b11111111111111111111,
0b11111111111111111111,
0b11111111111111101111,
};
// clang-format on
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {

View File

@@ -16,16 +16,6 @@
#pragma once
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
#define I2C1_TIMINGR_SCLDEL 3U

View File

@@ -8,6 +8,11 @@
"usb": {
"vid": "0x3434"
},
"eeprom": {
"wear_leveling": {
"backing_size": 4096
}
},
"features": {
"bootmagic": true,
"command": false,
@@ -17,6 +22,9 @@
"mousekey": true,
"nkro": true
},
"dip_switch": {
"matrix_grid": [ [5, 4] ]
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "C14"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"],

View File

@@ -20,38 +20,38 @@
// clang-format off
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, F_5, D_5, E_5}, // 0
{0, I_5, G_5, H_5}, // 1
{0, L_5, J_5, K_5}, // 2
{0, C_5, A_5, B_5}, // 3
{0, CB6_CA5, CB4_CA5, CB5_CA5}, // 0
{0, CB9_CA5, CB7_CA5, CB8_CA5}, // 1
{0, CB12_CA5, CB10_CA5, CB11_CA5}, // 2
{0, CB3_CA5, CB1_CA5, CB2_CA5}, // 3
{0, F_4, D_4, E_4}, // 4
{0, I_4, G_4, H_4}, // 5
{0, L_4, J_4, K_4}, // 6
{0, C_4, A_4, B_4}, // 7
{0, CB6_CA4, CB4_CA4, CB5_CA4}, // 4
{0, CB9_CA4, CB7_CA4, CB8_CA4}, // 5
{0, CB12_CA4, CB10_CA4, CB11_CA4}, // 6
{0, CB3_CA4, CB1_CA4, CB2_CA4}, // 7
{0, F_6, D_6, E_6}, // 8
{0, I_6, G_6, H_6}, // 9
{0, L_6, J_6, K_6}, // 10
{0, CB6_CA6, CB4_CA6, CB5_CA6}, // 8
{0, CB9_CA6, CB7_CA6, CB8_CA6}, // 9
{0, CB12_CA6, CB10_CA6, CB11_CA6}, // 10
{0, F_3, D_3, E_3}, // 11
{0, I_3, G_3, H_3}, // 12
{0, L_3, J_3, K_3}, // 13
{0, C_6, A_6, B_6}, // 14
{0, CB6_CA3, CB4_CA3, CB5_CA3}, // 11
{0, CB9_CA3, CB7_CA3, CB8_CA3}, // 12
{0, CB12_CA3, CB10_CA3, CB11_CA3}, // 13
{0, CB3_CA6, CB1_CA6, CB2_CA6}, // 14
{0, F_2, D_2, E_2}, // 15
{0, I_2, G_2, H_2}, // 16
{0, L_2, J_2, K_2}, // 17
{0, CB6_CA2, CB4_CA2, CB5_CA2}, // 15
{0, CB9_CA2, CB7_CA2, CB8_CA2}, // 16
{0, CB12_CA2, CB10_CA2, CB11_CA2}, // 17
{0, F_1, D_1, E_1}, // 18
{0, L_1, J_1, K_1}, // 19
{0, C_2, A_2, B_2}, // 20
{0, CB6_CA1, CB4_CA1, CB5_CA1}, // 18
{0, CB12_CA1, CB10_CA1, CB11_CA1}, // 19
{0, CB3_CA2, CB1_CA2, CB2_CA2}, // 20
};
#endif // RGB_MATRIX_ENABLE

View File

@@ -19,8 +19,5 @@
/* RGB Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 21
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 4

View File

@@ -17,9 +17,3 @@
#pragma once
#define SNLED27351_CURRENT_TUNE { 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70 }
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS

View File

@@ -42,7 +42,8 @@
"splash": true,
"typing_heatmap": true
},
"driver": "snled27351"
"driver": "snled27351",
"sleep": true
},
"url": "https://github.com/Keychron",
"usb": {

View File

@@ -19,9 +19,6 @@
/* RGB Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 26
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
/* Encoder Configuration*/

View File

@@ -20,43 +20,43 @@
// clang-format off
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, CB9_CA2, CB7_CA2, CB8_CA2},
{0, CB9_CA3, CB7_CA3, CB8_CA3},
{0, CB9_CA4, CB7_CA4, CB8_CA4},
{0, CB9_CA5, CB7_CA5, CB8_CA5},
{0, C_1, A_1, B_1},
{0, C_2, A_2, B_2},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, CB3_CA1, CB1_CA1, CB2_CA1},
{0, CB3_CA2, CB1_CA2, CB2_CA2},
{0, CB3_CA3, CB1_CA3, CB2_CA3},
{0, CB3_CA4, CB1_CA4, CB2_CA4},
{0, CB3_CA5, CB1_CA5, CB2_CA5},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, CB6_CA1, CB4_CA1, CB5_CA1},
{0, CB6_CA2, CB4_CA2, CB5_CA2},
{0, CB6_CA3, CB4_CA3, CB5_CA3},
{0, CB6_CA4, CB4_CA4, CB5_CA4},
{0, CB6_CA5, CB4_CA5, CB5_CA5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, CB9_CA6, CB7_CA6, CB8_CA6},
{0, CB9_CA7, CB7_CA7, CB8_CA7},
{0, CB9_CA8, CB7_CA8, CB8_CA8},
{0, CB9_CA9, CB7_CA9, CB8_CA9},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, CB3_CA6, CB1_CA6, CB2_CA6},
{0, CB3_CA7, CB1_CA7, CB2_CA7},
{0, CB3_CA8, CB1_CA8, CB2_CA8},
{0, CB3_CA9, CB1_CA9, CB2_CA9},
{0, CB3_CA10, CB1_CA10, CB2_CA10},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_9, D_9, E_9},
{0, CB6_CA6, CB4_CA6, CB5_CA6},
{0, CB6_CA7, CB4_CA7, CB5_CA7},
{0, CB6_CA9, CB4_CA9, CB5_CA9},
};
#endif // RGB_MATRIX_ENABLE

View File

@@ -20,106 +20,106 @@
// clang-format off
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_2, A_2, B_2}, // ESC
{0, C_3, A_3, B_3}, // F1
{0, C_4, A_4, B_4}, // F2
{0, C_5, A_5, B_5}, // F3
{0, C_6, A_6, B_6}, // F4
{0, C_7, A_7, B_7}, // F5
{0, C_8, A_8, B_8}, // F6
{0, C_9, A_9, B_9}, // F7
{0, C_10, A_10, B_10}, // F8
{0, C_11, A_11, B_11}, // F9
{0, C_12, A_12, B_12}, // F10
{0, C_13, A_13, B_13}, // F11
{0, C_14, A_14, B_14}, // F12
{0, C_15, A_15, B_15}, // INS
{0, C_16, A_16, B_16}, // DEL
{0, CB3_CA2, CB1_CA2, CB2_CA2}, // ESC
{0, CB3_CA3, CB1_CA3, CB2_CA3}, // F1
{0, CB3_CA4, CB1_CA4, CB2_CA4}, // F2
{0, CB3_CA5, CB1_CA5, CB2_CA5}, // F3
{0, CB3_CA6, CB1_CA6, CB2_CA6}, // F4
{0, CB3_CA7, CB1_CA7, CB2_CA7}, // F5
{0, CB3_CA8, CB1_CA8, CB2_CA8}, // F6
{0, CB3_CA9, CB1_CA9, CB2_CA9}, // F7
{0, CB3_CA10, CB1_CA10, CB2_CA10}, // F8
{0, CB3_CA11, CB1_CA11, CB2_CA11}, // F9
{0, CB3_CA12, CB1_CA12, CB2_CA12}, // F10
{0, CB3_CA13, CB1_CA13, CB2_CA13}, // F11
{0, CB3_CA14, CB1_CA14, CB2_CA14}, // F12
{0, CB3_CA15, CB1_CA15, CB2_CA15}, // INS
{0, CB3_CA16, CB1_CA16, CB2_CA16}, // DEL
{0, I_1, G_1, H_1}, // M1
{0, I_2, G_2, H_2}, // `~
{0, I_3, G_3, H_3}, // 1!
{0, I_4, G_4, H_4}, // 2@
{0, I_5, G_5, H_5}, // 3#
{0, I_6, G_6, H_6}, // 4$
{0, I_7, G_7, H_7}, // 5%
{0, I_8, G_8, H_8}, // 6^
{0, I_9, G_9, H_9}, // 7&
{0, I_10, G_10, H_10}, // 8*
{0, I_11, G_11, H_11}, // 9(
{0, I_12, G_12, H_12}, // 0)
{0, I_13, G_13, H_13}, // -_
{0, I_14, G_14, H_14}, // =+
{0, I_15, G_15, H_15}, // BackSpace
{0, I_16, G_16, H_16}, // PgUp
{0, CB9_CA1, CB7_CA1, CB8_CA1}, // M1
{0, CB9_CA2, CB7_CA2, CB8_CA2}, // `~
{0, CB9_CA3, CB7_CA3, CB8_CA3}, // 1!
{0, CB9_CA4, CB7_CA4, CB8_CA4}, // 2@
{0, CB9_CA5, CB7_CA5, CB8_CA5}, // 3#
{0, CB9_CA6, CB7_CA6, CB8_CA6}, // 4$
{0, CB9_CA7, CB7_CA7, CB8_CA7}, // 5%
{0, CB9_CA8, CB7_CA8, CB8_CA8}, // 6^
{0, CB9_CA9, CB7_CA9, CB8_CA9}, // 7&
{0, CB9_CA10, CB7_CA10, CB8_CA10}, // 8*
{0, CB9_CA11, CB7_CA11, CB8_CA11}, // 9(
{0, CB9_CA12, CB7_CA12, CB8_CA12}, // 0)
{0, CB9_CA13, CB7_CA13, CB8_CA13}, // -_
{0, CB9_CA14, CB7_CA14, CB8_CA14}, // =+
{0, CB9_CA15, CB7_CA15, CB8_CA15}, // BackSpace
{0, CB9_CA16, CB7_CA16, CB8_CA16}, // PgUp
{0, F_1, D_1, E_1}, // M2
{0, F_2, D_2, E_2}, // TAB
{0, F_3, D_3, E_3}, // Q
{0, F_4, D_4, E_4}, // W
{0, F_5, D_5, E_5}, // E
{0, F_6, D_6, E_6}, // R
{0, F_7, D_7, E_7}, // T
{0, F_8, D_8, E_8}, // Y
{0, F_9, D_9, E_9}, // U
{0, F_10, D_10, E_10}, // I
{0, F_11, D_11, E_11}, // O
{0, F_12, D_12, E_12}, // P
{0, F_13, D_13, E_13}, // [
{0, F_14, D_14, E_14}, // ]
{0, F_15, D_15, E_15}, // |
{0, F_16, D_16, E_16}, // PgDn
{0, CB6_CA1, CB4_CA1, CB5_CA1}, // M2
{0, CB6_CA2, CB4_CA2, CB5_CA2}, // TAB
{0, CB6_CA3, CB4_CA3, CB5_CA3}, // Q
{0, CB6_CA4, CB4_CA4, CB5_CA4}, // W
{0, CB6_CA5, CB4_CA5, CB5_CA5}, // E
{0, CB6_CA6, CB4_CA6, CB5_CA6}, // R
{0, CB6_CA7, CB4_CA7, CB5_CA7}, // T
{0, CB6_CA8, CB4_CA8, CB5_CA8}, // Y
{0, CB6_CA9, CB4_CA9, CB5_CA9}, // U
{0, CB6_CA10, CB4_CA10, CB5_CA10}, // I
{0, CB6_CA11, CB4_CA11, CB5_CA11}, // O
{0, CB6_CA12, CB4_CA12, CB5_CA12}, // P
{0, CB6_CA13, CB4_CA13, CB5_CA13}, // [
{0, CB6_CA14, CB4_CA14, CB5_CA14}, // ]
{0, CB6_CA15, CB4_CA15, CB5_CA15}, // |
{0, CB6_CA16, CB4_CA16, CB5_CA16}, // PgDn
{1, C_16, A_16, B_16}, // M3
{1, C_15, A_15, B_15}, // CapsLock
{1, C_14, A_14, B_14}, // A
{1, C_13, A_13, B_13}, // S
{1, C_12, A_12, B_12}, // D
{1, C_11, A_11, B_11}, // F
{1, C_10, A_10, B_10}, // G
{1, C_8, A_8, B_8}, // H
{1, C_7, A_7, B_7}, // J
{1, C_6, A_6, B_6}, // K
{1, C_5, A_5, B_5}, // L
{1, C_4, A_4, B_4}, // ;
{1, C_3, A_3, B_3}, // '
{1, C_2, A_2, B_2}, // Enter
{1, C_1, A_1, B_1}, // Home
{1, CB3_CA16, CB1_CA16, CB2_CA16}, // M3
{1, CB3_CA15, CB1_CA15, CB2_CA15}, // CapsLock
{1, CB3_CA14, CB1_CA14, CB2_CA14}, // A
{1, CB3_CA13, CB1_CA13, CB2_CA13}, // S
{1, CB3_CA12, CB1_CA12, CB2_CA12}, // D
{1, CB3_CA11, CB1_CA11, CB2_CA11}, // F
{1, CB3_CA10, CB1_CA10, CB2_CA10}, // G
{1, CB3_CA8, CB1_CA8, CB2_CA8}, // H
{1, CB3_CA7, CB1_CA7, CB2_CA7}, // J
{1, CB3_CA6, CB1_CA6, CB2_CA6}, // K
{1, CB3_CA5, CB1_CA5, CB2_CA5}, // L
{1, CB3_CA4, CB1_CA4, CB2_CA4}, // ;
{1, CB3_CA3, CB1_CA3, CB2_CA3}, // '
{1, CB3_CA2, CB1_CA2, CB2_CA2}, // Enter
{1, CB3_CA1, CB1_CA1, CB2_CA1}, // Home
{1, I_16, G_16, H_16}, // M4
{1, I_15, G_15, H_15}, // Shift_L
{1, I_13, G_13, H_13}, // Z
{1, I_12, G_12, H_12}, // X
{1, I_11, G_11, H_11}, // C
{1, I_10, G_10, H_10}, // V
{1, I_9, G_9, H_9}, // B
{1, I_8, G_8, H_8}, // B
{1, I_7, G_7, H_7}, // N
{1, I_6, G_6, H_6}, // M
{1, I_5, G_5, H_5}, // ,
{1, I_4, G_4, H_4}, // .
{1, I_3, G_3, H_3}, // ?
{1, I_2, G_2, H_2}, // Shift_R
{1, I_1, G_1, H_1}, // Up
{1, CB9_CA16, CB7_CA16, CB8_CA16}, // M4
{1, CB9_CA15, CB7_CA15, CB8_CA15}, // Shift_L
{1, CB9_CA13, CB7_CA13, CB8_CA13}, // Z
{1, CB9_CA12, CB7_CA12, CB8_CA12}, // X
{1, CB9_CA11, CB7_CA11, CB8_CA11}, // C
{1, CB9_CA10, CB7_CA10, CB8_CA10}, // V
{1, CB9_CA9, CB7_CA9, CB8_CA9}, // B
{1, CB9_CA8, CB7_CA8, CB8_CA8}, // B
{1, CB9_CA7, CB7_CA7, CB8_CA7}, // N
{1, CB9_CA6, CB7_CA6, CB8_CA6}, // M
{1, CB9_CA5, CB7_CA5, CB8_CA5}, // ,
{1, CB9_CA4, CB7_CA4, CB8_CA4}, // .
{1, CB9_CA3, CB7_CA3, CB8_CA3}, // ?
{1, CB9_CA2, CB7_CA2, CB8_CA2}, // Shift_R
{1, CB9_CA1, CB7_CA1, CB8_CA1}, // Up
{1, F_16, D_16, E_16}, // M5
{1, F_15, D_15, E_15}, // Ctrl_L
{1, F_14, D_14, E_14}, // Win_L
{1, F_13, D_13, E_13}, // Alt_L
{1, F_12, D_12, E_12}, // Space
{1, F_9, D_9, E_9}, // Fn
{1, F_8, D_8, E_8}, // Space
{1, F_7, D_7, E_7}, // Alt_R
{1, F_3, D_3, E_3}, // Left
{1, F_2, D_2, E_2}, // Down
{1, F_1, D_1, E_1}, // Right
{1, CB6_CA16, CB4_CA16, CB5_CA16}, // M5
{1, CB6_CA15, CB4_CA15, CB5_CA15}, // Ctrl_L
{1, CB6_CA14, CB4_CA14, CB5_CA14}, // Win_L
{1, CB6_CA13, CB4_CA13, CB5_CA13}, // Alt_L
{1, CB6_CA12, CB4_CA12, CB5_CA12}, // Space
{1, CB6_CA9, CB4_CA9, CB5_CA9}, // Fn
{1, CB6_CA8, CB4_CA8, CB5_CA8}, // Space
{1, CB6_CA7, CB4_CA7, CB5_CA7}, // Alt_R
{1, CB6_CA3, CB4_CA3, CB5_CA3}, // Left
{1, CB6_CA2, CB4_CA2, CB5_CA2}, // Down
{1, CB6_CA1, CB4_CA1, CB5_CA1}, // Right
};
#define __ NO_LED

View File

@@ -16,11 +16,6 @@
#pragma once
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 47
#define DRIVER_2_LED_TOTAL 41
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3

View File

@@ -8,9 +8,6 @@
"pid": "0x01A1",
"device_version": "1.0.0"
},
"rgb_matrix": {
"driver": "snled27351"
},
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}

View File

@@ -43,68 +43,3 @@
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
#define SNLED27351_CURRENT_TUNE \
{ 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {5,5} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* Disable RGB lighting when PC is in suspend */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHING
// #define ENABLE_RGB_MATRIX_BAND_SAT
// #define ENABLE_RGB_MATRIX_BAND_VAL
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#define ENABLE_RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#define ENABLE_RGB_MATRIX_DUAL_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
// #define ENABLE_RGB_MATRIX_RAINDROPS
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
// #define ENABLE_RGB_MATRIX_HUE_BREATHING
// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
// #define ENABLE_RGB_MATRIX_HUE_WAVE
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define ENABLE_RGB_MATRIX_SPLASH
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES

View File

@@ -0,0 +1,37 @@
{
"eeprom": {
"wear_leveling": {
"backing_size": 4096
}
},
"dip_switch": {
"matrix_grid": [ [5, 5] ]
},
"rgb_matrix": {
"animations": {
"breathing": true,
"band_spiral_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"rainbow_moving_chevron": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"jellybean_raindrops": true,
"pixel_rain": true,
"typing_heatmap": true,
"digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive_multiwide": true,
"solid_reactive_multinexus": true,
"splash": true,
"solid_splash": true
},
"driver": "snled27351",
"sleep": true
}
}

View File

@@ -16,11 +16,6 @@
#pragma once
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 47
#define DRIVER_2_LED_TOTAL 42
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3

View File

@@ -8,9 +8,6 @@
"pid": "0x01A3",
"device_version": "1.0.0"
},
"rgb_matrix": {
"driver": "snled27351"
},
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}

View File

@@ -20,107 +20,107 @@
// clang-format off
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_2, A_2, B_2}, // ESC
{0, C_3, A_3, B_3}, // F1
{0, C_4, A_4, B_4}, // F2
{0, C_5, A_5, B_5}, // F3
{0, C_6, A_6, B_6}, // F4
{0, C_7, A_7, B_7}, // F5
{0, C_8, A_8, B_8}, // F6
{0, C_9, A_9, B_9}, // F7
{0, C_10, A_10, B_10}, // F8
{0, C_11, A_11, B_11}, // F9
{0, C_12, A_12, B_12}, // F10
{0, C_13, A_13, B_13}, // F11
{0, C_14, A_14, B_14}, // F12
{0, C_15, A_15, B_15}, // INS
{0, C_16, A_16, B_16}, // DEL
{0, CB3_CA2, CB1_CA2, CB2_CA2}, // ESC
{0, CB3_CA3, CB1_CA3, CB2_CA3}, // F1
{0, CB3_CA4, CB1_CA4, CB2_CA4}, // F2
{0, CB3_CA5, CB1_CA5, CB2_CA5}, // F3
{0, CB3_CA6, CB1_CA6, CB2_CA6}, // F4
{0, CB3_CA7, CB1_CA7, CB2_CA7}, // F5
{0, CB3_CA8, CB1_CA8, CB2_CA8}, // F6
{0, CB3_CA9, CB1_CA9, CB2_CA9}, // F7
{0, CB3_CA10, CB1_CA10, CB2_CA10}, // F8
{0, CB3_CA11, CB1_CA11, CB2_CA11}, // F9
{0, CB3_CA12, CB1_CA12, CB2_CA12}, // F10
{0, CB3_CA13, CB1_CA13, CB2_CA13}, // F11
{0, CB3_CA14, CB1_CA14, CB2_CA14}, // F12
{0, CB3_CA15, CB1_CA15, CB2_CA15}, // INS
{0, CB3_CA16, CB1_CA16, CB2_CA16}, // DEL
{0, I_1, G_1, H_1}, // M1
{0, I_2, G_2, H_2}, // `~
{0, I_3, G_3, H_3}, // 1!
{0, I_4, G_4, H_4}, // 2@
{0, I_5, G_5, H_5}, // 3#
{0, I_6, G_6, H_6}, // 4$
{0, I_7, G_7, H_7}, // 5%
{0, I_8, G_8, H_8}, // 6^
{0, I_9, G_9, H_9}, // 7&
{0, I_10, G_10, H_10}, // 8*
{0, I_11, G_11, H_11}, // 9(
{0, I_12, G_12, H_12}, // 0)
{0, I_13, G_13, H_13}, // -_
{0, I_14, G_14, H_14}, // =+
{0, I_15, G_15, H_15}, // BackSpace
{0, I_16, G_16, H_16}, // PgUp
{0, CB9_CA1, CB7_CA1, CB8_CA1}, // M1
{0, CB9_CA2, CB7_CA2, CB8_CA2}, // `~
{0, CB9_CA3, CB7_CA3, CB8_CA3}, // 1!
{0, CB9_CA4, CB7_CA4, CB8_CA4}, // 2@
{0, CB9_CA5, CB7_CA5, CB8_CA5}, // 3#
{0, CB9_CA6, CB7_CA6, CB8_CA6}, // 4$
{0, CB9_CA7, CB7_CA7, CB8_CA7}, // 5%
{0, CB9_CA8, CB7_CA8, CB8_CA8}, // 6^
{0, CB9_CA9, CB7_CA9, CB8_CA9}, // 7&
{0, CB9_CA10, CB7_CA10, CB8_CA10}, // 8*
{0, CB9_CA11, CB7_CA11, CB8_CA11}, // 9(
{0, CB9_CA12, CB7_CA12, CB8_CA12}, // 0)
{0, CB9_CA13, CB7_CA13, CB8_CA13}, // -_
{0, CB9_CA14, CB7_CA14, CB8_CA14}, // =+
{0, CB9_CA15, CB7_CA15, CB8_CA15}, // BackSpace
{0, CB9_CA16, CB7_CA16, CB8_CA16}, // PgUp
{0, F_1, D_1, E_1}, // M2
{0, F_2, D_2, E_2}, // TAB
{0, F_3, D_3, E_3}, // Q
{0, F_4, D_4, E_4}, // W
{0, F_5, D_5, E_5}, // E
{0, F_6, D_6, E_6}, // R
{0, F_7, D_7, E_7}, // T
{0, F_8, D_8, E_8}, // Y
{0, F_9, D_9, E_9}, // U
{0, F_10, D_10, E_10}, // I
{0, F_11, D_11, E_11}, // O
{0, F_12, D_12, E_12}, // P
{0, F_13, D_13, E_13}, // [
{0, F_14, D_14, E_14}, // ]
{0, F_16, D_16, E_16}, // PgDn
{0, CB6_CA1, CB4_CA1, CB5_CA1}, // M2
{0, CB6_CA2, CB4_CA2, CB5_CA2}, // TAB
{0, CB6_CA3, CB4_CA3, CB5_CA3}, // Q
{0, CB6_CA4, CB4_CA4, CB5_CA4}, // W
{0, CB6_CA5, CB4_CA5, CB5_CA5}, // E
{0, CB6_CA6, CB4_CA6, CB5_CA6}, // R
{0, CB6_CA7, CB4_CA7, CB5_CA7}, // T
{0, CB6_CA8, CB4_CA8, CB5_CA8}, // Y
{0, CB6_CA9, CB4_CA9, CB5_CA9}, // U
{0, CB6_CA10, CB4_CA10, CB5_CA10}, // I
{0, CB6_CA11, CB4_CA11, CB5_CA11}, // O
{0, CB6_CA12, CB4_CA12, CB5_CA12}, // P
{0, CB6_CA13, CB4_CA13, CB5_CA13}, // [
{0, CB6_CA14, CB4_CA14, CB5_CA14}, // ]
{0, CB6_CA16, CB4_CA16, CB5_CA16}, // PgDn
{1, C_16, A_16, B_16}, // M3
{1, C_15, A_15, B_15}, // CapsLock
{1, C_14, A_14, B_14}, // A
{1, C_13, A_13, B_13}, // S
{1, C_12, A_12, B_12}, // D
{1, C_11, A_11, B_11}, // F
{1, C_10, A_10, B_10}, // G
{1, C_8, A_8, B_8}, // H
{1, C_7, A_7, B_7}, // J
{1, C_6, A_6, B_6}, // K
{1, C_5, A_5, B_5}, // L
{1, C_4, A_4, B_4}, // ;
{1, C_3, A_3, B_3}, // '
{0, F_15, D_15, E_15}, // |
{1, C_2, A_2, B_2}, // Enter
{1, C_1, A_1, B_1}, // Home
{1, CB3_CA16, CB1_CA16, CB2_CA16}, // M3
{1, CB3_CA15, CB1_CA15, CB2_CA15}, // CapsLock
{1, CB3_CA14, CB1_CA14, CB2_CA14}, // A
{1, CB3_CA13, CB1_CA13, CB2_CA13}, // S
{1, CB3_CA12, CB1_CA12, CB2_CA12}, // D
{1, CB3_CA11, CB1_CA11, CB2_CA11}, // F
{1, CB3_CA10, CB1_CA10, CB2_CA10}, // G
{1, CB3_CA8, CB1_CA8, CB2_CA8}, // H
{1, CB3_CA7, CB1_CA7, CB2_CA7}, // J
{1, CB3_CA6, CB1_CA6, CB2_CA6}, // K
{1, CB3_CA5, CB1_CA5, CB2_CA5}, // L
{1, CB3_CA4, CB1_CA4, CB2_CA4}, // ;
{1, CB3_CA3, CB1_CA3, CB2_CA3}, // '
{0, CB6_CA15, CB4_CA15, CB5_CA15}, // |
{1, CB3_CA2, CB1_CA2, CB2_CA2}, // Enter
{1, CB3_CA1, CB1_CA1, CB2_CA1}, // Home
{1, I_16, G_16, H_16}, // M4
{1, I_15, G_15, H_15}, // Shift_L
{1, I_14, G_14, H_14},
{1, I_13, G_13, H_13}, // Z
{1, I_12, G_12, H_12}, // X
{1, I_11, G_11, H_11}, // C
{1, I_10, G_10, H_10}, // V
{1, I_9, G_9, H_9}, // B
{1, I_8, G_8, H_8}, // B
{1, I_7, G_7, H_7}, // N
{1, I_6, G_6, H_6}, // M
{1, I_5, G_5, H_5}, // ,
{1, I_4, G_4, H_4}, // .
{1, I_3, G_3, H_3}, // ?
{1, I_2, G_2, H_2}, // Shift_R
{1, I_1, G_1, H_1}, // Up
{1, CB9_CA16, CB7_CA16, CB8_CA16}, // M4
{1, CB9_CA15, CB7_CA15, CB8_CA15}, // Shift_L
{1, CB9_CA14, CB7_CA14, CB8_CA14},
{1, CB9_CA13, CB7_CA13, CB8_CA13}, // Z
{1, CB9_CA12, CB7_CA12, CB8_CA12}, // X
{1, CB9_CA11, CB7_CA11, CB8_CA11}, // C
{1, CB9_CA10, CB7_CA10, CB8_CA10}, // V
{1, CB9_CA9, CB7_CA9, CB8_CA9}, // B
{1, CB9_CA8, CB7_CA8, CB8_CA8}, // B
{1, CB9_CA7, CB7_CA7, CB8_CA7}, // N
{1, CB9_CA6, CB7_CA6, CB8_CA6}, // M
{1, CB9_CA5, CB7_CA5, CB8_CA5}, // ,
{1, CB9_CA4, CB7_CA4, CB8_CA4}, // .
{1, CB9_CA3, CB7_CA3, CB8_CA3}, // ?
{1, CB9_CA2, CB7_CA2, CB8_CA2}, // Shift_R
{1, CB9_CA1, CB7_CA1, CB8_CA1}, // Up
{1, F_16, D_16, E_16}, // M5
{1, F_15, D_15, E_15}, // Ctrl_L
{1, F_14, D_14, E_14}, // Win_L
{1, F_13, D_13, E_13}, // Alt_L
{1, F_12, D_12, E_12}, // Space
{1, F_9, D_9, E_9}, // Fn
{1, F_8, D_8, E_8}, // Space
{1, F_7, D_7, E_7}, // Alt_R
{1, F_3, D_3, E_3}, // Left
{1, F_2, D_2, E_2}, // Down
{1, F_1, D_1, E_1}, // Right
{1, CB6_CA16, CB4_CA16, CB5_CA16}, // M5
{1, CB6_CA15, CB4_CA15, CB5_CA15}, // Ctrl_L
{1, CB6_CA14, CB4_CA14, CB5_CA14}, // Win_L
{1, CB6_CA13, CB4_CA13, CB5_CA13}, // Alt_L
{1, CB6_CA12, CB4_CA12, CB5_CA12}, // Space
{1, CB6_CA9, CB4_CA9, CB5_CA9}, // Fn
{1, CB6_CA8, CB4_CA8, CB5_CA8}, // Space
{1, CB6_CA7, CB4_CA7, CB5_CA7}, // Alt_R
{1, CB6_CA3, CB4_CA3, CB5_CA3}, // Left
{1, CB6_CA2, CB4_CA2, CB5_CA2}, // Down
{1, CB6_CA1, CB4_CA1, CB5_CA1}, // Right
};
#define __ NO_LED

View File

@@ -16,15 +16,6 @@
#include "quantum.h"
const matrix_row_t matrix_mask[] = {
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111011111,
};
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {

View File

@@ -17,112 +17,112 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, A_2, C_2, B_2}, // ESC
{0, A_3, C_3, B_3}, // F1
{0, A_4, C_4, B_4}, // F2
{0, A_5, C_5, B_5}, // F3
{0, A_6, C_6, B_6}, // F4
{0, A_7, C_7, B_7}, // F5
{0, A_8, C_8, B_8}, // F6
{0, CB1_CA2, CB3_CA2, CB2_CA2}, // ESC
{0, CB1_CA3, CB3_CA3, CB2_CA3}, // F1
{0, CB1_CA4, CB3_CA4, CB2_CA4}, // F2
{0, CB1_CA5, CB3_CA5, CB2_CA5}, // F3
{0, CB1_CA6, CB3_CA6, CB2_CA6}, // F4
{0, CB1_CA7, CB3_CA7, CB2_CA7}, // F5
{0, CB1_CA8, CB3_CA8, CB2_CA8}, // F6
{0, D_1, F_1, E_1}, // M1
{0, D_2, F_2, E_2}, // `~
{0, D_3, F_3, E_3}, // 1!
{0, D_4, F_4, E_4}, // 2@
{0, D_5, F_5, E_5}, // 3#
{0, D_6, F_6, E_6}, // 4$
{0, D_7, F_7, E_7}, // 5%
{0, D_8, F_8, E_8}, // 6^
{0, CB4_CA1, CB6_CA1, CB5_CA1}, // M1
{0, CB4_CA2, CB6_CA2, CB5_CA2}, // `~
{0, CB4_CA3, CB6_CA3, CB5_CA3}, // 1!
{0, CB4_CA4, CB6_CA4, CB5_CA4}, // 2@
{0, CB4_CA5, CB6_CA5, CB5_CA5}, // 3#
{0, CB4_CA6, CB6_CA6, CB5_CA6}, // 4$
{0, CB4_CA7, CB6_CA7, CB5_CA7}, // 5%
{0, CB4_CA8, CB6_CA8, CB5_CA8}, // 6^
{0, G_1, I_1, H_1}, // M2
{0, G_2, I_2, H_2}, // TAB
{0, G_3, I_3, H_3}, // Q
{0, G_4, I_4, H_4}, // W
{0, G_5, I_5, H_5}, // E
{0, G_6, I_6, H_6}, // R
{0, G_7, I_7, H_7}, // T
{0, CB7_CA1, CB9_CA1, CB8_CA1}, // M2
{0, CB7_CA2, CB9_CA2, CB8_CA2}, // TAB
{0, CB7_CA3, CB9_CA3, CB8_CA3}, // Q
{0, CB7_CA4, CB9_CA4, CB8_CA4}, // W
{0, CB7_CA5, CB9_CA5, CB8_CA5}, // E
{0, CB7_CA6, CB9_CA6, CB8_CA6}, // R
{0, CB7_CA7, CB9_CA7, CB8_CA7}, // T
{0, J_1, L_1, K_1}, // M3
{0, J_2, L_2, K_2}, // CapsJock
{0, J_3, L_3, K_3}, // A
{0, J_4, L_4, K_4}, // S
{0, J_5, L_5, K_5}, // D
{0, J_6, L_6, K_6}, // F
{0, J_7, L_7, K_7}, // G
{0, CB10_CA1, CB12_CA1, CB11_CA1}, // M3
{0, CB10_CA2, CB12_CA2, CB11_CA2}, // CapsJock
{0, CB10_CA3, CB12_CA3, CB11_CA3}, // A
{0, CB10_CA4, CB12_CA4, CB11_CA4}, // S
{0, CB10_CA5, CB12_CA5, CB11_CA5}, // D
{0, CB10_CA6, CB12_CA6, CB11_CA6}, // F
{0, CB10_CA7, CB12_CA7, CB11_CA7}, // G
{0, J_9, L_9, K_9}, // M4
{0, J_11, L_11, K_11}, // Shift_J
{0, J_12, L_12, K_12}, // Z
{0, J_13, L_13, K_13}, // X
{0, J_14, L_14, K_14}, // C
{0, J_15, L_15, K_15}, // V
{0, J_16, L_16, K_16}, // B
{0, CB10_CA9, CB12_CA9, CB11_CA9}, // M4
{0, CB10_CA11, CB12_CA11, CB11_CA11}, // Shift_J
{0, CB10_CA12, CB12_CA12, CB11_CA12}, // Z
{0, CB10_CA13, CB12_CA13, CB11_CA13}, // X
{0, CB10_CA14, CB12_CA14, CB11_CA14}, // C
{0, CB10_CA15, CB12_CA15, CB11_CA15}, // V
{0, CB10_CA16, CB12_CA16, CB11_CA16}, // B
{0, G_9, I_9, H_9}, // M5
{0, G_10, I_10, H_10}, // Ctrl_L
{0, G_11, I_11, H_11}, // WGn_L
{0, G_12, I_12, H_12}, // Alt_L
{0, G_13, I_13, H_13}, // Fn
{0, G_15, I_15, H_15}, // Space
{0, CB7_CA9, CB9_CA9, CB8_CA9}, // M5
{0, CB7_CA10, CB9_CA10, CB8_CA10}, // Ctrl_L
{0, CB7_CA11, CB9_CA11, CB8_CA11}, // WGn_L
{0, CB7_CA12, CB9_CA12, CB8_CA12}, // Alt_L
{0, CB7_CA13, CB9_CA13, CB8_CA13}, // Fn
{0, CB7_CA15, CB9_CA15, CB8_CA15}, // Space
{0, A_16, C_16, B_16}, // F7
{0, A_15, C_15, B_15}, // F8
{0, A_14, C_14, B_14}, // F9
{0, A_13, C_13, B_13}, // F11
{0, A_12, C_12, B_12}, // F11
{0, A_11, C_11, B_11}, // F12
{0, A_10, C_10, B_10}, // INS
{0, A_9, C_9, B_9}, // DEL
{0, CB1_CA16, CB3_CA16, CB2_CA16}, // F7
{0, CB1_CA15, CB3_CA15, CB2_CA15}, // F8
{0, CB1_CA14, CB3_CA14, CB2_CA14}, // F9
{0, CB1_CA13, CB3_CA13, CB2_CA13}, // F11
{0, CB1_CA12, CB3_CA12, CB2_CA12}, // F11
{0, CB1_CA11, CB3_CA11, CB2_CA11}, // F12
{0, CB1_CA10, CB3_CA10, CB2_CA10}, // INS
{0, CB1_CA9, CB3_CA9, CB2_CA9}, // DEL
{0, D_16, F_16, E_16}, // 7&
{0, D_15, F_15, E_15}, // 8*
{0, D_14, F_14, E_14}, // 9(
{0, D_13, F_13, E_13}, // 1)
{0, D_12, F_12, E_12}, // -_
{0, D_11, F_11, E_11}, // =+
{0, D_10, F_10, E_10}, // BackSpace
{0, D_8, F_8, E_8}, // PgUp
{0, CB4_CA16, CB6_CA16, CB5_CA16}, // 7&
{0, CB4_CA15, CB6_CA15, CB5_CA15}, // 8*
{0, CB4_CA14, CB6_CA14, CB5_CA14}, // 9(
{0, CB4_CA13, CB6_CA13, CB5_CA13}, // 1)
{0, CB4_CA12, CB6_CA12, CB5_CA12}, // -_
{0, CB4_CA11, CB6_CA11, CB5_CA11}, // =+
{0, CB4_CA10, CB6_CA10, CB5_CA10}, // BackSpace
{0, CB4_CA8, CB6_CA8, CB5_CA8}, // PgUp
{0, G_16, I_16, H_16}, // Y
{0, G_15, I_15, H_15}, // U
{0, G_14, I_14, H_14}, // G
{0, G_13, I_13, H_13}, // O
{0, G_12, I_12, H_12}, // P
{0, G_11, I_11, H_11}, // [
{0, G_10, I_10, H_10}, // ]
{0, G_9, I_9, H_9}, // \||
{0, G_8, I_8, H_8}, // PgDn
{0, CB7_CA16, CB9_CA16, CB8_CA16}, // Y
{0, CB7_CA15, CB9_CA15, CB8_CA15}, // U
{0, CB7_CA14, CB9_CA14, CB8_CA14}, // G
{0, CB7_CA13, CB9_CA13, CB8_CA13}, // O
{0, CB7_CA12, CB9_CA12, CB8_CA12}, // P
{0, CB7_CA11, CB9_CA11, CB8_CA11}, // [
{0, CB7_CA10, CB9_CA10, CB8_CA10}, // ]
{0, CB7_CA9, CB9_CA9, CB8_CA9}, // \||
{0, CB7_CA8, CB9_CA8, CB8_CA8}, // PgDn
{0, J_16, L_16, K_16}, // H
{0, J_15, L_15, K_15}, // J
{0, J_14, L_14, K_14}, // KKEY_PRESS_HOME
{0, J_13, L_13, K_13}, // J
{0, J_12, L_12, K_12}, // ;:
{0, J_11, L_11, K_11}, // '"
{0, J_9, L_9, K_9}, // Enter
{0, J_8, L_8, K_8}, // Home
{0, CB10_CA16, CB12_CA16, CB11_CA16}, // H
{0, CB10_CA15, CB12_CA15, CB11_CA15}, // J
{0, CB10_CA14, CB12_CA14, CB11_CA14}, // KKEY_PRESS_HOME
{0, CB10_CA13, CB12_CA13, CB11_CA13}, // J
{0, CB10_CA12, CB12_CA12, CB11_CA12}, // ;:
{0, CB10_CA11, CB12_CA11, CB11_CA11}, // '"
{0, CB10_CA9, CB12_CA9, CB11_CA9}, // Enter
{0, CB10_CA8, CB12_CA8, CB11_CA8}, // Home
{0, J_7, L_7, K_7}, // N
{0, J_6, L_6, K_6}, // M
{0, J_5, L_5, K_5}, // ,<
{0, J_4, L_4, K_4}, // .>
{0, J_3, L_3, K_3}, // ?/
{0, J_2, L_2, K_2}, // Shift_R
{0, J_1, L_1, K_1}, // Up
{0, CB10_CA7, CB12_CA7, CB11_CA7}, // N
{0, CB10_CA6, CB12_CA6, CB11_CA6}, // M
{0, CB10_CA5, CB12_CA5, CB11_CA5}, // ,<
{0, CB10_CA4, CB12_CA4, CB11_CA4}, // .>
{0, CB10_CA3, CB12_CA3, CB11_CA3}, // ?/
{0, CB10_CA2, CB12_CA2, CB11_CA2}, // Shift_R
{0, CB10_CA1, CB12_CA1, CB11_CA1}, // Up
{0, G_6, I_6, H_6}, // Space
{0, G_5, I_5, H_5}, // Win_R
{0, G_4, I_4, H_4}, // Fn
{0, G_3, I_3, H_3}, // Ctrl_R
{0, G_2, I_2, H_2}, // Left
{0, G_1, I_1, H_1}, // Down
{0, G_7, I_7, H_7}, // Right
{0, CB7_CA6, CB9_CA6, CB8_CA6}, // Space
{0, CB7_CA5, CB9_CA5, CB8_CA5}, // Win_R
{0, CB7_CA4, CB9_CA4, CB8_CA4}, // Fn
{0, CB7_CA3, CB9_CA3, CB8_CA3}, // Ctrl_R
{0, CB7_CA2, CB9_CA2, CB8_CA2}, // Left
{0, CB7_CA1, CB9_CA1, CB8_CA1}, // Down
{0, CB7_CA7, CB9_CA7, CB8_CA7}, // Right
};
#endif

View File

@@ -16,8 +16,5 @@
#pragma once
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 89
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 23

View File

@@ -16,16 +16,6 @@
#pragma once
// Connects each switch in the dip switch to the GPIO pin of the MCU
#define DIP_SWITCH_PINS \
{ A8 }
/* handedness */
#define SPLIT_HAND_MATRIX_GRID A2, A15
#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `q11.c`
/* RGB Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
@@ -39,21 +29,12 @@
#define SNLED27351_CURRENT_TUNE \
{ 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF } // 300mA
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
/* Split Keyboard specific options. */
#define SERIAL_USART_TX_PIN A9 // USART TX pin
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Disable RGB lighting when PC is in suspend */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
// 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
// Needed as the master side could enter slave state during poweron
// of host, due to missing VUSB detection.
#define SPLIT_WATCHDOG_ENABLE

View File

@@ -11,6 +11,14 @@
"bootmagic": {
"matrix": [0, 1]
},
"dip_switch": {
"pins": ["A8"]
},
"eeprom": {
"wear_leveling": {
"backing_size": 4096
}
},
"features": {
"bootmagic": true,
"command": false,
@@ -36,6 +44,9 @@
]
}
},
"handedness": {
"matrix_grid": ["A2", "A15"]
},
"matrix_pins": {
"right": {
"cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
@@ -84,7 +95,8 @@
"solid_reactive_multinexus": true,
"splash": true,
"solid_splash": true
}
},
"sleep": true
},
"layouts": {
"LAYOUT_91_ansi": {

View File

@@ -16,8 +16,5 @@
#pragma once
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 90
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 23

View File

@@ -17,113 +17,113 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, A_2, C_2, B_2}, // ESC
{0, A_3, C_3, B_3}, // F1
{0, A_4, C_4, B_4}, // F2
{0, A_5, C_5, B_5}, // F3
{0, A_6, C_6, B_6}, // F4
{0, A_7, C_7, B_7}, // F5
{0, A_8, C_8, B_8}, // F6
{0, CB1_CA2, CB3_CA2, CB2_CA2}, // ESC
{0, CB1_CA3, CB3_CA3, CB2_CA3}, // F1
{0, CB1_CA4, CB3_CA4, CB2_CA4}, // F2
{0, CB1_CA5, CB3_CA5, CB2_CA5}, // F3
{0, CB1_CA6, CB3_CA6, CB2_CA6}, // F4
{0, CB1_CA7, CB3_CA7, CB2_CA7}, // F5
{0, CB1_CA8, CB3_CA8, CB2_CA8}, // F6
{0, D_1, F_1, E_1}, // M1
{0, D_2, F_2, E_2}, // `~
{0, D_3, F_3, E_3}, // 1!
{0, D_4, F_4, E_4}, // 2@
{0, D_5, F_5, E_5}, // 3#
{0, D_6, F_6, E_6}, // 4$
{0, D_7, F_7, E_7}, // 5%
{0, D_8, F_8, E_8}, // 6^
{0, CB4_CA1, CB6_CA1, CB5_CA1}, // M1
{0, CB4_CA2, CB6_CA2, CB5_CA2}, // `~
{0, CB4_CA3, CB6_CA3, CB5_CA3}, // 1!
{0, CB4_CA4, CB6_CA4, CB5_CA4}, // 2@
{0, CB4_CA5, CB6_CA5, CB5_CA5}, // 3#
{0, CB4_CA6, CB6_CA6, CB5_CA6}, // 4$
{0, CB4_CA7, CB6_CA7, CB5_CA7}, // 5%
{0, CB4_CA8, CB6_CA8, CB5_CA8}, // 6^
{0, G_1, I_1, H_1}, // M2
{0, G_2, I_2, H_2}, // TAB
{0, G_3, I_3, H_3}, // Q
{0, G_4, I_4, H_4}, // W
{0, G_5, I_5, H_5}, // E
{0, G_6, I_6, H_6}, // R
{0, G_7, I_7, H_7}, // T
{0, CB7_CA1, CB9_CA1, CB8_CA1}, // M2
{0, CB7_CA2, CB9_CA2, CB8_CA2}, // TAB
{0, CB7_CA3, CB9_CA3, CB8_CA3}, // Q
{0, CB7_CA4, CB9_CA4, CB8_CA4}, // W
{0, CB7_CA5, CB9_CA5, CB8_CA5}, // E
{0, CB7_CA6, CB9_CA6, CB8_CA6}, // R
{0, CB7_CA7, CB9_CA7, CB8_CA7}, // T
{0, J_1, L_1, K_1}, // M3
{0, J_2, L_2, K_2}, // CapsJock
{0, J_3, L_3, K_3}, // A
{0, J_4, L_4, K_4}, // S
{0, J_5, L_5, K_5}, // D
{0, J_6, L_6, K_6}, // F
{0, J_7, L_7, K_7}, // G
{0, CB10_CA1, CB12_CA1, CB11_CA1}, // M3
{0, CB10_CA2, CB12_CA2, CB11_CA2}, // CapsJock
{0, CB10_CA3, CB12_CA3, CB11_CA3}, // A
{0, CB10_CA4, CB12_CA4, CB11_CA4}, // S
{0, CB10_CA5, CB12_CA5, CB11_CA5}, // D
{0, CB10_CA6, CB12_CA6, CB11_CA6}, // F
{0, CB10_CA7, CB12_CA7, CB11_CA7}, // G
{0, J_9, L_9, K_9}, // M4
{0, J_10, L_10, K_10}, // Shift_L
{0, J_11, L_11, K_11}, // NUBS
{0, J_12, L_12, K_12}, // Z
{0, J_13, L_13, K_13}, // X
{0, J_14, L_14, K_14}, // C
{0, J_15, L_15, K_15}, // V
{0, J_16, L_16, K_16}, // B
{0, CB10_CA9, CB12_CA9, CB11_CA9}, // M4
{0, CB10_CA10, CB12_CA10, CB11_CA10}, // Shift_L
{0, CB10_CA11, CB12_CA11, CB11_CA11}, // NUBS
{0, CB10_CA12, CB12_CA12, CB11_CA12}, // Z
{0, CB10_CA13, CB12_CA13, CB11_CA13}, // X
{0, CB10_CA14, CB12_CA14, CB11_CA14}, // C
{0, CB10_CA15, CB12_CA15, CB11_CA15}, // V
{0, CB10_CA16, CB12_CA16, CB11_CA16}, // B
{0, G_9, I_9, H_9}, // M5
{0, G_10, I_10, H_10}, // Ctrl_L
{0, G_11, I_11, H_11}, // WGn_L
{0, G_12, I_12, H_12}, // Alt_L
{0, G_13, I_13, H_13}, // Fn
{0, G_15, I_15, H_15}, // Space
{0, CB7_CA9, CB9_CA9, CB8_CA9}, // M5
{0, CB7_CA10, CB9_CA10, CB8_CA10}, // Ctrl_L
{0, CB7_CA11, CB9_CA11, CB8_CA11}, // WGn_L
{0, CB7_CA12, CB9_CA12, CB8_CA12}, // Alt_L
{0, CB7_CA13, CB9_CA13, CB8_CA13}, // Fn
{0, CB7_CA15, CB9_CA15, CB8_CA15}, // Space
{0, A_16, C_16, B_16}, // F7
{0, A_15, C_15, B_15}, // F8
{0, A_14, C_14, B_14}, // F9
{0, A_13, C_13, B_13}, // F11
{0, A_12, C_12, B_12}, // F11
{0, A_11, C_11, B_11}, // F12
{0, A_10, C_10, B_10}, // INS
{0, A_9, C_9, B_9}, // DEL
{0, CB1_CA16, CB3_CA16, CB2_CA16}, // F7
{0, CB1_CA15, CB3_CA15, CB2_CA15}, // F8
{0, CB1_CA14, CB3_CA14, CB2_CA14}, // F9
{0, CB1_CA13, CB3_CA13, CB2_CA13}, // F11
{0, CB1_CA12, CB3_CA12, CB2_CA12}, // F11
{0, CB1_CA11, CB3_CA11, CB2_CA11}, // F12
{0, CB1_CA10, CB3_CA10, CB2_CA10}, // INS
{0, CB1_CA9, CB3_CA9, CB2_CA9}, // DEL
{0, D_16, F_16, E_16}, // 7&
{0, D_15, F_15, E_15}, // 8*
{0, D_14, F_14, E_14}, // 9(
{0, D_13, F_13, E_13}, // 1)
{0, D_12, F_12, E_12}, // -_
{0, D_11, F_11, E_11}, // =+
{0, D_10, F_10, E_10}, // BackSpace
{0, D_8, F_8, E_8}, // PgUp
{0, CB4_CA16, CB6_CA16, CB5_CA16}, // 7&
{0, CB4_CA15, CB6_CA15, CB5_CA15}, // 8*
{0, CB4_CA14, CB6_CA14, CB5_CA14}, // 9(
{0, CB4_CA13, CB6_CA13, CB5_CA13}, // 1)
{0, CB4_CA12, CB6_CA12, CB5_CA12}, // -_
{0, CB4_CA11, CB6_CA11, CB5_CA11}, // =+
{0, CB4_CA10, CB6_CA10, CB5_CA10}, // BackSpace
{0, CB4_CA8, CB6_CA8, CB5_CA8}, // PgUp
{0, G_16, I_16, H_16}, // Y
{0, G_15, I_15, H_15}, // U
{0, G_14, I_14, H_14}, // G
{0, G_13, I_13, H_13}, // O
{0, G_12, I_12, H_12}, // P
{0, G_11, I_11, H_11}, // [
{0, G_10, I_10, H_10}, // ]
{0, G_8, I_8, H_8}, // PgDn
{0, CB7_CA16, CB9_CA16, CB8_CA16}, // Y
{0, CB7_CA15, CB9_CA15, CB8_CA15}, // U
{0, CB7_CA14, CB9_CA14, CB8_CA14}, // G
{0, CB7_CA13, CB9_CA13, CB8_CA13}, // O
{0, CB7_CA12, CB9_CA12, CB8_CA12}, // P
{0, CB7_CA11, CB9_CA11, CB8_CA11}, // [
{0, CB7_CA10, CB9_CA10, CB8_CA10}, // ]
{0, CB7_CA8, CB9_CA8, CB8_CA8}, // PgDn
{0, J_16, L_16, K_16}, // H
{0, J_15, L_15, K_15}, // J
{0, J_14, L_14, K_14}, // KKEY_PRESS_HOME
{0, J_13, L_13, K_13}, // J
{0, J_12, L_12, K_12}, // ;:
{0, J_11, L_11, K_11}, // '"
{0, J_9, L_9, K_9}, // NUHS
{0, G_9, I_9, H_9}, // Enter
{0, J_8, L_8, K_8}, // Home
{0, CB10_CA16, CB12_CA16, CB11_CA16}, // H
{0, CB10_CA15, CB12_CA15, CB11_CA15}, // J
{0, CB10_CA14, CB12_CA14, CB11_CA14}, // KKEY_PRESS_HOME
{0, CB10_CA13, CB12_CA13, CB11_CA13}, // J
{0, CB10_CA12, CB12_CA12, CB11_CA12}, // ;:
{0, CB10_CA11, CB12_CA11, CB11_CA11}, // '"
{0, CB10_CA9, CB12_CA9, CB11_CA9}, // NUHS
{0, CB7_CA9, CB9_CA9, CB8_CA9}, // Enter
{0, CB10_CA8, CB12_CA8, CB11_CA8}, // Home
{0, J_7, L_7, K_7}, // N
{0, J_6, L_6, K_6}, // M
{0, J_5, L_5, K_5}, // ,<
{0, J_4, L_4, K_4}, // .>
{0, J_3, L_3, K_3}, // ?/
{0, J_2, L_2, K_2}, // Shift_R
{0, J_1, L_1, K_1}, // Up
{0, CB10_CA7, CB12_CA7, CB11_CA7}, // N
{0, CB10_CA6, CB12_CA6, CB11_CA6}, // M
{0, CB10_CA5, CB12_CA5, CB11_CA5}, // ,<
{0, CB10_CA4, CB12_CA4, CB11_CA4}, // .>
{0, CB10_CA3, CB12_CA3, CB11_CA3}, // ?/
{0, CB10_CA2, CB12_CA2, CB11_CA2}, // Shift_R
{0, CB10_CA1, CB12_CA1, CB11_CA1}, // Up
{0, G_6, I_6, H_6}, // Space
{0, G_5, I_5, H_5}, // Win_R
{0, G_4, I_4, H_4}, // Fn
{0, G_3, I_3, H_3}, // Ctrl_R
{0, G_2, I_2, H_2}, // Left
{0, G_1, I_1, H_1}, // Down
{0, G_7, I_7, H_7}, // Right
{0, CB7_CA6, CB9_CA6, CB8_CA6}, // Space
{0, CB7_CA5, CB9_CA5, CB8_CA5}, // Win_R
{0, CB7_CA4, CB9_CA4, CB8_CA4}, // Fn
{0, CB7_CA3, CB9_CA3, CB8_CA3}, // Ctrl_R
{0, CB7_CA2, CB9_CA2, CB8_CA2}, // Left
{0, CB7_CA1, CB9_CA1, CB8_CA1}, // Down
{0, CB7_CA7, CB9_CA7, CB8_CA7}, // Right
};
#endif

View File

@@ -16,25 +16,6 @@
#include "quantum.h"
// Mask out handedness diode to prevent it
// from keeping the keyboard awake
// - just mirroring `KC_NO` in the `LAYOUT`
// macro to keep it simple
const matrix_row_t matrix_mask[] = {
0b011111111,
0b011111111,
0b011011111,
0b001111111,
0b011111111,
0b001011111,
0b111111111,
0b101111111,
0b111111111,
0b110111111,
0b010111111,
0b111011110,
};
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {

View File

@@ -17,123 +17,123 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
// {0, I_1, G_1, H_1}
{0, I_2, G_2, H_2}, // F13
{0, I_3, G_3, H_3}, // F14
{0, I_4, G_4, H_4}, // F15
{0, I_5, G_5, H_5}, // Esc
{0, I_6, G_6, H_6}, // F1
{0, I_7, G_7, H_7}, // F2
{0, I_8, G_8, H_8}, // F3
{0, I_9, G_9, H_9}, // F4
{0, I_10, G_10, H_10}, // F5
{0, I_11, G_11, H_11}, // F6
{0, I_12, G_12, H_12}, // F7
{0, I_13, G_13, H_13}, // F8
{0, I_14, G_14, H_14}, // F9
{0, I_15, G_15, H_15}, // F10
{0, I_16, G_16, H_16}, // F11
{0, L_16, J_16, K_16}, // F12
{0, L_15, J_15, K_15}, // DEL
{0, L_14, J_14, K_14}, // Light
// {0, CB9_CA1, CB7_CA1, CB8_CA1}
{0, CB9_CA2, CB7_CA2, CB8_CA2}, // F13
{0, CB9_CA3, CB7_CA3, CB8_CA3}, // F14
{0, CB9_CA4, CB7_CA4, CB8_CA4}, // F15
{0, CB9_CA5, CB7_CA5, CB8_CA5}, // Esc
{0, CB9_CA6, CB7_CA6, CB8_CA6}, // F1
{0, CB9_CA7, CB7_CA7, CB8_CA7}, // F2
{0, CB9_CA8, CB7_CA8, CB8_CA8}, // F3
{0, CB9_CA9, CB7_CA9, CB8_CA9}, // F4
{0, CB9_CA10, CB7_CA10, CB8_CA10}, // F5
{0, CB9_CA11, CB7_CA11, CB8_CA11}, // F6
{0, CB9_CA12, CB7_CA12, CB8_CA12}, // F7
{0, CB9_CA13, CB7_CA13, CB8_CA13}, // F8
{0, CB9_CA14, CB7_CA14, CB8_CA14}, // F9
{0, CB9_CA15, CB7_CA15, CB8_CA15}, // F10
{0, CB9_CA16, CB7_CA16, CB8_CA16}, // F11
{0, CB12_CA16, CB10_CA16, CB11_CA16}, // F12
{0, CB12_CA15, CB10_CA15, CB11_CA15}, // DEL
{0, CB12_CA14, CB10_CA14, CB11_CA14}, // Light
{0, C_1, A_1, B_1}, // num_lock
{0, C_2, A_2, B_2}, // /
{0, C_3, A_3, B_3}, // *
{0, C_4, A_4, B_4}, // -
{0, C_5, A_5, B_5}, // ~`
{0, C_6, A_6, B_6}, // 1!
{0, C_7, A_7, B_7}, // 2@
{0, C_8, A_8, B_8}, // 3#
{0, C_9, A_9, B_9}, // 4$
{0, C_10, A_10, B_10}, // 5%
{0, C_11, A_11, B_11}, // 6^
{0, C_12, A_12, B_12}, // 7&
{0, C_13, A_13, B_13}, // 8*
{0, C_14, A_14, B_14}, // 9(
{0, C_15, A_15, B_15}, // 0)
{0, C_16, A_16, B_16}, // -_
{0, L_13, J_13, K_13}, // =+
{0, L_12, J_12, K_12}, // BackSpace
{0, L_11, J_11, K_11}, // PgUp
{0, CB3_CA1, CB1_CA1, CB2_CA1}, // num_lock
{0, CB3_CA2, CB1_CA2, CB2_CA2}, // /
{0, CB3_CA3, CB1_CA3, CB2_CA3}, // *
{0, CB3_CA4, CB1_CA4, CB2_CA4}, // -
{0, CB3_CA5, CB1_CA5, CB2_CA5}, // ~`
{0, CB3_CA6, CB1_CA6, CB2_CA6}, // 1!
{0, CB3_CA7, CB1_CA7, CB2_CA7}, // 2@
{0, CB3_CA8, CB1_CA8, CB2_CA8}, // 3#
{0, CB3_CA9, CB1_CA9, CB2_CA9}, // 4$
{0, CB3_CA10, CB1_CA10, CB2_CA10}, // 5%
{0, CB3_CA11, CB1_CA11, CB2_CA11}, // 6^
{0, CB3_CA12, CB1_CA12, CB2_CA12}, // 7&
{0, CB3_CA13, CB1_CA13, CB2_CA13}, // 8*
{0, CB3_CA14, CB1_CA14, CB2_CA14}, // 9(
{0, CB3_CA15, CB1_CA15, CB2_CA15}, // 0)
{0, CB3_CA16, CB1_CA16, CB2_CA16}, // -_
{0, CB12_CA13, CB10_CA13, CB11_CA13}, // =+
{0, CB12_CA12, CB10_CA12, CB11_CA12}, // BackSpace
{0, CB12_CA11, CB10_CA11, CB11_CA11}, // PgUp
{0, F_1, D_1, E_1}, // 7
{0, F_2, D_2, E_2}, // 8
{0, F_3, D_3, E_3}, // 9
{0, F_4, D_4, E_4}, // +
{0, F_5, D_5, E_5}, // TAB
{0, F_6, D_6, E_6}, // Q
{0, F_7, D_7, E_7}, // W
{0, F_8, D_8, E_8}, // E
{0, F_9, D_9, E_9}, // R
{0, F_10, D_10, E_10}, // T
{0, F_11, D_11, E_11}, // Y
{0, F_12, D_12, E_12}, // U
{0, F_13, D_13, E_13}, // I
{0, F_14, D_14, E_14}, // O
{0, F_15, D_15, E_15}, // P
{0, F_16, D_16, E_16}, // [
{0, L_10, J_10, K_10}, // ]
{0, L_9, J_9, K_9}, // \|
{0, L_8, J_8, K_8}, // PgDn
{0, CB6_CA1, CB4_CA1, CB5_CA1}, // 7
{0, CB6_CA2, CB4_CA2, CB5_CA2}, // 8
{0, CB6_CA3, CB4_CA3, CB5_CA3}, // 9
{0, CB6_CA4, CB4_CA4, CB5_CA4}, // +
{0, CB6_CA5, CB4_CA5, CB5_CA5}, // TAB
{0, CB6_CA6, CB4_CA6, CB5_CA6}, // Q
{0, CB6_CA7, CB4_CA7, CB5_CA7}, // W
{0, CB6_CA8, CB4_CA8, CB5_CA8}, // E
{0, CB6_CA9, CB4_CA9, CB5_CA9}, // R
{0, CB6_CA10, CB4_CA10, CB5_CA10}, // T
{0, CB6_CA11, CB4_CA11, CB5_CA11}, // Y
{0, CB6_CA12, CB4_CA12, CB5_CA12}, // U
{0, CB6_CA13, CB4_CA13, CB5_CA13}, // I
{0, CB6_CA14, CB4_CA14, CB5_CA14}, // O
{0, CB6_CA15, CB4_CA15, CB5_CA15}, // P
{0, CB6_CA16, CB4_CA16, CB5_CA16}, // [
{0, CB12_CA10, CB10_CA10, CB11_CA10}, // ]
{0, CB12_CA9, CB10_CA9, CB11_CA9}, // \|
{0, CB12_CA8, CB10_CA8, CB11_CA8}, // PgDn
{1, C_16, A_16, B_16}, // 4
{1, C_15, A_15, B_15}, // 5
{1, C_14, A_14, B_14}, // 6
// {0, F_4, D_4, E_4}, // +
{1, C_12, A_12, B_12}, // CapsLock
{1, C_11, A_11, B_11}, // A
{1, C_10, A_10, B_10}, // S
{1, C_9, A_9, B_9}, // D
{1, C_8, A_8, B_8}, // F
{1, C_7, A_7, B_7}, // G
{1, C_6, A_6, B_6}, // H
{1, C_5, A_5, B_5}, // J
{1, C_4, A_4, B_4}, // k
{1, C_3, A_3, B_3}, // l
{1, C_2, A_2, B_2}, //
{1, C_1, A_1, B_1}, // '
{1, L_1, J_1, K_1}, // Enter
{1, L_2, J_2, K_2}, // Home
{1, CB3_CA16, CB1_CA16, CB2_CA16}, // 4
{1, CB3_CA15, CB1_CA15, CB2_CA15}, // 5
{1, CB3_CA14, CB1_CA14, CB2_CA14}, // 6
// {0, CB6_CA4, CB4_CA4, CB5_CA4}, // +
{1, CB3_CA12, CB1_CA12, CB2_CA12}, // CapsLock
{1, CB3_CA11, CB1_CA11, CB2_CA11}, // A
{1, CB3_CA10, CB1_CA10, CB2_CA10}, // S
{1, CB3_CA9, CB1_CA9, CB2_CA9}, // D
{1, CB3_CA8, CB1_CA8, CB2_CA8}, // F
{1, CB3_CA7, CB1_CA7, CB2_CA7}, // G
{1, CB3_CA6, CB1_CA6, CB2_CA6}, // H
{1, CB3_CA5, CB1_CA5, CB2_CA5}, // J
{1, CB3_CA4, CB1_CA4, CB2_CA4}, // k
{1, CB3_CA3, CB1_CA3, CB2_CA3}, // l
{1, CB3_CA2, CB1_CA2, CB2_CA2}, //
{1, CB3_CA1, CB1_CA1, CB2_CA1}, // '
{1, CB12_CA1, CB10_CA1, CB11_CA1}, // Enter
{1, CB12_CA2, CB10_CA2, CB11_CA2}, // Home
{1, I_16, G_16, H_16}, // 1
{1, I_15, G_15, H_15}, // 2
{1, I_14, G_14, H_14}, // 3
{1, I_13, G_13, H_13}, // Enter
{1, I_12, G_12, H_12}, //Shift_L
{1, I_10, G_10, H_10}, // Z
{1, I_9, G_9, H_9}, // X
{1, I_8, G_8, H_8}, // C
{1, I_7, G_7, H_7}, // V
{1, I_6, G_6, H_6}, // B
{1, I_5, G_5, H_5}, // N
{1, I_4, G_4, H_4}, // M
{1, I_3, G_3, H_3}, // ,
{1, I_2, G_2, H_2}, // .
{1, I_1, G_1, H_1}, // ?
{1, L_3, J_3, K_3}, // Shift_R
{1, L_4, J_4, K_4}, // Up
{1, CB9_CA16, CB7_CA16, CB8_CA16}, // 1
{1, CB9_CA15, CB7_CA15, CB8_CA15}, // 2
{1, CB9_CA14, CB7_CA14, CB8_CA14}, // 3
{1, CB9_CA13, CB7_CA13, CB8_CA13}, // Enter
{1, CB9_CA12, CB7_CA12, CB8_CA12}, //Shift_L
{1, CB9_CA10, CB7_CA10, CB8_CA10}, // Z
{1, CB9_CA9, CB7_CA9, CB8_CA9}, // X
{1, CB9_CA8, CB7_CA8, CB8_CA8}, // C
{1, CB9_CA7, CB7_CA7, CB8_CA7}, // V
{1, CB9_CA6, CB7_CA6, CB8_CA6}, // B
{1, CB9_CA5, CB7_CA5, CB8_CA5}, // N
{1, CB9_CA4, CB7_CA4, CB8_CA4}, // M
{1, CB9_CA3, CB7_CA3, CB8_CA3}, // ,
{1, CB9_CA2, CB7_CA2, CB8_CA2}, // .
{1, CB9_CA1, CB7_CA1, CB8_CA1}, // ?
{1, CB12_CA3, CB10_CA3, CB11_CA3}, // Shift_R
{1, CB12_CA4, CB10_CA4, CB11_CA4}, // Up
{1, F_16, D_16, E_16}, // 0
{1, F_14, D_14, E_14}, // .
{1, F_12, D_12, E_12}, // Ctrl_L
{1, F_11, D_11, E_11}, // Win_L
{1, F_10, D_10, E_10}, // Alt_L
{1, F_6, D_6, E_6}, // Space
{1, F_3, D_3, E_3}, // Alt_R
{1, F_2, D_2, E_2}, // Fn
{1, F_1, D_1, E_1}, // Ctrl_R
{1, L_5, J_5, K_5}, // Left
{1, L_6, J_6, K_6}, // Down
{1, L_7, J_7, K_7}, // Right
{1, CB6_CA16, CB4_CA16, CB5_CA16}, // 0
{1, CB6_CA14, CB4_CA14, CB5_CA14}, // .
{1, CB6_CA12, CB4_CA12, CB5_CA12}, // Ctrl_L
{1, CB6_CA11, CB4_CA11, CB5_CA11}, // Win_L
{1, CB6_CA10, CB4_CA10, CB5_CA10}, // Alt_L
{1, CB6_CA6, CB4_CA6, CB5_CA6}, // Space
{1, CB6_CA3, CB4_CA3, CB5_CA3}, // Alt_R
{1, CB6_CA2, CB4_CA2, CB5_CA2}, // Fn
{1, CB6_CA1, CB4_CA1, CB5_CA1}, // Ctrl_R
{1, CB12_CA5, CB10_CA5, CB11_CA5}, // Left
{1, CB12_CA6, CB10_CA6, CB11_CA6}, // Down
{1, CB12_CA7, CB10_CA7, CB11_CA7}, // Right
};
#define __ NO_LED

View File

@@ -16,11 +16,6 @@
#pragma once
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 56
#define DRIVER_2_LED_TOTAL 46
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */

View File

@@ -8,9 +8,6 @@
"pid": "0x01D1",
"device_version": "1.0.0"
},
"rgb_matrix": {
"driver": "snled27351"
},
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}

View File

@@ -38,72 +38,3 @@
#define SNLED27351_CURRENT_TUNE \
{ 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55 }
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID \
{ \
{ 5, 4 } \
}
#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* EEPROM Driver Configuration */
// #define WEAR_LEVELING_LOGICAL_SIZE 2048 // default
// #define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) // default
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHING
// #define ENABLE_RGB_MATRIX_BAND_SAT
// #define ENABLE_RGB_MATRIX_BAND_VAL
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#define ENABLE_RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#define ENABLE_RGB_MATRIX_DUAL_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
// #define ENABLE_RGB_MATRIX_RAINDROPS
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
// #define ENABLE_RGB_MATRIX_HUE_BREATHING
// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
// #define ENABLE_RGB_MATRIX_HUE_WAVE
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define ENABLE_RGB_MATRIX_SPLASH
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES

View File

@@ -0,0 +1,32 @@
{
"dip_switch": {
"matrix_grid": [ [5, 4] ]
},
"rgb_matrix": {
"animations":{
"breathing": true,
"band_spiral_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"rainbow_moving_chevron": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"jellybean_raindrops": true,
"pixel_rain": true,
"typing_heatmap": true,
"digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive_multiwide": true,
"solid_reactive_multinexus": true,
"splash": true,
"solid_splash": true
},
"driver": "snled27351",
"sleep": true
}
}

View File

@@ -16,11 +16,6 @@
#pragma once
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 56
#define DRIVER_2_LED_TOTAL 47
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */

View File

@@ -8,9 +8,6 @@
"pid": "0x01D3",
"device_version": "1.0.0"
},
"rgb_matrix": {
"driver": "snled27351"
},
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}

View File

@@ -18,125 +18,125 @@
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
// {0, I_1, G_1, H_1}
{0, I_2, G_2, H_2}, // F13
{0, I_3, G_3, H_3}, // F14
{0, I_4, G_4, H_4}, // F15
{0, I_5, G_5, H_5}, // Esc
{0, I_6, G_6, H_6}, // F1
{0, I_7, G_7, H_7}, // F2
{0, I_8, G_8, H_8}, // F3
{0, I_9, G_9, H_9}, // F4
{0, I_10, G_10, H_10}, // F5
{0, I_11, G_11, H_11}, // F6
{0, I_12, G_12, H_12}, // F7
{0, I_13, G_13, H_13}, // F8
{0, I_14, G_14, H_14}, // F9
{0, I_15, G_15, H_15}, // F10
{0, I_16, G_16, H_16}, // F11
{0, L_16, J_16, K_16}, // F12
{0, L_15, J_15, K_15}, // DEL
{0, L_14, J_14, K_14}, // Light
// {0, CB9_CA1, CB7_CA1, CB8_CA1}
{0, CB9_CA2, CB7_CA2, CB8_CA2}, // F13
{0, CB9_CA3, CB7_CA3, CB8_CA3}, // F14
{0, CB9_CA4, CB7_CA4, CB8_CA4}, // F15
{0, CB9_CA5, CB7_CA5, CB8_CA5}, // Esc
{0, CB9_CA6, CB7_CA6, CB8_CA6}, // F1
{0, CB9_CA7, CB7_CA7, CB8_CA7}, // F2
{0, CB9_CA8, CB7_CA8, CB8_CA8}, // F3
{0, CB9_CA9, CB7_CA9, CB8_CA9}, // F4
{0, CB9_CA10, CB7_CA10, CB8_CA10}, // F5
{0, CB9_CA11, CB7_CA11, CB8_CA11}, // F6
{0, CB9_CA12, CB7_CA12, CB8_CA12}, // F7
{0, CB9_CA13, CB7_CA13, CB8_CA13}, // F8
{0, CB9_CA14, CB7_CA14, CB8_CA14}, // F9
{0, CB9_CA15, CB7_CA15, CB8_CA15}, // F10
{0, CB9_CA16, CB7_CA16, CB8_CA16}, // F11
{0, CB12_CA16, CB10_CA16, CB11_CA16}, // F12
{0, CB12_CA15, CB10_CA15, CB11_CA15}, // DEL
{0, CB12_CA14, CB10_CA14, CB11_CA14}, // Light
{0, C_1, A_1, B_1}, // num_lock
{0, C_2, A_2, B_2}, // /
{0, C_3, A_3, B_3}, // *
{0, C_4, A_4, B_4}, // -
{0, C_5, A_5, B_5}, // ~`
{0, C_6, A_6, B_6}, // 1!
{0, C_7, A_7, B_7}, // 2@
{0, C_8, A_8, B_8}, // 3#
{0, C_9, A_9, B_9}, // 4$
{0, C_10, A_10, B_10}, // 5%
{0, C_11, A_11, B_11}, // 6^
{0, C_12, A_12, B_12}, // 7&
{0, C_13, A_13, B_13}, // 8*
{0, C_14, A_14, B_14}, // 9(
{0, C_15, A_15, B_15}, // 0)
{0, C_16, A_16, B_16}, // -_
{0, L_13, J_13, K_13}, // =+
{0, L_12, J_12, K_12}, // BackSpace
{0, L_11, J_11, K_11}, // PgUp
{0, CB3_CA1, CB1_CA1, CB2_CA1}, // num_lock
{0, CB3_CA2, CB1_CA2, CB2_CA2}, // /
{0, CB3_CA3, CB1_CA3, CB2_CA3}, // *
{0, CB3_CA4, CB1_CA4, CB2_CA4}, // -
{0, CB3_CA5, CB1_CA5, CB2_CA5}, // ~`
{0, CB3_CA6, CB1_CA6, CB2_CA6}, // 1!
{0, CB3_CA7, CB1_CA7, CB2_CA7}, // 2@
{0, CB3_CA8, CB1_CA8, CB2_CA8}, // 3#
{0, CB3_CA9, CB1_CA9, CB2_CA9}, // 4$
{0, CB3_CA10, CB1_CA10, CB2_CA10}, // 5%
{0, CB3_CA11, CB1_CA11, CB2_CA11}, // 6^
{0, CB3_CA12, CB1_CA12, CB2_CA12}, // 7&
{0, CB3_CA13, CB1_CA13, CB2_CA13}, // 8*
{0, CB3_CA14, CB1_CA14, CB2_CA14}, // 9(
{0, CB3_CA15, CB1_CA15, CB2_CA15}, // 0)
{0, CB3_CA16, CB1_CA16, CB2_CA16}, // -_
{0, CB12_CA13, CB10_CA13, CB11_CA13}, // =+
{0, CB12_CA12, CB10_CA12, CB11_CA12}, // BackSpace
{0, CB12_CA11, CB10_CA11, CB11_CA11}, // PgUp
{0, F_1, D_1, E_1}, // 7
{0, F_2, D_2, E_2}, // 8
{0, F_3, D_3, E_3}, // 9
{0, F_4, D_4, E_4}, // +
{0, F_5, D_5, E_5}, // TAB
{0, F_6, D_6, E_6}, // Q
{0, F_7, D_7, E_7}, // W
{0, F_8, D_8, E_8}, // E
{0, F_9, D_9, E_9}, // R
{0, F_10, D_10, E_10}, // T
{0, F_11, D_11, E_11}, // Y
{0, F_12, D_12, E_12}, // U
{0, F_13, D_13, E_13}, // I
{0, F_14, D_14, E_14}, // O
{0, F_15, D_15, E_15}, // P
{0, F_16, D_16, E_16}, // [
{0, L_10, J_10, K_10}, // ]
// {0, L_9, J_9, K_9}, // \|
{0, L_8, J_8, K_8}, // PgDn
{0, CB6_CA1, CB4_CA1, CB5_CA1}, // 7
{0, CB6_CA2, CB4_CA2, CB5_CA2}, // 8
{0, CB6_CA3, CB4_CA3, CB5_CA3}, // 9
{0, CB6_CA4, CB4_CA4, CB5_CA4}, // +
{0, CB6_CA5, CB4_CA5, CB5_CA5}, // TAB
{0, CB6_CA6, CB4_CA6, CB5_CA6}, // Q
{0, CB6_CA7, CB4_CA7, CB5_CA7}, // W
{0, CB6_CA8, CB4_CA8, CB5_CA8}, // E
{0, CB6_CA9, CB4_CA9, CB5_CA9}, // R
{0, CB6_CA10, CB4_CA10, CB5_CA10}, // T
{0, CB6_CA11, CB4_CA11, CB5_CA11}, // Y
{0, CB6_CA12, CB4_CA12, CB5_CA12}, // U
{0, CB6_CA13, CB4_CA13, CB5_CA13}, // I
{0, CB6_CA14, CB4_CA14, CB5_CA14}, // O
{0, CB6_CA15, CB4_CA15, CB5_CA15}, // P
{0, CB6_CA16, CB4_CA16, CB5_CA16}, // [
{0, CB12_CA10, CB10_CA10, CB11_CA10}, // ]
// {0, CB12_CA9, CB10_CA9, CB11_CA9}, // \|
{0, CB12_CA8, CB10_CA8, CB11_CA8}, // PgDn
{1, C_16, A_16, B_16}, // 4
{1, C_15, A_15, B_15}, // 5
{1, C_14, A_14, B_14}, // 6
// {0, F_4, D_4, E_4}, // +
{1, C_12, A_12, B_12}, // CapsLock
{1, C_11, A_11, B_11}, // A
{1, C_10, A_10, B_10}, // S
{1, C_9, A_9, B_9}, // D
{1, C_8, A_8, B_8}, // F
{1, C_7, A_7, B_7}, // G
{1, C_6, A_6, B_6}, // H
{1, C_5, A_5, B_5}, // J
{1, C_4, A_4, B_4}, // k
{1, C_3, A_3, B_3}, // l
{1, C_2, A_2, B_2}, //
{1, C_1, A_1, B_1}, // '
{1, L_1, J_1, K_1}, // #~
{0, L_9, J_9, K_9}, // Enter
{1, L_2, J_2, K_2}, // Home
{1, CB3_CA16, CB1_CA16, CB2_CA16}, // 4
{1, CB3_CA15, CB1_CA15, CB2_CA15}, // 5
{1, CB3_CA14, CB1_CA14, CB2_CA14}, // 6
// {0, CB6_CA4, CB4_CA4, CB5_CA4}, // +
{1, CB3_CA12, CB1_CA12, CB2_CA12}, // CapsLock
{1, CB3_CA11, CB1_CA11, CB2_CA11}, // A
{1, CB3_CA10, CB1_CA10, CB2_CA10}, // S
{1, CB3_CA9, CB1_CA9, CB2_CA9}, // D
{1, CB3_CA8, CB1_CA8, CB2_CA8}, // F
{1, CB3_CA7, CB1_CA7, CB2_CA7}, // G
{1, CB3_CA6, CB1_CA6, CB2_CA6}, // H
{1, CB3_CA5, CB1_CA5, CB2_CA5}, // J
{1, CB3_CA4, CB1_CA4, CB2_CA4}, // k
{1, CB3_CA3, CB1_CA3, CB2_CA3}, // l
{1, CB3_CA2, CB1_CA2, CB2_CA2}, //
{1, CB3_CA1, CB1_CA1, CB2_CA1}, // '
{1, CB12_CA1, CB10_CA1, CB11_CA1}, // #~
{0, CB12_CA9, CB10_CA9, CB11_CA9}, // Enter
{1, CB12_CA2, CB10_CA2, CB11_CA2}, // Home
{1, I_16, G_16, H_16}, // 1
{1, I_15, G_15, H_15}, // 2
{1, I_14, G_14, H_14}, // 3
{1, I_13, G_13, H_13}, // Enter
{1, I_12, G_12, H_12}, //Shift_L
{1, I_11, G_11, H_11}, // |
{1, I_10, G_10, H_10}, // Z
{1, I_9, G_9, H_9}, // X
{1, I_8, G_8, H_8}, // C
{1, I_7, G_7, H_7}, // V
{1, I_6, G_6, H_6}, // B
{1, I_5, G_5, H_5}, // N
{1, I_4, G_4, H_4}, // M
{1, I_3, G_3, H_3}, // ,
{1, I_2, G_2, H_2}, // .
{1, I_1, G_1, H_1}, // ?
{1, L_3, J_3, K_3}, // Shift_R
{1, L_4, J_4, K_4}, // Up
{1, CB9_CA16, CB7_CA16, CB8_CA16}, // 1
{1, CB9_CA15, CB7_CA15, CB8_CA15}, // 2
{1, CB9_CA14, CB7_CA14, CB8_CA14}, // 3
{1, CB9_CA13, CB7_CA13, CB8_CA13}, // Enter
{1, CB9_CA12, CB7_CA12, CB8_CA12}, //Shift_L
{1, CB9_CA11, CB7_CA11, CB8_CA11}, // |
{1, CB9_CA10, CB7_CA10, CB8_CA10}, // Z
{1, CB9_CA9, CB7_CA9, CB8_CA9}, // X
{1, CB9_CA8, CB7_CA8, CB8_CA8}, // C
{1, CB9_CA7, CB7_CA7, CB8_CA7}, // V
{1, CB9_CA6, CB7_CA6, CB8_CA6}, // B
{1, CB9_CA5, CB7_CA5, CB8_CA5}, // N
{1, CB9_CA4, CB7_CA4, CB8_CA4}, // M
{1, CB9_CA3, CB7_CA3, CB8_CA3}, // ,
{1, CB9_CA2, CB7_CA2, CB8_CA2}, // .
{1, CB9_CA1, CB7_CA1, CB8_CA1}, // ?
{1, CB12_CA3, CB10_CA3, CB11_CA3}, // Shift_R
{1, CB12_CA4, CB10_CA4, CB11_CA4}, // Up
{1, F_16, D_16, E_16}, // 0
{1, F_14, D_14, E_14}, // .
{1, F_12, D_12, E_12}, // Ctrl_L
{1, F_11, D_11, E_11}, // Win_L
{1, F_10, D_10, E_10}, // Alt_L
{1, F_6, D_6, E_6}, // Space
{1, F_3, D_3, E_3}, // Alt_R
{1, F_2, D_2, E_2}, // Fn
{1, F_1, D_1, E_1}, // Ctrl_R
{1, L_5, J_5, K_5}, // Left
{1, L_6, J_6, K_6}, // Down
{1, L_7, J_7, K_7}, // Right
{1, CB6_CA16, CB4_CA16, CB5_CA16}, // 0
{1, CB6_CA14, CB4_CA14, CB5_CA14}, // .
{1, CB6_CA12, CB4_CA12, CB5_CA12}, // Ctrl_L
{1, CB6_CA11, CB4_CA11, CB5_CA11}, // Win_L
{1, CB6_CA10, CB4_CA10, CB5_CA10}, // Alt_L
{1, CB6_CA6, CB4_CA6, CB5_CA6}, // Space
{1, CB6_CA3, CB4_CA3, CB5_CA3}, // Alt_R
{1, CB6_CA2, CB4_CA2, CB5_CA2}, // Fn
{1, CB6_CA1, CB4_CA1, CB5_CA1}, // Ctrl_R
{1, CB12_CA5, CB10_CA5, CB11_CA5}, // Left
{1, CB12_CA6, CB10_CA6, CB11_CA6}, // Down
{1, CB12_CA7, CB10_CA7, CB11_CA7}, // Right
};
#define __ NO_LED

View File

@@ -16,16 +16,6 @@
#include "quantum.h"
// clang-format off
const matrix_row_t matrix_mask[] = {
0b111111111111111111,
0b111111111111111111,
0b111111111111111111,
0b111111111111111111,
0b111111111111111111,
0b111111111111101111,
};
// clang-format on
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {

View File

@@ -16,110 +16,101 @@
#include "quantum.h"
const matrix_row_t matrix_mask[] = {
0b0111111111111101,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
};
#ifdef RGB_MATRIX_ENABLE
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_1, A_1, B_1},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{0, SW3_CS1, SW1_CS1, SW2_CS1},
{0, SW3_CS3, SW1_CS3, SW2_CS3},
{0, SW3_CS4, SW1_CS4, SW2_CS4},
{0, SW3_CS5, SW1_CS5, SW2_CS5},
{0, SW3_CS6, SW1_CS6, SW2_CS6},
{0, SW3_CS7, SW1_CS7, SW2_CS7},
{0, SW3_CS8, SW1_CS8, SW2_CS8},
{0, SW3_CS9, SW1_CS9, SW2_CS9},
{0, SW3_CS10, SW1_CS10, SW2_CS10},
{0, SW3_CS11, SW1_CS11, SW2_CS11},
{0, SW3_CS12, SW1_CS12, SW2_CS12},
{0, SW3_CS13, SW1_CS13, SW2_CS13},
{0, SW3_CS14, SW1_CS14, SW2_CS14},
{0, SW3_CS15, SW1_CS15, SW2_CS15},
{0, SW3_CS16, SW1_CS16, SW2_CS16},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_16, D_16, E_16},
{0, SW6_CS1, SW4_CS1, SW5_CS1},
{0, SW6_CS2, SW4_CS2, SW5_CS2},
{0, SW6_CS3, SW4_CS3, SW5_CS3},
{0, SW6_CS4, SW4_CS4, SW5_CS4},
{0, SW6_CS5, SW4_CS5, SW5_CS5},
{0, SW6_CS6, SW4_CS6, SW5_CS6},
{0, SW6_CS7, SW4_CS7, SW5_CS7},
{0, SW6_CS8, SW4_CS8, SW5_CS8},
{0, SW6_CS9, SW4_CS9, SW5_CS9},
{0, SW6_CS10, SW4_CS10, SW5_CS10},
{0, SW6_CS11, SW4_CS11, SW5_CS11},
{0, SW6_CS12, SW4_CS12, SW5_CS12},
{0, SW6_CS13, SW4_CS13, SW5_CS13},
{0, SW6_CS14, SW4_CS14, SW5_CS14},
{0, SW6_CS16, SW4_CS16, SW5_CS16},
{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_14, G_14, H_14},
{0, I_16, G_16, H_16},
{0, SW9_CS1, SW7_CS1, SW8_CS1},
{0, SW9_CS2, SW7_CS2, SW8_CS2},
{0, SW9_CS3, SW7_CS3, SW8_CS3},
{0, SW9_CS4, SW7_CS4, SW8_CS4},
{0, SW9_CS5, SW7_CS5, SW8_CS5},
{0, SW9_CS6, SW7_CS6, SW8_CS6},
{0, SW9_CS7, SW7_CS7, SW8_CS7},
{0, SW9_CS8, SW7_CS8, SW8_CS8},
{0, SW9_CS9, SW7_CS9, SW8_CS9},
{0, SW9_CS10, SW7_CS10, SW8_CS10},
{0, SW9_CS11, SW7_CS11, SW8_CS11},
{0, SW9_CS12, SW7_CS12, SW8_CS12},
{0, SW9_CS13, SW7_CS13, SW8_CS13},
{0, SW9_CS14, SW7_CS14, SW8_CS14},
{0, SW9_CS16, SW7_CS16, SW8_CS16},
{0, L_1, J_1, K_1},
{0, L_2, J_2, K_2},
{0, L_3, J_3, K_3},
{0, L_4, J_4, K_4},
{0, L_5, J_5, K_5},
{0, L_6, J_6, K_6},
{0, L_7, J_7, K_7},
{0, L_8, J_8, K_8},
{0, L_9, J_9, K_9},
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_14, J_14, K_14},
{0, L_16, J_16, K_16},
{0, SW12_CS1, SW10_CS1, SW11_CS1},
{0, SW12_CS2, SW10_CS2, SW11_CS2},
{0, SW12_CS3, SW10_CS3, SW11_CS3},
{0, SW12_CS4, SW10_CS4, SW11_CS4},
{0, SW12_CS5, SW10_CS5, SW11_CS5},
{0, SW12_CS6, SW10_CS6, SW11_CS6},
{0, SW12_CS7, SW10_CS7, SW11_CS7},
{0, SW12_CS8, SW10_CS8, SW11_CS8},
{0, SW12_CS9, SW10_CS9, SW11_CS9},
{0, SW12_CS10, SW10_CS10, SW11_CS10},
{0, SW12_CS11, SW10_CS11, SW11_CS11},
{0, SW12_CS12, SW10_CS12, SW11_CS12},
{0, SW12_CS14, SW10_CS14, SW11_CS14},
{0, SW12_CS16, SW10_CS16, SW11_CS16},
{1, C_1, A_1, B_1},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
{1, C_5, A_5, B_5},
{1, C_6, A_6, B_6},
{1, C_7, A_7, B_7},
{1, C_8, A_8, B_8},
{1, C_9, A_9, B_9},
{1, C_10, A_10, B_10},
{1, C_11, A_11, B_11},
{1, C_12, A_12, B_12},
{1, C_14, A_14, B_14},
{1, C_15, A_15, B_15},
{1, SW3_CS1, SW1_CS1, SW2_CS1},
{1, SW3_CS3, SW1_CS3, SW2_CS3},
{1, SW3_CS4, SW1_CS4, SW2_CS4},
{1, SW3_CS5, SW1_CS5, SW2_CS5},
{1, SW3_CS6, SW1_CS6, SW2_CS6},
{1, SW3_CS7, SW1_CS7, SW2_CS7},
{1, SW3_CS8, SW1_CS8, SW2_CS8},
{1, SW3_CS9, SW1_CS9, SW2_CS9},
{1, SW3_CS10, SW1_CS10, SW2_CS10},
{1, SW3_CS11, SW1_CS11, SW2_CS11},
{1, SW3_CS12, SW1_CS12, SW2_CS12},
{1, SW3_CS14, SW1_CS14, SW2_CS14},
{1, SW3_CS15, SW1_CS15, SW2_CS15},
{1, F_1, D_1, E_1},
{1, F_2, D_2, E_2},
{1, F_3, D_3, E_3},
{1, F_7, D_7, E_7},
{1, F_11, D_11, E_11},
{1, F_12, D_12, E_12},
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
{1, SW6_CS1, SW4_CS1, SW5_CS1},
{1, SW6_CS2, SW4_CS2, SW5_CS2},
{1, SW6_CS3, SW4_CS3, SW5_CS3},
{1, SW6_CS7, SW4_CS7, SW5_CS7},
{1, SW6_CS11, SW4_CS11, SW5_CS11},
{1, SW6_CS12, SW4_CS12, SW5_CS12},
{1, SW6_CS13, SW4_CS13, SW5_CS13},
{1, SW6_CS14, SW4_CS14, SW5_CS14},
{1, SW6_CS15, SW4_CS15, SW5_CS15},
{1, SW6_CS16, SW4_CS16, SW5_CS16}
};

View File

@@ -16,8 +16,5 @@
#pragma once
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 82
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45

View File

@@ -1,21 +0,0 @@
# gtg465x's Keychron Q1 keymap
- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
- RGB lighting turns off when the computer sleeps
- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
## Changelog
### 10/3/2021 - 1.0.3
- Feature: When the Fn layer is active, RGB lighting turns off for keys that are not assigned
### 10/1/2021 - 1.0.2
- Added Caps Lock indicator (my implementation is different, but this was inspired by mkillewald)
- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so they can be labeled properly in VIA
### 9/28/2021 - 1.0.1
- Initial release

View File

@@ -1,25 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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
/* RGB Matrix Configuration */
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
# define FN_LAYER_TRANSPARENT_KEYS_OFF
#endif

View File

@@ -1,70 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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 "keymap_user.h"
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix_user.h"
#endif
// clang-format off
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, 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_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_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_HOME,
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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
KC_TRNS, 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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[WIN_BASE] = LAYOUT_ansi_82(
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_DEL, 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_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_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_HOME,
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, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
// clang-format on
void matrix_init_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_init_user();
#endif
}

View File

@@ -1,28 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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
// clang-format off
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
// clang-format on

View File

@@ -1,72 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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 "rgb_matrix_user.h"
#include "keymap_user.h"
keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
void rgb_matrix_init_user(void) {
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
uint8_t led_index = g_led_config.matrix_co[row][col];
if (led_index != NO_LED) {
led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
}
}
}
}
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
uint8_t current_layer = get_highest_layer(layer_state);
switch (current_layer) {
case MAC_BASE:
case WIN_BASE:
#ifdef CAPS_LOCK_INDICATOR_COLOR
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
}
#endif
break;
case MAC_FN:
case WIN_FN:
#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
#endif
break;
}
return false;
}
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
for (uint8_t i = led_min; i < led_max; i++) {
uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
if ((*is_keycode)(keycode)) {
rgb_matrix_set_color(i, red, green, blue);
}
}
}
bool is_caps_lock_indicator(uint16_t keycode) {
#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
return (KC_A <= keycode && keycode <= KC_Z) || keycode == KC_CAPS;
#else
return keycode == KC_CAPS;
#endif
}
bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }

View File

@@ -1,24 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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
void rgb_matrix_init_user(void);
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
bool is_caps_lock_indicator(uint16_t keycode);
bool is_transparent(uint16_t keycode);

View File

@@ -1,6 +0,0 @@
VIA_ENABLE = yes
MOUSEKEY_ENABLE = no
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
SRC += rgb_matrix_user.c
endif

View File

@@ -1,23 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define FN_LAYER_COLOR RGB_ORANGE
#endif

View File

@@ -1,153 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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 "keymap_user.h"
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix_user.h"
#endif
// clang-format off
typedef union {
uint32_t raw;
struct {
bool caps_lock_light_tab :1;
bool caps_lock_light_alphas :1;
bool fn_layer_transparent_keys_off :1;
bool fn_layer_color_enable :1;
};
} user_config_t;
user_config_t user_config;
enum custom_keycodes {
KC_LIGHT_TAB_TOGGLE = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
KC_LIGHT_ALPHAS_TOGGLE,
KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE,
KC_FN_LAYER_COLOR_TOGGLE
};
#define KC_LTTOG KC_LIGHT_TAB_TOGGLE
#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE
#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE
#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, 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_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_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_HOME,
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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
KC_TRNS, 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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[WIN_BASE] = LAYOUT_ansi_82(
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_DEL, 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_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_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_HOME,
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, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
// clang-format on
void matrix_init_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_init_user();
#endif
}
void keyboard_post_init_user(void) {
user_config.raw = eeconfig_read_user();
}
void eeconfig_init_user(void) {
user_config.raw = 0;
user_config.caps_lock_light_tab = false;
user_config.caps_lock_light_alphas = false;
user_config.fn_layer_transparent_keys_off = true;
user_config.fn_layer_color_enable = false;
eeconfig_update_user(user_config.raw);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LIGHT_TAB_TOGGLE:
if (record->event.pressed) {
user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
case KC_LIGHT_ALPHAS_TOGGLE:
if (record->event.pressed) {
user_config.caps_lock_light_alphas ^= 1;
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE:
if (record->event.pressed) {
user_config.fn_layer_transparent_keys_off ^= 1;
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
case KC_FN_LAYER_COLOR_TOGGLE:
if (record->event.pressed) {
user_config.fn_layer_color_enable ^= 1;
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
default:
return true; // Process all other keycodes normally
}
}
bool get_caps_lock_light_tab(void) {
return user_config.caps_lock_light_tab;
}
bool get_caps_lock_light_alphas(void) {
return user_config.caps_lock_light_alphas;
}
bool get_fn_layer_transparent_keys_off(void) {
return user_config.fn_layer_transparent_keys_off;
}
bool get_fn_layer_color_enable(void) {
return user_config.fn_layer_color_enable;
}

View File

@@ -1,33 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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
// clang-format off
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
// clang-format on
bool get_caps_lock_light_tab(void);
bool get_caps_lock_light_alphas(void);
bool get_fn_layer_transparent_keys_off(void);
bool get_fn_layer_color_enable(void);

View File

@@ -1,54 +0,0 @@
## mkillewald's Keychron Q1 keymap (ANSI rev_0100) v1.0.4
This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options.
## Features:
- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
- RGB lighting turns off when the computer sleeps
- Caps Lock RGB indicator
- the Caps Lock key will light when Caps Lock is enabled with the following options:
- #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red)
- Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off)
- Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off)
- Dynamic Fn layer RGB indicator
- When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options:
- #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange)
- Fn+C will toggle turning off RGB for keys with no definition (default: RGB off)
- Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off)
- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes:
- USER(0) (default: F3) macOS Mission Control
- USER(1) (default: F4) macOS Launchpad
- USER(2) (default: Fn+Z) Caps Lock light Tab toggle
- USER(3) (default: Fn+X) Caps Lock light alphas toggle
- USER(4) (default: Fn+C) Fn layer non-defined keys RGB toggle
- USER(5) (default: Fn+V) Fn layer defined keys static color toggle
RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness.
Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER(0) through USER(5) custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed.
#### USE AT YOUR OWN RISK
## Changelog:
v1.0.4 October 9, 2021
- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged
v1.0.3 October 8, 2021
- now using keycode toggles instead of preprocessor directive to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile.
v1.0.2 October 7, 2021
- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines
- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator
- added FN_LAYER_COLOR config option to set FN layer static color
v1.0.1 October 7, 2021
- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x)
v1.0.0 September 30, 2021
- Initial release built upon keymap by Grayson Carr (gtg465x)
- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs
- RGB backlight turns off when computer sleeps
- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps

View File

@@ -1,84 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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 "rgb_matrix_user.h"
#include "keymap_user.h"
keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
void rgb_matrix_init_user(void) {
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
uint8_t led_index = g_led_config.matrix_co[row][col];
if (led_index != NO_LED) {
led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
}
}
}
}
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
uint8_t current_layer = get_highest_layer(layer_state);
switch (current_layer) {
case MAC_BASE:
case WIN_BASE:
#ifdef CAPS_LOCK_INDICATOR_COLOR
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
}
#endif
break;
case MAC_FN:
case WIN_FN:
#ifdef FN_LAYER_COLOR
if (get_fn_layer_color_enable()) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR);
}
#endif
if (get_fn_layer_transparent_keys_off()) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
}
break;
}
return false;
}
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
for (uint8_t i = led_min; i < led_max; i++) {
uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
if ((*is_keycode)(keycode)) {
rgb_matrix_set_color(i, red, green, blue);
}
}
}
bool is_caps_lock_indicator(uint16_t keycode) {
bool indicator = keycode == KC_CAPS;
if (get_caps_lock_light_tab()) {
indicator = keycode == KC_TAB || keycode == KC_CAPS;
}
if (get_caps_lock_light_alphas()) {
return (KC_A <= keycode && keycode <= KC_Z) || indicator;
} else {
return indicator;
}
}
bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }

View File

@@ -1,26 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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
void rgb_matrix_init_user(void);
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
bool is_caps_lock_indicator(uint16_t keycode);
bool is_transparent(uint16_t keycode);
bool is_not_transparent(uint16_t keycode);

View File

@@ -1,6 +0,0 @@
VIA_ENABLE = yes
MOUSEKEY_ENABLE = no
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
SRC += rgb_matrix_user.c
endif

View File

@@ -1,32 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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
#undef TAPPING_TERM
#define TAPPING_TERM 200
/* RGB Matrix Configuration */
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define MAC_LAYER_DEFAULT_COLOR RGB_CYAN
# define WIN_LAYER_DEFAULT_COLOR RGB_GREEN
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define CAPS_LOCK_INDICATOR_LIGHT_60
# define FN_LAYER_TRANSPARENT_KEYS_OFF
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#endif

View File

@@ -1,67 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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 "keymap_user.h"
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix_user.h"
#endif
// clang-format off
#define TG_NKRO MAGIC_TOGGLE_NKRO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
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_DEL, KC_HOME,
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_END,
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_PGUP,
KC_LGMAC, 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_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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_MACFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
_______, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MACPS, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, KC_LMAC, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_ansi_82(
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_DEL, KC_HOME,
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_END,
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_PGUP,
KC_LGWIN, 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_WINFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
// clang-format on
void matrix_init_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_init_user();
#endif
}

View File

@@ -1,48 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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
// clang-format off
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
// clang-format on
// Tap dance enums
enum {
MAC_CAPS_LANGUAGE_CHANGE,
WIN_CAPS_LANGUAGE_CHANGE,
};
#ifdef TAP_DANCE_ENABLE
# define KC_LGMAC TD(MAC_CAPS_LANGUAGE_CHANGE)
# define KC_LGWIN TD(WIN_CAPS_LANGUAGE_CHANGE)
#else
# define KC_LGMAC KC_CAPS
# define KC_LGWIN KC_CAPS
#endif
#define KC_MACFN MO(MAC_FN)
#define KC_WINFN MO(WIN_FN)
#define KC_LMAC C(G(KC_Q))
#define KC_MACPS G(S(KC_5))
#define KC_TASK G(KC_TAB)
#define KC_FLXP G(KC_E)

View File

@@ -1,13 +0,0 @@
# teimor's Keychron Q1 keymap
- Via Enabled.
- Tap dance enabled.
- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences.
- RGB lighting turns off when the computer sleeps.
- The RGB lighting for keys that are not assigned turns off when the Fn layer is active
- 60% layout turns red to indicate when Caps Lock is on.
- Windows and macOS: A single tap will quickly change the language, and holding will trigger Caps Lock. (Using Tap Dance)
- RGB Matrix based on layout - macOS base layout will turn on cyan color, Windows base layout will turn on green color.
- `fn + N` will toggle NKRO, useful when using the keyboard on freebsd.
- `fn + L` on macOS will lock the system.
- `fn + del` will trigger screenshot on macOS and Windows.

View File

@@ -1,92 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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 "rgb_matrix_user.h"
#include "keymap_user.h"
keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
void rgb_matrix_init_user(void) {
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
uint8_t led_index = g_led_config.matrix_co[row][col];
if (led_index != NO_LED) {
led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
}
}
}
}
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
uint8_t current_layer = get_highest_layer(layer_state | default_layer_state);
switch (current_layer) {
case MAC_BASE:
case WIN_BASE:
#if defined CAPS_LOCK_INDICATOR_COLOR && defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
} else if (current_layer == MAC_BASE)
rgb_matrix_set_color_all(MAC_LAYER_DEFAULT_COLOR);
else if (current_layer == WIN_BASE)
rgb_matrix_set_color_all(WIN_LAYER_DEFAULT_COLOR);
#endif
break;
case MAC_FN:
case WIN_FN:
#if defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
if (current_layer == MAC_FN) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, MAC_LAYER_DEFAULT_COLOR);
} else if (current_layer == WIN_FN) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, WIN_LAYER_DEFAULT_COLOR);
}
#endif
#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
#endif
break;
}
return false;
}
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
for (uint8_t i = led_min; i < led_max; i++) {
uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
if ((*is_keycode)(keycode)) {
rgb_matrix_set_color(i, red, green, blue);
}
#if defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
else {
if (layer == MAC_BASE)
rgb_matrix_set_color(i, MAC_LAYER_DEFAULT_COLOR);
else if (layer == WIN_BASE)
rgb_matrix_set_color(i, WIN_LAYER_DEFAULT_COLOR);
}
#endif
}
}
bool is_caps_lock_indicator(uint16_t keycode) {
bool indicator = keycode == KC_CAPS || keycode == KC_LGMAC || keycode == KC_LGWIN;
#ifdef CAPS_LOCK_INDICATOR_LIGHT_60
return (KC_A <= keycode && keycode <= KC_CAPS) || (KC_LEFT_CTRL <= keycode && keycode <= KC_RIGHT_GUI) || keycode == KC_MACFN || keycode == KC_WINFN || indicator;
#else
return indicator;
#endif
}
bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }

View File

@@ -1,25 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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
void rgb_matrix_init_user(void);
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
bool is_caps_lock_indicator(uint16_t keycode);
bool is_transparent(uint16_t keycode);
bool is_not_transparent(uint16_t keycode);

View File

@@ -1,14 +0,0 @@
VIA_ENABLE = yes
MOUSEKEY_ENABLE = no
TAP_DANCE_ENABLE = yes
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
SRC += rgb_matrix_user.c
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
SRC += tap_dance_user.c
SRC += tap_dance_setup.c
SRC += tap_dance_mac_caps.c
SRC += tap_dance_win_caps.c
endif

View File

@@ -1,50 +0,0 @@
/* Copyright 2021 @ Teimor Epstein
*
* 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/>.
*/
/* macOS CapsLock language change */
#include "tap_dance_mac_caps.h"
static td_tap_t mac_caps_language_tap_state = {.is_press_action = true, .state = TD_NONE};
void mac_caps_language_finished(tap_dance_state_t *state, void *user_data) {
mac_caps_language_tap_state.state = current_dance(state);
switch (mac_caps_language_tap_state.state) {
case TD_SINGLE_TAP:
register_code(KC_LCTL);
register_code(KC_SPACE);
break;
case TD_SINGLE_HOLD:
register_code(KC_CAPS_LOCK);
break;
default:
break;
}
}
void mac_caps_language_reset(tap_dance_state_t *state, void *user_data) {
switch (mac_caps_language_tap_state.state) {
case TD_SINGLE_TAP:
unregister_code(KC_SPACE);
unregister_code(KC_LCTL);
break;
case TD_SINGLE_HOLD:
unregister_code(KC_CAPS_LOCK);
break;
default:
break;
}
mac_caps_language_tap_state.state = TD_NONE;
}

View File

@@ -1,23 +0,0 @@
/* Copyright 2021 @ Teimor Epstein
*
* 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/>.
*/
/* macOS CapsLock language change */
#pragma once
#include "tap_dance_setup.h"
void mac_caps_language_finished(tap_dance_state_t *state, void *user_data);
void mac_caps_language_reset(tap_dance_state_t *state, void *user_data);

View File

@@ -1,49 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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 "tap_dance_setup.h"
td_state_t current_dance(tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
/* Key has not been interrupted, but the key is still held. Means you w ant to send a 'HOLD'. */
else
return TD_SINGLE_HOLD;
} else if (state->count == 2) {
/* TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
action when hitting 'pp'. Suggested use case for this return value is when you want to send two
keystrokes of the key, and not the 'double tap' action/macro. */
if (state->interrupted)
return TD_DOUBLE_SINGLE_TAP;
else if (state->pressed)
return TD_DOUBLE_HOLD;
else
return TD_DOUBLE_TAP;
}
/* Assumes no one is trying to type the same letter three times (at least not quickly).
If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP' */
if (state->count == 3) {
if (state->interrupted)
return TD_TRIPLE_SINGLE_TAP;
else if (state->pressed)
return TD_TRIPLE_HOLD;
else
return TD_TRIPLE_TAP;
} else
return TD_UNKNOWN;
}

View File

@@ -1,38 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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 QMK_KEYBOARD_H
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP,
TD_DOUBLE_HOLD,
TD_DOUBLE_SINGLE_TAP, // Send two single taps
TD_TRIPLE_TAP,
TD_TRIPLE_HOLD,
TD_TRIPLE_SINGLE_TAP // Send three single tap
} td_state_t;
typedef struct {
bool is_press_action;
td_state_t state;
} td_tap_t;
td_state_t current_dance(tap_dance_state_t *state);

View File

@@ -1,28 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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 "keymap_user.h"
#include "tap_dance_mac_caps.h"
#include "tap_dance_win_caps.h"
// clang-format off
tap_dance_action_t tap_dance_actions[] = {
[MAC_CAPS_LANGUAGE_CHANGE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, mac_caps_language_finished, mac_caps_language_reset),
[WIN_CAPS_LANGUAGE_CHANGE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, win_caps_language_finished, win_caps_language_reset)
};
// clang-format on

View File

@@ -1,50 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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/>.
*/
/* Windows CapsLock language change */
#include "tap_dance_win_caps.h"
static td_tap_t win_caps_language_tap_state = {.is_press_action = true, .state = TD_NONE};
void win_caps_language_finished(tap_dance_state_t *state, void *user_data) {
win_caps_language_tap_state.state = current_dance(state);
switch (win_caps_language_tap_state.state) {
case TD_SINGLE_TAP:
register_code(KC_LGUI);
register_code(KC_SPACE);
break;
case TD_SINGLE_HOLD:
register_code(KC_CAPS_LOCK);
break;
default:
break;
}
}
void win_caps_language_reset(tap_dance_state_t *state, void *user_data) {
switch (win_caps_language_tap_state.state) {
case TD_SINGLE_TAP:
unregister_code(KC_SPACE);
unregister_code(KC_LGUI);
break;
case TD_SINGLE_HOLD:
unregister_code(KC_CAPS_LOCK);
break;
default:
break;
}
win_caps_language_tap_state.state = TD_NONE;
}

View File

@@ -1,23 +0,0 @@
/* Copyright 2022 @ Teimor Epstein
*
* 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/>.
*/
/* Windows CapsLock language change */
#pragma once
#include "tap_dance_setup.h"
void win_caps_language_finished(tap_dance_state_t *state, void *user_data);
void win_caps_language_reset(tap_dance_state_t *state, void *user_data);

View File

@@ -16,110 +16,101 @@
#include "quantum.h"
const matrix_row_t matrix_mask[] = {
0b0111111111111101,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
};
#ifdef RGB_MATRIX_ENABLE
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_1, A_1, B_1},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{0, SW3_CS1, SW1_CS1, SW2_CS1},
{0, SW3_CS3, SW1_CS3, SW2_CS3},
{0, SW3_CS4, SW1_CS4, SW2_CS4},
{0, SW3_CS5, SW1_CS5, SW2_CS5},
{0, SW3_CS6, SW1_CS6, SW2_CS6},
{0, SW3_CS7, SW1_CS7, SW2_CS7},
{0, SW3_CS8, SW1_CS8, SW2_CS8},
{0, SW3_CS9, SW1_CS9, SW2_CS9},
{0, SW3_CS10, SW1_CS10, SW2_CS10},
{0, SW3_CS11, SW1_CS11, SW2_CS11},
{0, SW3_CS12, SW1_CS12, SW2_CS12},
{0, SW3_CS13, SW1_CS13, SW2_CS13},
{0, SW3_CS14, SW1_CS14, SW2_CS14},
{0, SW3_CS15, SW1_CS15, SW2_CS15},
{0, SW3_CS16, SW1_CS16, SW2_CS16},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_16, D_16, E_16},
{0, SW6_CS1, SW4_CS1, SW5_CS1},
{0, SW6_CS2, SW4_CS2, SW5_CS2},
{0, SW6_CS3, SW4_CS3, SW5_CS3},
{0, SW6_CS4, SW4_CS4, SW5_CS4},
{0, SW6_CS5, SW4_CS5, SW5_CS5},
{0, SW6_CS6, SW4_CS6, SW5_CS6},
{0, SW6_CS7, SW4_CS7, SW5_CS7},
{0, SW6_CS8, SW4_CS8, SW5_CS8},
{0, SW6_CS9, SW4_CS9, SW5_CS9},
{0, SW6_CS10, SW4_CS10, SW5_CS10},
{0, SW6_CS11, SW4_CS11, SW5_CS11},
{0, SW6_CS12, SW4_CS12, SW5_CS12},
{0, SW6_CS13, SW4_CS13, SW5_CS13},
{0, SW6_CS14, SW4_CS14, SW5_CS14},
{0, SW6_CS16, SW4_CS16, SW5_CS16},
{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_14, G_14, H_14},
{0, I_16, G_16, H_16},
{0, SW9_CS1, SW7_CS1, SW8_CS1},
{0, SW9_CS2, SW7_CS2, SW8_CS2},
{0, SW9_CS3, SW7_CS3, SW8_CS3},
{0, SW9_CS4, SW7_CS4, SW8_CS4},
{0, SW9_CS5, SW7_CS5, SW8_CS5},
{0, SW9_CS6, SW7_CS6, SW8_CS6},
{0, SW9_CS7, SW7_CS7, SW8_CS7},
{0, SW9_CS8, SW7_CS8, SW8_CS8},
{0, SW9_CS9, SW7_CS9, SW8_CS9},
{0, SW9_CS10, SW7_CS10, SW8_CS10},
{0, SW9_CS11, SW7_CS11, SW8_CS11},
{0, SW9_CS12, SW7_CS12, SW8_CS12},
{0, SW9_CS13, SW7_CS13, SW8_CS13},
{0, SW9_CS14, SW7_CS14, SW8_CS14},
{0, SW9_CS16, SW7_CS16, SW8_CS16},
{0, L_1, J_1, K_1},
{0, L_2, J_2, K_2},
{0, L_3, J_3, K_3},
{0, L_4, J_4, K_4},
{0, L_5, J_5, K_5},
{0, L_6, J_6, K_6},
{0, L_7, J_7, K_7},
{0, L_8, J_8, K_8},
{0, L_9, J_9, K_9},
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_14, J_14, K_14},
{0, L_16, J_16, K_16},
{0, SW12_CS1, SW10_CS1, SW11_CS1},
{0, SW12_CS2, SW10_CS2, SW11_CS2},
{0, SW12_CS3, SW10_CS3, SW11_CS3},
{0, SW12_CS4, SW10_CS4, SW11_CS4},
{0, SW12_CS5, SW10_CS5, SW11_CS5},
{0, SW12_CS6, SW10_CS6, SW11_CS6},
{0, SW12_CS7, SW10_CS7, SW11_CS7},
{0, SW12_CS8, SW10_CS8, SW11_CS8},
{0, SW12_CS9, SW10_CS9, SW11_CS9},
{0, SW12_CS10, SW10_CS10, SW11_CS10},
{0, SW12_CS11, SW10_CS11, SW11_CS11},
{0, SW12_CS12, SW10_CS12, SW11_CS12},
{0, SW12_CS14, SW10_CS14, SW11_CS14},
{0, SW12_CS16, SW10_CS16, SW11_CS16},
{1, C_1, A_1, B_1},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
{1, C_5, A_5, B_5},
{1, C_6, A_6, B_6},
{1, C_7, A_7, B_7},
{1, C_8, A_8, B_8},
{1, C_9, A_9, B_9},
{1, C_10, A_10, B_10},
{1, C_11, A_11, B_11},
{1, C_12, A_12, B_12},
{1, C_14, A_14, B_14},
{1, C_15, A_15, B_15},
{1, SW3_CS1, SW1_CS1, SW2_CS1},
{1, SW3_CS3, SW1_CS3, SW2_CS3},
{1, SW3_CS4, SW1_CS4, SW2_CS4},
{1, SW3_CS5, SW1_CS5, SW2_CS5},
{1, SW3_CS6, SW1_CS6, SW2_CS6},
{1, SW3_CS7, SW1_CS7, SW2_CS7},
{1, SW3_CS8, SW1_CS8, SW2_CS8},
{1, SW3_CS9, SW1_CS9, SW2_CS9},
{1, SW3_CS10, SW1_CS10, SW2_CS10},
{1, SW3_CS11, SW1_CS11, SW2_CS11},
{1, SW3_CS12, SW1_CS12, SW2_CS12},
{1, SW3_CS14, SW1_CS14, SW2_CS14},
{1, SW3_CS15, SW1_CS15, SW2_CS15},
{1, F_1, D_1, E_1},
{1, F_2, D_2, E_2},
{1, F_3, D_3, E_3},
{1, F_7, D_7, E_7},
{1, F_11, D_11, E_11},
{1, F_12, D_12, E_12},
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
{1, SW6_CS1, SW4_CS1, SW5_CS1},
{1, SW6_CS2, SW4_CS2, SW5_CS2},
{1, SW6_CS3, SW4_CS3, SW5_CS3},
{1, SW6_CS7, SW4_CS7, SW5_CS7},
{1, SW6_CS11, SW4_CS11, SW5_CS11},
{1, SW6_CS12, SW4_CS12, SW5_CS12},
{1, SW6_CS13, SW4_CS13, SW5_CS13},
{1, SW6_CS14, SW4_CS14, SW5_CS14},
{1, SW6_CS15, SW4_CS15, SW5_CS15},
{1, SW6_CS16, SW4_CS16, SW5_CS16}
};
#endif // RGB_MATRIX_ENABLE

View File

@@ -16,8 +16,5 @@
#pragma once
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 82
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45

View File

@@ -18,19 +18,7 @@
/* RGB Matrix Driver Configuration */
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {0,1} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC
/* Encoder Configuration*/
#define ENCODER_DEFAULT_POS 0x3
/* Disable RGB lighting when PC is in suspend */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS

View File

@@ -4,17 +4,22 @@
"maintainer": "lalalademaxiya1",
"bootloader": "atmel-dfu",
"diode_direction": "ROW2COL",
"build": {
"lto": true
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"dip_switch": true,
"extrakey": true,
"lto": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"dip_switch": {
"matrix_grid": [ [0, 1] ]
},
"matrix_pins": {
"cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
"rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
@@ -44,7 +49,8 @@
"splash": true,
"typing_heatmap": true
},
"driver": "is31fl3733"
"driver": "is31fl3733",
"sleep": true
},
"url": "https://github.com/Keychron",
"usb": {

View File

@@ -16,8 +16,5 @@
#pragma once
/* RGB Matrix Configuration */
#define RGB_MATRIX_LED_COUNT 83
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 44

View File

@@ -16,111 +16,102 @@
#include "quantum.h"
const matrix_row_t matrix_mask[] = {
0b0111111111111101,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
};
#ifdef RGB_MATRIX_ENABLE
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_1, A_1, B_1},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{0, SW3_CS1, SW1_CS1, SW2_CS1},
{0, SW3_CS3, SW1_CS3, SW2_CS3},
{0, SW3_CS4, SW1_CS4, SW2_CS4},
{0, SW3_CS5, SW1_CS5, SW2_CS5},
{0, SW3_CS6, SW1_CS6, SW2_CS6},
{0, SW3_CS7, SW1_CS7, SW2_CS7},
{0, SW3_CS8, SW1_CS8, SW2_CS8},
{0, SW3_CS9, SW1_CS9, SW2_CS9},
{0, SW3_CS10, SW1_CS10, SW2_CS10},
{0, SW3_CS11, SW1_CS11, SW2_CS11},
{0, SW3_CS12, SW1_CS12, SW2_CS12},
{0, SW3_CS13, SW1_CS13, SW2_CS13},
{0, SW3_CS14, SW1_CS14, SW2_CS14},
{0, SW3_CS15, SW1_CS15, SW2_CS15},
{0, SW3_CS16, SW1_CS16, SW2_CS16},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_16, D_16, E_16},
{0, SW6_CS1, SW4_CS1, SW5_CS1},
{0, SW6_CS2, SW4_CS2, SW5_CS2},
{0, SW6_CS3, SW4_CS3, SW5_CS3},
{0, SW6_CS4, SW4_CS4, SW5_CS4},
{0, SW6_CS5, SW4_CS5, SW5_CS5},
{0, SW6_CS6, SW4_CS6, SW5_CS6},
{0, SW6_CS7, SW4_CS7, SW5_CS7},
{0, SW6_CS8, SW4_CS8, SW5_CS8},
{0, SW6_CS9, SW4_CS9, SW5_CS9},
{0, SW6_CS10, SW4_CS10, SW5_CS10},
{0, SW6_CS11, SW4_CS11, SW5_CS11},
{0, SW6_CS12, SW4_CS12, SW5_CS12},
{0, SW6_CS13, SW4_CS13, SW5_CS13},
{0, SW6_CS14, SW4_CS14, SW5_CS14},
{0, SW6_CS16, SW4_CS16, SW5_CS16},
{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_16, G_16, H_16},
{0, SW9_CS1, SW7_CS1, SW8_CS1},
{0, SW9_CS2, SW7_CS2, SW8_CS2},
{0, SW9_CS3, SW7_CS3, SW8_CS3},
{0, SW9_CS4, SW7_CS4, SW8_CS4},
{0, SW9_CS5, SW7_CS5, SW8_CS5},
{0, SW9_CS6, SW7_CS6, SW8_CS6},
{0, SW9_CS7, SW7_CS7, SW8_CS7},
{0, SW9_CS8, SW7_CS8, SW8_CS8},
{0, SW9_CS9, SW7_CS9, SW8_CS9},
{0, SW9_CS10, SW7_CS10, SW8_CS10},
{0, SW9_CS11, SW7_CS11, SW8_CS11},
{0, SW9_CS12, SW7_CS12, SW8_CS12},
{0, SW9_CS13, SW7_CS13, SW8_CS13},
{0, SW9_CS16, SW7_CS16, SW8_CS16},
{0, L_1, J_1, K_1},
{0, L_2, J_2, K_2},
{0, L_3, J_3, K_3},
{0, L_4, J_4, K_4},
{0, L_5, J_5, K_5},
{0, L_6, J_6, K_6},
{0, L_7, J_7, K_7},
{0, L_8, J_8, K_8},
{0, L_9, J_9, K_9},
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_14, J_14, K_14},
{0, I_14, G_14, H_14},
{0, L_16, J_16, K_16},
{0, SW12_CS1, SW10_CS1, SW11_CS1},
{0, SW12_CS2, SW10_CS2, SW11_CS2},
{0, SW12_CS3, SW10_CS3, SW11_CS3},
{0, SW12_CS4, SW10_CS4, SW11_CS4},
{0, SW12_CS5, SW10_CS5, SW11_CS5},
{0, SW12_CS6, SW10_CS6, SW11_CS6},
{0, SW12_CS7, SW10_CS7, SW11_CS7},
{0, SW12_CS8, SW10_CS8, SW11_CS8},
{0, SW12_CS9, SW10_CS9, SW11_CS9},
{0, SW12_CS10, SW10_CS10, SW11_CS10},
{0, SW12_CS11, SW10_CS11, SW11_CS11},
{0, SW12_CS12, SW10_CS12, SW11_CS12},
{0, SW12_CS14, SW10_CS14, SW11_CS14},
{0, SW9_CS14, SW7_CS14, SW8_CS14},
{0, SW12_CS16, SW10_CS16, SW11_CS16},
{1, C_1, A_1, B_1},
{1, C_2, A_2, B_2},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
{1, C_5, A_5, B_5},
{1, C_6, A_6, B_6},
{1, C_7, A_7, B_7},
{1, C_8, A_8, B_8},
{1, C_9, A_9, B_9},
{1, C_10, A_10, B_10},
{1, C_11, A_11, B_11},
{1, C_12, A_12, B_12},
{1, C_14, A_14, B_14},
{1, C_15, A_15, B_15},
{1, SW3_CS1, SW1_CS1, SW2_CS1},
{1, SW3_CS2, SW1_CS2, SW2_CS2},
{1, SW3_CS3, SW1_CS3, SW2_CS3},
{1, SW3_CS4, SW1_CS4, SW2_CS4},
{1, SW3_CS5, SW1_CS5, SW2_CS5},
{1, SW3_CS6, SW1_CS6, SW2_CS6},
{1, SW3_CS7, SW1_CS7, SW2_CS7},
{1, SW3_CS8, SW1_CS8, SW2_CS8},
{1, SW3_CS9, SW1_CS9, SW2_CS9},
{1, SW3_CS10, SW1_CS10, SW2_CS10},
{1, SW3_CS11, SW1_CS11, SW2_CS11},
{1, SW3_CS12, SW1_CS12, SW2_CS12},
{1, SW3_CS14, SW1_CS14, SW2_CS14},
{1, SW3_CS15, SW1_CS15, SW2_CS15},
{1, F_1, D_1, E_1},
{1, F_2, D_2, E_2},
{1, F_3, D_3, E_3},
{1, F_7, D_7, E_7},
{1, F_11, D_11, E_11},
{1, F_12, D_12, E_12},
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
{1, SW6_CS1, SW4_CS1, SW5_CS1},
{1, SW6_CS2, SW4_CS2, SW5_CS2},
{1, SW6_CS3, SW4_CS3, SW5_CS3},
{1, SW6_CS7, SW4_CS7, SW5_CS7},
{1, SW6_CS11, SW4_CS11, SW5_CS11},
{1, SW6_CS12, SW4_CS12, SW5_CS12},
{1, SW6_CS13, SW4_CS13, SW5_CS13},
{1, SW6_CS14, SW4_CS14, SW5_CS14},
{1, SW6_CS15, SW4_CS15, SW5_CS15},
{1, SW6_CS16, SW4_CS16, SW5_CS16}
};
#define __ NO_LED

View File

@@ -1,16 +0,0 @@
# kubahorak's Keychron Q1 keymap
This ISO layout got heavily inspired by gtg465x's ANSI keymap (rev_0100).
Features:
- The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default.
- RGB lighting turns off when the computer sleeps
- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
## Changelog
### 2021-10-17 - 1.0.0
- Initial release

View File

@@ -1,25 +0,0 @@
/* Copyright 2021 Jakub Horak (@kubahorak)
*
* 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
#ifdef RGB_MATRIX_ENABLE
/* from rev_0100/keymaps/gtg465x */
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
# define FN_LAYER_TRANSPARENT_KEYS_OFF
#endif

View File

@@ -1,66 +0,0 @@
/* Copyright 2021 Jakub Horak (@kubahorak)
*
* 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 "keymap_user.h"
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix_user.h"
#endif
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, 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_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_NUHS, KC_ENT, KC_PGDN,
KC_LSFT, KC_NUBS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_iso_83(
KC_TRNS, 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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_iso_83(
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_DEL, 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_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_NUHS, KC_ENT, KC_PGDN,
KC_LSFT, KC_NUBS, 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, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[3] = LAYOUT_iso_83(
KC_TRNS, KC_BRID, KC_BRIU, LGUI(KC_TAB), LGUI(KC_E), RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
// clang-format on
void matrix_init_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_init_user();
#endif
}

View File

@@ -1,28 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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
// clang-format off
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
// clang-format on

View File

@@ -1,76 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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 "rgb_matrix_user.h"
#include "keymap_user.h"
keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
void rgb_matrix_init_user(void) {
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
uint8_t led_index = g_led_config.matrix_co[row][col];
if (led_index != NO_LED) {
led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
}
}
}
}
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
uint8_t current_layer = get_highest_layer(layer_state);
switch (current_layer) {
case MAC_BASE:
case WIN_BASE:
#ifdef CAPS_LOCK_INDICATOR_COLOR
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
}
#endif
break;
case MAC_FN:
case WIN_FN:
#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
#endif
break;
}
return false;
}
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
for (uint8_t i = led_min; i < led_max; i++) {
uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
if ((*is_keycode)(keycode)) {
rgb_matrix_set_color(i, red, green, blue);
}
}
}
bool is_caps_lock_indicator(uint16_t keycode) {
switch (keycode) {
#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
case KC_A ... KC_Z:
#endif
case KC_CAPS:
return true;
default:
return false;
}
}
bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }

View File

@@ -1,24 +0,0 @@
/* Copyright 2021 @ Grayson Carr
*
* 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
void rgb_matrix_init_user(void);
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
bool is_caps_lock_indicator(uint16_t keycode);
bool is_transparent(uint16_t keycode);

View File

@@ -1,6 +0,0 @@
VIA_ENABLE = yes
MOUSEKEY_ENABLE = no
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
SRC += rgb_matrix_user.c
endif

View File

@@ -1,23 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_WHEN_USB_SUSPENDED
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define FN_LAYER_COLOR RGB_ORANGE
#endif

View File

@@ -1,153 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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 "keymap_user.h"
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix_user.h"
#endif
// clang-format off
typedef union {
uint32_t raw;
struct {
bool caps_lock_light_tab :1;
bool caps_lock_light_alphas :1;
bool fn_layer_transparent_keys_off :1;
bool fn_layer_color_enable :1;
};
} user_config_t;
user_config_t user_config;
enum custom_keycodes {
KC_LIGHT_TAB_TOGGLE = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
KC_LIGHT_ALPHAS_TOGGLE,
KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE,
KC_FN_LAYER_COLOR_TOGGLE
};
#define KC_LTTOG KC_LIGHT_TAB_TOGGLE
#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE
#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE
#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, 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_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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
KC_TRNS, 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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[WIN_BASE] = LAYOUT_iso_83(
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_DEL, 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_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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
// clang-format on
void matrix_init_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_init_user();
#endif
}
void keyboard_post_init_user(void) {
user_config.raw = eeconfig_read_user();
}
void eeconfig_init_user(void) {
user_config.raw = 0;
user_config.caps_lock_light_tab = false;
user_config.caps_lock_light_alphas = false;
user_config.fn_layer_transparent_keys_off = true;
user_config.fn_layer_color_enable = false;
eeconfig_update_user(user_config.raw);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LIGHT_TAB_TOGGLE:
if (record->event.pressed) {
user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
case KC_LIGHT_ALPHAS_TOGGLE:
if (record->event.pressed) {
user_config.caps_lock_light_alphas ^= 1;
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE:
if (record->event.pressed) {
user_config.fn_layer_transparent_keys_off ^= 1;
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
case KC_FN_LAYER_COLOR_TOGGLE:
if (record->event.pressed) {
user_config.fn_layer_color_enable ^= 1;
eeconfig_update_user(user_config.raw);
}
return false; // Skip all further processing of this key
default:
return true; // Process all other keycodes normally
}
}
bool get_caps_lock_light_tab(void) {
return user_config.caps_lock_light_tab;
}
bool get_caps_lock_light_alphas(void) {
return user_config.caps_lock_light_alphas;
}
bool get_fn_layer_transparent_keys_off(void) {
return user_config.fn_layer_transparent_keys_off;
}
bool get_fn_layer_color_enable(void) {
return user_config.fn_layer_color_enable;
}

View File

@@ -1,33 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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
// clang-format off
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
// clang-format on
bool get_caps_lock_light_tab(void);
bool get_caps_lock_light_alphas(void);
bool get_fn_layer_transparent_keys_off(void);
bool get_fn_layer_color_enable(void);

View File

@@ -1,54 +0,0 @@
## mkillewald's Keychron Q1 keymap (ISO rev_0102) v1.0.4
This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options.
## Features:
- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
- RGB lighting turns off when the computer sleeps
- Caps Lock RGB indicator
- the Caps Lock key will light when Caps Lock is enabled with the following options:
- #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red)
- Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off)
- Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off)
- Dynamic Fn layer RGB indicator
- When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options:
- #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange)
- Fn+C will toggle turning off RGB for keys with no definition (default: RGB off)
- Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off)
- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes:
- USER(0) (default: F3) macOS Mission Control
- USER(1) (default: F4) macOS Launchpad
- USER(2) (default: Fn+Z) Caps Lock light Tab toggle
- USER(3) (default: Fn+X) Caps Lock light alphas toggle
- USER(4) (default: Fn+C) Fn layer non-defined keys RGB toggle
- USER(5) (default: Fn+V) Fn layer defined keys static color toggle
RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness.
Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER(0) through USER(5) custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed.
#### USE AT YOUR OWN RISK
## Changelog:
v1.0.4 October 9, 2021
- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged
v1.0.3 October 8, 2021
- now using keycode toggles instead of preprocessor directives to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile.
v1.0.2 October 7, 2021
- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines
- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator
- added FN_LAYER_COLOR config option to set FN layer static color
v1.0.1 October 7, 2021
- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x)
v1.0.0 September 30, 2021
- Initial release built upon keymap by Grayson Carr (gtg465x)
- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs
- RGB backlight turns off when computer sleeps
- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps

View File

@@ -1,84 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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 "rgb_matrix_user.h"
#include "keymap_user.h"
keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
void rgb_matrix_init_user(void) {
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
uint8_t led_index = g_led_config.matrix_co[row][col];
if (led_index != NO_LED) {
led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
}
}
}
}
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
uint8_t current_layer = get_highest_layer(layer_state);
switch (current_layer) {
case MAC_BASE:
case WIN_BASE:
#ifdef CAPS_LOCK_INDICATOR_COLOR
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
}
#endif
break;
case MAC_FN:
case WIN_FN:
#ifdef FN_LAYER_COLOR
if (get_fn_layer_color_enable()) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR);
}
#endif
if (get_fn_layer_transparent_keys_off()) {
rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
}
break;
}
return false;
}
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
for (uint8_t i = led_min; i < led_max; i++) {
uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
if ((*is_keycode)(keycode)) {
rgb_matrix_set_color(i, red, green, blue);
}
}
}
bool is_caps_lock_indicator(uint16_t keycode) {
bool indicator = keycode == KC_CAPS;
if (get_caps_lock_light_tab()) {
indicator = keycode == KC_TAB || keycode == KC_CAPS;
}
if (get_caps_lock_light_alphas()) {
return (KC_A <= keycode && keycode <= KC_Z) || indicator;
} else {
return indicator;
}
}
bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }

View File

@@ -1,26 +0,0 @@
/* Copyright 2021 @ Mike Killewald
*
* 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
void rgb_matrix_init_user(void);
void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
bool is_caps_lock_indicator(uint16_t keycode);
bool is_transparent(uint16_t keycode);
bool is_not_transparent(uint16_t keycode);

View File

@@ -1,6 +0,0 @@
VIA_ENABLE = yes
MOUSEKEY_ENABLE = no
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
SRC += rgb_matrix_user.c
endif

View File

@@ -1,69 +0,0 @@
/* Copyright 2021 @ Victor-Gabriel Savu
*
* 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
// disable all default effects
#undef ENABLE_RGB_MATRIX_BREATHING
#undef ENABLE_RGB_MATRIX_CYCLE_ALL
#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#undef ENABLE_RGB_MATRIX_DUAL_BEACON
#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
#undef ENABLE_RGB_MATRIX_RAINDROPS
#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#undef ENABLE_RGB_MATRIX_SPLASH
#undef ENABLE_RGB_MATRIX_MULTISPLASH
#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
// Allow fancy RGB
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// Simple RGB
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
// Reactive RGB
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
// Unicode for Linux
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
#define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
// Leader config
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 500

Some files were not shown because too many files have changed in this diff Show More