Skip to content

Commit 6873dd8

Browse files
committed
Add feature rp2040 usb host (working)
1 parent 77d943b commit 6873dd8

File tree

5 files changed

+200
-0
lines changed

5 files changed

+200
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) <[email protected]>
2+
// SPDX-License-Identifier: GPL-3.0-or-later
3+
4+
#pragma once
5+
6+
#define OLED_DISPLAY_128X128
7+
#define OLED_UPDATE_PROCESS_LIMIT 2
8+
#define I2C1_CLOCK_SPEED 1000000
9+
10+
#define DRV2605L_FB_ERM_LRA 0
11+
#define DRV2605L_FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
12+
#define DRV2605L_FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
13+
14+
/* Please refer to your datasheet for the optimal setting for your specific motor. */
15+
#define DRV2605L_RATED_VOLTAGE 3
16+
#define DRV2605L_V_PEAK 3
17+
18+
#define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100
19+
#define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_BUZZ_1_100
20+
21+
#define SPI_DRIVER SPID1
22+
#define SPI_SCK_PIN GP14
23+
#define SPI_MOSI_PIN GP15
24+
#define SPI_MISO_PIN GP8
25+
26+
#define OLED_DC_PIN GP1
27+
#define OLED_CS_PIN GP0
28+
#define OLED_RESET_PIN GP4
29+
#define OLED_SPI_DIVISOR 4
30+
31+
#define DISPLAY_RST_PIN GP1
32+
#define DISPLAY_DC_PIN GP0
33+
#define DISPLAY_CS_PIN GP4
34+
#define DISPLAY_SPI_DIVIDER 32
35+
#define BACKLIGHT_PIN GP9
36+
#define BACKLIGHT_PWM_DRIVER PWMD4
37+
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B
38+
39+
#define PAINTER_SCREENSAVER_NEON_GENESIS
40+
#define PAINTER_SCREENSAVER_CYBERPUNK_2077
41+
#define PAINTER_SCREENSAVER_ANIME
42+
#define PAINTER_SCREENSAVER_STARRYXMARIE
43+
#define PAINTER_SCREENSAVER_SUCCUBI
44+
#define PAINTER_SCREENSAVER_GOTH
45+
#define PAINTER_SCREENSAVER_EGIRLS
46+
47+
#define DYNAMIC_KEYMAP_LAYER_COUNT 4
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright 2025 Christopher Courtney, aka Drashna Jael're (@drashna) <[email protected]>
2+
// SPDX-License-Identifier: GPL-3.0-or-later
3+
4+
#pragma once
5+
6+
#define HAL_USE_PWM TRUE
7+
8+
#include_next <halconf.h>
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
// Copyright 2025 Christopher Courtney, aka Drashna Jael're (@drashna) <[email protected]>
2+
// SPDX-License-Identifier: GPL-3.0-or-later
3+
4+
// SPDX-License-Identifier: GPL-2.0-or-later
5+
#include "drashna.h"
6+
7+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
8+
/*
9+
10+
11+
,----. ,-------------------. ,-------------------. ,-------------------. ,--------------.
12+
| Esc| | F1| F2| F3| F4| | F5| F6| F7| F8| | F9| F10| F11| F12| | PS | SL | PA |
13+
`----' `-------------------' '-------------------' `-------------------' `--------------'
14+
,----------------------------------------------------+-------------------. ,--------------. ,-------------------.
15+
| `~| 1!| 2@| 3#| 4$| 5%| 6^| 7&| 8*| 9(| 0)| [{| ]}| Bspc | | In | Hm | PU | | Nl| P/| P*| P-|
16+
|------+----+----+----+----+----+----+----+----+----+----+----+----+-----| |----+----+----| |----+----+----+----|
17+
| Tab| '" | ,<| .>| P | Y | F | G | C | R | L | /?| =+| \| | | Dl | Ed | PD | | P7| P8| P9| |
18+
|--------+----+----+----+----+----+----+----+----+----+----+----+--------| `--------------' |----+----+----+ P+|
19+
| MO1 | A | O | E | U | I | D | H | T | N | S | -_| Enter | | P4| P5| P6| |
20+
|----------+----+----+----+----+----+----+----+----+----+----+-----------| ,----. |----+----+----+----|
21+
| TD1 | ;:| Q | J | K | X | B | M | W | V | Z | TD2 | | Up | | P1| P2| P3| |
22+
|-----+-----+-----+------------------------------+-----+-----+-----+-----| ,----+----+----. +---------+----+ PE|
23+
| LC | LG | LA | | RA | RG | Mn | RC | | Lf | Dn | Rt| | P0 | P.| |
24+
`------------------------------------------------------------------------' `--------------' `-------------------'
25+
26+
*/
27+
28+
/*
29+
* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
30+
* │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
31+
* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
32+
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
33+
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
34+
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
35+
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
36+
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
37+
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │
38+
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
39+
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
40+
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
41+
* │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │
42+
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
43+
*/
44+
// clang-format off
45+
[0] = LAYOUT_fullsize_ansi(
46+
47+
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
48+
49+
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
50+
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
51+
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_P4, KC_P5, KC_P6,
52+
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_P1, KC_P2, KC_P3, KC_PENT,
53+
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
54+
)
55+
// clang-format on
56+
};
57+
58+
#ifdef OLED_ENABLE
59+
# include "display/oled/oled_stuff.h"
60+
61+
extern bool is_oled_enabled;
62+
63+
bool oled_task_keymap(void) {
64+
// No right side oled, so just exit.
65+
if (!is_keyboard_left()) {
66+
return false;
67+
}
68+
69+
oled_write_raw_P(header_image, sizeof(header_image));
70+
oled_set_cursor(4, 0);
71+
oled_write_P(PSTR(" Dilemma Max"), true);
72+
73+
render_default_layer_state(1, 1);
74+
render_layer_state(1, 2);
75+
render_pet(0, 5);
76+
render_wpm(1, 7, 5);
77+
// # if defined(POINTING_DEVICE_ENABLE)
78+
// render_pointing_dpi_status(
79+
// dilemma_get_pointer_sniping_enabled() ? dilemma_get_pointer_sniping_dpi() :
80+
// dilemma_get_pointer_default_dpi(), 1, 7, 6);
81+
// render_mouse_mode(17, 6);
82+
// # else
83+
render_matrix_scan_rate(1, 7, 6);
84+
// # endif
85+
render_bootmagic_status(7, 7);
86+
render_user_status(1, 9);
87+
88+
render_mod_status(get_mods() | get_oneshot_mods(), 1, 10);
89+
render_keylock_status(host_keyboard_led_state(), 1, 11);
90+
render_unicode_mode(1, 12);
91+
92+
render_os(1, 13);
93+
render_rgb_mode(1, 14);
94+
95+
for (uint8_t i = 1; i < 15; i++) {
96+
oled_set_cursor(0, i);
97+
oled_write_raw_P(display_border, sizeof(display_border));
98+
oled_set_cursor(21, i);
99+
oled_write_raw_P(display_border, sizeof(display_border));
100+
}
101+
102+
oled_set_cursor(0, 15);
103+
oled_write_raw_P(footer_image2, sizeof(footer_image2));
104+
# ifdef DISPLAY_KEYLOGGER_ENABLE
105+
oled_set_cursor(4, 15);
106+
oled_write(display_keylogger_string, true);
107+
# endif
108+
return false;
109+
}
110+
#endif
111+
112+
void keyboard_post_init_keymap(void) {
113+
// Customise these values to desired behaviour
114+
userspace_config.display.painter.left.display_logo_cycle = true;
115+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Copyright 2025 Christopher Courtney, aka Drashna Jael're (@drashna) <[email protected]>
2+
// SPDX-License-Identifier: GPL-3.0-or-later
3+
4+
#pragma once
5+
6+
#include_next <mcuconf.h>
7+
8+
#undef RP_SPI_USE_SPI0
9+
#define RP_SPI_USE_SPI0 FALSE
10+
11+
#undef RP_SPI_USE_SPI1
12+
#define RP_SPI_USE_SPI1 TRUE
13+
14+
#undef RP_PWM_USE_PWM4
15+
#define RP_PWM_USE_PWM4 TRUE
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
OLED_ENABLE = no
2+
OLED_TRANSPORT = spi
3+
4+
AUTOCORRECT_ENABLE = yes
5+
HAPTIC_ENABLE = yes
6+
HAPTIC_DRIVER = drv2605l
7+
WPM_ENABLE = yes
8+
VIA_ENABLE = yes
9+
10+
QUANTUM_PAINTER_ENABLE = yes
11+
CUSTOM_QUANTUM_PAINTER_ST7789_170X320 = yes
12+
QUANTUM_PAINTER_DRIVERS_ST7789_170X320_SURFACE = no
13+
14+
BACKLIGHT_ENABLE = yes
15+
BACKLIGHT_DRIVER = pwm

0 commit comments

Comments
 (0)