aboutsummaryrefslogtreecommitdiffhomepage
path: root/app
diff options
context:
space:
mode:
authorJoel Spadin <[email protected]>2024-09-27 19:25:29 -0500
committerPete Johanson <[email protected]>2024-11-06 11:35:51 -0700
commitcf2c46734ddff6bfaf35d7a638c9099185b8e9d2 (patch)
treeac60418f66423acd0158dcccc1c65d0fc12978c7 /app
parente6c1219f0cb705d6b2f60641cf21ac4161241449 (diff)
downloadzmk-cf2c46734ddff6bfaf35d7a638c9099185b8e9d2.tar.gz
zmk-cf2c46734ddff6bfaf35d7a638c9099185b8e9d2.zip
feat(boards): Add numpad layouts
Added physical layouts for the following variants of numpads: - With and without extra top row - 2U plus key or 1U plus and backspace keys - 2U 0 key or 1U 0 and 00 keys - Full 1U grid/macropad layout Other layouts exist, such as "southpaw" horizontally mirrored layouts, and layouts with a fifth column, but those seem to be much less common.
Diffstat (limited to 'app')
-rw-r--r--app/dts/layouts/common/numpad/17_key.dtsi43
-rw-r--r--app/dts/layouts/common/numpad/18_key.dtsi44
-rw-r--r--app/dts/layouts/common/numpad/18_key_00.dtsi44
-rw-r--r--app/dts/layouts/common/numpad/19_key_00.dtsi45
-rw-r--r--app/dts/layouts/common/numpad/20_key.dtsi46
-rw-r--r--app/dts/layouts/common/numpad/21_key.dtsi47
-rw-r--r--app/dts/layouts/common/numpad/22_key.dtsi48
-rw-r--r--app/dts/layouts/common/numpad/22_key_00.dtsi48
-rw-r--r--app/dts/layouts/common/numpad/23_key_00.dtsi49
-rw-r--r--app/dts/layouts/common/numpad/24_key.dtsi50
-rw-r--r--app/dts/layouts/common/numpad/position_map.dtsi7
11 files changed, 471 insertions, 0 deletions
diff --git a/app/dts/layouts/common/numpad/17_key.dtsi b/app/dts/layouts/common/numpad/17_key.dtsi
new file mode 100644
index 0000000000..2645803c8b
--- /dev/null
+++ b/app/dts/layouts/common/numpad/17_key.dtsi
@@ -0,0 +1,43 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_17_key: layout_numpad_17_key {
+ compatible = "zmk,physical-layout";
+ display-name = "17 Key Numpad";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 100 0 0 0>
+ , <&key_physical_attrs 100 100 100 100 0 0 0>
+ , <&key_physical_attrs 100 100 200 100 0 0 0>
+ , <&key_physical_attrs 100 200 300 100 0 0 0>
+ , <&key_physical_attrs 100 100 0 200 0 0 0>
+ , <&key_physical_attrs 100 100 100 200 0 0 0>
+ , <&key_physical_attrs 100 100 200 200 0 0 0>
+ , <&key_physical_attrs 100 100 0 300 0 0 0>
+ , <&key_physical_attrs 100 100 100 300 0 0 0>
+ , <&key_physical_attrs 100 100 200 300 0 0 0>
+ , <&key_physical_attrs 100 200 300 300 0 0 0>
+ , <&key_physical_attrs 200 100 0 400 0 0 0>
+ , <&key_physical_attrs 100 100 200 400 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_17_key {
+ physical-layout = <&layout_numpad_17_key>;
+ positions
+ = <17 18 19 20>
+ , < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 21>
+ , <11 12 13 14>
+ , <15 22 16 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/18_key.dtsi b/app/dts/layouts/common/numpad/18_key.dtsi
new file mode 100644
index 0000000000..82493a3840
--- /dev/null
+++ b/app/dts/layouts/common/numpad/18_key.dtsi
@@ -0,0 +1,44 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_18_key: layout_numpad_18_key {
+ compatible = "zmk,physical-layout";
+ display-name = "18 Key Numpad";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 100 0 0 0>
+ , <&key_physical_attrs 100 100 100 100 0 0 0>
+ , <&key_physical_attrs 100 100 200 100 0 0 0>
+ , <&key_physical_attrs 100 100 300 100 0 0 0>
+ , <&key_physical_attrs 100 100 0 200 0 0 0>
+ , <&key_physical_attrs 100 100 100 200 0 0 0>
+ , <&key_physical_attrs 100 100 200 200 0 0 0>
+ , <&key_physical_attrs 100 100 300 200 0 0 0>
+ , <&key_physical_attrs 100 100 0 300 0 0 0>
+ , <&key_physical_attrs 100 100 100 300 0 0 0>
+ , <&key_physical_attrs 100 100 200 300 0 0 0>
+ , <&key_physical_attrs 100 200 300 300 0 0 0>
+ , <&key_physical_attrs 200 100 0 400 0 0 0>
+ , <&key_physical_attrs 100 100 200 400 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_18_key {
+ physical-layout = <&layout_numpad_18_key>;
+ positions
+ = <18 19 20 21>
+ , < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 11>
+ , <12 13 14 15>
+ , <16 22 17 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/18_key_00.dtsi b/app/dts/layouts/common/numpad/18_key_00.dtsi
new file mode 100644
index 0000000000..e363bf5f35
--- /dev/null
+++ b/app/dts/layouts/common/numpad/18_key_00.dtsi
@@ -0,0 +1,44 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_18_key_00: layout_numpad_18_key_00 {
+ compatible = "zmk,physical-layout";
+ display-name = "18 Key Numpad (00)";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 100 0 0 0>
+ , <&key_physical_attrs 100 100 100 100 0 0 0>
+ , <&key_physical_attrs 100 100 200 100 0 0 0>
+ , <&key_physical_attrs 100 200 300 100 0 0 0>
+ , <&key_physical_attrs 100 100 0 200 0 0 0>
+ , <&key_physical_attrs 100 100 100 200 0 0 0>
+ , <&key_physical_attrs 100 100 200 200 0 0 0>
+ , <&key_physical_attrs 100 100 0 300 0 0 0>
+ , <&key_physical_attrs 100 100 100 300 0 0 0>
+ , <&key_physical_attrs 100 100 200 300 0 0 0>
+ , <&key_physical_attrs 100 200 300 300 0 0 0>
+ , <&key_physical_attrs 100 100 0 400 0 0 0>
+ , <&key_physical_attrs 100 100 100 400 0 0 0>
+ , <&key_physical_attrs 100 100 200 400 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_18_key_00 {
+ physical-layout = <&layout_numpad_18_key_00>;
+ positions
+ = <18 19 20 21>
+ , < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 22>
+ , <11 12 13 14>
+ , <15 16 17 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/19_key_00.dtsi b/app/dts/layouts/common/numpad/19_key_00.dtsi
new file mode 100644
index 0000000000..89f4d1a1a2
--- /dev/null
+++ b/app/dts/layouts/common/numpad/19_key_00.dtsi
@@ -0,0 +1,45 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_19_key_00: layout_numpad_19_key_00 {
+ compatible = "zmk,physical-layout";
+ display-name = "19 Key Numpad (00)";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 100 0 0 0>
+ , <&key_physical_attrs 100 100 100 100 0 0 0>
+ , <&key_physical_attrs 100 100 200 100 0 0 0>
+ , <&key_physical_attrs 100 100 300 100 0 0 0>
+ , <&key_physical_attrs 100 100 0 200 0 0 0>
+ , <&key_physical_attrs 100 100 100 200 0 0 0>
+ , <&key_physical_attrs 100 100 200 200 0 0 0>
+ , <&key_physical_attrs 100 100 300 200 0 0 0>
+ , <&key_physical_attrs 100 100 0 300 0 0 0>
+ , <&key_physical_attrs 100 100 100 300 0 0 0>
+ , <&key_physical_attrs 100 100 200 300 0 0 0>
+ , <&key_physical_attrs 100 200 300 300 0 0 0>
+ , <&key_physical_attrs 100 100 0 400 0 0 0>
+ , <&key_physical_attrs 100 100 100 400 0 0 0>
+ , <&key_physical_attrs 100 100 200 400 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_19_key_00 {
+ physical-layout = <&layout_numpad_19_key_00>;
+ positions
+ = <19 20 21 22>
+ , < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 11>
+ , <12 13 14 15>
+ , <16 17 18 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/20_key.dtsi b/app/dts/layouts/common/numpad/20_key.dtsi
new file mode 100644
index 0000000000..ec90852423
--- /dev/null
+++ b/app/dts/layouts/common/numpad/20_key.dtsi
@@ -0,0 +1,46 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_20_key: layout_numpad_20_key {
+ compatible = "zmk,physical-layout";
+ display-name = "20 Key Numpad";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 100 0 0 0>
+ , <&key_physical_attrs 100 100 100 100 0 0 0>
+ , <&key_physical_attrs 100 100 200 100 0 0 0>
+ , <&key_physical_attrs 100 100 300 100 0 0 0>
+ , <&key_physical_attrs 100 100 0 200 0 0 0>
+ , <&key_physical_attrs 100 100 100 200 0 0 0>
+ , <&key_physical_attrs 100 100 200 200 0 0 0>
+ , <&key_physical_attrs 100 100 300 200 0 0 0>
+ , <&key_physical_attrs 100 100 0 300 0 0 0>
+ , <&key_physical_attrs 100 100 100 300 0 0 0>
+ , <&key_physical_attrs 100 100 200 300 0 0 0>
+ , <&key_physical_attrs 100 100 300 300 0 0 0>
+ , <&key_physical_attrs 100 100 0 400 0 0 0>
+ , <&key_physical_attrs 100 100 100 400 0 0 0>
+ , <&key_physical_attrs 100 100 200 400 0 0 0>
+ , <&key_physical_attrs 100 100 300 400 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_20_key {
+ physical-layout = <&layout_numpad_20_key>;
+ positions
+ = <20 21 22 23>
+ , < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 11>
+ , <12 13 14 15>
+ , <16 17 18 19>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/21_key.dtsi b/app/dts/layouts/common/numpad/21_key.dtsi
new file mode 100644
index 0000000000..b4ab99cb73
--- /dev/null
+++ b/app/dts/layouts/common/numpad/21_key.dtsi
@@ -0,0 +1,47 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_21_key: layout_numpad_21_key {
+ compatible = "zmk,physical-layout";
+ display-name = "21 Key Numpad";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 125 0 0 0>
+ , <&key_physical_attrs 100 100 100 125 0 0 0>
+ , <&key_physical_attrs 100 100 200 125 0 0 0>
+ , <&key_physical_attrs 100 100 300 125 0 0 0>
+ , <&key_physical_attrs 100 100 0 225 0 0 0>
+ , <&key_physical_attrs 100 100 100 225 0 0 0>
+ , <&key_physical_attrs 100 100 200 225 0 0 0>
+ , <&key_physical_attrs 100 200 300 225 0 0 0>
+ , <&key_physical_attrs 100 100 0 325 0 0 0>
+ , <&key_physical_attrs 100 100 100 325 0 0 0>
+ , <&key_physical_attrs 100 100 200 325 0 0 0>
+ , <&key_physical_attrs 100 100 0 425 0 0 0>
+ , <&key_physical_attrs 100 100 100 425 0 0 0>
+ , <&key_physical_attrs 100 100 200 425 0 0 0>
+ , <&key_physical_attrs 100 200 300 425 0 0 0>
+ , <&key_physical_attrs 200 100 0 525 0 0 0>
+ , <&key_physical_attrs 100 100 200 525 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_21_key {
+ physical-layout = <&layout_numpad_21_key>;
+ positions
+ = < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 11>
+ , <12 13 14 21>
+ , <15 16 17 18>
+ , <19 22 20 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/22_key.dtsi b/app/dts/layouts/common/numpad/22_key.dtsi
new file mode 100644
index 0000000000..29bd5ac864
--- /dev/null
+++ b/app/dts/layouts/common/numpad/22_key.dtsi
@@ -0,0 +1,48 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_22_key: layout_numpad_22_key {
+ compatible = "zmk,physical-layout";
+ display-name = "22 Key Numpad";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 125 0 0 0>
+ , <&key_physical_attrs 100 100 100 125 0 0 0>
+ , <&key_physical_attrs 100 100 200 125 0 0 0>
+ , <&key_physical_attrs 100 100 300 125 0 0 0>
+ , <&key_physical_attrs 100 100 0 225 0 0 0>
+ , <&key_physical_attrs 100 100 100 225 0 0 0>
+ , <&key_physical_attrs 100 100 200 225 0 0 0>
+ , <&key_physical_attrs 100 100 300 225 0 0 0>
+ , <&key_physical_attrs 100 100 0 325 0 0 0>
+ , <&key_physical_attrs 100 100 100 325 0 0 0>
+ , <&key_physical_attrs 100 100 200 325 0 0 0>
+ , <&key_physical_attrs 100 100 300 325 0 0 0>
+ , <&key_physical_attrs 100 100 0 425 0 0 0>
+ , <&key_physical_attrs 100 100 100 425 0 0 0>
+ , <&key_physical_attrs 100 100 200 425 0 0 0>
+ , <&key_physical_attrs 100 200 300 425 0 0 0>
+ , <&key_physical_attrs 200 100 0 525 0 0 0>
+ , <&key_physical_attrs 100 100 200 525 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_22_key {
+ physical-layout = <&layout_numpad_22_key>;
+ positions
+ = < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 11>
+ , <12 13 14 15>
+ , <16 17 18 19>
+ , <20 22 21 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/22_key_00.dtsi b/app/dts/layouts/common/numpad/22_key_00.dtsi
new file mode 100644
index 0000000000..28666d1472
--- /dev/null
+++ b/app/dts/layouts/common/numpad/22_key_00.dtsi
@@ -0,0 +1,48 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_22_key_00: layout_numpad_22_key_00 {
+ compatible = "zmk,physical-layout";
+ display-name = "22 Key Numpad (00)";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 125 0 0 0>
+ , <&key_physical_attrs 100 100 100 125 0 0 0>
+ , <&key_physical_attrs 100 100 200 125 0 0 0>
+ , <&key_physical_attrs 100 100 300 125 0 0 0>
+ , <&key_physical_attrs 100 100 0 225 0 0 0>
+ , <&key_physical_attrs 100 100 100 225 0 0 0>
+ , <&key_physical_attrs 100 100 200 225 0 0 0>
+ , <&key_physical_attrs 100 200 300 225 0 0 0>
+ , <&key_physical_attrs 100 100 0 325 0 0 0>
+ , <&key_physical_attrs 100 100 100 325 0 0 0>
+ , <&key_physical_attrs 100 100 200 325 0 0 0>
+ , <&key_physical_attrs 100 100 0 425 0 0 0>
+ , <&key_physical_attrs 100 100 100 425 0 0 0>
+ , <&key_physical_attrs 100 100 200 425 0 0 0>
+ , <&key_physical_attrs 100 200 300 425 0 0 0>
+ , <&key_physical_attrs 100 100 0 525 0 0 0>
+ , <&key_physical_attrs 100 100 100 525 0 0 0>
+ , <&key_physical_attrs 100 100 200 525 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_22_key_00 {
+ physical-layout = <&layout_numpad_22_key_00>;
+ positions
+ = < 0 1 2 3>
+ , < 4 5 6 7>
+ , < 8 9 10 11>
+ , <12 13 14 22>
+ , <15 16 17 18>
+ , <19 20 21 23>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/23_key_00.dtsi b/app/dts/layouts/common/numpad/23_key_00.dtsi
new file mode 100644
index 0000000000..b27da92ba8
--- /dev/null
+++ b/app/dts/layouts/common/numpad/23_key_00.dtsi
@@ -0,0 +1,49 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_23_key_00: layout_numpad_23_key_00 {
+ compatible = "zmk,physical-layout";
+ display-name = "23 Key Numpad (00)";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 125 0 0 0>
+ , <&key_physical_attrs 100 100 100 125 0 0 0>
+ , <&key_physical_attrs 100 100 200 125 0 0 0>
+ , <&key_physical_attrs 100 100 300 125 0 0 0>
+ , <&key_physical_attrs 100 100 0 225 0 0 0>
+ , <&key_physical_attrs 100 100 100 225 0 0 0>
+ , <&key_physical_attrs 100 100 200 225 0 0 0>
+ , <&key_physical_attrs 100 100 300 225 0 0 0>
+ , <&key_physical_attrs 100 100 0 325 0 0 0>
+ , <&key_physical_attrs 100 100 100 325 0 0 0>
+ , <&key_physical_attrs 100 100 200 325 0 0 0>
+ , <&key_physical_attrs 100 100 300 325 0 0 0>
+ , <&key_physical_attrs 100 100 0 425 0 0 0>
+ , <&key_physical_attrs 100 100 100 425 0 0 0>
+ , <&key_physical_attrs 100 100 200 425 0 0 0>
+ , <&key_physical_attrs 100 200 300 425 0 0 0>
+ , <&key_physical_attrs 100 100 0 525 0 0 0>
+ , <&key_physical_attrs 100 100 100 525 0 0 0>
+ , <&key_physical_attrs 100 100 200 525 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_23_key_00 {
+ physical-layout = <&layout_numpad_23_key_00>;
+ 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>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/24_key.dtsi b/app/dts/layouts/common/numpad/24_key.dtsi
new file mode 100644
index 0000000000..c410a53285
--- /dev/null
+++ b/app/dts/layouts/common/numpad/24_key.dtsi
@@ -0,0 +1,50 @@
+#include <layouts/common/numpad/position_map.dtsi>
+#include <physical_layouts.dtsi>
+
+/ {
+ layout_numpad_24_key: layout_numpad_24_key {
+ compatible = "zmk,physical-layout";
+ display-name = "24 Key Numpad";
+
+ keys // w h x y rot rx ry
+ = <&key_physical_attrs 100 100 0 0 0 0 0>
+ , <&key_physical_attrs 100 100 100 0 0 0 0>
+ , <&key_physical_attrs 100 100 200 0 0 0 0>
+ , <&key_physical_attrs 100 100 300 0 0 0 0>
+ , <&key_physical_attrs 100 100 0 125 0 0 0>
+ , <&key_physical_attrs 100 100 100 125 0 0 0>
+ , <&key_physical_attrs 100 100 200 125 0 0 0>
+ , <&key_physical_attrs 100 100 300 125 0 0 0>
+ , <&key_physical_attrs 100 100 0 225 0 0 0>
+ , <&key_physical_attrs 100 100 100 225 0 0 0>
+ , <&key_physical_attrs 100 100 200 225 0 0 0>
+ , <&key_physical_attrs 100 100 300 225 0 0 0>
+ , <&key_physical_attrs 100 100 0 325 0 0 0>
+ , <&key_physical_attrs 100 100 100 325 0 0 0>
+ , <&key_physical_attrs 100 100 200 325 0 0 0>
+ , <&key_physical_attrs 100 100 300 325 0 0 0>
+ , <&key_physical_attrs 100 100 0 425 0 0 0>
+ , <&key_physical_attrs 100 100 100 425 0 0 0>
+ , <&key_physical_attrs 100 100 200 425 0 0 0>
+ , <&key_physical_attrs 100 100 300 425 0 0 0>
+ , <&key_physical_attrs 100 100 0 525 0 0 0>
+ , <&key_physical_attrs 100 100 100 525 0 0 0>
+ , <&key_physical_attrs 100 100 200 525 0 0 0>
+ , <&key_physical_attrs 100 100 300 525 0 0 0>
+ ;
+ };
+};
+
+&layouts_common_numpad_position_map {
+ layout_numpad_24_key {
+ physical-layout = <&layout_numpad_24_key>;
+ 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>
+ ;
+ };
+};
diff --git a/app/dts/layouts/common/numpad/position_map.dtsi b/app/dts/layouts/common/numpad/position_map.dtsi
new file mode 100644
index 0000000000..541cc5182e
--- /dev/null
+++ b/app/dts/layouts/common/numpad/position_map.dtsi
@@ -0,0 +1,7 @@
+/ {
+ layouts_common_numpad_position_map: layouts_common_numpad_position_map {
+ compatible = "zmk,physical-layout-position-map";
+
+ complete;
+ };
+};