4ca68345eb
into 1fa84ea83c
@ -0,0 +1,20 @@ | |||
// Copyright 2023 Ming-Gih Lam (@dcpedit) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#pragma once | |||
/* LCD config */ | |||
#define LCD_DC_PIN GP16 // data/command | |||
#define LCD_CS_PIN GP17 // chip select | |||
#define LCD_RST_PIN GP14 // reset | |||
#define BACKLIGHT_PWM_DRIVER PWMD7 | |||
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B | |||
/* SPI pins */ | |||
#define SPI_DRIVER SPID0 | |||
#define SPI_SCK_PIN GP18 | |||
#define SPI_MOSI_PIN GP19 | |||
#define SPI_MISO_PIN NO_PIN | |||
#define QUANTUM_PAINTER_DISPLAY_TIMEOUT 0 // milliseconds | |||
#define QUANTUM_PAINTER_SUPPORTS_256_PALETTE TRUE |
@ -0,0 +1,15 @@ | |||
// Copyright 2023 Ming-Gih Lam (@dcpedit) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#pragma once | |||
#include_next <halconf.h> | |||
#undef HAL_USE_SPI | |||
#define HAL_USE_SPI TRUE | |||
#undef SPI_USE_WAIT | |||
#define SPI_USE_WAIT TRUE | |||
#undef HAL_USE_PWM | |||
#define HAL_USE_PWM TRUE |
@ -0,0 +1,11 @@ | |||
// Copyright 2023 QMK -- generated source code only, image retains original copyright | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
// This file was auto-generated by `qmk painter-convert-graphics -i animated.gif -f pal256` | |||
#pragma once | |||
#include <qp.h> | |||
extern const uint32_t gfx_animated_length; | |||
extern const uint8_t gfx_animated[43015]; |
@ -0,0 +1,11 @@ | |||
// Copyright 2023 QMK -- generated source code only, image retains original copyright | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
// This file was auto-generated by `qmk painter-convert-graphics -i background.png -f pal256` | |||
#pragma once | |||
#include <qp.h> | |||
extern const uint32_t gfx_background_length; | |||
extern const uint8_t gfx_background[117596]; |
@ -0,0 +1,136 @@ | |||
{ | |||
"manufacturer": "dcpedit", | |||
"keyboard_name": "MidEvil", | |||
"maintainer": "dcpedit", | |||
"bootloader": "rp2040", | |||
"bootmagic": { | |||
"matrix": [7, 9] | |||
}, | |||
"diode_direction": "COL2ROW", | |||
"features": { | |||
"bootmagic": true, | |||
"extrakey": true, | |||
"mousekey": true, | |||
"backlight": true, | |||
"quantum_painter": true | |||
}, | |||
"matrix_pins": { | |||
"cols": ["GP27", "GP28", "GP11", "GP10", "GP9", "GP4", "GP3", "GP2", "GP1", "GP0"], | |||
"rows": ["GP6", "GP8", "GP13", "GP22", "GP20", "GP5", "GP7", "GP12", "GP26", "GP21"] | |||
}, | |||
"processor": "RP2040", | |||
"url": "https://github.com/dcpedit/midevil", | |||
"usb": { | |||
"device_version": "1.0.0", | |||
"pid": "0x177E", | |||
"vid": "0xDC9E" | |||
}, | |||
"backlight": { | |||
"pin": "GP15", | |||
"levels": 5, | |||
"default": { | |||
"brightness": 3 | |||
} | |||
}, | |||
"layouts": { | |||
"LAYOUT": { | |||
"layout": [ | |||
{"label": "7,9", "matrix": [7, 9], "x": 0.5, "y": 0.25}, | |||
{"label": "0,0", "matrix": [0, 0], "x": 2, "y": 0.25}, | |||
{"label": "5,0", "matrix": [5, 0], "x": 3, "y": 0.25}, | |||
{"label": "0,1", "matrix": [0, 1], "x": 4.5, "y": 0.25}, | |||
{"label": "5,1", "matrix": [5, 1], "x": 5.5, "y": 0.13}, | |||
{"label": "0,2", "matrix": [0, 2], "x": 6.5, "y": 0.25}, | |||
{"label": "5,2", "matrix": [5, 2], "x": 7.5, "y": 0.38}, | |||
{"label": "0,3", "matrix": [0, 3], "x": 10, "y": 0.5}, | |||
{"label": "5,3", "matrix": [5, 3], "x": 11, "y": 0.5}, | |||
{"label": "0,4", "matrix": [0, 4], "x": 12, "y": 0.5}, | |||
{"label": "5,4", "matrix": [5, 4], "x": 13, "y": 0.5}, | |||
{"label": "0,5", "matrix": [0, 5], "x": 15.5, "y": 0.38}, | |||
{"label": "5,5", "matrix": [5, 5], "x": 16.5, "y": 0.25}, | |||
{"label": "0,6", "matrix": [0, 6], "x": 17.5, "y": 0.13}, | |||
{"label": "5,6", "matrix": [5, 6], "x": 18.5, "y": 0.25}, | |||
{"label": "0,7", "matrix": [0, 7], "x": 20, "y": 0.25}, | |||
{"label": "5,7", "matrix": [5, 7], "x": 21, "y": 0.25}, | |||
{"label": "0,8", "matrix": [0, 8], "x": 22, "y": 0.25}, | |||
{"label": "5,8", "matrix": [5, 8], "x": 23, "y": 0.25}, | |||
{"label": "0,9", "matrix": [0, 9], "x": 24, "y": 0.25}, | |||
{"label": "5,9", "matrix": [5, 9], "x": 25.25, "y": 0.25}, | |||
{"label": "1,0", "matrix": [1, 0], "x": 1.25, "y": 1.25, "w": 1.5}, | |||
{"label": "6,0", "matrix": [6, 0], "x": 2.75, "y": 1.25}, | |||
{"label": "1,1", "matrix": [1, 1], "x": 4.5, "y": 1.25}, | |||
{"label": "6,1", "matrix": [6, 1], "x": 5.5, "y": 1.13}, | |||
{"label": "1,2", "matrix": [1, 2], "x": 6.5, "y": 1.25}, | |||
{"label": "6,2", "matrix": [6, 2], "x": 7.5, "y": 1.38}, | |||
{"label": "1,3", "matrix": [1, 3], "x": 10, "y": 1.5}, | |||
{"label": "6,3", "matrix": [6, 3], "x": 11, "y": 1.5}, | |||
{"label": "1,4", "matrix": [1, 4], "x": 12, "y": 1.5}, | |||
{"label": "6,4", "matrix": [6, 4], "x": 13, "y": 1.5}, | |||
{"label": "1,5", "matrix": [1, 5], "x": 15.5, "y": 1.38}, | |||
{"label": "6,5", "matrix": [6, 5], "x": 16.5, "y": 1.25}, | |||
{"label": "1,6", "matrix": [1, 6], "x": 17.5, "y": 1.13}, | |||
{"label": "6,6", "matrix": [6, 6], "x": 18.5, "y": 1.25}, | |||
{"label": "1,7", "matrix": [1, 7], "x": 20.25, "y": 1.25}, | |||
{"label": "6,7", "matrix": [6, 7], "x": 21.25, "y": 1.25}, | |||
{"label": "1,8", "matrix": [1, 8], "x": 22.25, "y": 1.25}, | |||
{"label": "1,9", "matrix": [1, 9], "x": 23.25, "y": 1.25, "w": 1.5}, | |||
{"label": "6,9", "matrix": [6, 9], "x": 25.25, "y": 1.25}, | |||
{"label": "2,0", "matrix": [2, 0], "x": 0.75, "y": 2.25, "w": 1.75}, | |||
{"label": "7,0", "matrix": [7, 0], "x": 2.5, "y": 2.25}, | |||
{"label": "2,1", "matrix": [2, 1], "x": 4.5, "y": 2.25}, | |||
{"label": "7,1", "matrix": [7, 1], "x": 5.5, "y": 2.13}, | |||
{"label": "2,2", "matrix": [2, 2], "x": 6.5, "y": 2.25}, | |||
{"label": "7,2", "matrix": [7, 2], "x": 7.5, "y": 2.38}, | |||
{"label": "2,3", "matrix": [2, 3], "x": 10, "y": 2.5}, | |||
{"label": "7,3", "matrix": [7, 3], "x": 11, "y": 2.5}, | |||
{"label": "2,4", "matrix": [2, 4], "x": 12, "y": 2.5}, | |||
{"label": "7,4", "matrix": [7, 4], "x": 13, "y": 2.5}, | |||
{"label": "2,5", "matrix": [2, 5], "x": 15.5, "y": 2.38}, | |||
{"label": "7,5", "matrix": [7, 5], "x": 16.5, "y": 2.25}, | |||
{"label": "2,6", "matrix": [2, 6], "x": 17.5, "y": 2.13}, | |||
{"label": "7,6", "matrix": [7, 6], "x": 18.5, "y": 2.25}, | |||
{"label": "2,7", "matrix": [2, 7], "x": 20.5, "y": 2.25}, | |||
{"label": "7,7", "matrix": [7, 7], "x": 21.5, "y": 2.25}, | |||
{"label": "2,8", "matrix": [2, 8], "x": 22.5, "y": 2.25, "w": 2.25}, | |||
{"label": "2,9", "matrix": [2, 9], "x": 25.25, "y": 2.25}, | |||
{"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25}, | |||
{"label": "7,8", "matrix": [7, 8], "x": 1.25, "y": 3.25}, | |||
{"label": "8,0", "matrix": [8, 0], "x": 2.25, "y": 3.25}, | |||
{"label": "3,1", "matrix": [3, 1], "x": 4.5, "y": 3.25}, | |||
{"label": "8,1", "matrix": [8, 1], "x": 5.5, "y": 3.13}, | |||
{"label": "3,2", "matrix": [3, 2], "x": 6.5, "y": 3.25}, | |||
{"label": "8,2", "matrix": [8, 2], "x": 7.5, "y": 3.38}, | |||
{"label": "9,2", "matrix": [9, 2], "x": 8.5, "y": 3.38}, | |||
{"label": "3,3", "matrix": [3, 3], "x": 10, "y": 3.5}, | |||
{"label": "8,3", "matrix": [8, 3], "x": 11, "y": 3.5}, | |||
{"label": "3,4", "matrix": [3, 4], "x": 12, "y": 3.5}, | |||
{"label": "8,4", "matrix": [8, 4], "x": 13, "y": 3.5}, | |||
{"label": "4,5", "matrix": [4, 5], "x": 14.5, "y": 3.38}, | |||
{"label": "3,5", "matrix": [3, 5], "x": 15.5, "y": 3.38}, | |||
{"label": "8,5", "matrix": [8, 5], "x": 16.5, "y": 3.25}, | |||
{"label": "3,6", "matrix": [3, 6], "x": 17.5, "y": 3.13}, | |||
{"label": "8,6", "matrix": [8, 6], "x": 18.5, "y": 3.25}, | |||
{"label": "3,7", "matrix": [3, 7], "x": 20.75, "y": 3.25}, | |||
{"label": "8,7", "matrix": [8, 7], "x": 21.75, "y": 3.25}, | |||
{"label": "3,8", "matrix": [3, 8], "x": 22.75, "y": 3.25, "w": 1.25}, | |||
{"label": "3,9", "matrix": [3, 9], "x": 24.25, "y": 3.5}, | |||
{"label": "4,0", "matrix": [4, 0], "x": 0.5, "y": 4.25, "w": 1.25}, | |||
{"label": "9,0", "matrix": [9, 0], "x": 1.75, "y": 4.25, "w": 1.25}, | |||
{"label": "4,1", "matrix": [4, 1], "x": 5, "y": 4.25, "w": 1.25}, | |||
{"label": "9,1", "matrix": [9, 1], "x": 6.25, "y": 4.25, "w": 1.25}, | |||
{"label": "4,2", "matrix": [4, 2], "x": 7.5, "y": 4.38, "w": 2}, | |||
{"label": "4,3", "matrix": [4, 3], "x": 10, "y": 4.5}, | |||
{"label": "9,3", "matrix": [9, 3], "x": 11, "y": 4.5}, | |||
{"label": "4,4", "matrix": [4, 4], "x": 12, "y": 4.5}, | |||
{"label": "9,4", "matrix": [9, 4], "x": 13, "y": 4.5}, | |||
{"label": "9,5", "matrix": [9, 5], "x": 14.5, "y": 4.38, "w": 2.75}, | |||
{"label": "4,6", "matrix": [4, 6], "x": 17.25, "y": 4.25, "w": 1.25}, | |||
{"label": "9,6", "matrix": [9, 6], "x": 20.5, "y": 4.25, "w": 1.25}, | |||
{"label": "4,7", "matrix": [4, 7], "x": 21.75, "y": 4.25, "w": 1.25}, | |||
{"label": "9,7", "matrix": [9, 7], "x": 23.25, "y": 4.5}, | |||
{"label": "4,8", "matrix": [4, 8], "x": 24.25, "y": 4.5}, | |||
{"label": "4,9", "matrix": [4, 9], "x": 25.25, "y": 4.5} | |||
] | |||
} | |||
} | |||
} |
@ -0,0 +1,21 @@ | |||
{ | |||
"keyboard": "midevil", | |||
"keymap": "default", | |||
"layout": "LAYOUT", | |||
"layers": [ | |||
[ | |||
"KC_ESC", "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_NUM", "KC_PSLS", "KC_PAST", "KC_PMNS", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_PGUP", | |||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_P7", "KC_P8", "KC_P9", "KC_PPLS", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_PGDN", | |||
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_P4", "KC_P5", "KC_P6", "KC_PPLS", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_DEL", | |||
"KC_LSFT", "KC_BSLS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "MO(1)", "KC_P1", "KC_P2", "KC_P3", "KC_PENT", "MO(1)", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_RSFT", "KC_UP", | |||
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_APP", "KC_SPC", "KC_P0", "KC_P0", "KC_PDOT", "KC_PENT", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RALT", "KC_LEFT", "KC_DOWN", "KC_RGHT" | |||
], | |||
[ | |||
"QK_RBT", "KC_TRNS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "QK_BOOT", | |||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", | |||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", | |||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "BL_UP", | |||
"KC_LNG8", "KC_LNG9", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "BL_DOWN", "KC_TRNS" | |||
] | |||
] | |||
} |
@ -0,0 +1,26 @@ | |||
{ | |||
"keyboard": "midevil", | |||
"keymap": "via", | |||
"layout": "LAYOUT", | |||
"config": { | |||
"features": { | |||
"via": true | |||
} | |||
}, | |||
"layers": [ | |||
[ | |||
"KC_ESC", "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_NUM", "KC_PSLS", "KC_PAST", "KC_PMNS", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_PGUP", | |||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_P7", "KC_P8", "KC_P9", "KC_PPLS", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_PGDN", | |||
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_P4", "KC_P5", "KC_P6", "KC_PPLS", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_DEL", | |||
"KC_LSFT", "KC_BSLS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "MO(1)", "KC_P1", "KC_P2", "KC_P3", "KC_PENT", "MO(1)", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_RSFT", "KC_UP", | |||
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_APP", "KC_SPC", "KC_P0", "KC_P0", "KC_PDOT", "KC_PENT", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RALT", "KC_LEFT", "KC_DOWN", "KC_RGHT" | |||
], | |||
[ | |||
"QK_RBT", "KC_TRNS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "QK_BOOT", | |||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", | |||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", | |||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "BL_UP", | |||
"KC_LNG8", "KC_LNG9", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "BL_DOWN", "KC_TRNS" | |||
] | |||
] | |||
} |
@ -0,0 +1,12 @@ | |||
// Copyright 2023 Ming-Gih Lam (@dcpedit) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#pragma once | |||
#include_next <mcuconf.h> | |||
#undef RP_SPI_USE_SPI0 | |||
#define RP_SPI_USE_SPI0 TRUE | |||
#undef RP_PWM_USE_PWM7 | |||
#define RP_PWM_USE_PWM7 TRUE |
@ -0,0 +1,69 @@ | |||
// Copyright 2023 Ming-Gih Lam (@dcpedit) | |||
// SPDX-License-Identifier: GPL-2.0-or-later | |||
#include "qp_comms.h" | |||
#include "image/background.qgf.h" | |||
#include "image/animated.qgf.h" | |||
static painter_device_t lcd; | |||
static painter_image_handle_t background; | |||
static painter_image_handle_t animated; | |||
static int animation_state; | |||
static deferred_token my_anim; | |||
void start_animation(void) { | |||
my_anim = qp_animate(lcd, 116, 194, animated); | |||
animation_state = 1; | |||
} | |||
void stop_animation(void) { | |||
qp_stop_animation(my_anim); | |||
animation_state = 0; | |||
} | |||
void toggle_animation(void) { | |||
if (animation_state == 1) { | |||
stop_animation(); | |||
} | |||
else { | |||
start_animation(); | |||
} | |||
} | |||
__attribute__((weak)) void draw_ui_init_user(void) { | |||
start_animation(); | |||
} | |||
void keyboard_post_init_kb(void) { | |||
background = qp_load_image_mem(gfx_background); | |||
animated = qp_load_image_mem(gfx_animated); | |||
// Give the LCD some time to get some power | |||
wait_ms(150); | |||
// Initialise the LCD | |||
lcd = qp_ili9488_make_spi_device(320, 480, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, 4, 0); | |||
qp_init(lcd, QP_ROTATION_180); | |||
// Turn on the LCD | |||
qp_power(lcd, true); | |||
// Draw image | |||
qp_drawimage(lcd, 0, 0, background); | |||
draw_ui_init_user(); | |||
keyboard_post_init_user(); | |||
} | |||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
switch (keycode) { | |||
case KC_LNG8: | |||
if (record->event.pressed){ | |||
toggle_animation(); | |||
} | |||
return false; | |||
default: | |||
return true; | |||
} | |||
return process_record_user(keycode, record); | |||
} |
@ -0,0 +1,27 @@ | |||
# MidEvil | |||
![MidEvil](https://i.imgur.com/WCE6GIU.jpg) | |||
If number pads are evil, then this keyboard places all that evilness smack dab in the middle. | |||
* Keyboard Maintainer: [dcpedit](https://github.com/dcpedit) | |||
* Hardware Supported: Raspberry Pi Pico, RP2040-Plus | |||
* Hardware Availability: https://github.com/dcpedit/midevil | |||
Make example for this keyboard (after setting up your build environment): | |||
make dcpedit/midevil:default | |||
Flashing example for this keyboard: | |||
make dcpedit/midevil: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: | |||
* **Bootmagic reset**: Hold down the ESC key (top-left key) and plug in the keyboard | |||
* **Physical reset button**: On the Raspberry Pi Pico, while holding down the BOOT button, press and release the RESET button | |||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available |
@ -0,0 +1,3 @@ | |||
QUANTUM_PAINTER_DRIVERS += ili9488_spi | |||
SRC += image/background.qgf.c \ | |||
image/animated.qgf.c |