Skip to content

Commit 4a52786

Browse files
add op36
1 parent 571c766 commit 4a52786

10 files changed

Lines changed: 257 additions & 0 deletions

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
if SHIELD_OP36_LEFT
2+
3+
config ZMK_KEYBOARD_NAME
4+
default "EH_OP36"
5+
6+
config ZMK_SPLIT_ROLE_CENTRAL
7+
default y
8+
9+
endif
10+
11+
if SHIELD_OP36_LEFT || SHIELD_OP36_RIGHT
12+
13+
config ZMK_SPLIT
14+
default y
15+
16+
endif

boards/shields/op36/Kconfig.shield

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
config SHIELD_OP36_LEFT
2+
def_bool $(shields_list_contains,op36_left)
3+
4+
config SHIELD_OP36_RIGHT
5+
def_bool $(shields_list_contains,op36_right)

boards/shields/op36/op36.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CONFIG_ZMK_SLEEP=y
2+
CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=600000
3+
CONFIG_ZMK_BATTERY_REPORTING=y
4+
CONFIG_ZMK_BATTERY_REPORT_INTERVAL=60
5+
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY=y
6+
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y
7+
CONFIG_NFCT_PINS_AS_GPIOS=y
8+
CONFIG_PINMUX=n

boards/shields/op36/op36.dtsi

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <dt-bindings/zmk/matrix_transform.h>
2+
#include "op36_layout.dtsi"
3+
4+
/ {
5+
chosen {
6+
zmk,kscan = &kscan0;
7+
zmk,physical-layout = &physical_layout;
8+
zmk,battery = &vbatt;
9+
};
10+
11+
default_transform: keymap_transform_0 {
12+
compatible = "zmk,matrix-transform";
13+
columns = <12>;
14+
rows = <3>;
15+
map = <
16+
RC(0, 4) RC(0, 3) RC(0, 2) RC(0, 1) RC(0, 0) RC(0, 6) RC(0, 7) RC(0, 8) RC(0, 9) RC(0,10)
17+
RC(1, 4) RC(1, 3) RC(1, 2) RC(1, 1) RC(1, 0) RC(1, 6) RC(1, 7) RC(1, 8) RC(1, 9) RC(1,10)
18+
RC(2, 4) RC(2, 3) RC(2, 2) RC(2, 1) RC(2, 0) RC(2, 6) RC(2, 7) RC(2, 8) RC(2, 9) RC(2,10)
19+
RC(0, 5) RC(1, 5) RC(2, 5) RC(2,11) RC(1,11) RC(0,11)
20+
>;
21+
};
22+
23+
kscan0: kscan {
24+
compatible = "zmk,kscan-gpio-matrix";
25+
diode-direction = "col2row";
26+
wakeup-source;
27+
};
28+
29+
vbatt: vbatt {
30+
status = "okay";
31+
compatible = "zmk,battery-voltage-divider";
32+
io-channels = <&adc 7>;
33+
output-ohms = <1564000>;
34+
full-ohms = <(806000 + 1564000)>;
35+
};
36+
};

