Added first Drop ALT test layout
This commit is contained in:
parent
593b8a724f
commit
ed23557df3
36
keyboards/massdrop/alt/alt.h
Normal file
36
keyboards/massdrop/alt/alt.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#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_65_ansi_blocker( \
|
||||||
|
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 \
|
||||||
|
) { \
|
||||||
|
{ 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, KC_NO, K43, K44, }, \
|
||||||
|
{ K45, KC_NO, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, }, \
|
||||||
|
{ K59, K60, K61, KC_NO, KC_NO, KC_NO, K62, KC_NO, KC_NO, KC_NO, K63, K64, K65, K66, K67, }, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TOGGLE_FLAG_AND_PRINT(var, name) { \
|
||||||
|
if (var) { \
|
||||||
|
dprintf(name " disabled\r\n"); \
|
||||||
|
var = !var; \
|
||||||
|
} else { \
|
||||||
|
var = !var; \
|
||||||
|
dprintf(name " enabled\r\n"); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT LAYOUT_65_ansi_blocker // Ensure that user made existing keymaps do not break.
|
127
keyboards/massdrop/alt/config.h
Normal file
127
keyboards/massdrop/alt/config.h
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
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 0xEED3
|
||||||
|
#define DEVICE_VER 0x0101
|
||||||
|
|
||||||
|
#define MANUFACTURER "Massdrop Inc."
|
||||||
|
#define PRODUCT "ALT Keyboard"
|
||||||
|
#define SERIAL_NUM "Unavailable"
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 15
|
||||||
|
|
||||||
|
/* MCU Port name definitions */
|
||||||
|
#define PA 0
|
||||||
|
#define PB 1
|
||||||
|
|
||||||
|
/* Port and Pin definition of key row hardware configuration */
|
||||||
|
#define MATRIX_ROW_PORTS PA, PA, PA, PA, PA
|
||||||
|
#define MATRIX_ROW_PINS 0, 1, 2, 3, 4
|
||||||
|
|
||||||
|
/* Port and Pin definition of key column hardware configuration */
|
||||||
|
#define MATRIX_COL_PORTS PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PA, PA, PA, PA, PA
|
||||||
|
#define MATRIX_COL_PINS 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 10, 11
|
||||||
|
|
||||||
|
/* 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"
|
59
keyboards/massdrop/alt/config_led.c
Normal file
59
keyboards/massdrop/alt/config_led.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
#include "alt.h"
|
||||||
|
|
||||||
|
#include "led_matrix.h"
|
||||||
|
#include "rgb_matrix.h"
|
||||||
|
#include "config_led.h"
|
||||||
|
|
||||||
|
// This table can be almost-automatically derived from ISSI3733_LED_MAP that is
|
||||||
|
// defined in config_led.h
|
||||||
|
|
||||||
|
// You can calculate the (0-244, 0-64) x/y values from the x/y values defined in
|
||||||
|
// ISSI3733_LED_MAP with the following formula:
|
||||||
|
// uint8_t rgb_x = ((ISSI3733_LED_MAP[i].x - MIN_X) / (MAX_X - MIN_X)) * 224;
|
||||||
|
// uint8_t rgb_y = ((ISSI3733_LED_MAP[i].y - MIN_Y) / (MAX_Y - MIN_Y)) * 64;
|
||||||
|
// Where the min/max vars are the minimum and maximum "bounds" of x/y values
|
||||||
|
// present in ISSI3733_LED_MAP
|
||||||
|
//
|
||||||
|
// The row/col values need to be manually tweaked though, compensating for the
|
||||||
|
// "empty" cells that are a product of larger keys
|
||||||
|
//
|
||||||
|
// There is a quick-and-dirty implementation of this under ledvis.html
|
||||||
|
|
||||||
|
led_config_t g_led_config = { {
|
||||||
|
{ 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, NO_LED, 42, 43 },
|
||||||
|
{ 44, NO_LED, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
|
||||||
|
{ 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66 }
|
||||||
|
}, {
|
||||||
|
{ 8, 56 }, { 22, 56 }, { 35, 56 }, { 49, 56 }, { 63, 56 }, { 77, 56 }, { 91, 56 }, { 105, 56 }, { 118, 56 }, { 132, 56 }, { 146, 56 }, { 160, 56 }, { 174, 56 }, { 195, 56 }, { 215, 56 },
|
||||||
|
{ 11, 44 }, { 28, 44 }, { 42, 44 }, { 56, 44 }, { 70, 44 }, { 84, 44 }, { 98, 44 }, { 112, 44 }, { 125, 44 }, { 139, 44 }, { 153, 44 }, { 167, 44 }, { 181, 44 }, { 198, 44 }, { 215, 44 },
|
||||||
|
{ 13, 32 }, { 32, 32 }, { 46, 32 }, { 60, 32 }, { 73, 32 }, { 87, 32 }, { 101, 32 }, { 115, 32 }, { 129, 32 }, { 143, 32 }, { 156, 32 }, { 170, 32 }, { 193, 32 }, { 215, 32 }, { 16, 19 },
|
||||||
|
{ 39, 19 }, { 53, 19 }, { 67, 19 }, { 80, 19 }, { 94, 19 }, { 108, 19 }, { 122, 19 }, { 136, 19 }, { 150, 19 }, { 163, 19 }, { 182, 19 }, { 201, 19 }, { 215, 19 }, { 9, 7 }, { 27, 7 },
|
||||||
|
{ 44, 7 }, { 96, 7 }, { 148, 7 }, { 165, 7 }, { 188, 7 }, { 201, 7 }, { 215, 7 },
|
||||||
|
// Underglow LEDs
|
||||||
|
{ 1, 1 }, { 15, 0 }, { 31, 0 }, { 47, 0 }, { 63, 0 }, { 79, 0 }, { 95, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 208, 0 }, { 222, 1 },
|
||||||
|
{ 224, 13 }, { 224, 25 }, { 224, 38 }, { 224, 50 }, { 222, 62 }, { 191, 64 }, { 179, 64 }, { 167, 64 }, { 153, 64 }, { 139, 64 }, { 125, 64 }, { 112, 64 }, { 98, 64 }, { 84, 64 }, { 70, 64 },
|
||||||
|
{ 56, 64 }, { 42, 64 }, { 28, 64 }, { 1, 62 }, { 0, 50 }, { 0, 38 }, { 0, 25 }, { 0, 13 }
|
||||||
|
}, {
|
||||||
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||||
|
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4, 4,
|
||||||
|
// Underglow LEDs
|
||||||
|
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, 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
|
179
keyboards/massdrop/alt/config_led.h
Normal file
179
keyboards/massdrop/alt/config_led.h
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
/*
|
||||||
|
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 105
|
||||||
|
|
||||||
|
#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 = 0.75, .y = 0, .adr = { .drv = 2, .cs = 3, .swr = 5, .swg = 4, .swb = 6 }, .scan = 1 }, \
|
||||||
|
{ .id = 3, .x = 1.5, .y = 0, .adr = { .drv = 2, .cs = 4, .swr = 5, .swg = 4, .swb = 6 }, .scan = 2 }, \
|
||||||
|
{ .id = 4, .x = 2.25, .y = 0, .adr = { .drv = 2, .cs = 5, .swr = 5, .swg = 4, .swb = 6 }, .scan = 3 }, \
|
||||||
|
{ .id = 5, .x = 3, .y = 0, .adr = { .drv = 2, .cs = 6, .swr = 5, .swg = 4, .swb = 6 }, .scan = 4 }, \
|
||||||
|
{ .id = 6, .x = 3.75, .y = 0, .adr = { .drv = 2, .cs = 7, .swr = 5, .swg = 4, .swb = 6 }, .scan = 5 }, \
|
||||||
|
{ .id = 7, .x = 4.5, .y = 0, .adr = { .drv = 2, .cs = 8, .swr = 5, .swg = 4, .swb = 6 }, .scan = 6 }, \
|
||||||
|
{ .id = 8, .x = 5.25, .y = 0, .adr = { .drv = 2, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 7 }, \
|
||||||
|
{ .id = 9, .x = 6, .y = 0, .adr = { .drv = 1, .cs = 1, .swr = 5, .swg = 4, .swb = 6 }, .scan = 8 }, \
|
||||||
|
{ .id = 10, .x = 6.75, .y = 0, .adr = { .drv = 1, .cs = 2, .swr = 5, .swg = 4, .swb = 6 }, .scan = 9 }, \
|
||||||
|
{ .id = 11, .x = 7.5, .y = 0, .adr = { .drv = 1, .cs = 3, .swr = 5, .swg = 4, .swb = 6 }, .scan = 10 }, \
|
||||||
|
{ .id = 12, .x = 8.25, .y = 0, .adr = { .drv = 1, .cs = 4, .swr = 5, .swg = 4, .swb = 6 }, .scan = 11 }, \
|
||||||
|
{ .id = 13, .x = 9, .y = 0, .adr = { .drv = 1, .cs = 5, .swr = 5, .swg = 4, .swb = 6 }, .scan = 12 }, \
|
||||||
|
{ .id = 14, .x = 10.125, .y = 0, .adr = { .drv = 1, .cs = 6, .swr = 5, .swg = 4, .swb = 6 }, .scan = 13 }, \
|
||||||
|
{ .id = 15, .x = 11.25, .y = 0, .adr = { .drv = 1, .cs = 7, .swr = 2, .swg = 1, .swb = 3 }, .scan = 14 }, \
|
||||||
|
{ .id = 16, .x = 0.188, .y = -0.75, .adr = { .drv = 2, .cs = 2, .swr = 5, .swg = 4, .swb = 6 }, .scan = 15 }, \
|
||||||
|
{ .id = 17, .x = 1.125, .y = -0.75, .adr = { .drv = 2, .cs = 3, .swr = 8, .swg = 7, .swb = 9 }, .scan = 16 }, \
|
||||||
|
{ .id = 18, .x = 1.875, .y = -0.75, .adr = { .drv = 2, .cs = 4, .swr = 8, .swg = 7, .swb = 9 }, .scan = 17 }, \
|
||||||
|
{ .id = 19, .x = 2.625, .y = -0.75, .adr = { .drv = 2, .cs = 5, .swr = 8, .swg = 7, .swb = 9 }, .scan = 18 }, \
|
||||||
|
{ .id = 20, .x = 3.375, .y = -0.75, .adr = { .drv = 2, .cs = 6, .swr = 8, .swg = 7, .swb = 9 }, .scan = 19 }, \
|
||||||
|
{ .id = 21, .x = 4.125, .y = -0.75, .adr = { .drv = 2, .cs = 7, .swr = 8, .swg = 7, .swb = 9 }, .scan = 20 }, \
|
||||||
|
{ .id = 22, .x = 4.875, .y = -0.75, .adr = { .drv = 2, .cs = 8, .swr = 8, .swg = 7, .swb = 9 }, .scan = 21 }, \
|
||||||
|
{ .id = 23, .x = 5.625, .y = -0.75, .adr = { .drv = 1, .cs = 1, .swr = 8, .swg = 7, .swb = 9 }, .scan = 22 }, \
|
||||||
|
{ .id = 24, .x = 6.375, .y = -0.75, .adr = { .drv = 1, .cs = 2, .swr = 8, .swg = 7, .swb = 9 }, .scan = 23 }, \
|
||||||
|
{ .id = 25, .x = 7.125, .y = -0.75, .adr = { .drv = 1, .cs = 3, .swr = 8, .swg = 7, .swb = 9 }, .scan = 24 }, \
|
||||||
|
{ .id = 26, .x = 7.875, .y = -0.75, .adr = { .drv = 1, .cs = 4, .swr = 8, .swg = 7, .swb = 9 }, .scan = 25 }, \
|
||||||
|
{ .id = 27, .x = 8.625, .y = -0.75, .adr = { .drv = 1, .cs = 5, .swr = 8, .swg = 7, .swb = 9 }, .scan = 26 }, \
|
||||||
|
{ .id = 28, .x = 9.375, .y = -0.75, .adr = { .drv = 1, .cs = 11, .swr = 11, .swg = 10, .swb = 12 }, .scan = 27 }, \
|
||||||
|
{ .id = 29, .x = 10.313, .y = -0.75, .adr = { .drv = 1, .cs = 6, .swr = 8, .swg = 7, .swb = 9 }, .scan = 28 }, \
|
||||||
|
{ .id = 30, .x = 11.25, .y = -0.75, .adr = { .drv = 1, .cs = 7, .swr = 5, .swg = 4, .swb = 6 }, .scan = 29 }, \
|
||||||
|
{ .id = 31, .x = 0.281, .y = -1.5, .adr = { .drv = 2, .cs = 2, .swr = 8, .swg = 7, .swb = 9 }, .scan = 30 }, \
|
||||||
|
{ .id = 32, .x = 1.313, .y = -1.5, .adr = { .drv = 2, .cs = 3, .swr = 11, .swg = 10, .swb = 12 }, .scan = 31 }, \
|
||||||
|
{ .id = 33, .x = 2.063, .y = -1.5, .adr = { .drv = 2, .cs = 4, .swr = 11, .swg = 10, .swb = 12 }, .scan = 32 }, \
|
||||||
|
{ .id = 34, .x = 2.813, .y = -1.5, .adr = { .drv = 2, .cs = 5, .swr = 11, .swg = 10, .swb = 12 }, .scan = 33 }, \
|
||||||
|
{ .id = 35, .x = 3.563, .y = -1.5, .adr = { .drv = 2, .cs = 6, .swr = 11, .swg = 10, .swb = 12 }, .scan = 34 }, \
|
||||||
|
{ .id = 36, .x = 4.313, .y = -1.5, .adr = { .drv = 2, .cs = 7, .swr = 11, .swg = 10, .swb = 12 }, .scan = 35 }, \
|
||||||
|
{ .id = 37, .x = 5.063, .y = -1.5, .adr = { .drv = 2, .cs = 8, .swr = 11, .swg = 10, .swb = 12 }, .scan = 36 }, \
|
||||||
|
{ .id = 38, .x = 5.813, .y = -1.5, .adr = { .drv = 1, .cs = 1, .swr = 11, .swg = 10, .swb = 12 }, .scan = 37 }, \
|
||||||
|
{ .id = 39, .x = 6.563, .y = -1.5, .adr = { .drv = 1, .cs = 2, .swr = 11, .swg = 10, .swb = 12 }, .scan = 38 }, \
|
||||||
|
{ .id = 40, .x = 7.313, .y = -1.5, .adr = { .drv = 1, .cs = 3, .swr = 11, .swg = 10, .swb = 12 }, .scan = 39 }, \
|
||||||
|
{ .id = 41, .x = 8.063, .y = -1.5, .adr = { .drv = 1, .cs = 4, .swr = 11, .swg = 10, .swb = 12 }, .scan = 40 }, \
|
||||||
|
{ .id = 42, .x = 8.813, .y = -1.5, .adr = { .drv = 1, .cs = 5, .swr = 11, .swg = 10, .swb = 12 }, .scan = 41 }, \
|
||||||
|
{ .id = 43, .x = 10.031, .y = -1.5, .adr = { .drv = 1, .cs = 6, .swr = 11, .swg = 10, .swb = 12 }, .scan = 43 }, \
|
||||||
|
{ .id = 44, .x = 11.25, .y = -1.5, .adr = { .drv = 1, .cs = 7, .swr = 8, .swg = 7, .swb = 9 }, .scan = 44 }, \
|
||||||
|
{ .id = 45, .x = 0.469, .y = -2.25, .adr = { .drv = 2, .cs = 2, .swr = 11, .swg = 10, .swb = 12 }, .scan = 45 }, \
|
||||||
|
{ .id = 46, .x = 1.688, .y = -2.25, .adr = { .drv = 2, .cs = 9, .swr = 5, .swg = 4, .swb = 6 }, .scan = 47 }, \
|
||||||
|
{ .id = 47, .x = 2.438, .y = -2.25, .adr = { .drv = 2, .cs = 9, .swr = 2, .swg = 1, .swb = 3 }, .scan = 48 }, \
|
||||||
|
{ .id = 48, .x = 3.188, .y = -2.25, .adr = { .drv = 2, .cs = 9, .swr = 11, .swg = 10, .swb = 12 }, .scan = 49 }, \
|
||||||
|
{ .id = 49, .x = 3.938, .y = -2.25, .adr = { .drv = 2, .cs = 9, .swr = 8, .swg = 7, .swb = 9 }, .scan = 50 }, \
|
||||||
|
{ .id = 50, .x = 4.688, .y = -2.25, .adr = { .drv = 2, .cs = 12, .swr = 11, .swg = 10, .swb = 12 }, .scan = 51 }, \
|
||||||
|
{ .id = 51, .x = 5.438, .y = -2.25, .adr = { .drv = 2, .cs = 13, .swr = 11, .swg = 10, .swb = 12 }, .scan = 52 }, \
|
||||||
|
{ .id = 52, .x = 6.188, .y = -2.25, .adr = { .drv = 1, .cs = 9, .swr = 11, .swg = 10, .swb = 12 }, .scan = 53 }, \
|
||||||
|
{ .id = 53, .x = 6.938, .y = -2.25, .adr = { .drv = 1, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .scan = 54 }, \
|
||||||
|
{ .id = 54, .x = 7.688, .y = -2.25, .adr = { .drv = 1, .cs = 10, .swr = 8, .swg = 7, .swb = 9 }, .scan = 55 }, \
|
||||||
|
{ .id = 55, .x = 8.438, .y = -2.25, .adr = { .drv = 1, .cs = 11, .swr = 8, .swg = 7, .swb = 9 }, .scan = 56 }, \
|
||||||
|
{ .id = 56, .x = 9.469, .y = -2.25, .adr = { .drv = 1, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 57 }, \
|
||||||
|
{ .id = 57, .x = 10.5, .y = -2.25, .adr = { .drv = 1, .cs = 11, .swr = 5, .swg = 4, .swb = 6 }, .scan = 58 }, \
|
||||||
|
{ .id = 58, .x = 11.25, .y = -2.25, .adr = { .drv = 1, .cs = 7, .swr = 11, .swg = 10, .swb = 12 }, .scan = 59 }, \
|
||||||
|
{ .id = 59, .x = 0.094, .y = -3, .adr = { .drv = 2, .cs = 10, .swr = 8, .swg = 7, .swb = 9 }, .scan = 60 }, \
|
||||||
|
{ .id = 60, .x = 1.031, .y = -3, .adr = { .drv = 2, .cs = 10, .swr = 5, .swg = 4, .swb = 6 }, .scan = 61 }, \
|
||||||
|
{ .id = 61, .x = 1.969, .y = -3, .adr = { .drv = 2, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 62 }, \
|
||||||
|
{ .id = 62, .x = 4.781, .y = -3, .adr = { .drv = 2, .cs = 12, .swr = 8, .swg = 7, .swb = 9 }, .scan = 66 }, \
|
||||||
|
{ .id = 63, .x = 7.594, .y = -3, .adr = { .drv = 1, .cs = 10, .swr = 5, .swg = 4, .swb = 6 }, .scan = 70 }, \
|
||||||
|
{ .id = 64, .x = 8.531, .y = -3, .adr = { .drv = 1, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 71 }, \
|
||||||
|
{ .id = 65, .x = 9.75, .y = -3, .adr = { .drv = 1, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 72 }, \
|
||||||
|
{ .id = 66, .x = 10.5, .y = -3, .adr = { .drv = 1, .cs = 12, .swr = 8, .swg = 7, .swb = 9 }, .scan = 73 }, \
|
||||||
|
{ .id = 67, .x = 11.25, .y = -3, .adr = { .drv = 1, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 74 }, \
|
||||||
|
{ .id = 68, .x = -0.338, .y = -3.338, .adr = { .drv = 2, .cs = 11, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||||
|
{ .id = 69, .x = 0.39, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||||
|
{ .id = 70, .x = 1.263, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 71, .x = 2.135, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 72, .x = 3.008, .y = -3.443, .adr = { .drv = 2, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 73, .x = 3.88, .y = -3.443, .adr = { .drv = 2, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 74, .x = 4.753, .y = -3.443, .adr = { .drv = 2, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 75, .x = 5.625, .y = -3.443, .adr = { .drv = 2, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||||
|
{ .id = 76, .x = 6.497, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||||
|
{ .id = 77, .x = 7.37, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 78, .x = 8.242, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 79, .x = 9.115, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 80, .x = 9.987, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||||
|
{ .id = 81, .x = 10.86, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 82, .x = 11.588, .y = -3.338, .adr = { .drv = 1, .cs = 13, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||||
|
{ .id = 83, .x = 11.693, .y = -2.623, .adr = { .drv = 1, .cs = 12, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||||
|
{ .id = 84, .x = 11.693, .y = -1.873, .adr = { .drv = 1, .cs = 8, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||||
|
{ .id = 85, .x = 11.693, .y = -1.123, .adr = { .drv = 1, .cs = 8, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||||
|
{ .id = 86, .x = 11.693, .y = -0.373, .adr = { .drv = 1, .cs = 8, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 87, .x = 11.588, .y = 0.338, .adr = { .drv = 1, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 88, .x = 9.908, .y = 0.443, .adr = { .drv = 1, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 89, .x = 9.288, .y = 0.443, .adr = { .drv = 1, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 90, .x = 8.625, .y = 0.443, .adr = { .drv = 1, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 91, .x = 7.875, .y = 0.443, .adr = { .drv = 1, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 92, .x = 7.125, .y = 0.443, .adr = { .drv = 1, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 93, .x = 6.375, .y = 0.443, .adr = { .drv = 1, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 94, .x = 5.625, .y = 0.443, .adr = { .drv = 1, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 95, .x = 4.875, .y = 0.443, .adr = { .drv = 2, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 96, .x = 4.125, .y = 0.443, .adr = { .drv = 2, .cs = 7, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 97, .x = 3.375, .y = 0.443, .adr = { .drv = 2, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 98, .x = 2.625, .y = 0.443, .adr = { .drv = 2, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 99, .x = 1.875, .y = 0.443, .adr = { .drv = 2, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 100, .x = 1.125, .y = 0.443, .adr = { .drv = 2, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 101, .x = -0.338, .y = 0.338, .adr = { .drv = 2, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \
|
||||||
|
{ .id = 102, .x = -0.443, .y = -0.373, .adr = { .drv = 2, .cs = 1, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \
|
||||||
|
{ .id = 103, .x = -0.443, .y = -1.123, .adr = { .drv = 2, .cs = 1, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \
|
||||||
|
{ .id = 104, .x = -0.443, .y = -1.873, .adr = { .drv = 2, .cs = 1, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \
|
||||||
|
{ .id = 105, .x = -0.443, .y = -2.623, .adr = { .drv = 2, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .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 30
|
||||||
|
#define USB_LED_SCROLL_LOCK_SCANCODE 255
|
||||||
|
#define USB_LED_COMPOSE_SCANCODE 255
|
||||||
|
#define USB_LED_KANA_SCANCODE 255
|
||||||
|
#endif //USB_LED_INDICATOR_ENABLE
|
80
keyboards/massdrop/alt/info.json
Normal file
80
keyboards/massdrop/alt/info.json
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "ALT",
|
||||||
|
"url": "https://www.massdrop.com/buy/massdrop-alt-mechanical-keyboard",
|
||||||
|
"maintainer": "Massdrop",
|
||||||
|
"width": 16,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_65_ansi_blocker": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"ESCAPE", "x":0, "y":0},
|
||||||
|
{"label":"1", "x":1, "y":0},
|
||||||
|
{"label":"2", "x":2, "y":0},
|
||||||
|
{"label":"3", "x":3, "y":0},
|
||||||
|
{"label":"4", "x":4, "y":0},
|
||||||
|
{"label":"5", "x":5, "y":0},
|
||||||
|
{"label":"6", "x":6, "y":0},
|
||||||
|
{"label":"7", "x":7, "y":0},
|
||||||
|
{"label":"8", "x":8, "y":0},
|
||||||
|
{"label":"9", "x":9, "y":0},
|
||||||
|
{"label":"0", "x":10, "y":0},
|
||||||
|
{"label":"MINUS", "x":11, "y":0},
|
||||||
|
{"label":"EQUALS", "x":12, "y":0},
|
||||||
|
{"label":"BACKSPACE", "x":13, "y":0, "w":2},
|
||||||
|
{"label":"DELETE", "x":15, "y":0},
|
||||||
|
{"label":"TAB", "x":0, "y":1, "w":1.5},
|
||||||
|
{"label":"Q", "x":1.5, "y":1},
|
||||||
|
{"label":"W", "x":2.5, "y":1},
|
||||||
|
{"label":"E", "x":3.5, "y":1},
|
||||||
|
{"label":"R", "x":4.5, "y":1},
|
||||||
|
{"label":"T", "x":5.5, "y":1},
|
||||||
|
{"label":"Y", "x":6.5, "y":1},
|
||||||
|
{"label":"U", "x":7.5, "y":1},
|
||||||
|
{"label":"I", "x":8.5, "y":1},
|
||||||
|
{"label":"O", "x":9.5, "y":1},
|
||||||
|
{"label":"P", "x":10.5, "y":1},
|
||||||
|
{"label":"LEFT BRACKET", "x":11.5, "y":1},
|
||||||
|
{"label":"RIGHT BRACKET", "x":12.5, "y":1},
|
||||||
|
{"label":"BACK SLASH", "x":13.5, "y":1, "w":1.5},
|
||||||
|
{"label":"HOME", "x":15, "y":1},
|
||||||
|
{"label":"CAPS LOCK", "x":0, "y":2, "w":1.75},
|
||||||
|
{"label":"A", "x":1.75, "y":2},
|
||||||
|
{"label":"S", "x":2.75, "y":2},
|
||||||
|
{"label":"D", "x":3.75, "y":2},
|
||||||
|
{"label":"F", "x":4.75, "y":2},
|
||||||
|
{"label":"G", "x":5.75, "y":2},
|
||||||
|
{"label":"H", "x":6.75, "y":2},
|
||||||
|
{"label":"J", "x":7.75, "y":2},
|
||||||
|
{"label":"K", "x":8.75, "y":2},
|
||||||
|
{"label":"L", "x":9.75, "y":2},
|
||||||
|
{"label":"SEMICOLON", "x":10.75, "y":2},
|
||||||
|
{"label":"SINGLE TICK", "x":11.75, "y":2},
|
||||||
|
{"label":"ENTER", "x":12.75, "y":2, "w":2.25},
|
||||||
|
{"label":"PAGE UP", "x":15, "y":2},
|
||||||
|
{"label":"LEFT SHIFT", "x":0, "y":3, "w":2.25},
|
||||||
|
{"label":"Z", "x":2.25, "y":3},
|
||||||
|
{"label":"X", "x":3.25, "y":3},
|
||||||
|
{"label":"C", "x":4.25, "y":3},
|
||||||
|
{"label":"V", "x":5.25, "y":3},
|
||||||
|
{"label":"B", "x":6.25, "y":3},
|
||||||
|
{"label":"N", "x":7.25, "y":3},
|
||||||
|
{"label":"M", "x":8.25, "y":3},
|
||||||
|
{"label":"COMMA", "x":9.25, "y":3},
|
||||||
|
{"label":"PERIOD", "x":10.25, "y":3},
|
||||||
|
{"label":"FORWARD SLASH", "x":11.25, "y":3},
|
||||||
|
{"label":"RIGHT SHIFT", "x":12.25, "y":3, "w":1.75},
|
||||||
|
{"label":"UP ARROW", "x":14, "y":3},
|
||||||
|
{"label":"PAGE DOWN", "x":15, "y":3},
|
||||||
|
{"label":"LEFT CTRL", "x":0, "y":4, "w":1.25},
|
||||||
|
{"label":"LEFT WIN", "x":1.25, "y":4, "w":1.25},
|
||||||
|
{"label":"LEFT ALT", "x":2.5, "y":4, "w":1.25},
|
||||||
|
{"label":"SPACEBAR", "x":3.75, "y":4, "w":6.25},
|
||||||
|
{"label":"RIGHT ALT", "x":10, "y":4, "w":1.25},
|
||||||
|
{"label":"FN", "x":11.25, "y":4, "w":1.25},
|
||||||
|
{"label":"LEFT ARROW", "x":13, "y":4},
|
||||||
|
{"label":"DOWN ARROW", "x":14, "y":4},
|
||||||
|
{"label":"RIGHT ARROW", "x":15, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
127
keyboards/massdrop/alt/keymaps/abishalom/keymap.c
Normal file
127
keyboards/massdrop/alt/keymaps/abishalom/keymap.c
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
}
|
114
keyboards/massdrop/alt/keymaps/bonta/keymap.c
Normal file
114
keyboards/massdrop/alt/keymaps/bonta/keymap.c
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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 RGB_BRU RGB_VAI
|
||||||
|
#define RGB_BRD RGB_VAD
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_MUTE, \
|
||||||
|
_______, RGB_SPD, RGB_BRU, RGB_SPI, _______, _______, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
_______, RGB_RMOD,RGB_BRD, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, \
|
||||||
|
_______, _______, _______, KC_MPLY, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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 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;
|
||||||
|
default: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
125
keyboards/massdrop/alt/keymaps/default/keymap.c
Normal file
125
keyboards/massdrop/alt/keymaps/default/keymap.c
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
}
|
221
keyboards/massdrop/alt/keymaps/default_md/keymap.c
Normal file
221
keyboards/massdrop/alt/keymaps/default_md/keymap.c
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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 - 16: 1111 1111 1111 1111 1000 0000 0000 0000 = 0xFFFF8000) (except top row 15 - 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 67 - 65: 0000 0000 0000 0000 0000 0000 0000 0111 = 0x00000007)
|
||||||
|
//When layer 1 is active, edge LEDs use green (id2 95 - 68: 1111 1111 1111 1111 1111 1111 1111 1000 = 0xFFFFFFF8)
|
||||||
|
//When layer 1 is active, edge LEDs use green (id3 105 - 96: 0000 0000 0000 0000 0000 0011 1111 1111 = 0x000003FF)
|
||||||
|
// { .flags = LED_FLAG_USE_ROTATE_PATTERN },
|
||||||
|
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id0 = 0xFFFF8000, .id1 = 0xFFFFFFFF, .id2 = 0x00000007, .r = 255, .layer = 1 },
|
||||||
|
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id2 = 0xFFFFFFF8, .id3 = 0x000003FF, .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 67 - 65: 0000 0000 0000 0000 0000 0000 0000 0111 = 0x00000007)
|
||||||
|
//Edge uses active pattern (id2 95 - 68: 1111 1111 1111 1111 1111 1111 1111 1000 = 0xFFFFFFF8)
|
||||||
|
//Edge uses active pattern (id3 105 - 96: 0000 0000 0000 0000 0000 0011 1111 1111 = 0x000003FF)
|
||||||
|
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_RGB, .id0 = 0xFFFFFFFF, .id1 = 0xFFFFFFFF, .id2 = 0x00000007, .r = 255 },
|
||||||
|
// { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_ROTATE_PATTERN , .id2 = 0xFFFFFFF8, .id3 = 0x000003FF },
|
||||||
|
|
||||||
|
//end must be set to 1 to indicate end of instruction set
|
||||||
|
{ .end = 1 }
|
||||||
|
};
|
2
keyboards/massdrop/alt/keymaps/default_md/rules.mk
Normal file
2
keyboards/massdrop/alt/keymaps/default_md/rules.mk
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# This keymap requires Massdrop Configurator support
|
||||||
|
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
23
keyboards/massdrop/alt/keymaps/drashna/config.h
Normal file
23
keyboards/massdrop/alt/keymaps/drashna/config.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* Copyright 2018 Carlos Filoteo
|
||||||
|
*
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
#define LEADER_PER_KEY_TIMING
|
||||||
|
#define LEADER_TIMEOUT 350
|
44
keyboards/massdrop/alt/keymaps/drashna/keymap.c
Normal file
44
keyboards/massdrop/alt/keymaps/drashna/keymap.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#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))
|
5
keyboards/massdrop/alt/keymaps/drashna/readme.md
Normal file
5
keyboards/massdrop/alt/keymaps/drashna/readme.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# UT47 default keymap
|
||||||
|
|
||||||
|
![UT47 layout image](https://i.imgur.com/Tsz5qsF.png)
|
||||||
|
|
||||||
|
[KLE](http://www.keyboard-layout-editor.com/##@@_y:0%3B&=Esc&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&_w:1.5%3B&=Back%20Space&_x:0.25&a:4&f:4&w:4&h:4&d:true%3B&=%3Cb%3EGNAP!%3C%2F%2Fb%3E%3Cp%3E%3Cp%3EMinimum%20stagger%3Cp%3E47%20key%20layout%3B&@_a:7&f:3&w:1.25%3B&=Tab&=A&=S&=D&=F&=G&=H&=J&=K&=L&=%2F%3B&_w:1.25%3B&=%27%3B&@_w:1.5%3B&=Shift&=Z&=X&=C&=V&=B&=N&=M&=,&=.&=%2F%2F&=Return%3B&@=Ctrl&=Alt&=Super&=Menu&_w:1.25%3B&=%2F&dArr%2F%3B&_w:2%3B&=&_w:1.25%3B&=%2F&uArr%2F%3B&=%2F&larr%2F%3B&=%2F&darr%2F%3B&=%2F&uarr%2F%3B&=%2F&rarr%2F%3B%3B&=undefined)
|
36
keyboards/massdrop/alt/keymaps/drashna/rules.mk
Normal file
36
keyboards/massdrop/alt/keymaps/drashna/rules.mk
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#For platform and packs
|
||||||
|
ARM_ATSAM = SAMD51J18A
|
||||||
|
MCU = cortex-m4
|
||||||
|
|
||||||
|
CUSTOM_MATRIX = yes
|
||||||
|
RGBLIGHT_STARTUP_ANIMATION = no
|
||||||
|
LEADER_ENABLE = yes
|
||||||
|
KEYLOGGER_ENABLE = no
|
||||||
|
OLED_DRIVER_ENABLE = no
|
||||||
|
# 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
|
||||||
|
RGB_MATRIX_ENABLE = no
|
||||||
|
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
|
||||||
|
|
||||||
|
# This keymap requires Massdrop Configurator support
|
||||||
|
# OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
14
keyboards/massdrop/alt/keymaps/emptyflask/README.md
Normal file
14
keyboards/massdrop/alt/keymaps/emptyflask/README.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
### Drop (Massdrop) ALT Layout
|
||||||
|
|
||||||
|
This layout is for the [Drop ALT Keyboard](https://drop.com/buy/massdrop-alt-high-profile-mechanical-keyboard).
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* Tap caps lock for ESC, hold for CTRL
|
||||||
|
* Prefer grave/tilde to dedicated ESC key
|
||||||
|
* Swap home and delete. It's more compatible with my keycaps, and closer to a traditional layout.
|
||||||
|
* Numpad layer (FN-\ to enable)
|
||||||
|
* Method for clearing all stuck-down mods (taken from favorable-mutation, for tapped modifiers)
|
||||||
|
|
||||||
|
To do:
|
||||||
|
* Customize RGB: solid colors by default, highlight numpad keys when using that layer.
|
3
keyboards/massdrop/alt/keymaps/emptyflask/config.h
Normal file
3
keyboards/massdrop/alt/keymaps/emptyflask/config.h
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define ONESHOT_TIMEOUT 3000
|
292
keyboards/massdrop/alt/keymaps/emptyflask/keymap.c
Normal file
292
keyboards/massdrop/alt/keymaps/emptyflask/keymap.c
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum my_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
|
||||||
|
HK_COSL, // Clear held-down keys
|
||||||
|
QWERTY, // Switch to QWERTY layout
|
||||||
|
COLEMAK, // Switch to Colemak layout
|
||||||
|
DVORAK, // Switch to Dvorak layout
|
||||||
|
WORKMAN, // Switch to Workman layout
|
||||||
|
};
|
||||||
|
|
||||||
|
enum my_layers {
|
||||||
|
_QWERTY = 0,
|
||||||
|
_COLEMAK,
|
||||||
|
_DVORAK,
|
||||||
|
_WORKMAN,
|
||||||
|
_FUNCTION,
|
||||||
|
_NUMPAD,
|
||||||
|
_LAYOUTS,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define CTL_ESC LCTL_T(KC_ESC) // Tap for ESC, hold for CTRL
|
||||||
|
#define MD_LOCK LCTL(LGUI(KC_Q)) // MacOS lock screen shortcut
|
||||||
|
#define MO_FUNC MO(_FUNCTION) // Hold for function layer
|
||||||
|
#define TG_NUMP TG(_NUMPAD) // Toggle numpad layer
|
||||||
|
#define OSL_LAY OSL(_LAYOUTS) // One-shot layer to change layout
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* QWERTY
|
||||||
|
* ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬────────────┬───────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ BackSpace │ Home │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬─────────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ Del │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─────────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ Ctrl/Esc │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Return │ PgUp │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────────────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴───────┬───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ Up │ PgDn │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────────┬─────┴───┬───┴─────┬─┴───────┴───────┴───────┴───────┴───────┴─────┬─┴───────┼───────┴─┬──┬───────┼───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* │ Ctrl │ GUI │ Alt │ Space │ Alt │ Func │▒▒│ Left │ Down │ Right │
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* └─────────┴─────────┴─────────┴───────────────────────────────────────────────┴─────────┴─────────┴──┴───────┴───────┴───────┘
|
||||||
|
*/
|
||||||
|
[_QWERTY] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
|
CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_COLEMAK] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
|
CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_DVORAK] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL,
|
||||||
|
CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[_WORKMAN] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||||
|
KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
|
CTL_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO_FUNC, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Function layer
|
||||||
|
* ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬────────────┬───────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Del │ End │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬─────────┼───────┤
|
||||||
|
* │ │ RGB │ RGB │ RGB │ RGB │ RGB │ │ USB │ USB │ │ │ │ │ │ │
|
||||||
|
* │ │ Speed │ Val │ Speed │ Hue │ Sat │ │ Port │ GCR │ │ PrtSc │ ScrLk │ Pause │ NumPad │ Mute │
|
||||||
|
* │ │ - │ + │ + │ + │ + │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─────────┼───────┤
|
||||||
|
* │ │ RGB │ RGB │ RGB │ RGB │ RGB │ │ │ │ (Mac) │ │ │ │ │
|
||||||
|
* │ CapsLock │ Mode │ Val │ Mode │ Hue │ Sat │ │ │ │ Lock │ │ │ │ Vol+ │
|
||||||
|
* │ │ - │ - │ + │ - │ - │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────────────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴───────┬───────┼───────┤
|
||||||
|
* │ │ RGB │ │ │ │ │ 6KRO/ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ On/Off│ │ │ │Restart│ NKRO │ Debug │ │ │ Layout│ │ PgUp │ Vol- │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────────┬─────┴───┬───┴─────┬─┴───────┴───────┴───────┴───────┴───────┴─────┬─┴───────┼───────┴─┬──┬───────┼───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* │ │ │ │ Clear modifiers │ │ │▒▒│ Home │ PgDn │ End │
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* └─────────┴─────────┴─────────┴───────────────────────────────────────────────┴─────────┴─────────┴──┴───────┴───────┴───────┘
|
||||||
|
*/
|
||||||
|
[_FUNCTION] = LAYOUT_65_ansi_blocker(
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_END,
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, TG_NUMP, KC_MUTE,
|
||||||
|
KC_CAPS, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, MD_LOCK, _______, _______, _______, KC_VOLU,
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, OSL_LAY, _______, KC_PGUP, KC_VOLD,
|
||||||
|
_______, _______, _______, HK_COSL, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Number pad (FN-\ to toggle)
|
||||||
|
* ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬────────────┬───────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ / │ * │ - │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬─────────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ 7 │ 8 │ 9 │ + │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─────────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ 4 │ 5 │ 6 │ + │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────────────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴───────┬───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ 1 │ 2 │ 3 │ = │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────────┬─────┴───┬───┴─────┬─┴───────┴───────┴───────┴───────┴───────┴─────┬─┴───────┼───────┴─┬──┬───────┼───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* │ │ │ │ 0 │ . │ │▒▒│ │ │ │
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* └─────────┴─────────┴─────────┴───────────────────────────────────────────────┴─────────┴─────────┴──┴───────┴───────┴───────┘
|
||||||
|
*/
|
||||||
|
[_NUMPAD] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PEQL, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_P0, KC_PDOT, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Alternate layouts (FN-/ then one of [Q,C,D,W]) */
|
||||||
|
[_LAYOUTS] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, QWERTY, WORKMAN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, COLEMAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Template
|
||||||
|
* ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬────────────┬───────┐
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├───────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬─────────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├──────────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─┬─────┴─────────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├────────────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴──┬────┴───────┬───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
* ├─────────┬─────┴───┬───┴─────┬─┴───────┴───────┴───────┴───────┴───────┴─────┬─┴───────┼───────┴─┬──┬───────┼───────┼───────┤
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* │ │ │ │ │ │ │▒▒│ │ │ │
|
||||||
|
* └─────────┴─────────┴─────────┴───────────────────────────────────────────────┴─────────┴─────────┴──┴───────┴───────┴───────┘
|
||||||
|
[X] = LAYOUT_65_ansi_blocker(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT)
|
||||||
|
#define MODS_CTRL (get_mods() & MOD_MASK_CTRL)
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
static uint32_t key_timer;
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_QWERTY);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_COLEMAK);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_DVORAK);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case WORKMAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_single_persistent_default_layer(_WORKMAN);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case HK_COSL:
|
||||||
|
clear_keyboard();
|
||||||
|
reset_oneshot_layer();
|
||||||
|
return true;
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
14
keyboards/massdrop/alt/keymaps/favorable-mutation/README.md
Normal file
14
keyboards/massdrop/alt/keymaps/favorable-mutation/README.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
### Massdrop Alt Layout
|
||||||
|
|
||||||
|
This layout is for the [Massdrop Alt
|
||||||
|
Keyboard](https://drop.com/buy/massdrop-alt-mechanical-keyboard)
|
||||||
|
and targets MacOS machines.
|
||||||
|
|
||||||
|
Some features:
|
||||||
|
|
||||||
|
* Tap space for space, hold for cmd
|
||||||
|
* Tap caps lock for esc, hold for ctrl
|
||||||
|
* Dedicated key for entering default mode of [yabai window
|
||||||
|
manager](https://github.com/koekeishiya/yabai)
|
||||||
|
* Who needs arrow keys, anyways???
|
||||||
|
* Method for clearing all stuck-down mods
|
28
keyboards/massdrop/alt/keymaps/favorable-mutation/config.h
Normal file
28
keyboards/massdrop/alt/keymaps/favorable-mutation/config.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 Griffin Rademacher <contact@griffin-rademacher.info>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
// toggle one-shot layer keys after this many presses
|
||||||
|
#define ONESHOT_TAP_TOGGLE 3
|
||||||
|
|
||||||
|
// set time held before Mod-Tap key sends mod code
|
||||||
|
#define TAPPING_TERM 1000
|
||||||
|
|
||||||
|
// permissive hold: if holding down a Mod-Tap key while pressing another, it
|
||||||
|
// acts as a mod, even within the tapping term
|
||||||
|
#define PERMISSIVE_HOLD
|
147
keyboards/massdrop/alt/keymaps/favorable-mutation/keymap.c
Normal file
147
keyboards/massdrop/alt/keymaps/favorable-mutation/keymap.c
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
HK_COSL, //Clear held-down keys
|
||||||
|
};
|
||||||
|
|
||||||
|
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||||
|
#define CTL_ESC LCTL_T(KC_ESC)
|
||||||
|
#define TP_LSFT OSM(MOD_LSFT)
|
||||||
|
#define TP_RSFT OSM(MOD_RSFT)
|
||||||
|
#define TP_LALT OSM(MOD_LALT)
|
||||||
|
#define TP_RALT OSM(MOD_RALT)
|
||||||
|
#define KC_YBAI LCTL(KC_SPC)
|
||||||
|
#define GUI_SPC LGUI_T(KC_SPC)
|
||||||
|
#define KC_SPOT LGUI(KC_SPC)
|
||||||
|
|
||||||
|
//TODO default layer vim-like binds that work with WM, i to type??? this leads
|
||||||
|
//to layers of vim modes - what's the best way to deal with that?
|
||||||
|
//also need to deal with shift not working for other mods, add to shift layer
|
||||||
|
//most likely
|
||||||
|
//
|
||||||
|
//TODO tap/toggle for layers
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
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_SPOT,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
|
||||||
|
CTL_ESC, 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_MUTE,
|
||||||
|
TP_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_VOLU, KC_MPLY,
|
||||||
|
TP_LALT, TG(2), KC_YBAI, GUI_SPC, TP_RALT, TG(1), KC_MRWD, KC_VOLD, KC_MFFD
|
||||||
|
),
|
||||||
|
[1] = 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_DEL,
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_HOME,
|
||||||
|
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, KC_MRWD, KC_MFFD, _______, _______, _______, _______, KC_PGUP,
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, TG_NKRO, DBG_TOG, _______, _______, _______, _______, KC_UP, KC_PGDN,
|
||||||
|
_______, _______, _______, HK_COSL, _______, TG(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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_MASK_SHIFT)
|
||||||
|
#define MODS_CTRL (get_mods() & MOD_MASK_CTRL)
|
||||||
|
#define MODS_ALT (get_mods() & MOD_MASK_ALT)
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
static uint32_t key_timer;
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case HK_COSL:
|
||||||
|
clear_keyboard();
|
||||||
|
reset_oneshot_layer();
|
||||||
|
return true;
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
160
keyboards/massdrop/alt/keymaps/frederik/keymap.c
Normal file
160
keyboards/massdrop/alt/keymaps/frederik/keymap.c
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
#include "frederik.h"
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
#define LAYOUT_dropALT_base( \
|
||||||
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||||
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
|
) \
|
||||||
|
LAYOUT_wrapper( \
|
||||||
|
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL , \
|
||||||
|
KC_TAB , K01 , K02 , K03 , K04 , K05 , K06 , K07 , K08 , K09 , K0A , KC_LBRC, KC_RBRC, KC_BSLS, RGB_TOG, \
|
||||||
|
KC_CAPS, K11 , K12 , K13 , K14 , K15 , K16 , K17 , K18 , K19 , K1A , KC_QUOT, KC_ENT , KC_HOME, \
|
||||||
|
KC_LSFT, K21 , K22 , K23 , K24 , K25 , K26 , K27 , K28 , K29 , K2A , KC_RSFT, KC_UP , KC_END , \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, LT(_NAV, KC_SPC), KC_RALT, KC_LEAD, KC_LEFT, KC_DOWN, KC_RIGHT \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
/* Re-pass though to allow templates to be used */
|
||||||
|
#define LAYOUT_dropALT_base_wrapper(...) LAYOUT_dropALT_base(__VA_ARGS__)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_QWERTY] = LAYOUT_dropALT_base_wrapper(
|
||||||
|
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
|
||||||
|
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
|
||||||
|
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
|
||||||
|
),
|
||||||
|
|
||||||
|
[_WORKMAN] = LAYOUT_dropALT_base_wrapper(
|
||||||
|
_________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
|
||||||
|
_________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
|
||||||
|
_________________WORKMAN_L3________________, _________________WORKMAN_R3________________
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT_dropALT_base_wrapper(
|
||||||
|
_________________LOWER_L1__________________, _________________LOWER_R1__________________,
|
||||||
|
_________________LOWER_L2__________________, _________________LOWER_R2__________________,
|
||||||
|
_________________LOWER_L3__________________, _________________LOWER_R3__________________
|
||||||
|
),
|
||||||
|
[_RAISE] = LAYOUT_dropALT_base_wrapper(
|
||||||
|
_________________RAISE_L1__________________, _________________RAISE_R1__________________,
|
||||||
|
_________________RAISE_L2__________________, _________________RAISE_R2__________________,
|
||||||
|
_________________RAISE_L3__________________, _________________RAISE_R3__________________
|
||||||
|
),
|
||||||
|
[_ADJUST] = LAYOUT_dropALT_base_wrapper(
|
||||||
|
_________________ADJUST_L1_________________, _________________ADJUST_R1_________________,
|
||||||
|
_________________ADJUST_L2_________________, _________________ADJUST_R2_________________,
|
||||||
|
_________________ADJUST_L3_________________, _________________ADJUST_R3_________________
|
||||||
|
),
|
||||||
|
[_NAV] = LAYOUT_dropALT_base_wrapper(
|
||||||
|
___________________NAV_L1__________________, ___________________NAV_R1__________________,
|
||||||
|
___________________NAV_L2__________________, ___________________NAV_R2__________________,
|
||||||
|
___________________NAV_L3__________________, ___________________NAV_R3__________________
|
||||||
|
),
|
||||||
|
// [_LAYERINDEX] = LAYOUT_wrapper(
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// ),
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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
keyboards/massdrop/alt/keymaps/frederik/rules.mk
Normal file
1
keyboards/massdrop/alt/keymaps/frederik/rules.mk
Normal file
@ -0,0 +1 @@
|
|||||||
|
LEADER_ENABLE = yes
|
125
keyboards/massdrop/alt/keymaps/mac/keymap.c
Normal file
125
keyboards/massdrop/alt/keymaps/mac/keymap.c
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
_______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
_______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
}
|
191
keyboards/massdrop/alt/keymaps/mac_md/keymap.c
Normal file
191
keyboards/massdrop/alt/keymaps/mac_md/keymap.c
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
|
||||||
|
_______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
|
||||||
|
),
|
||||||
|
/*
|
||||||
|
[X] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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 }
|
||||||
|
};
|
2
keyboards/massdrop/alt/keymaps/mac_md/rules.mk
Normal file
2
keyboards/massdrop/alt/keymaps/mac_md/rules.mk
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# This keymap requires Massdrop Configurator support
|
||||||
|
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
5
keyboards/massdrop/alt/keymaps/reywood/README.md
Normal file
5
keyboards/massdrop/alt/keymaps/reywood/README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# 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.
|
191
keyboards/massdrop/alt/keymaps/reywood/keymap.c
Normal file
191
keyboards/massdrop/alt/keymaps/reywood/keymap.c
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include "rgb_matrix_user.h"
|
||||||
|
|
||||||
|
enum alt_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
|
||||||
|
};
|
||||||
|
|
||||||
|
#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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
[1] = LAYOUT(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
|
||||||
|
_______, _______, _______, KC_UP, _______, _______, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
|
||||||
|
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, MD_BOOT, TG_NKRO, _______, _______, _______, _______, _______, KC_VOLU, _______, \
|
||||||
|
_______, _______, _______, KC_MPLY, MO(2), _______, KC_MRWD, KC_VOLD, KC_MFFD \
|
||||||
|
),
|
||||||
|
[2] = LAYOUT(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, L_T_MD, L_T_ONF, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
rgb_matrix_record_key_press(record);
|
||||||
|
|
||||||
|
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;
|
||||||
|
default:
|
||||||
|
return true; //Process all other keycodes normally
|
||||||
|
}
|
||||||
|
}
|
193
keyboards/massdrop/alt/keymaps/reywood/rgb_matrix_user.c
Normal file
193
keyboards/massdrop/alt/keymaps/reywood/rgb_matrix_user.c
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
#include "quantum.h"
|
||||||
|
#include "led_matrix.h"
|
||||||
|
|
||||||
|
extern issi3733_led_t *led_cur;
|
||||||
|
extern uint8_t led_per_run;
|
||||||
|
extern issi3733_led_t *lede;
|
||||||
|
extern issi3733_led_t led_map[];
|
||||||
|
|
||||||
|
static uint16_t last_boost_update;
|
||||||
|
static uint8_t led_boosts[ISSI3733_LED_COUNT];
|
||||||
|
static uint8_t led_boost_index;
|
||||||
|
static uint8_t led_cur_index;
|
||||||
|
|
||||||
|
#define LED_BOOST_REFRESH_INTERVAL_IN_MS 40
|
||||||
|
#define LED_BOOST_DECAY 0.7
|
||||||
|
#define LED_BOOST_PROPAGATE 0.5
|
||||||
|
#define LED_BOOST_PEAK 100
|
||||||
|
|
||||||
|
#define MIN_RGB 0x050008
|
||||||
|
#define MIN_R (MIN_RGB >> 16 & 0xff)
|
||||||
|
#define MIN_G (MIN_RGB >> 8 & 0xff)
|
||||||
|
#define MIN_B (MIN_RGB & 0xff)
|
||||||
|
|
||||||
|
#define MAX_RGB 0xc26eff
|
||||||
|
#define MAX_R (MAX_RGB >> 16 & 0xff)
|
||||||
|
#define MAX_G (MAX_RGB >> 8 & 0xff)
|
||||||
|
#define MAX_B (MAX_RGB & 0xff)
|
||||||
|
|
||||||
|
#define UNDERGLOW_RGB 0x4f002e
|
||||||
|
#define UNDERGLOW_R (UNDERGLOW_RGB >> 16 & 0xff)
|
||||||
|
#define UNDERGLOW_G (UNDERGLOW_RGB >> 8 & 0xff)
|
||||||
|
#define UNDERGLOW_B (UNDERGLOW_RGB & 0xff)
|
||||||
|
|
||||||
|
#define UNDERGLOW_SCAN_CODE 255
|
||||||
|
|
||||||
|
#define max(a, b) (((a) > (b)) ? (a) : (b))
|
||||||
|
|
||||||
|
#define __ -1
|
||||||
|
static const uint8_t KEY_TO_LED_MAP[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
{ 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},
|
||||||
|
};
|
||||||
|
|
||||||
|
#define KEY_LED_COUNT 67
|
||||||
|
#define KP(c, r) { .col = c, .row = r } // shorthand for keypos_t
|
||||||
|
static const keypos_t LED_TO_KEY_MAP[KEY_LED_COUNT] = {
|
||||||
|
KP(0, 0), KP(1, 0), KP(2, 0), KP(3, 0), KP(4, 0), KP(5, 0), KP(6, 0), KP(7, 0), KP(8, 0), KP(9, 0), KP(10, 0), KP(11, 0), KP(12, 0), KP(13, 0), KP(14, 0),
|
||||||
|
KP(0, 1), KP(1, 1), KP(2, 1), KP(3, 1), KP(4, 1), KP(5, 1), KP(6, 1), KP(7, 1), KP(8, 1), KP(9, 1), KP(10, 1), KP(11, 1), KP(12, 1), KP(13, 1), KP(14, 1),
|
||||||
|
KP(0, 2), KP(1, 2), KP(2, 2), KP(3, 2), KP(4, 2), KP(5, 2), KP(6, 2), KP(7, 2), KP(8, 2), KP(9, 2), KP(10, 2), KP(11, 2), KP(13, 2), KP(14, 2),
|
||||||
|
KP(0, 3), KP(2, 3), KP(3, 3), KP(4, 3), KP(5, 3), KP(6, 3), KP(7, 3), KP(8, 3), KP(9, 3), KP(10, 3), KP(11, 3), KP(12, 3), KP(13, 3), KP(14, 3),
|
||||||
|
KP(0, 4), KP(1, 4), KP(2, 4), KP(6, 4), KP(10, 4), KP(11, 4), KP(12, 4), KP(13, 4), KP(14, 4),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void update_led_boosts(void);
|
||||||
|
static void update_led_cur_rgb_values(void);
|
||||||
|
static void set_nearest_led_to_max(uint8_t col, uint8_t row);
|
||||||
|
static uint8_t calculate_new_color_component_value(uint8_t max, uint8_t min);
|
||||||
|
static void calculate_new_led_boosts(uint8_t new_led_boosts[]);
|
||||||
|
static uint8_t calculate_new_led_boost_at(int index);
|
||||||
|
static uint8_t get_propagated_boost_from_neighbors(int led_position);
|
||||||
|
static uint8_t get_led_boost_at_keypos(uint8_t row, uint8_t col);
|
||||||
|
static void set_new_led_boosts(uint8_t* new_led_boosts);
|
||||||
|
static uint8_t map_key_position_to_led_index(uint8_t col, uint8_t row);
|
||||||
|
|
||||||
|
|
||||||
|
void rgb_matrix_init_user(void) {
|
||||||
|
for (int i = 0; i < ISSI3733_LED_COUNT; i++) {
|
||||||
|
led_boosts[i] = 0;
|
||||||
|
}
|
||||||
|
last_boost_update = timer_read();
|
||||||
|
led_boost_index = 0;
|
||||||
|
led_cur_index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_matrix_run(void) {
|
||||||
|
uint8_t led_this_run = 0;
|
||||||
|
|
||||||
|
if (led_cur == 0) { //Denotes start of new processing cycle in the case of chunked processing
|
||||||
|
led_cur = led_map;
|
||||||
|
led_cur_index = 0;
|
||||||
|
}
|
||||||
|
update_led_boosts();
|
||||||
|
|
||||||
|
while (led_cur < lede && led_this_run < led_per_run) {
|
||||||
|
update_led_cur_rgb_values();
|
||||||
|
|
||||||
|
led_cur++;
|
||||||
|
led_cur_index++;
|
||||||
|
led_this_run++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgb_matrix_record_key_press(keyrecord_t *record) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
keypos_t key = record->event.key;
|
||||||
|
set_nearest_led_to_max(key.col, key.row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void update_led_boosts(void) {
|
||||||
|
if (timer_elapsed(last_boost_update) > LED_BOOST_REFRESH_INTERVAL_IN_MS) {
|
||||||
|
last_boost_update = timer_read();
|
||||||
|
|
||||||
|
uint8_t new_led_boosts[ISSI3733_LED_COUNT];
|
||||||
|
calculate_new_led_boosts(new_led_boosts);
|
||||||
|
set_new_led_boosts(new_led_boosts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void update_led_cur_rgb_values(void) {
|
||||||
|
if (led_cur->scan == UNDERGLOW_SCAN_CODE) {
|
||||||
|
*led_cur->rgb.r = UNDERGLOW_R;
|
||||||
|
*led_cur->rgb.g = UNDERGLOW_G;
|
||||||
|
*led_cur->rgb.b = UNDERGLOW_B;
|
||||||
|
} else {
|
||||||
|
*led_cur->rgb.r = calculate_new_color_component_value(MAX_R, MIN_R);
|
||||||
|
*led_cur->rgb.g = calculate_new_color_component_value(MAX_G, MIN_G);
|
||||||
|
*led_cur->rgb.b = calculate_new_color_component_value(MAX_B, MIN_B);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_nearest_led_to_max(uint8_t col, uint8_t row) {
|
||||||
|
uint8_t led_index = map_key_position_to_led_index(col, row);
|
||||||
|
if (led_index >= 0 && led_index < ISSI3733_LED_COUNT) {
|
||||||
|
led_boosts[led_index] = LED_BOOST_PEAK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t calculate_new_color_component_value(uint8_t max, uint8_t min) {
|
||||||
|
uint8_t current_boost = led_boosts[led_cur_index];
|
||||||
|
return (float)(max - min) * current_boost / LED_BOOST_PEAK + min;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void calculate_new_led_boosts(uint8_t new_led_boosts[]) {
|
||||||
|
for (int i = 0; i < ISSI3733_LED_COUNT; i++) {
|
||||||
|
new_led_boosts[i] = calculate_new_led_boost_at(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t calculate_new_led_boost_at(int index) {
|
||||||
|
uint8_t decayed_boost = led_boosts[index] * LED_BOOST_DECAY;
|
||||||
|
uint8_t propagated_boost = get_propagated_boost_from_neighbors(index);
|
||||||
|
uint8_t new_boost = (propagated_boost > decayed_boost) ? propagated_boost : decayed_boost;
|
||||||
|
if (new_boost > LED_BOOST_PEAK) {
|
||||||
|
new_boost = LED_BOOST_PEAK;
|
||||||
|
}
|
||||||
|
return new_boost;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t get_propagated_boost_from_neighbors(int led_position) {
|
||||||
|
if (led_position < 0 || led_position >= KEY_LED_COUNT) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
keypos_t led_keypos = LED_TO_KEY_MAP[led_position];
|
||||||
|
uint8_t top_boost = get_led_boost_at_keypos(led_keypos.row - 1, led_keypos.col);
|
||||||
|
uint8_t bottom_boost = get_led_boost_at_keypos(led_keypos.row + 1, led_keypos.col);
|
||||||
|
uint8_t left_boost = get_led_boost_at_keypos(led_keypos.row, led_keypos.col - 1);
|
||||||
|
uint8_t right_boost = get_led_boost_at_keypos(led_keypos.row, led_keypos.col + 1);
|
||||||
|
uint8_t max_boost = max(max(top_boost, bottom_boost), max(left_boost, right_boost));
|
||||||
|
if (max_boost > LED_BOOST_PEAK) {
|
||||||
|
max_boost = LED_BOOST_PEAK;
|
||||||
|
}
|
||||||
|
return max_boost * LED_BOOST_PROPAGATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t get_led_boost_at_keypos(uint8_t row, uint8_t col) {
|
||||||
|
if (row < 0 || row >= MATRIX_ROWS || col < 0 || col >= MATRIX_COLS) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
uint8_t led_index = KEY_TO_LED_MAP[row][col];
|
||||||
|
if (led_index < 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return led_boosts[led_index];
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_new_led_boosts(uint8_t* new_led_boosts) {
|
||||||
|
for (int i = 0; i < ISSI3733_LED_COUNT; i++) {
|
||||||
|
led_boosts[i] = new_led_boosts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t map_key_position_to_led_index(uint8_t col, uint8_t row) {
|
||||||
|
if (row >= 0 && row < MATRIX_ROWS && col >= 0 && col < MATRIX_COLS) {
|
||||||
|
return KEY_TO_LED_MAP[row][col];
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
3
keyboards/massdrop/alt/keymaps/reywood/rgb_matrix_user.h
Normal file
3
keyboards/massdrop/alt/keymaps/reywood/rgb_matrix_user.h
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
void rgb_matrix_record_key_press(keyrecord_t *record);
|
35
keyboards/massdrop/alt/keymaps/reywood/rules.mk
Normal file
35
keyboards/massdrop/alt/keymaps/reywood/rules.mk
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# project specific files
|
||||||
|
SRC += rgb_matrix_user.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
|
||||||
|
|
||||||
|
# This keymap requires Massdrop Configurator support
|
||||||
|
OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
|
23
keyboards/massdrop/alt/keymaps/xulkal/config.h
Normal file
23
keyboards/massdrop/alt/keymaps/xulkal/config.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
This is the c configuration file for the keymap
|
||||||
|
|
||||||
|
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||||
|
Copyright 2015 Jack Humbert
|
||||||
|
|
||||||
|
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 RGB_MATRIX_TOG_LAYERS
|
79
keyboards/massdrop/alt/keymaps/xulkal/keymap.c
Normal file
79
keyboards/massdrop/alt/keymaps/xulkal/keymap.c
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
#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
|
||||||
|
};
|
||||||
|
|
||||||
|
#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_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_HOME, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCPO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LOWER, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
|
||||||
|
#ifndef GAMELAYER_DISABLE
|
||||||
|
[_GAME] = LAYOUT(
|
||||||
|
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LOWER, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||||
|
),
|
||||||
|
#endif
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
_______, RGB_RMOD,RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, _______, \
|
||||||
|
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, GAME, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______, _______, _______, _______, 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)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
1
keyboards/massdrop/alt/keymaps/xulkal/rules.mk
Normal file
1
keyboards/massdrop/alt/keymaps/xulkal/rules.mk
Normal file
@ -0,0 +1 @@
|
|||||||
|
DISABLE_LTO = yes
|
176
keyboards/massdrop/alt/matrix.c
Normal file
176
keyboards/massdrop/alt/matrix.c
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
/*
|
||||||
|
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 "alt.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);
|
||||||
|
}
|
77
keyboards/massdrop/alt/matrix.h
Normal file
77
keyboards/massdrop/alt/matrix.h
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
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
|
20
keyboards/massdrop/alt/readme.md
Normal file
20
keyboards/massdrop/alt/readme.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# ALT
|
||||||
|
|
||||||
|
![ALT](https://massdrop-s3.imgix.net/product-images/alt-keyboard/FP/WNxwR19gTua3nxiiQWP3_AI7B3311%20copy%20page.jpg?auto=format&fm=jpg&fit=max&w=700&h=467&dpr=1&q=80)
|
||||||
|
|
||||||
|
The Massdrop ALT is a 65% 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. ALT 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 ALT Mechanical Keyboard](https://www.massdrop.com/buy/massdrop-alt-mechanical-keyboard)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make massdrop/alt: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).
|
38
keyboards/massdrop/alt/rules.mk
Normal file
38
keyboards/massdrop/alt/rules.mk
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# 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
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
LAYOUTS = LAYOUT_dropALT_base_wrapper
|
Loading…
Reference in New Issue
Block a user