[Keyboard] Add Atlantis PS17 (#19952)
parent
3eb04fee87
commit
54dca8cbff
@ -0,0 +1,53 @@ |
|||||||
|
// Copyright 2023 mjbogusz (@mjbogusz)
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once |
||||||
|
|
||||||
|
/* Indicator LEDs */ |
||||||
|
#define LED_INDICATOR_0_PIN D0 |
||||||
|
#define LED_INDICATOR_1_PIN D5 |
||||||
|
#define LED_INDICATOR_2_PIN D4 |
||||||
|
|
||||||
|
/* RGB matrix */ |
||||||
|
#define RGB_DI_PIN B7 |
||||||
|
#define RGB_MATRIX_LED_COUNT 28 |
||||||
|
#define RGB_MATRIX_KEYPRESSES |
||||||
|
#define RGB_DISABLE_WHEN_USB_SUSPENDED |
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE |
||||||
|
// RGB Matrix Animation modes. Explicitly enabled
|
||||||
|
// For full list of effects, see:
|
||||||
|
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
||||||
|
#define ENABLE_RGB_MATRIX_SOLID_COLOR |
||||||
|
// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||||
|
// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||||
|
// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||||
|
// #define ENABLE_RGB_MATRIX_BREATHING
|
||||||
|
// #define ENABLE_RGB_MATRIX_BAND_SAT
|
||||||
|
// #define ENABLE_RGB_MATRIX_BAND_VAL
|
||||||
|
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||||
|
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||||
|
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||||
|
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||||
|
#define ENABLE_RGB_MATRIX_CYCLE_ALL |
||||||
|
// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||||
|
// #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||||
|
// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||||
|
// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||||
|
// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||||
|
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL |
||||||
|
// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||||
|
// #define ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||||
|
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON |
||||||
|
// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||||
|
// #define ENABLE_RGB_MATRIX_RAINDROPS
|
||||||
|
// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||||
|
// #define ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||||
|
// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
|
||||||
|
// #define ENABLE_RGB_MATRIX_HUE_WAVE
|
||||||
|
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||||
|
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
||||||
|
#define ENABLE_RGB_MATRIX_PIXEL_RAIN |
||||||
|
// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||||
|
// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||||
|
#endif |
@ -0,0 +1,99 @@ |
|||||||
|
{ |
||||||
|
"manufacturer": "Atlantis", |
||||||
|
"keyboard_name": "PS17", |
||||||
|
"maintainer": "mjbogusz", |
||||||
|
"url": "https://qmk.fm/keyboards/", |
||||||
|
"processor": "atmega32u4", |
||||||
|
"bootloader": "atmel-dfu", |
||||||
|
"bootloader_instructions": "To reset the board into bootloader mode, tap the Reset switch mounted on the bottom of the PCB.", |
||||||
|
"usb": { |
||||||
|
"device_version": "1.0.0", |
||||||
|
"pid": "0x414B", |
||||||
|
"vid": "0x0015" |
||||||
|
}, |
||||||
|
"features": { |
||||||
|
"bootmagic": false, |
||||||
|
"command": false, |
||||||
|
"console": false, |
||||||
|
"extrakey": true, |
||||||
|
"mousekey": true, |
||||||
|
"nkro": true, |
||||||
|
"encoder": true, |
||||||
|
"rgb_matrix": true |
||||||
|
}, |
||||||
|
"diode_direction": "COL2ROW", |
||||||
|
"matrix_pins": { |
||||||
|
"cols": ["F6", "F7", "D3", "D6"], |
||||||
|
"rows": ["F0", "B4", "B5", "B6", "C6", "C7", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN"] |
||||||
|
}, |
||||||
|
"encoder": { |
||||||
|
"rotary": [{ |
||||||
|
"pin_a": "D2", |
||||||
|
"pin_b": "D1" |
||||||
|
}] |
||||||
|
}, |
||||||
|
"layouts": { |
||||||
|
"LAYOUT": { |
||||||
|
"layout": [ |
||||||
|
{ "matrix": [0, 1], "x": 0, "y": 0}, |
||||||
|
|
||||||
|
{ "matrix": [1, 0], "x": 0, "y": 1.5}, |
||||||
|
{ "matrix": [1, 1], "x": 1, "y": 1.5}, |
||||||
|
{ "matrix": [1, 2], "x": 2, "y": 1.5}, |
||||||
|
{ "matrix": [1, 3], "x": 3, "y": 1.5}, |
||||||
|
|
||||||
|
{ "matrix": [2, 0], "x": 0, "y": 2.5}, |
||||||
|
{ "matrix": [2, 1], "x": 1, "y": 2.5}, |
||||||
|
{ "matrix": [2, 2], "x": 2, "y": 2.5}, |
||||||
|
{ "matrix": [2, 3], "x": 3, "y": 2.5, "h": 2}, |
||||||
|
|
||||||
|
{ "matrix": [3, 0], "x": 0, "y": 3.5}, |
||||||
|
{ "matrix": [3, 1], "x": 1, "y": 3.5}, |
||||||
|
{ "matrix": [3, 2], "x": 2, "y": 3.5}, |
||||||
|
|
||||||
|
{ "matrix": [4, 0], "x": 0, "y": 4.5}, |
||||||
|
{ "matrix": [4, 1], "x": 1, "y": 4.5}, |
||||||
|
{ "matrix": [4, 2], "x": 2, "y": 4.5}, |
||||||
|
{ "matrix": [4, 3], "x": 3, "y": 4.5, "h": 2}, |
||||||
|
|
||||||
|
{ "matrix": [5, 0], "x": 0, "y": 5.5, "w": 2}, |
||||||
|
{ "matrix": [5, 2], "x": 2, "y": 5.5} |
||||||
|
] |
||||||
|
} |
||||||
|
}, |
||||||
|
"rgb_matrix": { |
||||||
|
"driver": "WS2812", |
||||||
|
"center_point": [126, 126], |
||||||
|
"layout": [ |
||||||
|
{ "flags": 4, "matrix": [1, 0], "x": 74, "y": 165 }, |
||||||
|
{ "flags": 4, "matrix": [1, 1], "x": 108, "y": 165 }, |
||||||
|
{ "flags": 4, "matrix": [1, 2], "x": 144, "y": 165 }, |
||||||
|
{ "flags": 4, "matrix": [1, 3], "x": 179, "y": 165 }, |
||||||
|
{ "flags": 4, "matrix": [2, 0], "x": 74, "y": 129 }, |
||||||
|
{ "flags": 4, "matrix": [2, 1], "x": 109, "y": 129 }, |
||||||
|
{ "flags": 4, "matrix": [2, 2], "x": 143, "y": 129 }, |
||||||
|
{ "flags": 4, "matrix": [2, 3], "x": 188, "y": 121 }, |
||||||
|
{ "flags": 4, "matrix": [3, 0], "x": 74, "y": 95 }, |
||||||
|
{ "flags": 4, "matrix": [3, 1], "x": 109, "y": 95 }, |
||||||
|
{ "flags": 4, "matrix": [3, 2], "x": 143, "y": 95 }, |
||||||
|
{ "flags": 4, "matrix": [4, 0], "x": 73, "y": 60 }, |
||||||
|
{ "flags": 4, "matrix": [4, 1], "x": 109, "y": 60 }, |
||||||
|
{ "flags": 4, "matrix": [4, 2], "x": 144, "y": 60 }, |
||||||
|
{ "flags": 4, "matrix": [4, 3], "x": 188, "y": 51 }, |
||||||
|
{ "flags": 4, "matrix": [5, 0], "x": 91, "y": 25 }, |
||||||
|
{ "flags": 4, "matrix": [5, 2], "x": 144, "y": 25 }, |
||||||
|
|
||||||
|
{ "flags": 2, "x": 61, "y": 26}, |
||||||
|
{ "flags": 2, "x": 61, "y": 88}, |
||||||
|
{ "flags": 2, "x": 61, "y": 158}, |
||||||
|
{ "flags": 2, "x": 61, "y": 197}, |
||||||
|
{ "flags": 2, "x": 61, "y": 232}, |
||||||
|
{ "flags": 2, "x": 192, "y": 232}, |
||||||
|
{ "flags": 2, "x": 192, "y": 196}, |
||||||
|
{ "flags": 2, "x": 192, "y": 158}, |
||||||
|
{ "flags": 2, "x": 192, "y": 87}, |
||||||
|
{ "flags": 2, "x": 183, "y": 26}, |
||||||
|
{ "flags": 2, "x": 127, "y": 24} |
||||||
|
] |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
// Copyright 2023 mjbogusz (@mjbogusz)
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H |
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
||||||
|
// Default layer: numpad + volume control
|
||||||
|
[0] = LAYOUT( |
||||||
|
KC_MUTE, |
||||||
|
TO(1), KC_PSLS, KC_PAST, KC_PMNS, |
||||||
|
KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, |
||||||
|
KC_KP_4, KC_KP_5, KC_KP_6, |
||||||
|
KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, |
||||||
|
KC_KP_0, KC_PDOT |
||||||
|
), |
||||||
|
[1] = LAYOUT( |
||||||
|
RGB_MOD, |
||||||
|
TO(2), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
[2] = LAYOUT( |
||||||
|
RGB_MOD, |
||||||
|
TO(3), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
[3] = LAYOUT( |
||||||
|
RGB_MOD, |
||||||
|
TO(0), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
}; |
||||||
|
|
||||||
|
#if defined(ENCODER_MAP_ENABLE) |
||||||
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { |
||||||
|
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, |
||||||
|
[1] = { ENCODER_CCW_CW(RGB_HUI, RGB_HUD) }, |
||||||
|
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, |
||||||
|
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, |
||||||
|
}; |
||||||
|
#endif |
@ -0,0 +1,49 @@ |
|||||||
|
// Copyright 2023 mjbogusz (@mjbogusz)
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H |
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
||||||
|
// Default layer: numpad + volume control
|
||||||
|
[0] = LAYOUT( |
||||||
|
KC_MUTE, |
||||||
|
TO(1), KC_PSLS, KC_PAST, KC_PMNS, |
||||||
|
KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, |
||||||
|
KC_KP_4, KC_KP_5, KC_KP_6, |
||||||
|
KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, |
||||||
|
KC_KP_0, KC_PDOT |
||||||
|
), |
||||||
|
[1] = LAYOUT( |
||||||
|
KC_MUTE, |
||||||
|
TO(2), XXXXXXX, XXXXXXX, KC_VOLD, |
||||||
|
XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, |
||||||
|
KC_MRWD, KC_MPLY, KC_MFFD, |
||||||
|
KC_MPRV, KC_MSTP, KC_MNXT, KC_MSEL, |
||||||
|
XXXXXXX, XXXXXXX |
||||||
|
), |
||||||
|
[2] = LAYOUT( |
||||||
|
RGB_MOD, |
||||||
|
TO(3), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
[3] = LAYOUT( |
||||||
|
KC_TRNS, |
||||||
|
TO(0), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
}; |
||||||
|
|
||||||
|
#if defined(ENCODER_MAP_ENABLE) |
||||||
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { |
||||||
|
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, |
||||||
|
[1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, |
||||||
|
[2] = { ENCODER_CCW_CW(RGB_HUI, RGB_HUD) }, |
||||||
|
[3] = { ENCODER_CCW_CW(RGB_HUI, RGB_HUD) }, |
||||||
|
}; |
||||||
|
#endif |
@ -0,0 +1 @@ |
|||||||
|
ENCODER_MAP_ENABLE = yes
|
@ -0,0 +1,49 @@ |
|||||||
|
// Copyright 2023 mjbogusz (@mjbogusz)
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H |
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
||||||
|
// Default layer: numpad + volume control
|
||||||
|
[0] = LAYOUT( |
||||||
|
KC_MUTE, |
||||||
|
TO(1), KC_PSLS, KC_PAST, KC_PMNS, |
||||||
|
KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, |
||||||
|
KC_KP_4, KC_KP_5, KC_KP_6, |
||||||
|
KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, |
||||||
|
KC_KP_0, KC_PDOT |
||||||
|
), |
||||||
|
[1] = LAYOUT( |
||||||
|
RGB_MOD, |
||||||
|
TO(2), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
[2] = LAYOUT( |
||||||
|
KC_TRNS, |
||||||
|
TO(3), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
[3] = LAYOUT( |
||||||
|
KC_TRNS, |
||||||
|
TO(0), KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, |
||||||
|
KC_TRNS, KC_TRNS |
||||||
|
), |
||||||
|
}; |
||||||
|
|
||||||
|
#if defined(ENCODER_MAP_ENABLE) |
||||||
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { |
||||||
|
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, |
||||||
|
[1] = { ENCODER_CCW_CW(RGB_HUI, RGB_HUD) }, |
||||||
|
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, |
||||||
|
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, |
||||||
|
}; |
||||||
|
#endif |
@ -0,0 +1,2 @@ |
|||||||
|
ENCODER_MAP_ENABLE = yes
|
||||||
|
VIA_ENABLE = yes
|
@ -0,0 +1,53 @@ |
|||||||
|
// Copyright 2023 mjbogusz (@mjbogusz)
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "quantum.h" |
||||||
|
|
||||||
|
layer_state_t layer_state_set_kb(layer_state_t state) { |
||||||
|
/* Display current layer using indicator LEDs */ |
||||||
|
writePin(LED_INDICATOR_0_PIN, !IS_LAYER_ON_STATE(state, 1)); |
||||||
|
writePin(LED_INDICATOR_1_PIN, !IS_LAYER_ON_STATE(state, 2)); |
||||||
|
writePin(LED_INDICATOR_2_PIN, !IS_LAYER_ON_STATE(state, 3)); |
||||||
|
return layer_state_set_user(state); |
||||||
|
} |
||||||
|
|
||||||
|
void keyboard_pre_init_kb(void) { |
||||||
|
/* Set indicator LEDs as outputs */ |
||||||
|
setPinOutput(LED_INDICATOR_0_PIN); |
||||||
|
setPinOutput(LED_INDICATOR_1_PIN); |
||||||
|
setPinOutput(LED_INDICATOR_2_PIN); |
||||||
|
keyboard_pre_init_user(); |
||||||
|
} |
||||||
|
|
||||||
|
#if defined(ENCODER_ENABLE) |
||||||
|
bool encoder_update_kb(uint8_t index, bool clockwise) { |
||||||
|
if (!encoder_update_user(index, clockwise)) { |
||||||
|
/* Don't process further events if user function exists and returns false */ |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/* Ignore index - only one encoder on this board */ |
||||||
|
if (clockwise) { |
||||||
|
tap_code_delay(KC_VOLU, 10); |
||||||
|
} else { |
||||||
|
tap_code_delay(KC_VOLD, 10); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE |
||||||
|
void suspend_power_down_kb(void) { |
||||||
|
/* Disable indicator LEDs when going to sleep */ |
||||||
|
writePin(LED_INDICATOR_0_PIN, 1); |
||||||
|
writePin(LED_INDICATOR_1_PIN, 1); |
||||||
|
writePin(LED_INDICATOR_2_PIN, 1); |
||||||
|
suspend_power_down_user(); |
||||||
|
} |
||||||
|
|
||||||
|
void suspend_wakeup_init_kb(void) { |
||||||
|
/* Restore indicator LEDs state */ |
||||||
|
layer_state_set_kb(layer_state); |
||||||
|
suspend_wakeup_init_user(); |
||||||
|
} |
||||||
|
#endif |
@ -0,0 +1,34 @@ |
|||||||
|
# atlantis/ps17 |
||||||
|
|
||||||
|
 |
||||||
|
|
||||||
|
A 17-key hot-swap numpad/macropad with an EC11 clickable rotary encoder (knob) and RGB backlight and underglow |
||||||
|
|
||||||
|
* Keyboard Maintainer: [mjbogusz](https://github.com/mjbogusz) |
||||||
|
* Hardware Supported: Atlantis PS17 |
||||||
|
* Hardware Availability: [AliExpress, SpiderIsland Tech Co., Ltd Store](https://www.aliexpress.com/item/1005003058226085.html) |
||||||
|
* Additional photos: |
||||||
|
* [Full size](https://i.imgur.com/5qGIv2K.jpg) |
||||||
|
* [PCB front](https://i.imgur.com/OmGBqvC.jpg) |
||||||
|
* [PCB back](https://i.imgur.com/rvoZZ5f.jpg) |
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment): |
||||||
|
|
||||||
|
make atlantis/ps17:default |
||||||
|
|
||||||
|
Flashing example for this keyboard: |
||||||
|
|
||||||
|
make atlantis/ps17:default:flash |
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). |
||||||
|
|
||||||
|
## Bootloader |
||||||
|
|
||||||
|
Enter the bootloader in 3 ways: |
||||||
|
|
||||||
|
* **Physical reset button**: Briefly press the button on the back of the PCB |
||||||
|
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available |
||||||
|
|
||||||
|
## Attributions |
||||||
|
|
||||||
|
Pin mapping and LED physical layout based on [Solartempest work](https://github.com/solartempest/qmk_firmware/tree/master/keyboards/solartempest/ps17) |
@ -0,0 +1 @@ |
|||||||
|
LTO_ENABLE = yes
|
Loading…
Reference in new issue