boards/shields/op36/op36.keymap

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#include <behaviors.dtsi>
2+
#include <dt-bindings/zmk/bt.h>
3+
#include <dt-bindings/zmk/keys.h>
4+
#include <dt-bindings/zmk/outputs.h>
5+
6+
&mt {
7+
quick-tap-ms = <200>;
8+
flavor = "tap-preferred";
9+
require-prior-idle-ms = <125>;
10+
};
11+
12+
/ {
13+
behaviors {
14+
hml: home_row_mod_left {
15+
compatible = "zmk,behavior-hold-tap";
16+
#binding-cells = <2>;
17+
flavor = "balanced";
18+
require-prior-idle-ms = <150>;
19+
tapping-term-ms = <280>;
20+
quick-tap-ms = <175>;
21+
bindings = <&kp>, <&kp>;
22+
23+
hold-trigger-key-positions = < 0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 32 >;
24+
hold-trigger-on-release;
25+
};
26+
27+
hmr: home_row_mod_right {
28+
compatible = "zmk,behavior-hold-tap";
29+
#binding-cells = <2>;
30+
flavor = "balanced";
31+
require-prior-idle-ms = <150>;
32+
tapping-term-ms = <280>;
33+
quick-tap-ms = <175>;
34+
bindings = <&kp>, <&kp>;
35+
36+
hold-trigger-key-positions = < 5 6 7 8 9 15 16 17 18 19 25 26 27 28 29 33 34 35 >;
37+
hold-trigger-on-release;
38+
};
39+
};
40+
41+
keymap {
42+
compatible = "zmk,keymap";
43+
44+
base {
45+
bindings = <
46+
&kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P
47+
&hml LCTRL A &hml LALT S &hml LGUI D &hml LSHFT F &kp G &kp H &hmr LSHFT J &hmr LGUI K &hmr LALT L &hmr LCTRL SEMICOLON
48+
&kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp SQT
49+
&kp DEL &mt LSHFT ESC &lt 3 BACKSPACE &lt 1 ENTER &mt LSHIFT SPACE &kp TAB
50+
>;
51+
};
52+
53+
nav {
54+
bindings = <
55+
&kp LG(Q) &kp LG(W) &none &none &kp LC(GRAVE) &kp HOME &kp PG_DN &kp PG_UP &kp END &kp INS
56+
&hml LCTRL LG(A) &hml LALT LG(S) &hml LGUI LG(D) &hml LSHFT LG(F) &none &kp LEFT &hmr LSHFT DOWN &hmr LGUI UP &hmr LALT RIGHT &hmr LCTRL LA(BACKSPACE)
57+
&kp LG(Z) &kp LG(X) &kp LG(C) &kp LG(V) &none &kp LA(LEFT) &none &none &kp LA(RIGHT) &kp LG(FSLH)
58+
&trans &lt 2 ESCAPE &lt 5 BACKSPACE &none &none &none
59+
>;
60+
};
61+
62+
fn {
63+
bindings = <
64+
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10
65+
&kp F11 &kp F12 &trans &trans &trans &trans &trans &trans &trans &trans
66+
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
67+
&trans &trans &trans &trans &trans &trans
68+
>;
69+
};
70+
71+
sym {
72+
bindings = <
73+
&kp GRAVE &kp AT_SIGN &kp HASH &kp DLLR &kp PRCNT &kp LBRC &kp LBKT &kp RBKT &kp RBRC &kp DQT
74+
&kp PLUS &kp MINUS &kp DOT &kp COMMA &kp EQUAL &kp EXCL &kp LPAR &kp RPAR &kp COLON &kp SEMICOLON
75+
&kp TILDE &kp STAR &kp PIPE &kp AMPS &kp UNDER &kp QMARK &kp CARET &kp LESS_THAN &kp GT &kp FSLH
76+
&none &none &none &lt 5 ENTER &lt 4 SPACE &kp BSLH
77+
>;
78+
};
79+
80+
nums {
81+
bindings = <
82+
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0
83+
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
84+
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
85+
&trans &trans &trans &trans &trans &trans
86+
>;
87+
};
88+
89+
adj {
90+
bindings = <
91+
&bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans
92+
&bt BT_CLR &out OUT_BLE &out OUT_USB &trans &trans &trans &kp C_VOL_DN &kp C_VOL_UP &kp K_MUTE &trans
93+
&trans &trans &trans &trans &trans &trans &kp K_PREV &kp K_NEXT &kp K_PLAY_PAUSE &trans
94+
&trans &trans &trans &trans &trans &trans
95+
>;
96+
};
97+
};
98+
};
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include <physical_layouts.dtsi>
2+
3+
/ {
4+
physical_layout: physical_layout {
5+
compatible = "zmk,physical-layout";
6+
display-name = "op36";
7+
8+
kscan = <&kscan0>;
9+
transform = <&default_transform>;
10+
11+
keys // w h x y rot rx ry
12+
= <&key_physical_attrs 100 100 0 38 0 0 0>
13+
, <&key_physical_attrs 100 100 100 12 0 0 0>
14+
, <&key_physical_attrs 100 100 200 0 0 0 0>
15+
, <&key_physical_attrs 100 100 300 12 0 0 0>
16+
, <&key_physical_attrs 100 100 400 25 0 0 0>
17+
, <&key_physical_attrs 100 100 800 25 0 0 0>
18+
, <&key_physical_attrs 100 100 900 12 0 0 0>
19+
, <&key_physical_attrs 100 100 1000 0 0 0 0>
20+
, <&key_physical_attrs 100 100 1100 12 0 0 0>
21+
, <&key_physical_attrs 100 100 1200 38 0 0 0>
22+
, <&key_physical_attrs 100 100 0 138 0 0 0>
23+
, <&key_physical_attrs 100 100 100 112 0 0 0>
24+
, <&key_physical_attrs 100 100 200 100 0 0 0>
25+
, <&key_physical_attrs 100 100 300 112 0 0 0>
26+
, <&key_physical_attrs 100 100 400 125 0 0 0>
27+
, <&key_physical_attrs 100 100 800 125 0 0 0>
28+
, <&key_physical_attrs 100 100 900 112 0 0 0>
29+
, <&key_physical_attrs 100 100 1000 100 0 0 0>
30+
, <&key_physical_attrs 100 100 1100 112 0 0 0>
31+
, <&key_physical_attrs 100 100 1200 138 0 0 0>
32+
, <&key_physical_attrs 100 100 0 238 0 0 0>
33+
, <&key_physical_attrs 100 100 100 212 0 0 0>
34+
, <&key_physical_attrs 100 100 200 200 0 0 0>
35+
, <&key_physical_attrs 100 100 300 212 0 0 0>
36+
, <&key_physical_attrs 100 100 400 225 0 0 0>
37+
, <&key_physical_attrs 100 100 800 225 0 0 0>
38+
, <&key_physical_attrs 100 100 900 212 0 0 0>
39+
, <&key_physical_attrs 100 100 1000 200 0 0 0>
40+
, <&key_physical_attrs 100 100 1100 212 0 0 0>
41+
, <&key_physical_attrs 100 100 1200 238 0 0 0>
42+
, <&key_physical_attrs 100 100 300 325 0 0 0>
43+
, <&key_physical_attrs 100 100 400 350 0 0 0>
44+
, <&key_physical_attrs 100 100 500 375 0 0 0>
45+
, <&key_physical_attrs 100 100 700 375 0 0 0>
46+
, <&key_physical_attrs 100 100 800 350 0 0 0>
47+
, <&key_physical_attrs 100 100 900 325 0 0 0>
48+
;
49+
};
50+
};

