Skip to content

Commit bdeba49

Browse files
committed
feat(shields): Add a tester_rpi_pico shield
1 parent 563bdb0 commit bdeba49

File tree

6 files changed

+255
-0
lines changed

6 files changed

+255
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
if SHIELD_TESTER_RPI_PICO
2+
3+
config ZMK_KEYBOARD_NAME
4+
default "ZMK Tester"
5+
6+
config ZMK_BLE
7+
def_bool n
8+
9+
config SETTINGS
10+
def_bool n
11+
12+
endif
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
config SHIELD_TESTER_RPI_PICO
2+
def_bool $(shields_list_contains,tester_rpi_pico)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/*
2+
* Copyright (c) 2025 The ZMK Contributors
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*/
6+
7+
#include <physical_layouts.dtsi>
8+
9+
/ {
10+
tester_position_map {
11+
compatible = "zmk,physical-layout-position-map";
12+
complete;
13+
14+
pinout_map: pinout_positions {
15+
physical-layout = <&physical_layout0>;
16+
positions = <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>;
17+
};
18+
inline_map: single_row_positions {
19+
physical-layout = <&physical_layout1>;
20+
positions = <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>;
21+
};
22+
};
23+
24+
physical_layout0: physical_layout_0 {
25+
compatible = "zmk,physical-layout";
26+
display-name = "Rpi Pico Pinout";
27+
28+
kscan = <&kscan0>;
29+
transform = <&matrix_transform0>;
30+
31+
keys // w h x y rot rx ry
32+
= <&key_physical_attrs 100 100 0 0 0 0 0>
33+
, <&key_physical_attrs 100 100 0 100 0 0 0>
34+
, <&key_physical_attrs 100 100 0 300 0 0 0>
35+
, <&key_physical_attrs 100 100 0 400 0 0 0>
36+
, <&key_physical_attrs 100 100 0 500 0 0 0>
37+
, <&key_physical_attrs 100 100 0 600 0 0 0>
38+
, <&key_physical_attrs 100 100 0 800 0 0 0>
39+
, <&key_physical_attrs 100 100 0 900 0 0 0>
40+
, <&key_physical_attrs 100 100 0 1000 0 0 0>
41+
, <&key_physical_attrs 100 100 0 1100 0 0 0>
42+
, <&key_physical_attrs 100 100 0 1300 0 0 0>
43+
, <&key_physical_attrs 100 100 0 1400 0 0 0>
44+
, <&key_physical_attrs 100 100 0 1500 0 0 0>
45+
, <&key_physical_attrs 100 100 0 1600 0 0 0>
46+
, <&key_physical_attrs 100 100 0 1800 0 0 0>
47+
, <&key_physical_attrs 100 100 0 1900 0 0 0>
48+
, <&key_physical_attrs 100 100 600 1900 0 0 0>
49+
, <&key_physical_attrs 100 100 600 1800 0 0 0>
50+
, <&key_physical_attrs 100 100 600 1600 0 0 0>
51+
, <&key_physical_attrs 100 100 600 1500 0 0 0>
52+
, <&key_physical_attrs 100 100 600 1400 0 0 0>
53+
, <&key_physical_attrs 100 100 600 1300 0 0 0>
54+
, <&key_physical_attrs 100 100 600 1100 0 0 0>
55+
, <&key_physical_attrs 100 100 600 900 0 0 0>
56+
, <&key_physical_attrs 100 100 600 800 0 0 0>
57+
, <&key_physical_attrs 100 100 600 600 0 0 0>
58+
;
59+
};
60+
61+
physical_layout1: physical_layout_1 {
62+
compatible = "zmk,physical-layout";
63+
display-name = "Single Row";
64+
65+
// Single row of eighteen "keys", in ascending "Arduino" order.
66+
keys // w h x y rot rx ry
67+
= <&key_physical_attrs 100 100 0 0 0 0 0>
68+
, <&key_physical_attrs 100 100 100 0 0 0 0>
69+
, <&key_physical_attrs 100 100 200 0 0 0 0>
70+
, <&key_physical_attrs 100 100 300 0 0 0 0>
71+
, <&key_physical_attrs 100 100 400 0 0 0 0>
72+
, <&key_physical_attrs 100 100 500 0 0 0 0>
73+
, <&key_physical_attrs 100 100 600 0 0 0 0>
74+
, <&key_physical_attrs 100 100 700 0 0 0 0>
75+
, <&key_physical_attrs 100 100 800 0 0 0 0>
76+
, <&key_physical_attrs 100 100 900 0 0 0 0>
77+
, <&key_physical_attrs 100 100 1000 0 0 0 0>
78+
, <&key_physical_attrs 100 100 1100 0 0 0 0>
79+
, <&key_physical_attrs 100 100 1200 0 0 0 0>
80+
, <&key_physical_attrs 100 100 1300 0 0 0 0>
81+
, <&key_physical_attrs 100 100 1400 0 0 0 0>
82+
, <&key_physical_attrs 100 100 1500 0 0 0 0>
83+
, <&key_physical_attrs 100 100 1600 0 0 0 0>
84+
, <&key_physical_attrs 100 100 1700 0 0 0 0>
85+
, <&key_physical_attrs 100 100 1800 0 0 0 0>
86+
, <&key_physical_attrs 100 100 1900 0 0 0 0>
87+
, <&key_physical_attrs 100 100 2000 0 0 0 0>
88+
, <&key_physical_attrs 100 100 2100 0 0 0 0>
89+
, <&key_physical_attrs 100 100 2200 0 0 0 0>
90+
, <&key_physical_attrs 100 100 2300 0 0 0 0>
91+
, <&key_physical_attrs 100 100 2400 0 0 0 0>
92+
, <&key_physical_attrs 100 100 2500 0 0 0 0>
93+
;
94+
};
95+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#include <behaviors.dtsi>
2+
#include <dt-bindings/zmk/keys.h>
3+
4+
#define PIN_MACRO(name, pin) \
5+
/ { \
6+
macros { \
7+
name: name { \
8+
compatible = "zmk,behavior-macro"; \
9+
wait-ms = <5>; \
10+
tap-ms = <5>; \
11+
#binding-cells = <0>; \
12+
bindings = <&kp P &kp I &kp N &kp SPACE>, pin, <&kp ENTER>; \
13+
}; \
14+
}; \
15+
};
16+
17+
PIN_MACRO(pin0, <&kp N0>)
18+
PIN_MACRO(pin1, <&kp N1>)
19+
PIN_MACRO(pin2, <&kp N2>)
20+
PIN_MACRO(pin3, <&kp N3>)
21+
PIN_MACRO(pin4, <&kp N4>)
22+
PIN_MACRO(pin5, <&kp N5>)
23+
PIN_MACRO(pin6, <&kp N6>)
24+
PIN_MACRO(pin7, <&kp N7>)
25+
PIN_MACRO(pin8, <&kp N8>)
26+
PIN_MACRO(pin9, <&kp N9>)
27+
PIN_MACRO(pin10, <&kp N1 &kp N0>)
28+
PIN_MACRO(pin11, <&kp N1 &kp N1>)
29+
PIN_MACRO(pin12, <&kp N1 &kp N2>)
30+
PIN_MACRO(pin13, <&kp N1 &kp N3>)
31+
PIN_MACRO(pin14, <&kp N1 &kp N4>)
32+
PIN_MACRO(pin15, <&kp N1 &kp N5>)
33+
PIN_MACRO(pin16, <&kp N1 &kp N6>)
34+
PIN_MACRO(pin17, <&kp N1 &kp N7>)
35+
PIN_MACRO(pin18, <&kp N1 &kp N8>)
36+
PIN_MACRO(pin19, <&kp N1 &kp N9>)
37+
PIN_MACRO(pin20, <&kp N2 &kp N0>)
38+
PIN_MACRO(pin21, <&kp N2 &kp N1>)
39+
PIN_MACRO(pin22, <&kp N2 &kp N2>)
40+
PIN_MACRO(pin26, <&kp N2 &kp N6>)
41+
PIN_MACRO(pin27, <&kp N2 &kp N7>)
42+
PIN_MACRO(pin28, <&kp N2 &kp N8>)
43+
44+
/ {
45+
keymap {
46+
compatible = "zmk,keymap";
47+
48+
default_layer {
49+
bindings = <&pin0
50+
&pin1
51+
&pin2
52+
&pin3
53+
&pin4
54+
&pin5
55+
&pin6
56+
&pin7
57+
&pin8
58+
&pin9
59+
&pin10
60+
&pin11
61+
&pin12
62+
&pin13
63+
&pin14
64+
&pin15
65+
&pin16
66+
&pin17
67+
&pin18
68+
&pin19
69+
&pin20
70+
&pin21
71+
&pin22
72+
&pin26
73+
&pin27
74+
&pin28>;
75+
};
76+
};
77+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include <dt-bindings/zmk/matrix_transform.h>
2+
#include "tester_rpi_pico-layouts.dtsi"
3+
4+
&physical_layout0 {
5+
transform = <&transform0>;
6+
};
7+
8+
&physical_layout1 {
9+
transform = <&transform0>;
10+
};
11+
12+
/ {
13+
chosen {
14+
zmk,kscan = &kscan0;
15+
zmk,physical-layout = &physical_layout0;
16+
};
17+
18+
kscan0: kscan {
19+
compatible = "zmk,kscan-gpio-direct";
20+
wakeup-source;
21+
debounce-press-ms = <10>;
22+
debounce-release-ms = <10>;
23+
input-gpios
24+
= <&pico_header 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
25+
, <&pico_header 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
26+
, <&pico_header 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
27+
, <&pico_header 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
28+
, <&pico_header 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
29+
, <&pico_header 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
30+
, <&pico_header 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
31+
, <&pico_header 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
32+
, <&pico_header 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
33+
, <&pico_header 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
34+
, <&pico_header 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
35+
, <&pico_header 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
36+
, <&pico_header 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
37+
, <&pico_header 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
38+
, <&pico_header 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
39+
, <&pico_header 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
40+
, <&pico_header 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
41+
, <&pico_header 17 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
42+
, <&pico_header 18 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
43+
, <&pico_header 19 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
44+
, <&pico_header 20 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
45+
, <&pico_header 21 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
46+
, <&pico_header 22 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
47+
, <&pico_header 26 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
48+
, <&pico_header 27 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
49+
, <&pico_header 28 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
50+
;
51+
};
52+
53+
transform0: keymap_transform {
54+
compatible = "zmk,matrix-transform";
55+
columns = <26>;
56+
rows = <1>;
57+
map = <
58+
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9)
59+
RC(0,10) RC(0,11) RC(0,12) RC(0,13) RC(0,14) RC(0,15) RC(0,16) RC(0,17) RC(0,18) RC(0,19)
60+
RC(0,20) RC(0,21) RC(0,22) RC(0,23) RC(0,24) RC(0,25)
61+
>;
62+
};
63+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
file_format: "1"
2+
id: tester_rpi_pico
3+
name: TesterRpiPico
4+
type: shield
5+
url: https://zmk.dev/docs/troubleshooting/hardware-issues
6+
requires: [rpi_pico]

0 commit comments

Comments
 (0)