Skip to content

Commit 6909841

Browse files
add imperial44
1 parent c24895d commit 6909841

15 files changed

Lines changed: 529 additions & 0 deletions
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
if SHIELD_IMPERIAL44_QUBE || SHIELD_IMPERIAL44_LEFT
2+
3+
config ZMK_KEYBOARD_NAME
4+
default "EH Imperial44"
5+
6+
config ZMK_SPLIT_ROLE_CENTRAL
7+
default y
8+
9+
endif
10+
11+
if SHIELD_IMPERIAL44_QUBE || SHIELD_IMPERIAL44_LEFT_QUBE || SHIELD_IMPERIAL44_LEFT || SHIELD_IMPERIAL44_RIGHT
12+
13+
config ZMK_SPLIT
14+
default y
15+
16+
config ZMK_POINTING
17+
default y
18+
19+
endif
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
config SHIELD_IMPERIAL44_LEFT_QUBE
2+
def_bool $(shields_list_contains,imperial44_left_qube)
3+
4+
config SHIELD_IMPERIAL44_QUBE
5+
def_bool $(shields_list_contains,imperial44_qube)
6+
7+
config SHIELD_IMPERIAL44_LEFT
8+
def_bool $(shields_list_contains,imperial44_left)
9+
10+
config SHIELD_IMPERIAL44_RIGHT
11+
def_bool $(shields_list_contains,imperial44_right)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include <dt-bindings/zmk/matrix_transform.h>
2+
#include <dt-bindings/led/led.h>
3+
#include "imperial44_layout.dtsi"
4+
5+
/ {
6+
chosen {
7+
zmk,kscan = &kscan0;
8+
zmk,physical-layout = &physical_layout;
9+
zmk,battery = &vbatt;
10+
};
11+
12+
default_transform: keymap_transform_0 {
13+
compatible = "zmk,matrix-transform";
14+
columns = <12>;
15+
rows = <4>;
16+
map = <
17+
RC(0,5) 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) RC(0,11)
18+
RC(1,5) 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) RC(1,11)
19+
RC(2,5) RC(2,4) RC(2,3) RC(2,2) RC(2,1) RC(2,0) RC(3,0) RC(3,6) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11)
20+
RC(3,3) RC(3,2) RC(3,1) RC(3,7) RC(3,8) RC(3,9)
21+
>;
22+
};
23+
24+
kscan0: kscan {
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+
37+
encoder_L1: encoder_L1 {
38+
compatible = "alps,ec11";
39+
a-gpios = <&gpio1 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
40+
b-gpios = <&gpio1 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
41+
steps = <24>;
42+
status = "disabled";
43+
};
44+
45+
encoder_R1: encoder_R1 {
46+
compatible = "alps,ec11";
47+
a-gpios = <&gpio1 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
48+
b-gpios = <&gpio1 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
49+
steps = <24>;
50+
status = "disabled";
51+
};
52+
53+
sensors: sensors {
54+
compatible = "zmk,keymap-sensors";
55+
sensors = <&encoder_L1 &encoder_R1>;
56+
triggers-per-rotation = <12>;
57+
};
58+
};
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include <physical_layouts.dtsi>
2+
3+
/ {
4+
physical_layout: physical_layout {
5+
compatible = "zmk,physical-layout";
6+
display-name = "Imperial44";
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 38 0 0 0>
14+
, <&key_physical_attrs 100 100 200 12 0 0 0>
15+
, <&key_physical_attrs 100 100 300 0 0 0 0>
16+
, <&key_physical_attrs 100 100 400 12 0 0 0>
17+
, <&key_physical_attrs 100 100 500 25 0 0 0>
18+
, <&key_physical_attrs 100 100 930 25 0 0 0>
19+
, <&key_physical_attrs 100 100 1030 12 0 0 0>
20+
, <&key_physical_attrs 100 100 1130 0 0 0 0>
21+
, <&key_physical_attrs 100 100 1230 12 0 0 0>
22+
, <&key_physical_attrs 100 100 1330 38 0 0 0>
23+
, <&key_physical_attrs 100 100 1430 38 0 0 0>
24+
, <&key_physical_attrs 100 100 0 138 0 0 0>
25+
, <&key_physical_attrs 100 100 100 138 0 0 0>
26+
, <&key_physical_attrs 100 100 200 112 0 0 0>
27+
, <&key_physical_attrs 100 100 300 100 0 0 0>
28+
, <&key_physical_attrs 100 100 400 112 0 0 0>
29+
, <&key_physical_attrs 100 100 500 125 0 0 0>
30+
, <&key_physical_attrs 100 100 930 125 0 0 0>
31+
, <&key_physical_attrs 100 100 1030 112 0 0 0>
32+
, <&key_physical_attrs 100 100 1130 100 0 0 0>
33+
, <&key_physical_attrs 100 100 1230 112 0 0 0>
34+
, <&key_physical_attrs 100 100 1330 138 0 0 0>
35+
, <&key_physical_attrs 100 100 1430 138 0 0 0>
36+
, <&key_physical_attrs 100 100 0 238 0 0 0>
37+
, <&key_physical_attrs 100 100 100 238 0 0 0>
38+
, <&key_physical_attrs 100 100 200 212 0 0 0>
39+
, <&key_physical_attrs 100 100 300 200 0 0 0>
40+
, <&key_physical_attrs 100 100 400 212 0 0 0>
41+
, <&key_physical_attrs 100 100 500 225 0 0 0>
42+
, <&key_physical_attrs 100 100 600 225 0 0 0>
43+
, <&key_physical_attrs 100 100 830 225 0 0 0>
44+
, <&key_physical_attrs 100 100 930 225 0 0 0>
45+
, <&key_physical_attrs 100 100 1030 212 0 0 0>
46+
, <&key_physical_attrs 100 100 1130 200 0 0 0>
47+
, <&key_physical_attrs 100 100 1230 212 0 0 0>
48+
, <&key_physical_attrs 100 100 1330 238 0 0 0>
49+
, <&key_physical_attrs 100 100 1430 238 0 0 0>
50+
, <&key_physical_attrs 100 100 430 310 2000 0 0>
51+
, <&key_physical_attrs 100 100 530 330 2000 0 0>
52+
, <&key_physical_attrs 100 100 630 350 2000 0 0>
53+
, <&key_physical_attrs 100 100 800 385 (-2000) 0 0>
54+
, <&key_physical_attrs 100 100 900 365 (-2000) 0 0>
55+
, <&key_physical_attrs 100 100 1000 345 (-2000) 0 0>
56+
;
57+
};
58+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include "imperial44.dtsi"
2+
3+
&kscan0 {
4+
compatible = "zmk,kscan-gpio-matrix";
5+
6+
col-gpios
7+
= <&gpio1 11 GPIO_ACTIVE_HIGH>
8+
, <&gpio1 10 GPIO_ACTIVE_HIGH>
9+
, <&gpio0 3 GPIO_ACTIVE_HIGH>
10+
, <&gpio0 28 GPIO_ACTIVE_HIGH>
11+
, <&gpio1 13 GPIO_ACTIVE_HIGH>
12+
, <&gpio0 2 GPIO_ACTIVE_HIGH>
13+
;
14+
15+
row-gpios
16+
= <&gpio0 29 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
17+
, <&gpio0 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
18+
, <&gpio0 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
19+
, <&gpio0 24 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
20+
;
21+
};
22+
23+
&encoder_L1 {
24+
status = "okay";
25+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "imperial44_left.overlay"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "imperial44.dtsi"
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include "imperial44.dtsi"
2+
3+
&default_transform {
4+
col-offset = <6>;
5+
};
6+
7+
&kscan0 {
8+
compatible = "zmk,kscan-gpio-matrix";
9+
10+
col-gpios
11+
= <&gpio1 13 GPIO_ACTIVE_HIGH>
12+
, <&gpio0 2 GPIO_ACTIVE_HIGH>
13+
, <&gpio0 29 GPIO_ACTIVE_HIGH>
14+
, <&gpio0 10 GPIO_ACTIVE_HIGH>
15+
, <&gpio0 9 GPIO_ACTIVE_HIGH>
16+
, <&gpio0 24 GPIO_ACTIVE_HIGH>
17+
;
18+
19+
row-gpios
20+
= <&gpio0 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
21+
, <&gpio0 28 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
22+
, <&gpio0 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
23+
, <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
24+
;
25+
};
26+
27+
&encoder_R1 {
28+
status = "okay";
29+
};

build.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,32 @@ include:
104104
- board: ergohaven
105105
shield: k03_left_qube
106106

107+
- board: ergohaven
108+
shield: imperial44_left
109+
snippet: studio-rpc-usb-uart
110+
cmake-args: -DCONFIG_ZMK_STUDIO=y
111+
- board: ergohaven
112+
shield: imperial44_left
113+
keymap: imperial44_ruen
114+
snippet: studio-rpc-usb-uart
115+
cmake-args: -DCONFIG_ZMK_STUDIO=y
116+
artifact-name: imperial44_left_ruen-ergohaven-zmk
117+
- board: ergohaven
118+
shield: imperial44_right
119+
- board: ergohaven
120+
shield: imperial44_qube qube dongle_screen
121+
snippet: studio-rpc-usb-uart
122+
cmake-args: -DCONFIG_ZMK_STUDIO=y
123+
artifact-name: imperial44_qube-ergohaven-zmk
124+
- board: ergohaven
125+
shield: imperial44_qube qube dongle_screen
126+
keymap: imperial44_ruen
127+
snippet: studio-rpc-usb-uart
128+
cmake-args: -DCONFIG_ZMK_STUDIO=y
129+
artifact-name: imperial44_qube_ruen-ergohaven-zmk
130+
- board: ergohaven
131+
shield: imperial44_left_qube
132+
107133
- board: ergohaven
108134
shield: trackball
109135
snippet: studio-rpc-usb-uart

config/imperial44.conf

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CONFIG_ZMK_SLEEP=y
2+
CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=600000
3+
CONFIG_ZMK_PM_SOFT_OFF=y
4+
5+
CONFIG_ZMK_BATTERY_REPORTING=y
6+
CONFIG_ZMK_BATTERY_REPORT_INTERVAL=60
7+
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY=y
8+
CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y
9+
10+
CONFIG_ZMK_COMBO_MAX_KEYS_PER_COMBO=3
11+
CONFIG_ZMK_COMBO_MAX_COMBOS_PER_KEY=7
12+
13+
CONFIG_EC11=y
14+
CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y
15+
# CONFIG_SENSOR_LOG_LEVEL_DBG=y
16+
# CONFIG_DISPLAY_LOG_LEVEL_DBG=y

0 commit comments

Comments
 (0)