boards/shields/op36/op36_left.conf

Whitespace-only changes.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#include "op36.dtsi"
2+
3+
&kscan0 {
4+
col-gpios
5+
= <&gpio0 13 GPIO_ACTIVE_HIGH>
6+
, <&gpio0 24 GPIO_ACTIVE_HIGH>
7+
, <&gpio0 10 GPIO_ACTIVE_HIGH>
8+
, <&gpio0 3 GPIO_ACTIVE_HIGH>
9+
, <&gpio1 10 GPIO_ACTIVE_HIGH>
10+
, <&gpio1 11 GPIO_ACTIVE_HIGH>
11+
;
12+
};
13+
14+
&kscan0 {
15+
row-gpios
16+
= <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
17+
, <&gpio0 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
18+
, <&gpio0 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
19+
;
20+
};

boards/shields/op36/op36_right.conf

Whitespace-only changes.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "op36.dtsi"
2+
3+
&default_transform {
4+
col-offset = <6>;
5+
};
6+
7+
&kscan0 {
8+
col-gpios
9+
= <&gpio0 30 GPIO_ACTIVE_HIGH>
10+
, <&gpio0 29 GPIO_ACTIVE_HIGH>
11+
, <&gpio0 2 GPIO_ACTIVE_HIGH>
12+
, <&gpio1 13 GPIO_ACTIVE_HIGH>
13+
, <&gpio0 28 GPIO_ACTIVE_HIGH>
14+
, <&gpio0 3 GPIO_ACTIVE_HIGH>
15+
;
16+
};
17+
18+
&kscan0 {
19+
row-gpios
20+
= <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
21+
, <&gpio0 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
22+
, <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
23+
;
24+
};

0 commit comments

Comments
 (0)