forked from mirror/qmk_firmware
Delete unused boards
This commit is contained in:
@@ -1,127 +0,0 @@
|
||||
/*
|
||||
Copyright 2015 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x04D8
|
||||
#define PRODUCT_ID 0xEED2
|
||||
#define DEVICE_VER 0x0101
|
||||
|
||||
#define MANUFACTURER "Massdrop Inc."
|
||||
#define PRODUCT "CTRL Keyboard"
|
||||
#define SERIAL_NUM "Unavailable"
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 11
|
||||
#define MATRIX_COLS 8
|
||||
|
||||
/* MCU Port name definitions */
|
||||
#define PA 0
|
||||
#define PB 1
|
||||
|
||||
/* Port and Pin definition of key row hardware configuration */
|
||||
#define MATRIX_ROW_PORTS PB, PB, PB, PB, PB, PB, PA, PA, PB, PB, PB
|
||||
#define MATRIX_ROW_PINS 4, 5, 6, 7, 8, 9, 10, 11, 10, 11, 12
|
||||
|
||||
/* Port and Pin definition of key column hardware configuration */
|
||||
#define MATRIX_COL_PORTS PA, PA, PA, PA, PA, PA, PA, PA
|
||||
#define MATRIX_COL_PINS 0, 1, 2, 3, 4, 5, 6, 7
|
||||
|
||||
/* This Shift Register expands available hardware output lines to control additional peripherals */
|
||||
/* It uses four lines from the MCU to provide 16 output lines */
|
||||
/* Shift Register Clock configuration (MCU to ShiftRegister.RCLK) */
|
||||
#define SR_EXP_RCLK_PORT PB
|
||||
#define SR_EXP_RCLK_PIN 14
|
||||
/* Shift Register Output Enable configuration (MCU to ShiftRegister.OE_N) */
|
||||
#define SR_EXP_OE_N_PORT PB
|
||||
#define SR_EXP_OE_N_PIN 15
|
||||
/* SERCOM port to use for Shift Register SPI */
|
||||
/* DATAOUT and SCLK must be configured to use hardware pins of this port */
|
||||
#define SR_EXP_SERCOM SERCOM2
|
||||
/* Shift Register SPI Data Out configuration (MCU.SERCOMx.PAD[0] to ShiftRegister.SER) */
|
||||
#define SR_EXP_DATAOUT_PORT PA
|
||||
#define SR_EXP_DATAOUT_PIN 12
|
||||
#define SR_EXP_DATAOUT_MUX 2
|
||||
/* Shift Register SPI Serial Clock configuration (MCU.SERCOMx.PAD[1] to ShiftRegister.SRCLK) */
|
||||
#define SR_EXP_SCLK_PORT PA
|
||||
#define SR_EXP_SCLK_PIN 13
|
||||
#define SR_EXP_SCLK_MUX 2
|
||||
|
||||
/* Debug LED (Small LED Located near MCU) */
|
||||
#define DEBUG_LED_ENABLE 1
|
||||
#define DEBUG_LED_PORT PA
|
||||
#define DEBUG_LED_PIN 27
|
||||
|
||||
/* Additional debugging ports */
|
||||
/* PCB M21 */
|
||||
#define DEBUG_PORT1_ENABLE 1
|
||||
#define DEBUG_PORT1_PORT PB
|
||||
#define DEBUG_PORT1_PIN 3
|
||||
/* PCB M23 */
|
||||
#define DEBUG_PORT2_ENABLE 1
|
||||
#define DEBUG_PORT2_PORT PB
|
||||
#define DEBUG_PORT2_PIN 17
|
||||
/* PCB M25 */
|
||||
#define DEBUG_PORT3_ENABLE 1
|
||||
#define DEBUG_PORT3_PORT PA
|
||||
#define DEBUG_PORT3_PIN 20
|
||||
|
||||
/* Debug Boot Tracing - During boot sequence, ground this pin to halt and display debug code using Debug LED */
|
||||
/* This is useful in determining which hardware device may have malfunctioned or is improperly configured */
|
||||
/* Feature is automatically disabled after successful boot */
|
||||
/* PCB M27 */
|
||||
#define DEBUG_BOOT_TRACING_ENABLE 1
|
||||
#define DEBUG_BOOT_TRACING_PORT PB
|
||||
#define DEBUG_BOOT_TRACING_PIN 23
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
//#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
//#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* Force boot in NKRO mode */
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_LED_PROCESS_LIMIT 15
|
||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 10
|
||||
|
||||
#include "config_led.h"
|
||||
@@ -1,82 +0,0 @@
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#include "ctrl.h"
|
||||
|
||||
#include "led_matrix.h"
|
||||
#include "rgb_matrix.h"
|
||||
#include "config_led.h"
|
||||
|
||||
led_config_t g_led_config = { {
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 16, 17, 18, 19, 20, 21, 22, 23 },
|
||||
{ 33, 34, 35, 36, 37, 38, 39, 40 },
|
||||
{ 50, 51, 52, 53, 54, 55, 56, 57 },
|
||||
{ 63, 64, 65, 66, 67, 68, 69, 70 },
|
||||
{ 76, 77, 78, 79, 80, 81, 82, 83 },
|
||||
{ 8, 9, 10, 11, 12, 13, 14, 15 },
|
||||
{ 24, 25, 26, 27, 28, 29, 30, 31 },
|
||||
{ 41, 42, 43, 44, 45, 46, 47, 48 },
|
||||
{ 58, 59, 60, 61, 62, 75, 49, 32 },
|
||||
{ 71, 72, 73, 74, 84, 85, 86, NO_LED }
|
||||
}, {
|
||||
// KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS
|
||||
{ 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 },
|
||||
{ 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 },
|
||||
// KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP
|
||||
{ 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 },
|
||||
{ 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 },
|
||||
{ 217, 20 },
|
||||
// KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN
|
||||
{ 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 },
|
||||
{ 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 172, 30 }, { 193, 30 }, { 205, 30 },
|
||||
{ 217, 30 },
|
||||
// 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
|
||||
{ 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 },
|
||||
{ 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
|
||||
// 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
|
||||
{ 14, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 },
|
||||
{ 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 },
|
||||
// KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
{ 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 },
|
||||
{ 193, 59 }, { 205, 59 }, { 217, 59 },
|
||||
// Underglow / Border
|
||||
{ 224, 64 }, { 204, 64 }, { 186, 64 }, { 167, 64 }, { 149, 64 }, { 130, 64 }, { 112, 64 }, { 94, 64 },
|
||||
{ 75, 64 }, { 57, 64 }, { 38, 64 }, { 20, 64 }, { 0, 64 }, { 0, 47 }, { 0, 32 }, { 0, 17 },
|
||||
{ 0, 0 }, { 20, 0 }, { 38, 0 }, { 57, 0 }, { 75, 0 }, { 94, 0 }, { 112, 0 }, { 130, 0 },
|
||||
{ 149, 0 }, { 167, 0 }, { 186, 0 }, { 204, 0 }, { 224, 0 }, { 224, 17 }, { 224, 32 }, { 224, 47 }
|
||||
}, {
|
||||
// KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS
|
||||
1, 4, 4, 4, 4, 1, 1, 1,
|
||||
1, 4, 4, 4, 4, 1, 1, 1,
|
||||
// KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP
|
||||
4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 1, 1, 1,
|
||||
1,
|
||||
// KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN
|
||||
1, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 1, 1,
|
||||
1,
|
||||
// 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
|
||||
1, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 1,
|
||||
// KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP
|
||||
1, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 1, 1,
|
||||
// KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
1, 1, 1, 4, 1, 1, 1, 1,
|
||||
1, 1, 1,
|
||||
// Underglow / Border
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2
|
||||
} };
|
||||
|
||||
|
||||
#ifdef USB_LED_INDICATOR_ENABLE
|
||||
void rgb_matrix_indicators_kb(void)
|
||||
{
|
||||
led_matrix_indicators();
|
||||
}
|
||||
#endif // USB_LED_INDICATOR_ENABLE
|
||||
|
||||
#endif
|
||||
@@ -1,192 +0,0 @@
|
||||
/*
|
||||
Copyright 2018 Massdrop Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
//Define number of ISSI3733 drivers being used (1...16)
|
||||
#define ISSI3733_DRIVER_COUNT 2
|
||||
#define DRIVER_LED_TOTAL ISSI3733_LED_COUNT
|
||||
|
||||
//Hardware address of each driver (Refer to ISSI3733 pdf "Table 1 Slave Address" and keyboard schematic)
|
||||
#define ISSI3773_DRIVER_ADDRESSES { 0xA0, 0xBE }
|
||||
|
||||
//LED I2C bus speed
|
||||
#define I2C_HZ 580000
|
||||
|
||||
//Count of LED bodies
|
||||
#define ISSI3733_LED_COUNT 119
|
||||
|
||||
#define LED_GCR_MAX 165 //Max GCR value (0 - 255) WARNING: Raising this value may overload the LED drivers and USB bus
|
||||
#define LED_GCR_STEP 10 //GCR increment/decrement value
|
||||
|
||||
#ifdef USE_MASSDROP_CONFIGURATOR
|
||||
#define ANIMATION_SPEED_STEP 1
|
||||
|
||||
#define BREATHE_STEP 1
|
||||
#define BREATHE_MIN_STEP 0
|
||||
#define BREATHE_MAX_STEP 255
|
||||
#endif
|
||||
|
||||
//Default Global Current Register value (Default brightness 0 - 255)
|
||||
#define ISSI3733_GCR_DEFAULT LED_GCR_MAX
|
||||
|
||||
//Automatic power rollback and recovery
|
||||
#define V5_HIGH 2540 //5V high level (After low power detect, point at which LEDs are allowed to use more power )
|
||||
#define V5_LOW 2480 //5V low level (LED power rolled back to stay above this limit)
|
||||
#define V5_CAT 2200 //5V catastrophic level (Host USB port potential to shut down)
|
||||
|
||||
//LED Mapping - More practically generated from a spreadsheet program
|
||||
//id: ID of the LED (Sync with PCB callouts)
|
||||
//x: Physical X coordinate of LED (units do not matter)
|
||||
//y: Physical Y coordinate of LED (units do not matter)
|
||||
//drv: 1-Based index of ISSI3773_DRIVER_ADDRESSES
|
||||
//cs: Matrix wiring CS col (1-16)
|
||||
//swr: Matrix wiring SW Red row (1-12)
|
||||
//swg: Matrix wiring SW Green row (1-12)
|
||||
//swb: Matrix wiring SW Blue row (1-12)
|
||||
//scan: Associated key scancode if any
|
||||
//Note: Origin 0,0 may be located anywhere as the software will do the final layout
|
||||
#define ISSI3733_LED_MAP { \
|
||||
{ .id = 1, .x = 0, .y = 0, .adr = { .drv = 2, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 0 }, \
|
||||
{ .id = 2, .x = 1.5, .y = 0, .adr = { .drv = 2, .cs = 3, .swr = 5, .swg = 4, .swb = 6 }, .scan = 1 }, \
|
||||
{ .id = 3, .x = 2.25, .y = 0, .adr = { .drv = 2, .cs = 4, .swr = 5, .swg = 4, .swb = 6 }, .scan = 2 }, \
|
||||
{ .id = 4, .x = 3, .y = 0, .adr = { .drv = 2, .cs = 5, .swr = 5, .swg = 4, .swb = 6 }, .scan = 3 }, \
|
||||
{ .id = 5, .x = 3.75, .y = 0, .adr = { .drv = 2, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 4 }, \
|
||||
{ .id = 6, .x = 4.875, .y = 0, .adr = { .drv = 2, .cs = 7, .swr = 5, .swg = 4, .swb = 6 }, .scan = 5 }, \
|
||||
{ .id = 7, .x = 5.625, .y = 0, .adr = { .drv = 2, .cs = 8, .swr = 5, .swg = 4, .swb = 6 }, .scan = 6 }, \
|
||||
{ .id = 8, .x = 6.375, .y = 0, .adr = { .drv = 1, .cs = 1, .swr = 5, .swg = 4, .swb = 6 }, .scan = 7 }, \
|
||||
{ .id = 9, .x = 7.125, .y = 0, .adr = { .drv = 1, .cs = 2, .swr = 5, .swg = 4, .swb = 6 }, .scan = 48 }, \
|
||||
{ .id = 10, .x = 8.25, .y = 0, .adr = { .drv = 1, .cs = 3, .swr = 5, .swg = 4, .swb = 6 }, .scan = 49 }, \
|
||||
{ .id = 11, .x = 9, .y = 0, .adr = { .drv = 1, .cs = 4, .swr = 5, .swg = 4, .swb = 6 }, .scan = 50 }, \
|
||||
{ .id = 12, .x = 9.75, .y = 0, .adr = { .drv = 1, .cs = 5, .swr = 5, .swg = 4, .swb = 6 }, .scan = 51 }, \
|
||||
{ .id = 13, .x = 10.5, .y = 0, .adr = { .drv = 1, .cs = 6, .swr = 5, .swg = 4, .swb = 6 }, .scan = 52 }, \
|
||||
{ .id = 14, .x = 11.625, .y = 0, .adr = { .drv = 1, .cs = 7, .swr = 5, .swg = 4, .swb = 6 }, .scan = 53 }, \
|
||||
{ .id = 15, .x = 12.375, .y = 0, .adr = { .drv = 1, .cs = 8, .swr = 5, .swg = 4, .swb = 6 }, .scan = 54 }, \
|
||||
{ .id = 16, .x = 13.125, .y = 0, .adr = { .drv = 1, .cs = 9, .swr = 5, .swg = 4, .swb = 6 }, .scan = 55 }, \
|
||||
{ .id = 17, .x = 0, .y = -1.125, .adr = { .drv = 2, .cs = 1, .swr = 8, .swg = 7, .swb = 9 }, .scan = 8 }, \
|
||||
{ .id = 18, .x = 0.75, .y = -1.125, .adr = { .drv = 2, .cs = 2, .swr = 8, .swg = 7, .swb = 9 }, .scan = 9 }, \
|
||||
{ .id = 19, .x = 1.5, .y = -1.125, .adr = { .drv = 2, .cs = 3, .swr = 8, .swg = 7, .swb = 9 }, .scan = 10 }, \
|
||||
{ .id = 20, .x = 2.25, .y = -1.125, .adr = { .drv = 2, .cs = 4, .swr = 8, .swg = 7, .swb = 9 }, .scan = 11 }, \
|
||||
{ .id = 21, .x = 3, .y = -1.125, .adr = { .drv = 2, .cs = 5, .swr = 8, .swg = 7, .swb = 9 }, .scan = 12 }, \
|
||||
{ .id = 22, .x = 3.75, .y = -1.125, .adr = { .drv = 2, .cs = 6, .swr = 8, .swg = 7, .swb = 9 }, .scan = 13 }, \
|
||||
{ .id = 23, .x = 4.5, .y = -1.125, .adr = { .drv = 2, .cs = 7, .swr = 8, .swg = 7, .swb = 9 }, .scan = 14 }, \
|
||||
{ .id = 24, .x = 5.25, .y = -1.125, .adr = { .drv = 2, .cs = 8, .swr = 8, .swg = 7, .swb = 9 }, .scan = 15 }, \
|
||||
{ .id = 25, .x = 6, .y = -1.125, .adr = { .drv = 1, .cs = 1, .swr = 8, .swg = 7, .swb = 9 }, .scan = 56 }, \
|
||||
{ .id = 26, .x = 6.75, .y = -1.125, .adr = { .drv = 1, .cs = 2, .swr = 8, .swg = 7, .swb = 9 }, .scan = 57 }, \
|
||||
{ .id = 27, .x = 7.5, .y = -1.125, .adr = { .drv = 1, .cs = 3, .swr = 8, .swg = 7, .swb = 9 }, .scan = 58 }, \
|
||||
{ .id = 28, .x = 8.25, .y = -1.125, .adr = { .drv = 1, .cs = 4, .swr = 8, .swg = 7, .swb = 9 }, .scan = 59 }, \
|
||||
{ .id = 29, .x = 9, .y = -1.125, .adr = { .drv = 1, .cs = 5, .swr = 8, .swg = 7, .swb = 9 }, .scan = 60 }, \
|
||||
{ .id = 30, .x = 10.125, .y = -1.125, .adr = { .drv = 1, .cs = 6, .swr = 8, .swg = 7, .swb = 9 }, .scan = 61 }, \
|
||||
{ .id = 31, .x = 11.625, .y = -1.125, .adr = { .drv = 1, .cs = 7, .swr = 8, .swg = 7, .swb = 9 }, .scan = 62 }, \
|
||||
{ .id = 32, .x = 12.375, .y = -1.125, .adr = { .drv = 1, .cs = 8, .swr = 8, .swg = 7, .swb = 9 }, .scan = 63 }, \
|
||||
{ .id = 33, .x = 13.125, .y = -1.125, .adr = { .drv = 1, .cs = 9, .swr = 8, .swg = 7, .swb = 9 }, .scan = 79 }, \
|
||||
{ .id = 34, .x = 0.188, .y = -1.875, .adr = { .drv = 2, .cs = 1, .swr = 11, .swg = 10, .swb = 12 }, .scan = 16 }, \
|
||||
{ .id = 35, .x = 1.125, .y = -1.875, .adr = { .drv = 2, .cs = 2, .swr = 11, .swg = 10, .swb = 12 }, .scan = 17 }, \
|
||||
{ .id = 36, .x = 1.875, .y = -1.875, .adr = { .drv = 2, .cs = 3, .swr = 11, .swg = 10, .swb = 12 }, .scan = 18 }, \
|
||||
{ .id = 37, .x = 2.625, .y = -1.875, .adr = { .drv = 2, .cs = 4, .swr = 11, .swg = 10, .swb = 12 }, .scan = 19 }, \
|
||||
{ .id = 38, .x = 3.375, .y = -1.875, .adr = { .drv = 2, .cs = 5, .swr = 11, .swg = 10, .swb = 12 }, .scan = 20 }, \
|
||||
{ .id = 39, .x = 4.125, .y = -1.875, .adr = { .drv = 2, .cs = 6, .swr = 11, .swg = 10, .swb = 12 }, .scan = 21 }, \
|
||||
{ .id = 40, .x = 4.875, .y = -1.875, .adr = { .drv = 2, .cs = 7, .swr = 11, .swg = 10, .swb = 12 }, .scan = 22 }, \
|
||||
{ .id = 41, .x = 5.625, .y = -1.875, .adr = { .drv = 2, .cs = 8, .swr = 11, .swg = 10, .swb = 12 }, .scan = 23 }, \
|
||||
{ .id = 42, .x = 6.375, .y = -1.875, .adr = { .drv = 1, .cs = 1, .swr = 11, .swg = 10, .swb = 12 }, .scan = 64 }, \
|
||||
{ .id = 43, .x = 7.125, .y = -1.875, .adr = { .drv = 1, .cs = 2, .swr = 11, .swg = 10, .swb = 12 }, .scan = 65 }, \
|
||||
{ .id = 44, .x = 7.875, .y = -1.875, .adr = { .drv = 1, .cs = 3, .swr = 11, .swg = 10, .swb = 12 }, .scan = 66 }, \
|
||||
{ .id = 45, .x = 8.625, .y = -1.875, .adr = { .drv = 1, .cs = 4, .swr = 11, .swg = 10, .swb = 12 }, .scan = 67 }, \
|
||||
{ .id = 46, .x = 9.375, .y = -1.875, .adr = { .drv = 1, .cs = 5, .swr = 11, .swg = 10, .swb = 12 }, .scan = 68 }, \
|
||||
{ .id = 47, .x = 10.312, .y = -1.875, .adr = { .drv = 1, .cs = 6, .swr = 11, .swg = 10, .swb = 12 }, .scan = 69 }, \
|
||||
{ .id = 48, .x = 11.625, .y = -1.875, .adr = { .drv = 1, .cs = 7, .swr = 11, .swg = 10, .swb = 12 }, .scan = 70 }, \
|
||||
{ .id = 49, .x = 12.375, .y = -1.875, .adr = { .drv = 1, .cs = 8, .swr = 11, .swg = 10, .swb = 12 }, .scan = 71 }, \
|
||||
{ .id = 50, .x = 13.125, .y = -1.875, .adr = { .drv = 1, .cs = 9, .swr = 11, .swg = 10, .swb = 12 }, .scan = 78 }, \
|
||||
{ .id = 51, .x = 0.281, .y = -2.625, .adr = { .drv = 2, .cs = 1, .swr = 5, .swg = 4, .swb = 6 }, .scan = 24 }, \
|
||||
{ .id = 52, .x = 1.313, .y = -2.625, .adr = { .drv = 2, .cs = 2, .swr = 5, .swg = 4, .swb = 6 }, .scan = 25 }, \
|
||||
{ .id = 53, .x = 2.063, .y = -2.625, .adr = { .drv = 2, .cs = 13, .swr = 11, .swg = 10, .swb = 12 }, .scan = 26 }, \
|
||||
{ .id = 54, .x = 2.812, .y = -2.625, .adr = { .drv = 2, .cs = 12, .swr = 11, .swg = 10, .swb = 12 }, .scan = 27 }, \
|
||||
{ .id = 55, .x = 3.562, .y = -2.625, .adr = { .drv = 2, .cs = 11, .swr = 11, .swg = 10, .swb = 12 }, .scan = 28 }, \
|
||||
{ .id = 56, .x = 4.312, .y = -2.625, .adr = { .drv = 2, .cs = 6, .swr = 5, .swg = 4, .swb = 6 }, .scan = 29 }, \
|
||||
{ .id = 57, .x = 5.062, .y = -2.625, .adr = { .drv = 2, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .scan = 30 }, \
|
||||
{ .id = 58, .x = 5.812, .y = -2.625, .adr = { .drv = 2, .cs = 9, .swr = 11, .swg = 10, .swb = 12 }, .scan = 31 }, \
|
||||
{ .id = 59, .x = 6.562, .y = -2.625, .adr = { .drv = 1, .cs = 16, .swr = 11, .swg = 10, .swb = 12 }, .scan = 72 }, \
|
||||
{ .id = 60, .x = 7.312, .y = -2.625, .adr = { .drv = 1, .cs = 15, .swr = 11, .swg = 10, .swb = 12 }, .scan = 73 }, \
|
||||
{ .id = 61, .x = 8.062, .y = -2.625, .adr = { .drv = 1, .cs = 14, .swr = 11, .swg = 10, .swb = 12 }, .scan = 74 }, \
|
||||
{ .id = 62, .x = 8.812, .y = -2.625, .adr = { .drv = 1, .cs = 13, .swr = 11, .swg = 10, .swb = 12 }, .scan = 75 }, \
|
||||
{ .id = 63, .x = 10.031, .y = -2.625, .adr = { .drv = 1, .cs = 12, .swr = 11, .swg = 10, .swb = 12 }, .scan = 76 }, \
|
||||
{ .id = 64, .x = 0.469, .y = -3.375, .adr = { .drv = 2, .cs = 14, .swr = 5, .swg = 4, .swb = 6 }, .scan = 32 }, \
|
||||
{ .id = 65, .x = 1.688, .y = -3.375, .adr = { .drv = 2, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 33 }, \
|
||||
{ .id = 66, .x = 2.438, .y = -3.375, .adr = { .drv = 2, .cs = 12, .swr = 8, .swg = 7, .swb = 9 }, .scan = 34 }, \
|
||||
{ .id = 67, .x = 3.188, .y = -3.375, .adr = { .drv = 2, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 35 }, \
|
||||
{ .id = 68, .x = 3.938, .y = -3.375, .adr = { .drv = 2, .cs = 11, .swr = 5, .swg = 4, .swb = 6 }, .scan = 36 }, \
|
||||
{ .id = 69, .x = 4.688, .y = -3.375, .adr = { .drv = 2, .cs = 10, .swr = 5, .swg = 4, .swb = 6 }, .scan = 37 }, \
|
||||
{ .id = 70, .x = 5.438, .y = -3.375, .adr = { .drv = 2, .cs = 9, .swr = 5, .swg = 4, .swb = 6 }, .scan = 38 }, \
|
||||
{ .id = 71, .x = 6.188, .y = -3.375, .adr = { .drv = 2, .cs = 9, .swr = 8, .swg = 7, .swb = 9 }, .scan = 39 }, \
|
||||
{ .id = 72, .x = 6.938, .y = -3.375, .adr = { .drv = 1, .cs = 16, .swr = 8, .swg = 7, .swb = 9 }, .scan = 80 }, \
|
||||
{ .id = 73, .x = 7.688, .y = -3.375, .adr = { .drv = 1, .cs = 15, .swr = 8, .swg = 7, .swb = 9 }, .scan = 81 }, \
|
||||
{ .id = 74, .x = 8.438, .y = -3.375, .adr = { .drv = 1, .cs = 14, .swr = 8, .swg = 7, .swb = 9 }, .scan = 82 }, \
|
||||
{ .id = 75, .x = 9.844, .y = -3.375, .adr = { .drv = 1, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 83 }, \
|
||||
{ .id = 76, .x = 12.375, .y = -3.375, .adr = { .drv = 1, .cs = 11, .swr = 8, .swg = 7, .swb = 9 }, .scan = 77 }, \
|
||||
{ .id = 77, .x = 0.094, .y = -4.125, .adr = { .drv = 2, .cs = 14, .swr = 11, .swg = 10, .swb = 12 }, .scan = 40 }, \
|
||||
{ .id = 78, .x = 1.031, .y = -4.125, .adr = { .drv = 2, .cs = 14, .swr = 8, .swg = 7, .swb = 9 }, .scan = 41 }, \
|
||||
{ .id = 79, .x = 1.969, .y = -4.125, .adr = { .drv = 2, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 42 }, \
|
||||
{ .id = 80, .x = 4.781, .y = -4.125, .adr = { .drv = 2, .cs = 10, .swr = 8, .swg = 7, .swb = 9 }, .scan = 43 }, \
|
||||
{ .id = 81, .x = 7.594, .y = -4.125, .adr = { .drv = 1, .cs = 16, .swr = 5, .swg = 4, .swb = 6 }, .scan = 44 }, \
|
||||
{ .id = 82, .x = 8.531, .y = -4.125, .adr = { .drv = 1, .cs = 15, .swr = 5, .swg = 4, .swb = 6 }, .scan = 45 }, \
|
||||
{ .id = 83, .x = 9.469, .y = -4.125, .adr = { .drv = 1, .cs = 14, .swr = 5, .swg = 4, .swb = 6 }, .scan = 46 }, \
|
||||
{ .id = 84, .x = 10.406, .y = -4.125, .adr = { .drv = 1, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 47 }, \
|
||||
{ .id = 85, .x = 11.625, .y = -4.125, .adr = { .drv = 1, .cs = 12, .swr = 8, .swg = 7, .swb = 9 }, .scan = 84 }, \
|
||||
{ .id = 86, .x = 12.375, .y = -4.125, .adr = { .drv = 1, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 85 }, \
|
||||
{ .id = 87, .x = 13.125, .y = -4.125, .adr = { .drv = 1, .cs = 11, .swr = 5, .swg = 4, .swb = 6 }, .scan = 86 }, \
|
||||
{ .id = 88, .x = 13.433, .y = -4.43, .adr = { .drv = 1, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 89, .x = 12.285, .y = -4.535, .adr = { .drv = 1, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 90, .x = 11.14, .y = -4.535, .adr = { .drv = 1, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 91, .x = 9.995, .y = -4.535, .adr = { .drv = 1, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 92, .x = 8.85, .y = -4.535, .adr = { .drv = 1, .cs = 15, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 93, .x = 7.705, .y = -4.535, .adr = { .drv = 1, .cs = 16, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 94, .x = 6.56, .y = -4.535, .adr = { .drv = 2, .cs = 9, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 95, .x = 5.415, .y = -4.535, .adr = { .drv = 2, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 96, .x = 4.27, .y = -4.535, .adr = { .drv = 2, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 97, .x = 3.125, .y = -4.535, .adr = { .drv = 2, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 98, .x = 1.98, .y = -4.535, .adr = { .drv = 2, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 99, .x = 0.835, .y = -4.535, .adr = { .drv = 2, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 100, .x = -0.307, .y = -4.43, .adr = { .drv = 2, .cs = 15, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 101, .x = -0.41, .y = -3.245, .adr = { .drv = 2, .cs = 15, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||
{ .id = 102, .x = -0.41, .y = -2.06, .adr = { .drv = 2, .cs = 15, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||
{ .id = 103, .x = -0.41, .y = -0.875, .adr = { .drv = 2, .cs = 15, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||
{ .id = 104, .x = -0.308, .y = 0.31, .adr = { .drv = 2, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 105, .x = 0.835, .y = 0.415, .adr = { .drv = 2, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 106, .x = 1.98, .y = 0.415, .adr = { .drv = 2, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 107, .x = 3.125, .y = 0.415, .adr = { .drv = 2, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 108, .x = 4.27, .y = 0.415, .adr = { .drv = 2, .cs = 7, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 109, .x = 5.415, .y = 0.415, .adr = { .drv = 2, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 110, .x = 6.56, .y = 0.415, .adr = { .drv = 1, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 111, .x = 7.705, .y = 0.415, .adr = { .drv = 1, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 112, .x = 8.85, .y = 0.415, .adr = { .drv = 1, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 113, .x = 9.995, .y = 0.415, .adr = { .drv = 1, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 114, .x = 11.14, .y = 0.415, .adr = { .drv = 1, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 115, .x = 12.285, .y = 0.415, .adr = { .drv = 1, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 116, .x = 13.432, .y = 0.31, .adr = { .drv = 1, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||
{ .id = 117, .x = 13.535, .y = -0.875, .adr = { .drv = 1, .cs = 10, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||
{ .id = 118, .x = 13.535, .y = -2.06, .adr = { .drv = 1, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||
{ .id = 119, .x = 13.535, .y = -3.245, .adr = { .drv = 1, .cs = 10, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||
};
|
||||
|
||||
#define USB_LED_INDICATOR_ENABLE //Comment out to disable indicator functionality
|
||||
#ifdef USB_LED_INDICATOR_ENABLE //Scan codes refer to actual key matrix codes, not KC_* (255 to disable)
|
||||
#define USB_LED_NUM_LOCK_SCANCODE 255
|
||||
#define USB_LED_CAPS_LOCK_SCANCODE 24
|
||||
#define USB_LED_SCROLL_LOCK_SCANCODE 54
|
||||
#define USB_LED_COMPOSE_SCANCODE 255
|
||||
#define USB_LED_KANA_SCANCODE 255
|
||||
#endif //USB_LED_INDICATOR_ENABLE
|
||||
@@ -1,42 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
#include "config_led.h"
|
||||
#include "matrix.h"
|
||||
|
||||
#include "i2c_master.h"
|
||||
#include "led_matrix.h" //For led keycodes
|
||||
#include "usb/udi_cdc.h"
|
||||
#include "usb/usb2422.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \
|
||||
K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, \
|
||||
K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, \
|
||||
K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, \
|
||||
K61, K62, K63, K64, K65, K66, K67, K68, K69, K70, K71, K72, K73, K74, K75, \
|
||||
K76, K77, K78, K79, K80, K81, K82, K83, K84, K85, K86, K87 \
|
||||
\
|
||||
) { \
|
||||
{ K01, K02, K03, K04, K05, K06, K07, K08 }, \
|
||||
{ K17, K18, K19, K20, K21, K22, K23, K24 }, \
|
||||
{ K34, K35, K36, K37, K38, K39, K40, K41 }, \
|
||||
{ K51, K52, K53, K54, K55, K56, K57, K58 }, \
|
||||
{ K64, K65, K66, K67, K68, K69, K70, K71 }, \
|
||||
{ K77, K78, K79, K80, K81, K82, K83, K84 }, \
|
||||
{ K09, K10, K11, K12, K13, K14, K15, K16 }, \
|
||||
{ K25, K26, K27, K28, K29, K30, K31, K32 }, \
|
||||
{ K42, K43, K44, K45, K46, K47, K48, K49 }, \
|
||||
{ K59, K60, K61, K62, K63, K76, K50, K33 }, \
|
||||
{ K72, K73, K74, K75, K85, K86, K87, }, \
|
||||
}
|
||||
|
||||
#define TOGGLE_FLAG_AND_PRINT(var, name) { \
|
||||
if (var) { \
|
||||
dprintf(name " disabled\r\n"); \
|
||||
var = !var; \
|
||||
} else { \
|
||||
var = !var; \
|
||||
dprintf(name " enabled\r\n"); \
|
||||
} \
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "CTRL",
|
||||
"url": "https://www.massdrop.com/buy/massdrop-ctrl-mechanical-keyboard",
|
||||
"maintainer": "Massdrop",
|
||||
"width": 18.5,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"ESCAPE", "x":0, "y":0},
|
||||
{"label":"F1", "x":2, "y":0},
|
||||
{"label":"F2", "x":3, "y":0},
|
||||
{"label":"F3", "x":4, "y":0},
|
||||
{"label":"F4", "x":5, "y":0},
|
||||
{"label":"F5", "x":6.5, "y":0},
|
||||
{"label":"F6", "x":7.5, "y":0},
|
||||
{"label":"F7", "x":8.5, "y":0},
|
||||
{"label":"F8", "x":9.5, "y":0},
|
||||
{"label":"F9", "x":11, "y":0},
|
||||
{"label":"F10", "x":12, "y":0},
|
||||
{"label":"F11", "x":13, "y":0},
|
||||
{"label":"F12", "x":14, "y":0},
|
||||
{"label":"PRINT SCREEN", "x":15.5, "y":0},
|
||||
{"label":"SCROLL LOCK", "x":16.5, "y":0},
|
||||
{"label":"PAUSE BREAK", "x":17.5, "y":0},
|
||||
{"label":"BACKTICK", "x":0, "y":1.5},
|
||||
{"label":"1", "x":1, "y":1.5},
|
||||
{"label":"2", "x":2, "y":1.5},
|
||||
{"label":"3", "x":3, "y":1.5},
|
||||
{"label":"4", "x":4, "y":1.5},
|
||||
{"label":"5", "x":5, "y":1.5},
|
||||
{"label":"6", "x":6, "y":1.5},
|
||||
{"label":"7", "x":7, "y":1.5},
|
||||
{"label":"8", "x":8, "y":1.5},
|
||||
{"label":"9", "x":9, "y":1.5},
|
||||
{"label":"0", "x":10, "y":1.5},
|
||||
{"label":"MINUS", "x":11, "y":1.5},
|
||||
{"label":"EQUALS", "x":12, "y":1.5},
|
||||
{"label":"BACKSPACE", "x":13, "y":1.5, "w":2},
|
||||
{"label":"INSERT", "x":15.5, "y":1.5},
|
||||
{"label":"HOME", "x":16.5, "y":1.5},
|
||||
{"label":"PAGE UP", "x":17.5, "y":1.5},
|
||||
{"label":"TAB", "x":0, "y":2.5, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":2.5},
|
||||
{"label":"W", "x":2.5, "y":2.5},
|
||||
{"label":"E", "x":3.5, "y":2.5},
|
||||
{"label":"R", "x":4.5, "y":2.5},
|
||||
{"label":"T", "x":5.5, "y":2.5},
|
||||
{"label":"Y", "x":6.5, "y":2.5},
|
||||
{"label":"U", "x":7.5, "y":2.5},
|
||||
{"label":"I", "x":8.5, "y":2.5},
|
||||
{"label":"O", "x":9.5, "y":2.5},
|
||||
{"label":"P", "x":10.5, "y":2.5},
|
||||
{"label":"LEFT BRACKET", "x":11.5, "y":2.5},
|
||||
{"label":"RIGHT BRACKET", "x":12.5, "y":2.5},
|
||||
{"label":"BACK SLASH", "x":13.5, "y":2.5, "w":1.5},
|
||||
{"label":"DELETE", "x":15.5, "y":2.5},
|
||||
{"label":"END", "x":16.5, "y":2.5},
|
||||
{"label":"PAGE DOWN", "x":17.5, "y":2.5},
|
||||
{"label":"CAPS LOCK", "x":0, "y":3.5, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":3.5},
|
||||
{"label":"S", "x":2.75, "y":3.5},
|
||||
{"label":"D", "x":3.75, "y":3.5},
|
||||
{"label":"F", "x":4.75, "y":3.5},
|
||||
{"label":"G", "x":5.75, "y":3.5},
|
||||
{"label":"H", "x":6.75, "y":3.5},
|
||||
{"label":"J", "x":7.75, "y":3.5},
|
||||
{"label":"K", "x":8.75, "y":3.5},
|
||||
{"label":"L", "x":9.75, "y":3.5},
|
||||
{"label":"SEMICOLON", "x":10.75, "y":3.5},
|
||||
{"label":"SINGLE TICK", "x":11.75, "y":3.5},
|
||||
{"label":"ENTER", "x":12.75, "y":3.5, "w":2.25},
|
||||
{"label":"LEFT SHIFT", "x":0, "y":4.5, "w":2.25},
|
||||
{"label":"Z", "x":2.25, "y":4.5},
|
||||
{"label":"X", "x":3.25, "y":4.5},
|
||||
{"label":"C", "x":4.25, "y":4.5},
|
||||
{"label":"V", "x":5.25, "y":4.5},
|
||||
{"label":"B", "x":6.25, "y":4.5},
|
||||
{"label":"N", "x":7.25, "y":4.5},
|
||||
{"label":"M", "x":8.25, "y":4.5},
|
||||
{"label":"COMMA", "x":9.25, "y":4.5},
|
||||
{"label":"PERIOD", "x":10.25, "y":4.5},
|
||||
{"label":"FORWARD SLASH", "x":11.25, "y":4.5},
|
||||
{"label":"RIGHT SHIFT", "x":12.25, "y":4.5, "w":2.75},
|
||||
{"label":"UP ARROW", "x":16.5, "y":4.5},
|
||||
{"label":"LEFT CTRL", "x":0.005, "y":5.5, "w":1.24},
|
||||
{"label":"LEFT WIN", "x":1.255, "y":5.5, "w":1.24},
|
||||
{"label":"LEFT ALT", "x":2.505, "y":5.5, "w":1.24},
|
||||
{"label":"SPACEBAR", "x":3.75, "y":5.5, "w":6.25},
|
||||
{"label":"RIGHT ALT", "x":10, "y":5.5, "w":1.25},
|
||||
{"label":"FN", "x":11.25, "y":5.5, "w":1.25},
|
||||
{"label":"MENU", "x":12.5, "y":5.5, "w":1.25},
|
||||
{"label":"RIGHT CTRL", "x":13.75, "y":5.5, "w":1.25},
|
||||
{"label":"LEFT ARROW", "x":15.5, "y":5.5},
|
||||
{"label":"DOWN ARROW", "x":16.5, "y":5.5},
|
||||
{"label":"RIGHT ARROW", "x":17.5, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum ctrl_keycodes {
|
||||
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||
DBG_TOG, //DEBUG Toggle On / Off
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint32_t key_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||
}
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_KEYLIGHT: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_UNDERGLOW: {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_enable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum ctrl_keycodes {
|
||||
L_BRI = SAFE_RANGE, //LED Brightness Increase //Working
|
||||
L_BRD, //LED Brightness Decrease //Working
|
||||
L_PTN, //LED Pattern Select Next //Working
|
||||
L_PTP, //LED Pattern Select Previous //Working
|
||||
L_PSI, //LED Pattern Speed Increase //Working
|
||||
L_PSD, //LED Pattern Speed Decrease //Working
|
||||
L_T_MD, //LED Toggle Mode //Working
|
||||
L_T_ONF, //LED Toggle On / Off //Broken
|
||||
L_ON, //LED On //Broken
|
||||
L_OFF, //LED Off //Broken
|
||||
L_T_BR, //LED Toggle Breath Effect //Working
|
||||
L_T_PTD, //LED Toggle Scrolling Pattern Direction //Working
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control //Working
|
||||
DBG_TOG, //DEBUG Toggle On / Off //
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints //
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints //
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints //
|
||||
MD_BOOT //Restart into bootloader after hold timeout //Working
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint32_t key_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case L_BRI:
|
||||
if (record->event.pressed) {
|
||||
if (LED_GCR_STEP > LED_GCR_MAX - gcr_desired) gcr_desired = LED_GCR_MAX;
|
||||
else gcr_desired += LED_GCR_STEP;
|
||||
if (led_animation_breathing) gcr_breathe = gcr_desired;
|
||||
}
|
||||
return false;
|
||||
case L_BRD:
|
||||
if (record->event.pressed) {
|
||||
if (LED_GCR_STEP > gcr_desired) gcr_desired = 0;
|
||||
else gcr_desired -= LED_GCR_STEP;
|
||||
if (led_animation_breathing) gcr_breathe = gcr_desired;
|
||||
}
|
||||
return false;
|
||||
case L_PTN:
|
||||
if (record->event.pressed) {
|
||||
if (led_animation_id == led_setups_count - 1) led_animation_id = 0;
|
||||
else led_animation_id++;
|
||||
}
|
||||
return false;
|
||||
case L_PTP:
|
||||
if (record->event.pressed) {
|
||||
if (led_animation_id == 0) led_animation_id = led_setups_count - 1;
|
||||
else led_animation_id--;
|
||||
}
|
||||
return false;
|
||||
case L_PSI:
|
||||
if (record->event.pressed) {
|
||||
led_animation_speed += ANIMATION_SPEED_STEP;
|
||||
}
|
||||
return false;
|
||||
case L_PSD:
|
||||
if (record->event.pressed) {
|
||||
led_animation_speed -= ANIMATION_SPEED_STEP;
|
||||
if (led_animation_speed < 0) led_animation_speed = 0;
|
||||
}
|
||||
return false;
|
||||
case L_T_MD:
|
||||
if (record->event.pressed) {
|
||||
led_lighting_mode++;
|
||||
if (led_lighting_mode > LED_MODE_MAX_INDEX) led_lighting_mode = LED_MODE_NORMAL;
|
||||
}
|
||||
return false;
|
||||
case L_T_ONF:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = !led_enabled;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_ON:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = 1;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_OFF:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = 0;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_T_BR:
|
||||
if (record->event.pressed) {
|
||||
led_animation_breathing = !led_animation_breathing;
|
||||
if (led_animation_breathing) {
|
||||
gcr_breathe = gcr_desired;
|
||||
led_animation_breathe_cur = BREATHE_MIN_STEP;
|
||||
breathe_dir = 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case L_T_PTD:
|
||||
if (record->event.pressed) {
|
||||
led_animation_direction = !led_animation_direction;
|
||||
}
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
|
||||
led_instruction_t led_instructions[] = {
|
||||
//LEDs are normally inactive, no processing is performed on them
|
||||
//Flags are used in matching criteria for an LED to be active and indicate how to color it
|
||||
//Flags can be found in tmk_core/protocol/arm_atsam/led_matrix.h (prefixed with LED_FLAG_)
|
||||
//LED IDs can be found in config_led.h in the keyboard's directory
|
||||
//Examples are below
|
||||
|
||||
//All LEDs use the user's selected pattern (this is the factory default)
|
||||
{ .flags = LED_FLAG_USE_ROTATE_PATTERN },
|
||||
|
||||
//Specific LEDs use the user's selected pattern while all others are off
|
||||
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_ROTATE_PATTERN, .id0 = 0xFFFFFFFF, .id1 = 0xAAAAAAAA, .id2 = 0x55555555, .id3 = 0x11111111 },
|
||||
|
||||
//Specific LEDs use specified RGB values while all others are off
|
||||
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_RGB, .id0 = 0xFF, .id1 = 0x00FF, .id2 = 0x0000FF00, .id3 = 0xFF000000, .r = 75, .g = 150, .b = 225 },
|
||||
|
||||
//All LEDs use the user's selected pattern
|
||||
//On layer 1, all key LEDs (except the top row which keeps active pattern) are red while all edge LEDs are green
|
||||
//When layer 1 is active, key LEDs use red (id0 32 - 17: 1111 1111 1111 1111 0000 0000 0000 0000 = 0xFFFF0000) (except top row 16 - 1)
|
||||
//When layer 1 is active, key LEDs use red (id1 64 - 33: 1111 1111 1111 1111 1111 1111 1111 1111 = 0xFFFFFFFF)
|
||||
//When layer 1 is active, key LEDs use red (id2 87 - 65: 0000 0000 0111 1111 1111 1111 1111 1111 = 0x007FFFFF)
|
||||
//When layer 1 is active, edge LEDs use green (id2 95 - 88: 1111 1111 1000 0000 0000 0000 0000 0000 = 0xFF800000)
|
||||
//When layer 1 is active, edge LEDs use green (id3 119 - 96: 0000 0000 1111 1111 1111 1111 1111 1111 = 0x00FFFFFF)
|
||||
// { .flags = LED_FLAG_USE_ROTATE_PATTERN },
|
||||
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id0 = 0xFFFF0000, .id1 = 0xFFFFFFFF, .id2 = 0x007FFFFF, .r = 255, .layer = 1 },
|
||||
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id2 = 0xFF800000, .id3 = 0x00FFFFFF, .g = 127, .layer = 1 },
|
||||
|
||||
//All key LEDs use red while edge LEDs use the active pattern
|
||||
//All key LEDs use red (id0 32 - 1: 1111 1111 1111 1111 1111 1111 1111 1111 = 0xFFFFFFFF)
|
||||
//All key LEDs use red (id1 64 - 33: 1111 1111 1111 1111 1111 1111 1111 1111 = 0xFFFFFFFF)
|
||||
//All key LEDs use red (id2 87 - 65: 0000 0000 0111 1111 1111 1111 1111 1111 = 0x007FFFFF)
|
||||
//Edge uses active pattern (id2 95 - 88: 1111 1111 1000 0000 0000 0000 0000 0000 = 0xFF800000)
|
||||
//Edge uses active pattern (id3 119 - 96: 0000 0000 1111 1111 1111 1111 1111 1111 = 0x00FFFFFF)
|
||||
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_RGB, .id0 = 0xFFFFFFFF, .id1 = 0xFFFFFFFF, .id2 = 0x007FFFFF, .r = 255 },
|
||||
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_ROTATE_PATTERN , .id2 = 0xFF800000, .id3 = 0x00FFFFFF },
|
||||
|
||||
//end must be set to 1 to indicate end of instruction set
|
||||
{ .end = 1 }
|
||||
};
|
||||
@@ -1,2 +0,0 @@
|
||||
# This keymap requires Massdrop Configurator support
|
||||
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
||||
@@ -1,130 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum ctrl_keycodes {
|
||||
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||
DBG_TOG, //DEBUG Toggle On / Off
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint32_t key_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||
}
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_KEYLIGHT: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_UNDERGLOW: {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_enable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
@@ -1,196 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum ctrl_keycodes {
|
||||
L_BRI = SAFE_RANGE, //LED Brightness Increase //Working
|
||||
L_BRD, //LED Brightness Decrease //Working
|
||||
L_PTN, //LED Pattern Select Next //Working
|
||||
L_PTP, //LED Pattern Select Previous //Working
|
||||
L_PSI, //LED Pattern Speed Increase //Working
|
||||
L_PSD, //LED Pattern Speed Decrease //Working
|
||||
L_T_MD, //LED Toggle Mode //Working
|
||||
L_T_ONF, //LED Toggle On / Off //Broken
|
||||
L_ON, //LED On //Broken
|
||||
L_OFF, //LED Off //Broken
|
||||
L_T_BR, //LED Toggle Breath Effect //Working
|
||||
L_T_PTD, //LED Toggle Scrolling Pattern Direction //Working
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control //Working
|
||||
DBG_TOG, //DEBUG Toggle On / Off //
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints //
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints //
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints //
|
||||
MD_BOOT //Restart into bootloader after hold timeout //Working
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint32_t key_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case L_BRI:
|
||||
if (record->event.pressed) {
|
||||
if (LED_GCR_STEP > LED_GCR_MAX - gcr_desired) gcr_desired = LED_GCR_MAX;
|
||||
else gcr_desired += LED_GCR_STEP;
|
||||
if (led_animation_breathing) gcr_breathe = gcr_desired;
|
||||
}
|
||||
return false;
|
||||
case L_BRD:
|
||||
if (record->event.pressed) {
|
||||
if (LED_GCR_STEP > gcr_desired) gcr_desired = 0;
|
||||
else gcr_desired -= LED_GCR_STEP;
|
||||
if (led_animation_breathing) gcr_breathe = gcr_desired;
|
||||
}
|
||||
return false;
|
||||
case L_PTN:
|
||||
if (record->event.pressed) {
|
||||
if (led_animation_id == led_setups_count - 1) led_animation_id = 0;
|
||||
else led_animation_id++;
|
||||
}
|
||||
return false;
|
||||
case L_PTP:
|
||||
if (record->event.pressed) {
|
||||
if (led_animation_id == 0) led_animation_id = led_setups_count - 1;
|
||||
else led_animation_id--;
|
||||
}
|
||||
return false;
|
||||
case L_PSI:
|
||||
if (record->event.pressed) {
|
||||
led_animation_speed += ANIMATION_SPEED_STEP;
|
||||
}
|
||||
return false;
|
||||
case L_PSD:
|
||||
if (record->event.pressed) {
|
||||
led_animation_speed -= ANIMATION_SPEED_STEP;
|
||||
if (led_animation_speed < 0) led_animation_speed = 0;
|
||||
}
|
||||
return false;
|
||||
case L_T_MD:
|
||||
if (record->event.pressed) {
|
||||
led_lighting_mode++;
|
||||
if (led_lighting_mode > LED_MODE_MAX_INDEX) led_lighting_mode = LED_MODE_NORMAL;
|
||||
}
|
||||
return false;
|
||||
case L_T_ONF:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = !led_enabled;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_ON:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = 1;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_OFF:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = 0;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_T_BR:
|
||||
if (record->event.pressed) {
|
||||
led_animation_breathing = !led_animation_breathing;
|
||||
if (led_animation_breathing) {
|
||||
gcr_breathe = gcr_desired;
|
||||
led_animation_breathe_cur = BREATHE_MIN_STEP;
|
||||
breathe_dir = 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case L_T_PTD:
|
||||
if (record->event.pressed) {
|
||||
led_animation_direction = !led_animation_direction;
|
||||
}
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
|
||||
led_instruction_t led_instructions[] = {
|
||||
//Please see ../default_md/keymap.c for examples
|
||||
|
||||
//All LEDs use the user's selected pattern (this is the factory default)
|
||||
{ .flags = LED_FLAG_USE_ROTATE_PATTERN },
|
||||
|
||||
//end must be set to 1 to indicate end of instruction set
|
||||
{ .end = 1 }
|
||||
};
|
||||
@@ -1,2 +0,0 @@
|
||||
# This keymap requires Massdrop Configurator support
|
||||
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
||||
@@ -1,65 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define FORCE_NKRO
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 150
|
||||
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_COLOR
|
||||
// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
// #define DISABLE_RGB_MATRIX_BREATHING
|
||||
#define DISABLE_RGB_MATRIX_BAND_SAT
|
||||
// #define DISABLE_RGB_MATRIX_BAND_VAL
|
||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_ALL
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
#define DISABLE_RGB_MATRIX_DUAL_BEACON
|
||||
#define DISABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
#define DISABLE_RGB_MATRIX_RAINDROPS
|
||||
#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
// #define DISABLE_RGB_MATRIX_SPLASH
|
||||
// #define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
|
||||
#define QMK_KEYS_PER_SCAN 4
|
||||
|
||||
// #define RGB_MATRIX_KEYRELEASES
|
||||
|
||||
// some speed shit
|
||||
#define NO_ACTION_MACRO
|
||||
#define NO_ACTION_FUNCTION
|
||||
|
||||
#ifndef NO_DEBUG
|
||||
#define NO_DEBUG
|
||||
#endif // !NO_DEBUG
|
||||
#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
|
||||
#define NO_PRINT
|
||||
#endif // !NO_PRINT
|
||||
|
||||
#define NO_ACTION_ONESHOT
|
||||
#define TAPPING_FORCE_HOLD
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
@@ -1,82 +0,0 @@
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#include "ctrl.h"
|
||||
|
||||
#include "led_matrix.h"
|
||||
#include "rgb_matrix.h"
|
||||
#include "config_led.h"
|
||||
|
||||
led_config_t g_led_config = { {
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 16, 17, 18, 19, 20, 21, 22, 23 },
|
||||
{ 33, 34, 35, 36, 37, 38, 39, 40 },
|
||||
{ 50, 51, 52, 53, 54, 55, 56, 57 },
|
||||
{ 63, 64, 65, 66, 67, 68, 69, 70 },
|
||||
{ 76, 77, 78, 79, 80, 81, 82, 83 },
|
||||
{ 8, 9, 10, 11, 12, 13, 14, 15 },
|
||||
{ 24, 25, 26, 27, 28, 29, 30, 31 },
|
||||
{ 41, 42, 43, 44, 45, 46, 47, 48 },
|
||||
{ 58, 59, 60, 61, 62, 75, 49, 32 },
|
||||
{ 71, 72, 73, 74, 84, 85, 86, NO_LED }
|
||||
}, {
|
||||
// KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS
|
||||
{ 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 },
|
||||
{ 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 },
|
||||
// KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP
|
||||
{ 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 },
|
||||
{ 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 },
|
||||
{ 217, 20 },
|
||||
// KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN
|
||||
{ 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 },
|
||||
{ 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 172, 30 }, { 193, 30 }, { 205, 30 },
|
||||
{ 217, 30 },
|
||||
// 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
|
||||
{ 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 },
|
||||
{ 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
|
||||
// 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
|
||||
{ 14, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 },
|
||||
{ 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 },
|
||||
// KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
{ 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 },
|
||||
{ 193, 59 }, { 205, 59 }, { 217, 59 },
|
||||
// Underglow / Border
|
||||
{ 224, 64 }, { 204, 64 }, { 186, 64 }, { 167, 64 }, { 149, 64 }, { 130, 64 }, { 112, 64 }, { 94, 64 },
|
||||
{ 75, 64 }, { 57, 64 }, { 38, 64 }, { 20, 64 }, { 0, 64 }, { 0, 47 }, { 0, 32 }, { 0, 17 },
|
||||
{ 0, 0 }, { 20, 0 }, { 38, 0 }, { 57, 0 }, { 75, 0 }, { 94, 0 }, { 112, 0 }, { 130, 0 },
|
||||
{ 149, 0 }, { 167, 0 }, { 186, 0 }, { 204, 0 }, { 224, 0 }, { 224, 17 }, { 224, 32 }, { 224, 47 }
|
||||
}, {
|
||||
// KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS
|
||||
1, 4, 4, 4, 4, 1, 1, 1,
|
||||
1, 4, 4, 4, 4, 1, 1, 1,
|
||||
// KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP
|
||||
4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 1, 1, 1,
|
||||
1,
|
||||
// KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN
|
||||
1, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 1, 1,
|
||||
1,
|
||||
// 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
|
||||
1, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 1,
|
||||
// KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP
|
||||
1, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 1, 1,
|
||||
// KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
1, 1, 1, 4, 1, 1, 1, 1,
|
||||
1, 1, 1,
|
||||
// Underglow / Border
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2
|
||||
} };
|
||||
|
||||
|
||||
#ifdef USB_LED_INDICATOR_ENABLE
|
||||
void rgb_matrix_indicators_kb(void)
|
||||
{
|
||||
led_matrix_indicators();
|
||||
}
|
||||
#endif // USB_LED_INDICATOR_ENABLE
|
||||
|
||||
#endif
|
||||
@@ -1,396 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum ctrl_layers {
|
||||
_QWERTY,
|
||||
_NAV,
|
||||
_FNC
|
||||
};
|
||||
|
||||
enum ctrl_keycodes {
|
||||
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||
DBG_TOG, //DEBUG Toggle On / Off
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
MAS_TOG,
|
||||
MAS_CRM,
|
||||
MAS_PRP,
|
||||
MAS_RED,
|
||||
MAS_GRN,
|
||||
MAS_BLU,
|
||||
MAS_CYN,
|
||||
MAS_MGT,
|
||||
MAS_YEL,
|
||||
MAS_KEY,
|
||||
MAS_WHT,
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
#define LT_CAPS LT(_NAV, KC_CAPS)
|
||||
#define _V_V_V_ KC_TRNS
|
||||
extern bool autoshift_enabled;
|
||||
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
LT_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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FNC), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[_NAV] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, \
|
||||
_______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, KC_P4, KC_P5, KC_P6, KC_PSLS, _______, _______, KC_EQL, _______, _______, _______, \
|
||||
_V_V_V_, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PPLS, _______, \
|
||||
_______, _______, _______, _______, _______, _______, KC_P0, KC_P0, KC_P0, KC_PDOT, KC_PSLS, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[_FNC] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MSEL, KC_ASTG, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPLY, KC_VOLU, \
|
||||
_______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, MAS_MGT, MAS_BLU, MAS_WHT, RGB_RMOD, RGB_MOD, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
_______, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, MAS_RED, MAS_KEY, MAS_CYN, MAS_PRP, _______, _______, \
|
||||
MAS_TOG, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, MAS_YEL, MAS_GRN, MAS_CRM, _______, _______, RGB_VAI, \
|
||||
_______, _______, _______, _______, _______, _V_V_V_, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[X] = LAYOUT(
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, \
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, \
|
||||
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, \
|
||||
50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, \
|
||||
63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, \
|
||||
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
void rgb_matrix_indicators_user(void)
|
||||
{
|
||||
uint8_t this_led = host_keyboard_leds();
|
||||
|
||||
if (!g_suspend_state && rgb_matrix_config.enable) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _NAV:
|
||||
if (this_led & (1 << USB_LED_NUM_LOCK)) {
|
||||
rgb_matrix_set_color(41, 0xFF, 0x00, 0x00);
|
||||
} else {
|
||||
rgb_matrix_set_color(41, 0x00, 0x00, 0x00);
|
||||
}
|
||||
|
||||
// layer indicator
|
||||
rgb_matrix_set_color(50, 0xFF, 0xFF, 0xFF);
|
||||
rgb_matrix_set_color(101, 0xFF, 0xFF, 0xFF);
|
||||
// ESDF
|
||||
rgb_matrix_set_color(36, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(52, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(53, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(54, 0xFF, 0x00, 0x00);
|
||||
// home/end
|
||||
rgb_matrix_set_color(35, 0x00, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(37, 0x00, 0xFF, 0x00);
|
||||
// pgup/dn
|
||||
rgb_matrix_set_color(34, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(51, 0x00, 0x00, 0xFF);
|
||||
// numpad
|
||||
rgb_matrix_set_color(23, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(24, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(25, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(40, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(42, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(57, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(58, 0xFF, 0xFF, 0x00);
|
||||
rgb_matrix_set_color(59, 0xFF, 0xFF, 0x00);
|
||||
// zero
|
||||
rgb_matrix_set_color(69, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(70, 0xFF, 0x00, 0x00);
|
||||
rgb_matrix_set_color(71, 0xFF, 0x00, 0x00);
|
||||
// dot
|
||||
rgb_matrix_set_color(72, 0x00, 0x00, 0xFF);
|
||||
// math shit
|
||||
rgb_matrix_set_color(26, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(27, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(28, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(43, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(46, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(60, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(61, 0x00, 0x00, 0xFF);
|
||||
rgb_matrix_set_color(73, 0x00, 0x00, 0xFF);
|
||||
break;
|
||||
|
||||
case _FNC: {
|
||||
HSV hsv = { rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val };
|
||||
HSV hui = hsv;
|
||||
HSV hud = hsv;
|
||||
HSV sai = hsv;
|
||||
HSV sad = hsv;
|
||||
HSV vai = hsv;
|
||||
HSV vad = hsv;
|
||||
hui.h = hsv.h + 8;
|
||||
hud.h = hsv.h - 8;
|
||||
sai.s = hsv.s + 16 > 255 ? 255u : hsv.s + 16;
|
||||
sad.s = hsv.s - 16 < 0 ? 0 : hsv.s - 16;
|
||||
vai.v = hsv.v + 16 > 255 ? 255 : hsv.v + 16;
|
||||
vad.v = hsv.v - 16 < 0 ? 0 : hsv.v - 16;
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgbHUI = hsv_to_rgb(hui);
|
||||
RGB rgbHUD = hsv_to_rgb(hud);
|
||||
RGB rgbSAI = hsv_to_rgb(sai);
|
||||
RGB rgbSAD = hsv_to_rgb(sad);
|
||||
RGB rgbVAI = hsv_to_rgb(vai);
|
||||
RGB rgbVAD = hsv_to_rgb(vad);
|
||||
rgb_matrix_set_color(81, 0xFF, 0xFF, 0xFF); // layer indicator
|
||||
rgb_matrix_set_color(91, 0xFF, 0xFF, 0xFF);
|
||||
rgb_matrix_set_color(93, 0x00, 0x00, 0x00);
|
||||
rgb_matrix_set_color(94, rgb.r, rgb.g, rgb.b);
|
||||
rgb_matrix_set_color(95, rgb.r, rgb.g, rgb.b);
|
||||
rgb_matrix_set_color(96, 0x00, 0x00, 0x00);
|
||||
rgb_matrix_set_color(68, 0xFF, 0x00, 0x00); // MD_BOOT
|
||||
rgb_matrix_set_color(69, 0xFF, 0x00, 0x40); // TG_NKRO
|
||||
rgb_matrix_set_color(32, 0x00, 0x80, 0xFF); // KC_VOLU
|
||||
rgb_matrix_set_color(49, 0x00, 0x80, 0xFF);
|
||||
rgb_matrix_set_color(13, 0xFF, 0x00, 0x00); // KC_MUTE
|
||||
rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // KC_MSTP
|
||||
rgb_matrix_set_color(47, 0xFF, 0x40, 0x00); // KC_MPRV
|
||||
rgb_matrix_set_color(48, 0xFF, 0x40, 0x00);
|
||||
rgb_matrix_set_color(14, 0x00, 0xFF, 0x00); // KC_MSEL
|
||||
rgb_matrix_set_color(31, 0x00, 0xFF, 0x00); // KC_MPLY
|
||||
|
||||
if (this_led & (1 << !autoshift_enabled)) {
|
||||
rgb_matrix_set_color(15, 0xFF, 0x00, 0x00); // KC_ASTG
|
||||
} else {
|
||||
rgb_matrix_set_color(15, 0xFF, 0xFF, 0x00);
|
||||
}
|
||||
|
||||
rgb_matrix_set_color(44, 0xFF, 0x80, 0x00); //RGB_MOD
|
||||
rgb_matrix_set_color(45, 0xFF, 0x80, 0x00);
|
||||
rgb_matrix_set_color(34, 0xFF, 0x80, 0x00); //RGB_MOD
|
||||
rgb_matrix_set_color(51, 0xFF, 0x80, 0x00);
|
||||
rgb_matrix_set_color(63, 0xFF, 0x40, 0x00); //RGB_TOG
|
||||
rgb_matrix_set_color(64, rgb.r, rgb.g, rgb.b); //MAS_TOG
|
||||
rgb_matrix_set_color(36, rgbHUI.r, rgbHUI.g, rgbHUI.b); //RGB_HUI
|
||||
rgb_matrix_set_color(53, rgbHUD.r, rgbHUD.g, rgbHUD.b);
|
||||
rgb_matrix_set_color(37, rgbSAI.r, rgbSAI.g, rgbSAI.b); //RGB_SAI
|
||||
rgb_matrix_set_color(54, rgbSAD.r, rgbSAD.g, rgbSAD.b);
|
||||
rgb_matrix_set_color(38, rgbVAI.r, rgbVAI.g, rgbVAI.b); //RGB_VAI
|
||||
rgb_matrix_set_color(55, rgbVAD.r, rgbVAD.g, rgbVAD.b);
|
||||
rgb_matrix_set_color(79, rgb.r, rgb.g, rgb.b); // config display
|
||||
rgb_matrix_set_color(75, rgbVAI.r, rgbVAI.g, rgbVAI.b); //RGB_VAI
|
||||
rgb_matrix_set_color(85, rgbVAD.r, rgbVAD.g, rgbVAD.b);
|
||||
rgb_matrix_set_color(35, 0x80, 0x80, 0x80); //RGB_SPI
|
||||
rgb_matrix_set_color(52, 0x80, 0x80, 0x80);
|
||||
rgb_matrix_set_color(84, 0x80, 0x80, 0x80); //RGB_SPI
|
||||
rgb_matrix_set_color(86, 0x80, 0x80, 0x80);
|
||||
rgb_matrix_set_color(41, 0xF0, 0x00, 0xFF); //MAS_MGT
|
||||
rgb_matrix_set_color(42, 0x00, 0x02, 0xFF); //MAS_BLU
|
||||
rgb_matrix_set_color(57, 0xFF, 0x00, 0x00); //MAS_RED
|
||||
rgb_matrix_set_color(58, 0x00, 0x00, 0x00); //MAS_KEY
|
||||
rgb_matrix_set_color(59, 0x00, 0xFF, 0xF7); //MAS_CYN
|
||||
rgb_matrix_set_color(70, 0xFF, 0xDA, 0x00); //MAS_YEL
|
||||
rgb_matrix_set_color(71, 0x00, 0xFF, 0x01); //MAS_GRN
|
||||
rgb_matrix_set_color(72, 0xFF, 0xA5, 0x18); //MAS_CRM
|
||||
rgb_matrix_set_color(60, 0x81, 0x3C, 0xFF); //MAS_PRP
|
||||
rgb_matrix_set_color(26, 0xFF, 0xFF, 0xFF); //MAS_WHT
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void)
|
||||
{
|
||||
autoshift_disable();
|
||||
rgb_matrix_sethsv(128, 255, 255);
|
||||
// rgb_matrix_sethsv(192, 112, 255);
|
||||
// rgb_matrix_mode(4);
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void)
|
||||
{
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t* record)
|
||||
{
|
||||
static uint32_t key_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_TOG:
|
||||
if (record->event.pressed) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case LED_FLAG_KEYLIGHT: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case LED_FLAG_UNDERGLOW: {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_CRM:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(32, 160, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_PRP:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(192, 112, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_RED:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(0, 255, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_GRN:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(88, 255, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_BLU:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(168, 255, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_CYN:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(128, 255, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_MGT:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(216, 255, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_YEL:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(40, 255, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_KEY:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(0, 0, 0);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
case MAS_WHT:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_sethsv(128, 0, 255);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
default:
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
AUTO_SHIFT_ENABLE = yes # Auto Shift
|
||||
SRC += config_led.c
|
||||
@@ -1,5 +0,0 @@
|
||||
# THIS KEYMAP IS BROKEN
|
||||
|
||||
The CTRL and ALT have both been switched to using the QMK RGB Matrix system,
|
||||
rendering any custom effects that used the old, custom Massdrop lighting system,
|
||||
BROKEN.
|
||||
@@ -1,936 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// uint8_t keyboard_leds(void)
|
||||
#include <tmk_core/protocol/arm_atsam/main_arm_atsam.h>
|
||||
|
||||
|
||||
#if ISSI3733_LED_COUNT == 119
|
||||
# define KEY_LED_COUNT 87
|
||||
#elif ISSI3733_LED_COUNT == 105
|
||||
# define KEY_LED_COUNT 67
|
||||
#endif
|
||||
|
||||
#define min(x, y) (x < y ? x : y)
|
||||
|
||||
|
||||
extern issi3733_led_t *lede;
|
||||
extern issi3733_led_t led_map[];
|
||||
|
||||
enum ctrl_keycodes {
|
||||
L_BRI = SAFE_RANGE, //LED Brightness Increase
|
||||
L_BRD, //LED Brightness Decrease
|
||||
L_PTN, //LED Pattern Select Next
|
||||
L_PTP, //LED Pattern Select Previous
|
||||
L_PSI, //LED Pattern Speed Increase
|
||||
L_PSD, //LED Pattern Speed Decrease
|
||||
L_T_MD, //LED Toggle Mode
|
||||
L_T_ONF, //LED Toggle On / Off
|
||||
L_ON, //LED On
|
||||
L_OFF, //LED Off
|
||||
L_T_BR, //LED Toggle Breath Effect
|
||||
L_T_PTD, //LED Toggle Scrolling Pattern Direction
|
||||
U_T_AUTO, //USB Extra Port Toggle Auto Detect / Always Active
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||
DBG_TOG, //DEBUG Toggle On / Off
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
|
||||
L_SP_PR, //LED Splash Pattern Select Previous
|
||||
L_SP_NE, //LED Splash Pattern Select Next
|
||||
|
||||
L_SP_WD, //LED Splash Widen Wavefront width
|
||||
L_SP_NW, //LED Splash Narrow Wavefront width
|
||||
|
||||
L_SP_FA, //LED Splash wave travel speed faster (shorter period)
|
||||
L_SP_SL, //LED Splash wave travel speed slower (longer period)
|
||||
|
||||
L_CP_PR, //LED Color Pattern Select Previous
|
||||
L_CP_NX, //LEB Color Pattern Select Next
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
#define ______ KC_TRNS
|
||||
|
||||
keymap_config_t keymap_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, U_T_AUTO,U_T_AGCR,_______, MO(2), _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
L_CP_NX, L_SP_SL, L_SP_WD, L_SP_FA, _______, _______, L_CP_NX, L_SP_SL, L_SP_WD, L_SP_FA, _______, _______, _______, _______, _______, _______, _______, \
|
||||
L_CP_PR, L_SP_PR, L_SP_NW, L_SP_NE, _______, _______, L_CP_PR, L_SP_PR, L_SP_NW, L_SP_NE, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
// see: /tmk_core/common/keycode.h
|
||||
uint8_t KEYCODE_TO_LED_ID[256];
|
||||
uint8_t DISTANCE_MAP[KEY_LED_COUNT+1][KEY_LED_COUNT+1];
|
||||
struct user_led_t {
|
||||
uint8_t state;
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
} USER_LED[KEY_LED_COUNT] = {
|
||||
|
||||
};
|
||||
|
||||
struct {
|
||||
uint8_t PATTERN_INDEX;
|
||||
uint8_t WAVE_FRONT_WIDTH;
|
||||
uint16_t WAVE_PERIOD;
|
||||
uint8_t COLOR_PATTERN_INDEX;
|
||||
uint8_t TRAVEL_DISTANCE;
|
||||
} USER_CONFIG = {
|
||||
.PATTERN_INDEX = 1,
|
||||
.WAVE_FRONT_WIDTH = 3,
|
||||
.WAVE_PERIOD = 50,
|
||||
.COLOR_PATTERN_INDEX = 0,
|
||||
.TRAVEL_DISTANCE = 25,
|
||||
};
|
||||
|
||||
uint8_t ktli(uint16_t keycode){
|
||||
if(keycode < 256){
|
||||
// the array is initialized in `matrix_init_user()`
|
||||
return KEYCODE_TO_LED_ID[keycode];
|
||||
}
|
||||
switch(keycode){
|
||||
// definition of MO(layer): quantum/quantum_keycodes.h: line 614
|
||||
case MO(1): return 82;
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
static void init_keycode_to_led_map(void){
|
||||
uint16_t LED_MAP[MATRIX_ROWS][MATRIX_COLS] = LAYOUT(
|
||||
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
|
||||
20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,
|
||||
36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,
|
||||
52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,
|
||||
#if KEY_LED_COUNT >= 87
|
||||
68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87
|
||||
#endif
|
||||
);
|
||||
|
||||
uint16_t key = 0;
|
||||
for(uint8_t y = 0; y < MATRIX_ROWS; ++y){
|
||||
for(uint8_t x = 0; x < MATRIX_COLS; ++x){
|
||||
key = keymaps[0][y][x];
|
||||
if(key < 256){
|
||||
KEYCODE_TO_LED_ID[key] = LED_MAP[y][x];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// https://docs.qmk.fm/#/feature_terminal
|
||||
#define KEY_POSITION_MAP_ROWS 6
|
||||
#define KEY_POSITION_MAP_COLUMNS 20
|
||||
static void init_distance_map(void){
|
||||
uint16_t KEY_POSITION_MAP[KEY_POSITION_MAP_ROWS][KEY_POSITION_MAP_COLUMNS] = {
|
||||
{ KC_NO, KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, },
|
||||
// { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, },
|
||||
{ KC_NO, 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_BSPC, KC_NO, KC_INS, KC_HOME, KC_PGUP, },
|
||||
{ KC_NO, 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_BSLS, KC_NO, KC_DEL, KC_END, KC_PGDN, },
|
||||
{ KC_NO, 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_ENT, KC_ENT, KC_NO, KC_NO, KC_NO, KC_NO, },
|
||||
{ KC_NO, 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_RSFT, KC_RSFT, KC_RSFT, KC_NO, KC_NO, KC_UP, KC_NO, },
|
||||
{ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_NO, MO(1), KC_APP, KC_RCTL, KC_RCTL, KC_RCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, },
|
||||
};
|
||||
uint8_t columns = KEY_POSITION_MAP_COLUMNS;
|
||||
uint8_t rows = KEY_POSITION_MAP_ROWS;
|
||||
|
||||
for(uint8_t y = 0; y < rows; ++y){
|
||||
for(uint8_t x = 0; x < columns; ++x){
|
||||
uint8_t id1 = ktli(KEY_POSITION_MAP[y][x]);
|
||||
|
||||
for(uint8_t j = y; j < rows; ++j){
|
||||
for(uint8_t i = 0; i < columns; ++i){
|
||||
uint8_t id2 = ktli(KEY_POSITION_MAP[j][i]);
|
||||
|
||||
if(id1 == id2) continue;
|
||||
|
||||
uint8_t dx = abs(i - x);
|
||||
uint8_t dy = abs(j - y);
|
||||
uint8_t dis = dx + dy;
|
||||
if(i < x && j > y){
|
||||
dis -= min(dx, dy);
|
||||
}
|
||||
|
||||
uint8_t _dis = DISTANCE_MAP[id1][id2];
|
||||
if(_dis && _dis <= dis) continue;
|
||||
DISTANCE_MAP[id1][id2] = dis;
|
||||
DISTANCE_MAP[id2][id1] = dis;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void matrix_init_user(void) {
|
||||
init_keycode_to_led_map();
|
||||
init_distance_map();
|
||||
};
|
||||
|
||||
// /tmk_core/protocol/arm_atsam/led_matrix.c: line 244
|
||||
uint8_t led_enabled;
|
||||
float led_animation_speed;
|
||||
uint8_t led_animation_direction;
|
||||
uint8_t led_animation_orientation;
|
||||
uint8_t led_animation_breathing;
|
||||
uint8_t led_animation_breathe_cur;
|
||||
uint8_t breathe_step;
|
||||
uint8_t breathe_dir;
|
||||
uint64_t led_next_run;
|
||||
|
||||
uint8_t led_animation_id;
|
||||
uint8_t led_lighting_mode;
|
||||
|
||||
issi3733_led_t *led_cur;
|
||||
uint8_t led_per_run;
|
||||
float breathe_mult;
|
||||
|
||||
// overrided /tmk_core/protocol/arm_atsam/led_matrix.c: line 484
|
||||
void rgb_matrix_init_user(void){
|
||||
led_animation_speed = ANIMATION_SPEED_STEP * 15;
|
||||
led_per_run = 15;
|
||||
}
|
||||
|
||||
// overrided /tmk_core/protocol/arm_atsam/led_matrix.c: line 262
|
||||
void led_matrix_run(void)
|
||||
{
|
||||
float ro;
|
||||
float go;
|
||||
float bo;
|
||||
float po;
|
||||
uint8_t led_this_run = 0;
|
||||
led_setup_t *f = (led_setup_t*)led_setups[led_animation_id];
|
||||
|
||||
if (led_cur == 0) //Denotes start of new processing cycle in the case of chunked processing
|
||||
{
|
||||
led_cur = led_map;
|
||||
|
||||
breathe_mult = 1;
|
||||
|
||||
if (led_animation_breathing)
|
||||
{
|
||||
led_animation_breathe_cur += breathe_step * breathe_dir;
|
||||
|
||||
if (led_animation_breathe_cur >= BREATHE_MAX_STEP)
|
||||
breathe_dir = -1;
|
||||
else if (led_animation_breathe_cur <= BREATHE_MIN_STEP)
|
||||
breathe_dir = 1;
|
||||
|
||||
//Brightness curve created for 256 steps, 0 - ~98%
|
||||
breathe_mult = 0.000015 * led_animation_breathe_cur * led_animation_breathe_cur;
|
||||
if (breathe_mult > 1) breathe_mult = 1;
|
||||
else if (breathe_mult < 0) breathe_mult = 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t fcur = 0;
|
||||
uint8_t fmax = 0;
|
||||
|
||||
//Frames setup
|
||||
while (f[fcur].end != 1)
|
||||
{
|
||||
fcur++; //Count frames
|
||||
}
|
||||
|
||||
fmax = fcur; //Store total frames count
|
||||
|
||||
struct user_led_t user_led_cur;
|
||||
while (led_cur < lede && led_this_run < led_per_run)
|
||||
{
|
||||
ro = 0;
|
||||
go = 0;
|
||||
bo = 0;
|
||||
|
||||
uint8_t led_index = led_cur - led_map; // only this part differs from the original function.
|
||||
if(led_index < KEY_LED_COUNT){ //
|
||||
user_led_cur = USER_LED[led_index]; // `struct user_led_t USER_LED[]` is stored globally.
|
||||
} //
|
||||
//
|
||||
if(led_index < KEY_LED_COUNT && user_led_cur.state){ // `user_led_cur` is just for convenience
|
||||
ro = user_led_cur.r; //
|
||||
go = user_led_cur.g; //
|
||||
bo = user_led_cur.b; //
|
||||
} //
|
||||
else if (led_lighting_mode == LED_MODE_KEYS_ONLY && led_cur->scan == 255)
|
||||
{
|
||||
//Do not act on this LED
|
||||
}
|
||||
else if (led_lighting_mode == LED_MODE_NON_KEYS_ONLY && led_cur->scan != 255)
|
||||
{
|
||||
//Do not act on this LED
|
||||
}
|
||||
else if (led_lighting_mode == LED_MODE_INDICATORS_ONLY)
|
||||
{
|
||||
//Do not act on this LED (Only show indicators)
|
||||
}
|
||||
else
|
||||
{
|
||||
//Act on LED
|
||||
for (fcur = 0; fcur < fmax; fcur++)
|
||||
{
|
||||
|
||||
if (led_animation_orientation)
|
||||
{
|
||||
po = led_cur->py;
|
||||
}
|
||||
else
|
||||
{
|
||||
po = led_cur->px;
|
||||
}
|
||||
|
||||
float pomod;
|
||||
pomod = (float)(g_tick % (uint32_t)(1000.0f / led_animation_speed)) / 10.0f * led_animation_speed;
|
||||
|
||||
//Add in any moving effects
|
||||
if ((!led_animation_direction && f[fcur].ef & EF_SCR_R) || (led_animation_direction && (f[fcur].ef & EF_SCR_L)))
|
||||
{
|
||||
pomod *= 100.0f;
|
||||
pomod = (uint32_t)pomod % 10000;
|
||||
pomod /= 100.0f;
|
||||
|
||||
po -= pomod;
|
||||
|
||||
if (po > 100) po -= 100;
|
||||
else if (po < 0) po += 100;
|
||||
}
|
||||
else if ((!led_animation_direction && f[fcur].ef & EF_SCR_L) || (led_animation_direction && (f[fcur].ef & EF_SCR_R)))
|
||||
{
|
||||
pomod *= 100.0f;
|
||||
pomod = (uint32_t)pomod % 10000;
|
||||
pomod /= 100.0f;
|
||||
po += pomod;
|
||||
|
||||
if (po > 100) po -= 100;
|
||||
else if (po < 0) po += 100;
|
||||
}
|
||||
|
||||
//Check if LED's po is in current frame
|
||||
if (po < f[fcur].hs) continue;
|
||||
if (po > f[fcur].he) continue;
|
||||
//note: < 0 or > 100 continue
|
||||
|
||||
//Calculate the po within the start-stop percentage for color blending
|
||||
po = (po - f[fcur].hs) / (f[fcur].he - f[fcur].hs);
|
||||
|
||||
//Add in any color effects
|
||||
if (f[fcur].ef & EF_OVER)
|
||||
{
|
||||
ro = (po * (f[fcur].re - f[fcur].rs)) + f[fcur].rs;// + 0.5;
|
||||
go = (po * (f[fcur].ge - f[fcur].gs)) + f[fcur].gs;// + 0.5;
|
||||
bo = (po * (f[fcur].be - f[fcur].bs)) + f[fcur].bs;// + 0.5;
|
||||
}
|
||||
else if (f[fcur].ef & EF_SUBTRACT)
|
||||
{
|
||||
ro -= (po * (f[fcur].re - f[fcur].rs)) + f[fcur].rs;// + 0.5;
|
||||
go -= (po * (f[fcur].ge - f[fcur].gs)) + f[fcur].gs;// + 0.5;
|
||||
bo -= (po * (f[fcur].be - f[fcur].bs)) + f[fcur].bs;// + 0.5;
|
||||
}
|
||||
else
|
||||
{
|
||||
ro += (po * (f[fcur].re - f[fcur].rs)) + f[fcur].rs;// + 0.5;
|
||||
go += (po * (f[fcur].ge - f[fcur].gs)) + f[fcur].gs;// + 0.5;
|
||||
bo += (po * (f[fcur].be - f[fcur].bs)) + f[fcur].bs;// + 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Clamp values 0-255
|
||||
if (ro > 255) ro = 255; else if (ro < 0) ro = 0;
|
||||
if (go > 255) go = 255; else if (go < 0) go = 0;
|
||||
if (bo > 255) bo = 255; else if (bo < 0) bo = 0;
|
||||
|
||||
if (led_animation_breathing)
|
||||
{
|
||||
ro *= breathe_mult;
|
||||
go *= breathe_mult;
|
||||
bo *= breathe_mult;
|
||||
}
|
||||
|
||||
*led_cur->rgb.r = (uint8_t)ro;
|
||||
*led_cur->rgb.g = (uint8_t)go;
|
||||
*led_cur->rgb.b = (uint8_t)bo;
|
||||
|
||||
#ifdef USB_LED_INDICATOR_ENABLE
|
||||
if (keyboard_leds())
|
||||
{
|
||||
uint8_t kbled = keyboard_leds();
|
||||
if (
|
||||
#if USB_LED_NUM_LOCK_SCANCODE != 255
|
||||
(led_cur->scan == USB_LED_NUM_LOCK_SCANCODE && kbled & (1<<USB_LED_NUM_LOCK)) ||
|
||||
#endif //NUM LOCK
|
||||
#if USB_LED_CAPS_LOCK_SCANCODE != 255
|
||||
(led_cur->scan == USB_LED_CAPS_LOCK_SCANCODE && kbled & (1<<USB_LED_CAPS_LOCK)) ||
|
||||
#endif //CAPS LOCK
|
||||
#if USB_LED_SCROLL_LOCK_SCANCODE != 255
|
||||
(led_cur->scan == USB_LED_SCROLL_LOCK_SCANCODE && kbled & (1<<USB_LED_SCROLL_LOCK)) ||
|
||||
#endif //SCROLL LOCK
|
||||
#if USB_LED_COMPOSE_SCANCODE != 255
|
||||
(led_cur->scan == USB_LED_COMPOSE_SCANCODE && kbled & (1<<USB_LED_COMPOSE)) ||
|
||||
#endif //COMPOSE
|
||||
#if USB_LED_KANA_SCANCODE != 255
|
||||
(led_cur->scan == USB_LED_KANA_SCANCODE && kbled & (1<<USB_LED_KANA)) ||
|
||||
#endif //KANA
|
||||
(0))
|
||||
{
|
||||
if (*led_cur->rgb.r > 127) *led_cur->rgb.r = 0;
|
||||
else *led_cur->rgb.r = 255;
|
||||
if (*led_cur->rgb.g > 127) *led_cur->rgb.g = 0;
|
||||
else *led_cur->rgb.g = 255;
|
||||
if (*led_cur->rgb.b > 127) *led_cur->rgb.b = 0;
|
||||
else *led_cur->rgb.b = 255;
|
||||
}
|
||||
}
|
||||
#endif //USB_LED_INDICATOR_ENABLE
|
||||
|
||||
led_cur++;
|
||||
led_this_run++;
|
||||
}
|
||||
}
|
||||
|
||||
#define KEY_STROKES_LENGTH 20
|
||||
struct {
|
||||
bool alive;
|
||||
uint8_t led_id;
|
||||
uint32_t time;
|
||||
} KEY_STROKES[KEY_STROKES_LENGTH] = {{}};
|
||||
|
||||
|
||||
|
||||
|
||||
void set_led_rgb(uint8_t led_id, uint8_t r, uint8_t g, uint8_t b){
|
||||
issi3733_led_t *target_led = (led_map + led_id);
|
||||
*target_led->rgb.r = r;
|
||||
*target_led->rgb.g = g;
|
||||
*target_led->rgb.b = b;
|
||||
}
|
||||
|
||||
|
||||
uint8_t DISTANCE_FROM_LAST_KEYSTROKE[KEY_LED_COUNT+1];
|
||||
void calculate_keystroke_distance(void){
|
||||
bool alive;
|
||||
uint8_t led_id, period_passed;
|
||||
uint32_t t;
|
||||
|
||||
|
||||
for(uint8_t i = 0; i <= KEY_LED_COUNT; ++i){
|
||||
DISTANCE_FROM_LAST_KEYSTROKE[i] = 0;
|
||||
}
|
||||
|
||||
for(uint8_t i = 0; i < KEY_STROKES_LENGTH; ++i){
|
||||
if(KEY_STROKES[i].alive){
|
||||
t = timer_elapsed32(KEY_STROKES[i].time);
|
||||
alive = 0;
|
||||
led_id = KEY_STROKES[i].led_id;
|
||||
period_passed = t / USER_CONFIG.WAVE_PERIOD;
|
||||
|
||||
uint8_t delta_period;
|
||||
for(uint8_t j = 1; j <= KEY_LED_COUNT; ++j){
|
||||
delta_period = period_passed - DISTANCE_MAP[led_id][j];
|
||||
if(( delta_period < USER_CONFIG.WAVE_FRONT_WIDTH) && (
|
||||
DISTANCE_MAP[led_id][j] <= USER_CONFIG.TRAVEL_DISTANCE
|
||||
)){
|
||||
switch(USER_CONFIG.PATTERN_INDEX){
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
DISTANCE_FROM_LAST_KEYSTROKE[j] += delta_period;
|
||||
break;
|
||||
default:
|
||||
DISTANCE_FROM_LAST_KEYSTROKE[j] = 1;
|
||||
break;
|
||||
}
|
||||
alive = 1;
|
||||
}
|
||||
}
|
||||
KEY_STROKES[i].alive = alive;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define COLOR_PATTERN_RGB_COUNT 18
|
||||
static uint8_t COLOR_PATTERNS[][COLOR_PATTERN_RGB_COUNT][3] = {
|
||||
{ // default rainbow color
|
||||
{255, 0, 0}, {255, 0, 0}, {255, 127, 0},
|
||||
{255, 127, 0}, {255, 255, 0}, {255, 255, 0},
|
||||
{120, 255, 0}, {120, 255, 0}, { 0, 255, 0},
|
||||
{ 0, 255, 0}, { 0, 255, 120}, { 0, 255, 120},
|
||||
{ 0, 0, 255}, { 0, 0, 255}, { 75, 0, 130},
|
||||
{ 75, 0, 130}, { 43, 0, 130}, { 43, 0, 130},
|
||||
}, { // light rainbow color
|
||||
{248, 12, 18}, {238, 17, 0}, {255, 51, 17},
|
||||
{255, 68, 32}, {255, 102, 68}, {255, 153, 51},
|
||||
{254, 174, 45}, {204, 187, 51}, {208, 195, 16},
|
||||
{170, 204, 34}, {105, 208, 37}, { 34, 204, 170},
|
||||
{ 18, 189, 185}, { 17, 170, 187}, { 68, 68, 221},
|
||||
{ 51, 17, 187}, { 59, 12, 189}, { 68, 34, 153},
|
||||
}, { // white flat
|
||||
{255, 255, 255}, {255, 255, 255}, {255, 255, 255},
|
||||
{255, 255, 255}, {255, 255, 255}, {255, 255, 255},
|
||||
{255, 255, 255}, {255, 255, 255}, {255, 255, 255},
|
||||
{255, 255, 255}, {255, 255, 255}, {255, 255, 255},
|
||||
{255, 255, 255}, {255, 255, 255}, {255, 255, 255},
|
||||
{255, 255, 255}, {255, 255, 255}, {255, 255, 255},
|
||||
}, { // white fade, cos curve
|
||||
{255, 255, 255}, {255, 255, 255}, {252, 252, 252},
|
||||
{247, 247, 247}, {240, 240, 240}, {232, 232, 232},
|
||||
{221, 221, 221}, {209, 209, 209}, {196, 196, 196},
|
||||
{181, 181, 181}, {164, 164, 164}, {147, 147, 147},
|
||||
{128, 128, 128}, {108, 108, 108}, { 88, 88, 88},
|
||||
{ 66, 66, 66}, { 45, 45, 45}, { 23, 23, 23},
|
||||
},
|
||||
};
|
||||
static const uint8_t COLOR_PATTERNS_COUNT = (
|
||||
sizeof(COLOR_PATTERNS) / sizeof(COLOR_PATTERNS[0]));
|
||||
|
||||
void set_user_led_rgb(uint8_t i, uint8_t r, uint8_t g, uint8_t b){
|
||||
USER_LED[i-1].state = 1;
|
||||
USER_LED[i-1].r = r;
|
||||
USER_LED[i-1].g = g;
|
||||
USER_LED[i-1].b = b;
|
||||
}
|
||||
void unset_user_led_rgb(uint8_t i){
|
||||
USER_LED[i-1].state = 0;
|
||||
}
|
||||
void set_indicator_led_rgb(uint8_t i,
|
||||
uint8_t layer, uint8_t r, uint8_t g, uint8_t b){
|
||||
USER_LED[i-1].state |= 1 << layer;
|
||||
USER_LED[i-1].r = r;
|
||||
USER_LED[i-1].g = g;
|
||||
USER_LED[i-1].b = b;
|
||||
}
|
||||
void unset_indicator_led_rgb(uint8_t i, uint8_t layer){
|
||||
USER_LED[i-1].state &= ~(1 << layer);
|
||||
}
|
||||
|
||||
void refresh_pattern_indicators(void){
|
||||
static uint8_t GRV_123456[] = {
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
|
||||
};
|
||||
|
||||
if(layer_state >= 0x04){
|
||||
for(uint8_t i = 0; i < 7; ++i){
|
||||
if(i == USER_CONFIG.PATTERN_INDEX){
|
||||
set_indicator_led_rgb(ktli(GRV_123456[i]), 2, 0, 0, 255);
|
||||
} else{
|
||||
set_indicator_led_rgb(ktli(GRV_123456[i]), 2, 0, 255, 0);
|
||||
}
|
||||
}
|
||||
} else{
|
||||
for(uint8_t i = 0; i < 7; ++i){
|
||||
unset_indicator_led_rgb(ktli(GRV_123456[i]), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
void refresh_color_pattern_indicators(void){
|
||||
static uint8_t ZXCVBNM_COMM_DOT[] = {
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,
|
||||
};
|
||||
|
||||
if(layer_state >= 0x04){
|
||||
uint8_t (*c)[3] = &COLOR_PATTERNS[USER_CONFIG.COLOR_PATTERN_INDEX][0];
|
||||
for(uint8_t i = 0; i < 9; ++i){
|
||||
set_indicator_led_rgb(ktli(ZXCVBNM_COMM_DOT[i]),
|
||||
2, c[i][0], c[i][1], c[i][2]);
|
||||
}
|
||||
} else{
|
||||
for(uint8_t i = 0; i < 9; ++i){
|
||||
unset_indicator_led_rgb(ktli(ZXCVBNM_COMM_DOT[i]), 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
static uint32_t scan_timer = 0;
|
||||
static uint8_t last_layer = 0;
|
||||
|
||||
uint8_t layer = 0;
|
||||
if(layer_state >= 0x04){
|
||||
layer = 2;
|
||||
} else if(layer_state >= 0x02){
|
||||
layer = 1;
|
||||
}
|
||||
|
||||
calculate_keystroke_distance();
|
||||
|
||||
|
||||
#define USE_PATTERN 0
|
||||
#define BLACK_RGB 1
|
||||
#define COLOR_RGB 2
|
||||
uint8_t ci; // color index
|
||||
uint8_t *rgb;
|
||||
uint8_t handle_type;
|
||||
uint8_t distance;
|
||||
for(uint8_t i = 1; i <= KEY_LED_COUNT; ++i){
|
||||
if(USER_LED[i-1].state >= 2) continue;
|
||||
|
||||
handle_type = USE_PATTERN;
|
||||
distance = DISTANCE_FROM_LAST_KEYSTROKE[i];
|
||||
|
||||
switch(USER_CONFIG.PATTERN_INDEX){
|
||||
case 0: handle_type = USE_PATTERN; break;
|
||||
case 1: handle_type = distance ? USE_PATTERN : BLACK_RGB; break;
|
||||
case 2: handle_type = distance ? BLACK_RGB : USE_PATTERN; break;
|
||||
case 3: handle_type = distance ? COLOR_RGB : BLACK_RGB; break;
|
||||
case 4: handle_type = distance ? COLOR_RGB : USE_PATTERN; break;
|
||||
case 5:
|
||||
case 6: handle_type = distance ? COLOR_RGB : USE_PATTERN; break;
|
||||
}
|
||||
switch(handle_type){
|
||||
case USE_PATTERN: unset_user_led_rgb(i); break;
|
||||
case BLACK_RGB: set_user_led_rgb(i, 0, 0, 0); break;
|
||||
case COLOR_RGB:
|
||||
ci = (DISTANCE_FROM_LAST_KEYSTROKE[i] * COLOR_PATTERN_RGB_COUNT /
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH) % COLOR_PATTERN_RGB_COUNT;
|
||||
rgb = &COLOR_PATTERNS[USER_CONFIG.COLOR_PATTERN_INDEX][ci][0];
|
||||
|
||||
set_user_led_rgb(i, rgb[0], rgb[1], rgb[2]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// could be moved to process_record_user()
|
||||
if(layer != last_layer){
|
||||
|
||||
static uint8_t QWEASDP[] = {
|
||||
KC_Q, KC_W, KC_E, KC_A, KC_S, KC_D, KC_P,
|
||||
};
|
||||
static uint8_t YUIOHJKL[] = {
|
||||
KC_Y, KC_U, KC_I, KC_O, KC_H, KC_J, KC_K, KC_L,
|
||||
};
|
||||
|
||||
switch(last_layer){
|
||||
case 1:
|
||||
for(uint8_t i = 0; i < 7; ++i){
|
||||
unset_indicator_led_rgb(ktli(QWEASDP[i]), 1);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(uint8_t i = 0; i < 6; ++i){
|
||||
unset_indicator_led_rgb(ktli(QWEASDP[i]), 2);
|
||||
}
|
||||
for(uint8_t i = 0; i < 8; ++i){
|
||||
unset_indicator_led_rgb(ktli(YUIOHJKL[i]), 2);
|
||||
}
|
||||
unset_indicator_led_rgb(ktli(KC_TAB), 2);
|
||||
unset_indicator_led_rgb(ktli(KC_CAPS), 2);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
switch(layer){
|
||||
case 1:
|
||||
for(uint8_t i = 0; i < 7; ++i){
|
||||
set_indicator_led_rgb(ktli(QWEASDP[i]), 1, 255, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(uint8_t i = 0; i < 6; ++i){
|
||||
set_indicator_led_rgb(ktli(QWEASDP[i]), 2, 0, 255, 0);
|
||||
}
|
||||
for(uint8_t i = 0; i < 8; ++i){
|
||||
set_indicator_led_rgb(ktli(YUIOHJKL[i]), 2, 0, 255, 0);
|
||||
}
|
||||
set_indicator_led_rgb(ktli(KC_TAB), 2, 0, 255, 0);
|
||||
set_indicator_led_rgb(ktli(KC_CAPS), 2, 0, 255, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
refresh_pattern_indicators();
|
||||
refresh_color_pattern_indicators();
|
||||
last_layer = layer;
|
||||
}
|
||||
|
||||
|
||||
switch(layer){
|
||||
case 0:
|
||||
if(timer_elapsed32(scan_timer) > 2000){
|
||||
scan_timer = timer_read32();
|
||||
} else if(timer_elapsed32(scan_timer) > 1000){
|
||||
// set_user_led_rgb(ktli(KC_F5), 255, 255, 255);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
static uint32_t key_timer;
|
||||
|
||||
|
||||
switch (keycode) {
|
||||
case L_BRI:
|
||||
if (record->event.pressed) {
|
||||
if (LED_GCR_STEP > LED_GCR_MAX - gcr_desired) gcr_desired = LED_GCR_MAX;
|
||||
else gcr_desired += LED_GCR_STEP;
|
||||
if (led_animation_breathing) gcr_breathe = gcr_desired;
|
||||
}
|
||||
return false;
|
||||
case L_BRD:
|
||||
if (record->event.pressed) {
|
||||
if (LED_GCR_STEP > gcr_desired) gcr_desired = 0;
|
||||
else gcr_desired -= LED_GCR_STEP;
|
||||
if (led_animation_breathing) gcr_breathe = gcr_desired;
|
||||
}
|
||||
return false;
|
||||
case L_PTN:
|
||||
if (record->event.pressed) {
|
||||
if (led_animation_id == led_setups_count - 1) led_animation_id = 0;
|
||||
else led_animation_id++;
|
||||
}
|
||||
return false;
|
||||
case L_PTP:
|
||||
if (record->event.pressed) {
|
||||
if (led_animation_id == 0) led_animation_id = led_setups_count - 1;
|
||||
else led_animation_id--;
|
||||
}
|
||||
return false;
|
||||
case L_PSI:
|
||||
if (record->event.pressed) {
|
||||
led_animation_speed += ANIMATION_SPEED_STEP;
|
||||
}
|
||||
return false;
|
||||
case L_PSD:
|
||||
if (record->event.pressed) {
|
||||
led_animation_speed -= ANIMATION_SPEED_STEP;
|
||||
if (led_animation_speed < 0) led_animation_speed = 0;
|
||||
}
|
||||
return false;
|
||||
case L_T_MD:
|
||||
if (record->event.pressed) {
|
||||
led_lighting_mode++;
|
||||
if (led_lighting_mode > LED_MODE_MAX_INDEX) led_lighting_mode = LED_MODE_NORMAL;
|
||||
}
|
||||
return false;
|
||||
case L_T_ONF:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = !led_enabled;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_ON:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = 1;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_OFF:
|
||||
if (record->event.pressed) {
|
||||
led_enabled = 0;
|
||||
I2C3733_Control_Set(led_enabled);
|
||||
}
|
||||
return false;
|
||||
case L_T_BR:
|
||||
if (record->event.pressed) {
|
||||
led_animation_breathing = !led_animation_breathing;
|
||||
if (led_animation_breathing) {
|
||||
gcr_breathe = gcr_desired;
|
||||
led_animation_breathe_cur = BREATHE_MIN_STEP;
|
||||
breathe_dir = 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case L_T_PTD:
|
||||
if (record->event.pressed) {
|
||||
led_animation_direction = !led_animation_direction;
|
||||
}
|
||||
return false;
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||
}
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
}
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
}
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
}
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed) {
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
}
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed) {
|
||||
key_timer = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(key_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case L_SP_PR: // previous dripple pattern
|
||||
case L_SP_NE: // next dripple pattern
|
||||
if (record->event.pressed) {
|
||||
#define PATTERN_COUNT 7
|
||||
uint8_t incre = keycode == L_SP_PR ? PATTERN_COUNT-1 : 1;
|
||||
USER_CONFIG.PATTERN_INDEX += incre;
|
||||
USER_CONFIG.PATTERN_INDEX %= PATTERN_COUNT;
|
||||
|
||||
if(USER_CONFIG.PATTERN_INDEX <= 4){
|
||||
USER_CONFIG.TRAVEL_DISTANCE = 25;
|
||||
USER_CONFIG.COLOR_PATTERN_INDEX = 0;
|
||||
USER_CONFIG.WAVE_PERIOD = 50;
|
||||
}
|
||||
|
||||
switch(USER_CONFIG.PATTERN_INDEX){
|
||||
case 0: // None
|
||||
break;
|
||||
case 1: // background off, wave on
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 2;
|
||||
break;
|
||||
case 2: // background on, wave off
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 5;
|
||||
break;
|
||||
case 3: // background off, rainbow wave
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 10;
|
||||
break;
|
||||
case 4: // background on, rainbow wave
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 10;
|
||||
break;
|
||||
case 5:
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 10;
|
||||
|
||||
USER_CONFIG.COLOR_PATTERN_INDEX = 2;
|
||||
USER_CONFIG.TRAVEL_DISTANCE = 0;
|
||||
USER_CONFIG.WAVE_PERIOD = 100;
|
||||
break;
|
||||
case 6:
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 25;
|
||||
|
||||
USER_CONFIG.COLOR_PATTERN_INDEX = 3;
|
||||
USER_CONFIG.TRAVEL_DISTANCE = 2;
|
||||
USER_CONFIG.WAVE_PERIOD = 10;
|
||||
break;
|
||||
}
|
||||
|
||||
// remove effect after changing pattern
|
||||
for(int i = 0; i < KEY_STROKES_LENGTH; ++i){
|
||||
KEY_STROKES[i].alive = 0;
|
||||
}
|
||||
refresh_pattern_indicators();
|
||||
refresh_color_pattern_indicators();
|
||||
}
|
||||
return false;
|
||||
case L_SP_WD:
|
||||
case L_SP_NW:
|
||||
if(record->event.pressed){
|
||||
short incre = keycode == L_SP_WD ? 1 : -1;
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH += incre;
|
||||
if(USER_CONFIG.WAVE_FRONT_WIDTH < 1){
|
||||
USER_CONFIG.WAVE_FRONT_WIDTH = 1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case L_SP_FA:
|
||||
case L_SP_SL:
|
||||
if(record->event.pressed){
|
||||
short incre = keycode == L_SP_FA ? -1 : 1;
|
||||
|
||||
USER_CONFIG.WAVE_PERIOD += 10 * incre;
|
||||
if(USER_CONFIG.WAVE_PERIOD < 10){
|
||||
USER_CONFIG.WAVE_PERIOD = 10;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
// these are the keys not in range 0x04 - 0x52
|
||||
case L_CP_PR:
|
||||
case L_CP_NX:
|
||||
if(record->event.pressed){
|
||||
uint8_t incre = keycode == L_CP_PR ? COLOR_PATTERNS_COUNT - 1 : 1;
|
||||
USER_CONFIG.COLOR_PATTERN_INDEX += incre;
|
||||
USER_CONFIG.COLOR_PATTERN_INDEX %= COLOR_PATTERNS_COUNT;
|
||||
refresh_color_pattern_indicators();
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
if (record->event.pressed){
|
||||
uint8_t led_id = ktli(keycode);
|
||||
if(led_id){
|
||||
for(int i = 0; i < KEY_STROKES_LENGTH; ++i){
|
||||
if(!KEY_STROKES[i].alive){
|
||||
KEY_STROKES[i].alive = 1;
|
||||
KEY_STROKES[i].led_id = led_id;
|
||||
KEY_STROKES[i].time = timer_read32();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true; //Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# This keymap requires Massdrop Configurator support
|
||||
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
||||
@@ -1,101 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "xulkal.h"
|
||||
|
||||
enum ctrl_keycodes {
|
||||
U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
|
||||
U_T_AGCR, //USB Toggle Automatic GCR control
|
||||
DBG_TOG, //DEBUG Toggle On / Off
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
|
||||
#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, TD_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, TD_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, TD_DOT, KC_SLSH, KC_RSPC, KC_UP, \
|
||||
KC_LCPO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LOWER, KC_APP, KC_RCPC, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
|
||||
#ifndef GAMELAYER_DISABLE
|
||||
[_GAME] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LOWER, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
#endif
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, RGB_RMOD,RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, MD_BOOT, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, GAME, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
/*
|
||||
[X] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
*/
|
||||
};
|
||||
|
||||
#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
|
||||
#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
|
||||
#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
|
||||
{
|
||||
static uint16_t reset_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL)
|
||||
TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
|
||||
return false;
|
||||
case U_T_AGCR:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL)
|
||||
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
|
||||
return false;
|
||||
case DBG_TOG:
|
||||
if (record->event.pressed)
|
||||
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
|
||||
return false;
|
||||
case DBG_MTRX:
|
||||
if (record->event.pressed)
|
||||
TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
|
||||
return false;
|
||||
case DBG_KBD:
|
||||
if (record->event.pressed)
|
||||
TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
|
||||
return false;
|
||||
case DBG_MOU:
|
||||
if (record->event.pressed)
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed)
|
||||
reset_timer = timer_read() + 500;
|
||||
else if (timer_expired(reset_timer))
|
||||
reset_keyboard();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
DISABLE_LTO = yes
|
||||
@@ -1,176 +0,0 @@
|
||||
/*
|
||||
Copyright 2018 Massdrop Inc.
|
||||
|
||||
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 "ctrl.h"
|
||||
|
||||
#include "d51_util.h"
|
||||
#include "debug.h"
|
||||
#include "clks.h"
|
||||
#include <string.h>
|
||||
|
||||
matrix_row_t mlatest[MATRIX_ROWS];
|
||||
matrix_row_t mlast[MATRIX_ROWS];
|
||||
matrix_row_t mdebounced[MATRIX_ROWS];
|
||||
|
||||
uint8_t row_ports[] = { MATRIX_ROW_PORTS };
|
||||
uint8_t row_pins[] = { MATRIX_ROW_PINS };
|
||||
uint8_t col_ports[] = { MATRIX_COL_PORTS };
|
||||
uint8_t col_pins[] = { MATRIX_COL_PINS };
|
||||
uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
void matrix_init(void)
|
||||
{
|
||||
memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t));
|
||||
memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t));
|
||||
memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t));
|
||||
|
||||
row_masks[PA] = 0;
|
||||
row_masks[PB] = 0;
|
||||
|
||||
uint8_t row;
|
||||
for (row = 0; row < MATRIX_ROWS; row++)
|
||||
{
|
||||
PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input
|
||||
PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low
|
||||
PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable,
|
||||
PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable
|
||||
row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask
|
||||
}
|
||||
|
||||
uint8_t col;
|
||||
for (col = 0; col < MATRIX_COLS; col++)
|
||||
{
|
||||
PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output
|
||||
PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low
|
||||
}
|
||||
|
||||
matrix_init_quantum();
|
||||
}
|
||||
|
||||
uint64_t mdebouncing = 0;
|
||||
uint8_t matrix_scan(void)
|
||||
{
|
||||
uint8_t mchanged;
|
||||
uint8_t row;
|
||||
uint8_t col;
|
||||
uint32_t scans[2]; //PA PB
|
||||
|
||||
if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
|
||||
|
||||
memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer
|
||||
|
||||
for (col = 0; col < MATRIX_COLS; col++)
|
||||
{
|
||||
PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
|
||||
|
||||
wait_us(1); //Delay for output
|
||||
|
||||
scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data
|
||||
scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data
|
||||
|
||||
PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output
|
||||
|
||||
for (row = 0; row < MATRIX_ROWS; row++)
|
||||
{
|
||||
//Move scan bits from scans array into proper row bit locations
|
||||
if (scans[row_ports[row]] & (1 << row_pins[row]))
|
||||
mlatest[row] |= 1 << col;
|
||||
}
|
||||
}
|
||||
|
||||
mchanged = 0; //Default to no matrix change since last
|
||||
|
||||
for (row = 0; row < MATRIX_ROWS; row++)
|
||||
{
|
||||
if (mlast[row] != mlatest[row])
|
||||
mchanged = 1;
|
||||
mlast[row] = mlatest[row];
|
||||
}
|
||||
|
||||
if (!mchanged)
|
||||
{
|
||||
for (row = 0; row < MATRIX_ROWS; row++)
|
||||
mdebounced[row] = mlatest[row];
|
||||
mdebouncing = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Begin or extend debounce on change
|
||||
mdebouncing = timer_read64() + DEBOUNCE;
|
||||
}
|
||||
|
||||
matrix_scan_quantum();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
matrix_row_t matrix_get_row(uint8_t row)
|
||||
{
|
||||
return mdebounced[row];
|
||||
}
|
||||
|
||||
void matrix_print(void)
|
||||
{
|
||||
char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C";
|
||||
char *pbuf = buf+3;
|
||||
uint32_t cols;
|
||||
uint32_t rows;
|
||||
matrix_row_t row;
|
||||
|
||||
for (cols = 1; cols <= MATRIX_COLS; cols++)
|
||||
{
|
||||
*pbuf = (cols%10)+48;
|
||||
pbuf++;
|
||||
}
|
||||
*pbuf = '\r'; pbuf++;
|
||||
*pbuf = '\n'; pbuf++;
|
||||
|
||||
for (rows = 1; rows <= MATRIX_ROWS; rows++)
|
||||
{
|
||||
row = matrix_get_row(rows-1);
|
||||
if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; }
|
||||
else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; }
|
||||
for (cols = 0; cols < MATRIX_COLS; cols++)
|
||||
{
|
||||
if (row & 1 << cols) *pbuf = 'X';
|
||||
else *pbuf = '.';
|
||||
pbuf++;
|
||||
}
|
||||
*pbuf = '\r'; pbuf++;
|
||||
*pbuf = '\n'; pbuf++;
|
||||
}
|
||||
*pbuf = 0;
|
||||
dprint(buf);
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
Copyright 2011 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef MATRIX_H
|
||||
#define MATRIX_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "keyboard.h"
|
||||
|
||||
#if (MATRIX_COLS <= 8)
|
||||
typedef uint8_t matrix_row_t;
|
||||
#elif (MATRIX_COLS <= 16)
|
||||
typedef uint16_t matrix_row_t;
|
||||
#elif (MATRIX_COLS <= 32)
|
||||
typedef uint32_t matrix_row_t;
|
||||
#else
|
||||
#error "MATRIX_COLS: invalid value"
|
||||
#endif
|
||||
|
||||
#define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1<<col))
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* number of matrix rows */
|
||||
uint8_t matrix_rows(void);
|
||||
/* number of matrix columns */
|
||||
uint8_t matrix_cols(void);
|
||||
/* should be called at early stage of startup before matrix_init.(optional) */
|
||||
void matrix_setup(void);
|
||||
/* intialize matrix for scaning. */
|
||||
void matrix_init(void);
|
||||
/* scan all key states on matrix */
|
||||
uint8_t matrix_scan(void);
|
||||
/* whether modified from previous scan. used after matrix_scan. */
|
||||
bool matrix_is_modified(void) __attribute__ ((deprecated));
|
||||
/* whether a switch is on */
|
||||
bool matrix_is_on(uint8_t row, uint8_t col);
|
||||
/* matrix state on row */
|
||||
matrix_row_t matrix_get_row(uint8_t row);
|
||||
/* print matrix for debug */
|
||||
void matrix_print(void);
|
||||
|
||||
/* power control */
|
||||
void matrix_power_up(void);
|
||||
void matrix_power_down(void);
|
||||
|
||||
/* executes code for Quantum */
|
||||
void matrix_init_quantum(void);
|
||||
void matrix_scan_quantum(void);
|
||||
|
||||
void matrix_init_kb(void);
|
||||
void matrix_scan_kb(void);
|
||||
|
||||
void matrix_init_user(void);
|
||||
void matrix_scan_user(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,20 +0,0 @@
|
||||
# CTRL
|
||||
|
||||

|
||||
|
||||
The Massdrop CTRL is a TKL mechanical keyboard featuring dual USB-C connectors, an integrated Hi-Speed USB 2.0 hub, and fully customizable RGB backlighting and underlighting.
|
||||
|
||||
Keyboard Maintainer: [Massdrop](https://github.com/massdrop)
|
||||
Hardware Supported: Massdrop, Inc. CTRL PCBs utilizing Microchip's ATSAMD51J18A MCU and USB2422 2-Port USB 2.0 Hi-Speed Hub Controller, and ISSI's IS31FL3733 LED Drivers.
|
||||
Hardware Availability: [Massdrop CTRL Mechanical Keyboard](https://www.massdrop.com/buy/massdrop-ctrl-mechanical-keyboard)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make massdrop/ctrl:default
|
||||
|
||||
For information on flashing this keyboard, visit the following links:
|
||||
|
||||
[Massdrop Loader Releases](https://github.com/Massdrop/mdloader/releases/tag/0.0.1)
|
||||
[Massdrop Loader Repository and Instructions](https://github.com/Massdrop/mdloader)
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
@@ -1,36 +0,0 @@
|
||||
# project specific files
|
||||
SRC = matrix.c
|
||||
SRC += config_led.c
|
||||
|
||||
#For platform and packs
|
||||
ARM_ATSAM = SAMD51J18A
|
||||
MCU = cortex-m4
|
||||
|
||||
CUSTOM_MATRIX = yes
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||
VIRTSER_ENABLE = no # USB Serial Driver
|
||||
RAW_ENABLE = no # Raw device
|
||||
AUTO_SHIFT_ENABLE = no # Auto Shift
|
||||
|
||||
# Custom RGB matrix handling
|
||||
RGB_MATRIX_ENABLE = custom
|
||||
Reference in New Issue
Block a user