about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authoreigatech <120486526+eigatech@users.noreply.github.com>2023-07-22 11:14:12 +0300
committerGitHub <noreply@github.com>2023-07-22 11:14:12 +0300
commit4add9564dc8649eded99a98acd8ce3afd08fb40c (patch)
treeda7ebc223926ba508e8ba039ef4f6ada67d21b64
parentc7206d2d89e98346c182f66c9da2a6b4c2b7d9a3 (diff)
downloadzmk-config-4add9564dc8649eded99a98acd8ce3afd08fb40c.tar.gz
zmk-config-4add9564dc8649eded99a98acd8ce3afd08fb40c.zip
cleanup of previous fork
-rw-r--r--.github/workflows/build.yml5
-rw-r--r--config/boards/shields/totem/Kconfig.defconfig19
-rw-r--r--config/boards/shields/totem/Kconfig.shield8
-rw-r--r--config/boards/shields/totem/totem.conf0
-rw-r--r--config/boards/shields/totem/totem.dtsi44
-rw-r--r--config/boards/shields/totem/totem.keymap160
-rw-r--r--config/boards/shields/totem/totem.zmk.yml11
-rw-r--r--config/boards/shields/totem/totem_left.conf0
-rw-r--r--config/boards/shields/totem/totem_left.overlay17
-rw-r--r--config/boards/shields/totem/totem_right.conf0
-rw-r--r--config/boards/shields/totem/totem_right.overlay21
-rw-r--r--config/totem.conf4
-rw-r--r--config/totem.json53
-rw-r--r--config/totem.keymap137
-rw-r--r--config/west.yml11
-rw-r--r--docs/images/TOTEM_layout.svg107
-rw-r--r--docs/images/TOTEM_logo_bright.svg21
-rw-r--r--docs/images/TOTEM_logo_dark.svg21
18 files changed, 639 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..d74fb89
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,5 @@
+on: [push, pull_request, workflow_dispatch]
+
+jobs:
+  build:
+    uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@main
diff --git a/config/boards/shields/totem/Kconfig.defconfig b/config/boards/shields/totem/Kconfig.defconfig
new file mode 100644
index 0000000..8699cda
--- /dev/null
+++ b/config/boards/shields/totem/Kconfig.defconfig
@@ -0,0 +1,19 @@
+# Copyright (c) 2022 The ZMK Contributors
+# SPDX-License-Identifier: MIT
+
+if SHIELD_TOTEM_LEFT
+
+config ZMK_KEYBOARD_NAME
+    default "TOTEM"
+    
+config ZMK_SPLIT_ROLE_CENTRAL
+    default y
+
+endif
+
+if SHIELD_TOTEM_LEFT || SHIELD_TOTEM_RIGHT
+
+config ZMK_SPLIT
+    default y
+
+endif
diff --git a/config/boards/shields/totem/Kconfig.shield b/config/boards/shields/totem/Kconfig.shield
new file mode 100644
index 0000000..7c1691d
--- /dev/null
+++ b/config/boards/shields/totem/Kconfig.shield
@@ -0,0 +1,8 @@
+# Copyright (c) 2022 The ZMK Contributors
+# SPDX-License-Identifier: MIT
+
+config SHIELD_TOTEM_LEFT
+    def_bool $(shields_list_contains,totem_left)
+
+config SHIELD_TOTEM_RIGHT
+    def_bool $(shields_list_contains,totem_right)
diff --git a/config/boards/shields/totem/totem.conf b/config/boards/shields/totem/totem.conf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/boards/shields/totem/totem.conf
diff --git a/config/boards/shields/totem/totem.dtsi b/config/boards/shields/totem/totem.dtsi
new file mode 100644
index 0000000..54f531c
--- /dev/null
+++ b/config/boards/shields/totem/totem.dtsi
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2022 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include <dt-bindings/zmk/matrix_transform.h>
+
+/ {
+    chosen {
+        zmk,kscan = &kscan0;
+        zmk,matrix_transform = &default_transform;
+    };
+
+    default_transform: keymap_transform_0 {
+        compatible = "zmk,matrix-transform";
+        columns = <10>;
+        rows = <4>;
+//             | SW01  | SW02  | SW03  | SW04  | SW05  |  | SW05  | SW04  | SW03  | SW02  | SW01  |
+//             | SW06  | SW07  | SW08  | SW09  | SW10  |  | SW10  | SW09  | SW08  | SW07  | SW06  | 
+//      | SW16 | SW11  | SW12  | SW13  | SW14  | SW15  |  | SW15  | SW14  | SW13  | SW12  | SW11  | SW16  |
+//                             | SW17  | SW18  | SW19  |  | SW19  | SW18  | SW17  | 
+        map = <
+                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)
+                RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4)    RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9)
+        RC(3,0) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4)    RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(3,9)
+                                RC(3,2) RC(3,3) RC(3,4)    RC(3,5) RC(3,6) RC(3,7)         
+        >;
+    };
+
+
+    kscan0: kscan_0 {
+        compatible = "zmk,kscan-gpio-matrix";
+        label = "KSCAN";
+        
+        diode-direction = "col2row"; 
+        row-gpios
+            = <&xiao_d 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+            , <&xiao_d 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+            , <&xiao_d 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+            , <&xiao_d 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+            ;
+    };
+};
\ No newline at end of file
diff --git a/config/boards/shields/totem/totem.keymap b/config/boards/shields/totem/totem.keymap
new file mode 100644
index 0000000..3686c70
--- /dev/null
+++ b/config/boards/shields/totem/totem.keymap
@@ -0,0 +1,160 @@
+//
+//                                                        ▀▀▀▀▀     ▀▀▀▀▀          ▀▀█▀▀
+//                                                        ▄▀▀▀▄  ▄  ▄▀▀▀▄  ▄  ▄▀▀▀▄  █  ▄▀▀▀▄
+//                                                        █   █  █  █   █  █  █   █  █  █   █
+//                                                         ▀▀▀   █   ▀▀▀   █   ▀▀▀   ▀   ▀▀▀
+//                                                               █      ▄▄▄█▄▄▄    █   █  
+//                                                               ▀      █  █  █     █▄█
+//                                                             ▀▀▀▀▀    █  █  █      ▀
+//                                                                      ▀  ▀  ▀
+//
+// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+       
+
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/keys.h>
+#include <dt-bindings/zmk/bt.h>
+#include <dt-bindings/zmk/outputs.h>
+
+#define BASE 0
+#define NAV  1
+#define SYM  2
+#define ADJ  3
+
+&mt {
+  quick-tap-ms = <100>;
+  global-quick-tap;
+  flavor = "tap-preferred";
+  tapping-term-ms = <170>;
+};
+
+/ {
+    combos {
+            compatible = "zmk,combos";
+            combo_esc {
+                timeout-ms = <50>;
+                key-positions = <0 1>;
+                bindings = <&kp ESC>;
+            };
+    };
+
+    macros {
+        gif: gif {
+            label = "giphy";
+            compatible = "zmk,behavior-macro";
+            #binding-cells = <0>;
+            bindings
+                = <&macro_press &kp LSHFT>
+                , <&macro_tap &kp N2>
+                , <&macro_release &kp LSHFT>
+                , <&macro_tap &kp G &kp I &kp F>
+                ;
+        };
+    };
+
+        keymap {
+                compatible = "zmk,keymap";
+// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+
+                base_layer {
+// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+label= "BASE"                              ;
+// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+//             ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓   ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓
+//             ┃     Q     ┃     W     ┃     F     ┃     P     ┃     G     ┃   ┃     J     ┃     L     ┃     U     ┃     Y     ┃     ;     ┃
+//             ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫
+//             ┃     A     ┃     R     ┃     S     ┃     T     ┃     D     ┃   ┃     H     ┃     N     ┃     E     ┃     I     ┃     O     ┃
+// ┏━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┓
+// ┃           ┃     Z     ┃     X     ┃     C     ┃     V     ┃     B     ┃   ┃     K     ┃     M     ┃     ,     ┃     .     ┃     /     ┃           ┃
+// ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+//                                     ┃           ┃    TAB    ┃    SPC    ┃   ┃   ENTER   ┃   BSPC    ┃           ┃
+//                                     ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛   ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+ bindings = <
+// ╷           ╷           ╷           ╷           ╷           ╷           ╷   ╷           ╷           ╷           ╷           ╷           ╷           ╷
+
+                &kp Q       &kp W       &kp F       &kp P       &kp G           &kp J       &kp L       &kp U       &kp Y       &kp SEMI
+                &mt LGUI A  &mt LALT R  &mt LCTRL S &mt LSHFT T &kp D           &kp H       &mt RSHFT N &mt RCTRL E &mt RALT I  &mt RGUI O
+    &kp Z       &kp Z       &kp X       &kp C       &kp V       &kp B           &kp K       &kp M       &kp COMMA   &kp DOT     &kp FSLH    &kp FSLH
+                                        &kp TAB     &kp TAB     &lt NAV SPACE   &lt SYM RET &kp BSPC    &kp BSPC
+                        >;
+                };
+
+// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+
+
+                nav_layer {
+// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+label= "NAVI"                              ;
+// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+//             ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓   ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓
+//             ┃           ┃           ┃     UP    ┃           ┃     {     ┃   ┃     }     ┃     7     ┃     8     ┃     9     ┃     +     ┃
+//             ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫
+//             ┃   SHIFT   ┃   LEFT    ┃    DOWN   ┃   RIGHT   ┃     [     ┃   ┃     ]     ┃     4     ┃     5     ┃     6     ┃     -     ┃
+// ┏━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┓
+// ┃           ┃           ┃   P UP    ┃  C LOCK   ┃  P DOWN   ┃     (     ┃   ┃     )     ┃     1     ┃     2     ┃     3     ┃     *     ┃           ┃
+// ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+//                                     ┃           ┃    TAB    ┃    SPC    ┃   ┃    DEL    ┃     0     ┃           ┃
+//                                     ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛   ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+ bindings = <
+// ╷           ╷           ╷           ╷           ╷           ╷           ╷   ╷           ╷           ╷           ╷           ╷           ╷           ╷
+
+                &kp ESC     &bt BT_CLR  &kp UP      &kp EQUAL   &kp LBRC        &kp RBRC    &kp KP_N7   &kp KP_N8   &kp KP_N9   &kp KP_PLUS
+                &kp LSHFT   &kp LEFT    &kp DOWN    &kp RIGHT   &kp LBKT        &kp RBKT    &kp KP_N4   &kp KP_N5   &kp KP_N6   &kp KP_MINUS
+    &trans      &kp DEL     &kp PG_UP   &kp CAPS    &kp PG_DN   &kp LPAR        &kp RPAR    &kp KP_N1   &kp KP_N2   &kp KP_N3   &kp KP_MULTIPLY &trans      
+                                        &trans      &trans      &trans          &mo ADJ     &kp KP_N0   &trans      
+                        >;
+                };
+
+// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+
+
+                sim_layer {
+// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+label= "SYM"                               ;
+// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+//             ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓   ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓
+//             ┃     !     ┃     @     ┃     #     ┃     $     ┃     %     ┃   ┃     ˆ     ┃     &     ┃     Ü     ┃     '     ┃     "     ┃
+//             ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫
+//             ┃     Ä     ┃           ┃    SZ     ┃           ┃           ┃   ┃   MUTE    ┃   YEN     ┃   EURO    ┃  POUND    ┃     Ö     ┃
+// ┏━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┓
+// ┃           ┃  EMAIL1   ┃  EMAIL2   ┃           ┃           ┃           ┃   ┃   VOL-    ┃   VOL+    ┃   LAST    ┃   NEXT    ┃     \     ┃           ┃
+// ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+//                                     ┃           ┃    GIF    ┃    ADJ    ┃   ┃           ┃           ┃           ┃
+//                                     ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛   ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+ bindings = <
+// ╷           ╷           ╷           ╷           ╷           ╷           ╷   ╷           ╷           ╷           ╷           ╷           ╷           ╷
+
+                &kp EXCL    &kp AT      &kp HASH    &kp DLLR    &kp PRCNT       &kp CARET   &kp AMPS    &kp RA(U)   &kp SQT     &kp DQT       
+                &kp RA(A)   &trans      &kp RA(S)   &trans      &trans          &kp C_MUTE  &kp LS(RA(N4)) &kp RA(N5) &kp RA(N4)   &kp RA(O) 
+    &trans      &kp RA(F18) &kp RA(F19) &trans      &trans      &trans          &kp C_VOL_DN &kp C_VOL_UP &kp C_PREV &kp C_NEXT  &kp BSLH   &trans         
+                                        &trans      &gif        &mo ADJ         &trans      &kp C_PP    &trans      
+                        >;
+                };
+
+// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+
+
+                adjust_layer {
+// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+label= "ADJ"                               ;
+// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+//             ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓   ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓
+//             ┃   RESET   ┃ BT CLEAR  ┃  OUT TOG  ┃           ┃           ┃   ┃           ┃    F7     ┃    F8     ┃    F9     ┃    F12    ┃
+//             ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫
+//             ┃ BOOTLOAD  ┃ BT NEXT   ┃           ┃           ┃           ┃   ┃           ┃    F4     ┃    F5     ┃    F6     ┃    F11    ┃
+// ┏━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┓
+// ┃           ┃           ┃ BT PREV   ┃           ┃           ┃           ┃   ┃           ┃    F1     ┃    F2     ┃    F3     ┃    F10    ┃           ┃
+// ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫   ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+//                                     ┃           ┃           ┃           ┃   ┃           ┃           ┃           ┃
+//                                     ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛   ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛
+ bindings = <
+// ╷           ╷           ╷           ╷           ╷           ╷           ╷   ╷           ╷           ╷           ╷           ╷           ╷           ╷
+
+                &sys_reset  &bt BT_CLR &out OUT_TOG &trans      &trans          &trans      &kp F7      &kp F8      &kp F9      &kp F12
+                &bootloader &bt BT_NXT  &trans      &trans      &trans          &trans      &kp F4      &kp F5      &kp F6      &kp F11  
+    &trans      &trans      &bt BT_PRV  &trans      &trans      &trans          &trans      &kp F1      &kp F2      &kp F3      &kp F10     &trans         
+                                        &trans      &trans      &trans          &trans      &trans      &trans      
+                        >;
+                };
+        };
+};
\ No newline at end of file
diff --git a/config/boards/shields/totem/totem.zmk.yml b/config/boards/shields/totem/totem.zmk.yml
new file mode 100644
index 0000000..537a041
--- /dev/null
+++ b/config/boards/shields/totem/totem.zmk.yml
@@ -0,0 +1,11 @@
+file_format: "1"
+id: totem
+name: TOTEM
+type: shield
+url: https://github.com/GEIGEIGEIST/TOTEM
+requires: [seeeduino_xiao_ble]
+features:
+  - keys
+siblings:
+  - totem_left
+  - totem_right
diff --git a/config/boards/shields/totem/totem_left.conf b/config/boards/shields/totem/totem_left.conf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/boards/shields/totem/totem_left.conf
diff --git a/config/boards/shields/totem/totem_left.overlay b/config/boards/shields/totem/totem_left.overlay
new file mode 100644
index 0000000..d5659c9
--- /dev/null
+++ b/config/boards/shields/totem/totem_left.overlay
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2022 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include "totem.dtsi"
+
+&kscan0 {
+    col-gpios
+        = <&xiao_d 4 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 5 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 10 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 9 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 8 GPIO_ACTIVE_HIGH>
+        ;
+};
diff --git a/config/boards/shields/totem/totem_right.conf b/config/boards/shields/totem/totem_right.conf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/config/boards/shields/totem/totem_right.conf
diff --git a/config/boards/shields/totem/totem_right.overlay b/config/boards/shields/totem/totem_right.overlay
new file mode 100644
index 0000000..65f84f6
--- /dev/null
+++ b/config/boards/shields/totem/totem_right.overlay
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2022 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include "totem.dtsi"
+
+&default_transform {
+    col-offset = <5>;
+};
+
+&kscan0 {
+    col-gpios
+        = <&xiao_d 8 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 9 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 10 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 5 GPIO_ACTIVE_HIGH>
+        , <&xiao_d 4 GPIO_ACTIVE_HIGH>
+        ;
+};
diff --git a/config/totem.conf b/config/totem.conf
new file mode 100644
index 0000000..e42c219
--- /dev/null
+++ b/config/totem.conf
@@ -0,0 +1,4 @@
+CONFIG_ZMK_USB_LOGGING=n

+

+CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n

+CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
\ No newline at end of file
diff --git a/config/totem.json b/config/totem.json
new file mode 100644
index 0000000..fcb3ea8
--- /dev/null
+++ b/config/totem.json
@@ -0,0 +1,53 @@
+{
+  "id": "totem",
+  "name": "totem",
+  "layouts": {
+    "default_layout": {
+      "name": "default_layout",
+      "layout": [
+        { "row": 0, "col":  1, "x":  1, "y": 0 },
+        { "row": 0, "col":  2, "x":  2, "y": 0 },
+        { "row": 0, "col":  3, "x":  3, "y": 0 },
+        { "row": 0, "col":  4, "x":  4, "y": 0 },
+        { "row": 0, "col":  5, "x":  5, "y": 0 },
+        { "row": 0, "col":  6, "x":  6, "y": 0 },
+        { "row": 0, "col":  7, "x":  7, "y": 0 },
+        { "row": 0, "col":  8, "x":  8, "y": 0 },
+        { "row": 0, "col":  9, "x":  9, "y": 0 },
+        { "row": 0, "col": 10, "x": 10, "y": 0 },
+
+        { "row": 1, "col":  1, "x":  1, "y": 1 },
+        { "row": 1, "col":  2, "x":  2, "y": 1 },
+        { "row": 1, "col":  3, "x":  3, "y": 1 },
+        { "row": 1, "col":  4, "x":  4, "y": 1 },
+        { "row": 1, "col":  5, "x":  5, "y": 1 },
+        { "row": 1, "col":  6, "x":  6, "y": 1 },
+        { "row": 1, "col":  7, "x":  7, "y": 1 },
+        { "row": 1, "col":  8, "x":  8, "y": 1 },
+        { "row": 1, "col":  9, "x":  9, "y": 1 },
+        { "row": 1, "col": 10, "x": 10, "y": 1 },
+
+        { "row": 2, "col":  0, "x":  0, "y": 2 },
+        { "row": 2, "col":  1, "x":  1, "y": 2 },
+        { "row": 2, "col":  2, "x":  2, "y": 2 },
+        { "row": 2, "col":  3, "x":  3, "y": 2 },
+        { "row": 2, "col":  4, "x":  4, "y": 2 },
+        { "row": 2, "col":  5, "x":  5, "y": 2 },
+        { "row": 2, "col":  6, "x":  6, "y": 2 },
+        { "row": 2, "col":  7, "x":  7, "y": 2 },
+        { "row": 2, "col":  8, "x":  8, "y": 2 },
+        { "row": 2, "col":  9, "x":  9, "y": 2 },
+        { "row": 2, "col": 10, "x": 10, "y": 2 },
+        { "row": 2, "col": 11, "x": 11, "y": 2 },
+
+        { "row": 3, "col":  3, "x":  3, "y": 3 },
+        { "row": 3, "col":  4, "x":  4, "y": 3 },
+        { "row": 3, "col":  5, "x":  5, "y": 3 },
+        { "row": 3, "col":  6, "x":  6, "y": 3 },
+        { "row": 3, "col":  7, "x":  7, "y": 3 },
+        { "row": 3, "col":  8, "x":  8, "y": 3 }
+      ]
+    }
+  },
+  "sensors": []
+}
\ No newline at end of file
diff --git a/config/totem.keymap b/config/totem.keymap
new file mode 100644
index 0000000..b6a237d
--- /dev/null
+++ b/config/totem.keymap
@@ -0,0 +1,137 @@
+//
+//                                                        ▀▀▀▀▀     ▀▀▀▀▀          ▀▀█▀▀
+//                                                        ▄▀▀▀▄  ▄  ▄▀▀▀▄  ▄  ▄▀▀▀▄  █  ▄▀▀▀▄
+//                                                        █   █  █  █   █  █  █   █  █  █   █
+//                                                         ▀▀▀   █   ▀▀▀   █   ▀▀▀   ▀   ▀▀▀
+//                                                               █      ▄▄▄█▄▄▄    █   █  
+//                                                               ▀      █  █  █     █▄█
+//                                                             ▀▀▀▀▀    █  █  █      ▀
+//                                                                      ▀  ▀  ▀
+//
+// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/bt.h>
+#include <dt-bindings/zmk/ext_power.h>
+#include <dt-bindings/zmk/keys.h>
+
+#define Base        0
+#define Media       1
+#define Nav         2
+#define Mouse       3
+#define Sym         4
+#define Num         5
+#define Fun         6
+#define Button      7
+#define Game        8
+#define Gameplus    9
+
+&mt {
+    quick-tap-ms = <100>;
+    global-quick-tap;
+    flavor = "tap-preferred";
+    tapping-term-ms = <170>;
+};
+
+&lt {
+    tapping-term-ms = <240>;
+    flavor = "balanced";
+    quick-tap-ms = <150>;
+};
+
+/ {
+    behaviors {
+        hm: homerow_mods {
+            compatible = "zmk,behavior-hold-tap";
+            label = "HOMEROW_MODS";
+            #binding-cells = <2>;
+            flavor = "tap-preferred";
+            tapping-term-ms = <200>;
+            quick-tap-ms = <125>;
+            global-quick-tap;
+            bindings =
+                <&kp>,
+                <&kp>;
+        };
+    };
+
+    combos {
+        compatible = "zmk,combos";
+    };
+
+    keymap {
+        compatible = "zmk,keymap";
+
+        Base {
+            label = "Base";
+            bindings = <
+                   &kp Q       &kp W          &kp E         &kp R      &kp T    &kp Y        &kp U        &kp I       &kp O               &kp P
+              &hm LGUI A  &hm LALT S    &hm LCTRL D  &hm LSHIFT F      &kp G    &kp H  &hm RSHFT J  &hm RCTRL K  &hm RALT L  &hm RGUI SEMICOLON
+&lt 3 ESCAPE       &kp Z       &kp X          &kp C         &kp V      &kp B    &kp N        &kp M    &kp COMMA     &kp DOT           &kp SLASH  &lt 4 APOSTROPHE
+                                      &mt LCTRL DEL     &lt 1 TAB  &kp SPACE  &kp RET   &lt 2 BSPC    &kp MINUS
+            >;
+        };
+
+        Nav {
+            label = "Nav";
+            bindings = <
+                      &trans       &trans  &kp UP_ARROW     &trans  &kp LBRC  &kp RBRC  &kp NUMBER_7  &kp NUMBER_8  &kp NUMBER_9         &kp PLUS
+              &kp LEFT_SHIFT     &kp LEFT      &kp DOWN  &kp RIGHT  &kp LBKT  &kp RBKT  &kp NUMBER_4  &kp NUMBER_5  &kp NUMBER_6        &kp MINUS
+&kp LEFT_ALT          &trans  &kp PAGE_UP        &trans  &kp PG_DN  &kp LPAR  &kp RPAR  &kp NUMBER_1  &kp NUMBER_2  &kp NUMBER_3  &kp KP_MULTIPLY  &trans
+                                                 &trans     &trans    &trans    &trans        &trans  &kp NUMBER_0
+            >;
+        };
+
+        Sym {
+            label = "Sym";
+            bindings = <
+        &kp EXCL  &kp AT  &kp HASH  &kp DOLLAR  &kp PERCENT  &kp CARET  &kp AMPERSAND  &kp KP_ASTERISK  &kp SQT    &kp DQT
+          &trans  &trans    &trans      &trans       &trans     &trans         &trans           &trans   &trans     &trans
+&trans    &trans  &trans    &trans      &trans       &trans  &kp UNDER      &kp EQUAL           &trans   &trans  &kp SLASH  &kp HOME
+                            &trans      &trans       &trans     &trans         &trans           &trans
+            >;
+        };
+
+        Fun {
+            label = "Fun";
+            bindings = <
+        &trans  &trans  &trans  &trans  &trans  &trans  &trans  &trans  &trans   &kp F1
+        &trans  &trans  &trans  &trans   &to 5  &trans  &trans  &trans  &trans  &kp F10
+&trans  &trans  &trans  &trans  &trans  &trans  &trans  &trans  &trans  &trans  &kp F20  &trans
+                        &trans  &trans  &trans  &trans  &trans  &trans
+            >;
+        };
+
+        Button {
+            label = "Button";
+            bindings = <
+                    &bt BT_CLR    &trans     &trans      &trans  &bt BT_SEL 0      &trans            &trans      &trans  &bootloader    &trans
+                      &kp LGUI  &kp LALT  &kp LCTRL  &kp LSHIFT  &bt BT_SEL 1      &trans        &kp RSHIFT   &kp RCTRL     &kp RALT  &kp RGUI
+&bootloader  &ext_power EP_TOG    &trans     &trans      &trans  &bt BT_SEL 2      &trans            &trans      &trans       &trans    &trans  &trans
+                                             &trans      &trans        &trans  &kp C_PREV  &kp C_PLAY_PAUSE  &kp C_NEXT
+            >;
+        };
+
+        Gaming {
+            bindings = <
+            &trans  &trans     &trans        &trans  &trans  &trans  &trans  &trans  &trans  &trans
+             &kp A   &kp S      &kp D         &kp F   &mo 6  &trans  &trans  &trans  &trans  &trans
+&kp ESCAPE  &trans  &trans     &trans        &trans  &trans  &trans  &trans  &trans  &trans  &trans  &trans
+                            &kp LCTRL  &kp LEFT_ALT  &trans  &trans  &trans  &trans
+            >;
+
+            label = "Gaming";
+        };
+
+        Gaming+ {
+            bindings = <
+         &kp NUMBER_1  &kp NUMBER_2  &kp NUMBER_3  &kp NUMBER_4  &kp NUMBER_5  &trans  &trans  &trans  &trans  &kp LC(RA(DEL))
+                &kp L         &kp O         &kp Y         &kp K         &kp G  &kp F5  &trans  &trans  &trans           &trans
+&kp TAB         &to 0        &trans        &trans  &kp NUMBER_6  &kp NUMBER_7  &trans  &trans  &trans  &trans           &trans  &kp LA(F4)
+                                            &kp J         &kp I         &kp M  &trans  &trans  &trans
+            >;
+
+            label = "Gaming+";
+        };
+    };
+};
diff --git a/config/west.yml b/config/west.yml
new file mode 100644
index 0000000..379d291
--- /dev/null
+++ b/config/west.yml
@@ -0,0 +1,11 @@
+manifest:
+  remotes:
+    - name: zmkfirmware
+      url-base: https://github.com/zmkfirmware
+  projects:
+    - name: zmk
+      remote: zmkfirmware
+      revision: main
+      import: app/west.yml
+  self:
+    path: config
diff --git a/docs/images/TOTEM_layout.svg b/docs/images/TOTEM_layout.svg
new file mode 100644
index 0000000..0ae1a6d
--- /dev/null
+++ b/docs/images/TOTEM_layout.svg
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="258.64mm" height="94.36mm" viewBox="0 0 733.16 267.46">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #161b22;
+      }
+
+      .cls-2 {
+        fill: none;
+        stroke: #58a6ff;
+        stroke-miterlimit: 10;
+        stroke-width: .28px;
+      }
+    </style>
+  </defs>
+  <g id="Shape">
+    <path class="cls-1" d="M.69,160.19l27.77-4.9V14.61c0-1.57,1.27-2.83,2.83-2.83h125.46V.84c0-.46,.38-.84,.84-.84h50.76c.46,0,.84,.38,.84,.84V11.78h135.72c1.57,0,2.83,1.27,2.83,2.83V215.66l15.12,8.73c.4,.23,.54,.74,.31,1.14l-23.97,41.51c-.23,.4-.74,.54-1.14,.31-2.77-1.6-13.03-7.52-21.72-12.54-11.22-6.48-22.44-12.96-47.42-19.65s-37.59-6.69-50.19-6.69c-10.77,0-21.38,0-24.37,0-.46,0-.84-.38-.84-.84v-3.42H31.3c-1.57,0-2.83-1.27-2.83-2.83v-15.72l-19.16,3.38c-.46,.08-.89-.22-.97-.68L.01,161.16c-.08-.46,.22-.89,.68-.97Z"/>
+    <path class="cls-1" d="M732.46,160.19l-27.77-4.9V14.61c0-1.57-1.27-2.83-2.83-2.83h-125.46V.84c0-.46-.38-.84-.84-.84h-50.76c-.46,0-.84,.38-.84,.84V11.78h-135.72c-1.57,0-2.83,1.27-2.83,2.83V215.66l-15.12,8.73c-.4,.23-.54,.74-.31,1.14l23.97,41.51c.23,.4,.74,.54,1.14,.31,2.77-1.6,13.03-7.52,21.72-12.54,11.22-6.48,22.44-12.96,47.42-19.65s37.59-6.69,50.19-6.69c10.77,0,21.38,0,24.37,0,.46,0,.84-.38,.84-.84v-3.42h162.23c1.57,0,2.83-1.27,2.83-2.83v-15.72l19.16,3.38c.46,.08,.89-.22,.97-.68l8.32-47.2c.08-.46-.22-.89-.68-.97Z"/>
+  </g>
+  <g id="Keys_Kopie" data-name="Keys Kopie">
+    <g id="Keycaps">
+      <rect class="cls-2" x="259.97" y="33.02" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="259.97" y="81.22" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="259.97" y="129.33" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="208.96" y="25.42" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="208.96" y="73.62" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="208.96" y="121.82" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="157.96" y="1.41" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="157.96" y="49.51" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="157.96" y="97.71" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="194.74" y="180.27" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="99.69" y="30.3" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-3.44 8.81) rotate(-4)"/>
+      <rect class="cls-2" x="103.09" y="78.41" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-6.79 9.17) rotate(-4)"/>
+      <rect class="cls-2" x="106.39" y="126.41" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-10.13 9.52) rotate(-4)"/>
+      <rect class="cls-2" x="42.36" y="74.32" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-15.95 13.15) rotate(-10)"/>
+      <rect class="cls-2" x="50.66" y="121.83" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-24.07 15.31) rotate(-10)"/>
+      <rect class="cls-2" x="59.06" y="169.23" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-32.17 17.49) rotate(-10)"/>
+      <rect class="cls-2" x="252.67" y="186.64" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(.37 423.37) rotate(-75)"/>
+      <rect class="cls-2" x="304.89" y="208.37" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(-37.79 400.88) rotate(-60)"/>
+      <rect class="cls-2" x="4.98" y="156.81" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-30.84 7.91) rotate(-10)"/>
+    </g>
+    <g>
+      <rect class="cls-2" x="265.63" y="38.69" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="265.63" y="86.89" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="265.63" y="135" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="214.63" y="31.09" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="214.63" y="79.29" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="214.63" y="127.49" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="163.63" y="7.08" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="163.63" y="55.18" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="163.63" y="103.38" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="200.41" y="185.94" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="105.36" y="35.97" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-3.44 8.81) rotate(-4)"/>
+      <rect class="cls-2" x="108.76" y="84.07" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-6.79 9.17) rotate(-4)"/>
+      <rect class="cls-2" x="112.06" y="132.08" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-10.13 9.52) rotate(-4)"/>
+      <rect class="cls-2" x="48.03" y="79.99" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-15.95 13.15) rotate(-10)"/>
+      <rect class="cls-2" x="56.33" y="127.5" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-24.07 15.31) rotate(-10)"/>
+      <rect class="cls-2" x="64.73" y="174.9" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-32.17 17.49) rotate(-10)"/>
+      <rect class="cls-2" x="258.34" y="192.31" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(.37 423.37) rotate(-75)"/>
+      <rect class="cls-2" x="310.56" y="214.04" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(-37.79 400.88) rotate(-60)"/>
+      <rect class="cls-2" x="10.65" y="162.48" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-30.84 7.91) rotate(-10)"/>
+    </g>
+    <g id="Keycaps-2" data-name="Keycaps">
+      <rect class="cls-2" x="423.36" y="33.02" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="423.36" y="81.22" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="423.36" y="129.33" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="474.36" y="25.42" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="474.36" y="73.62" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="474.36" y="121.82" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="525.36" y="1.41" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="525.36" y="49.51" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="525.36" y="97.71" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="488.59" y="180.27" width="49.61" height="46.77" rx="2.61" ry="2.61"/>
+      <rect class="cls-2" x="585.05" y="28.89" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(512.43 656.9) rotate(-86)"/>
+      <rect class="cls-2" x="581.65" y="76.99" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(461.29 698.25) rotate(-86)"/>
+      <rect class="cls-2" x="578.35" y="124.99" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(410.33 739.61) rotate(-86)"/>
+      <rect class="cls-2" x="642.38" y="72.9" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(453.94 736.4) rotate(-80)"/>
+      <rect class="cls-2" x="634.08" y="120.41" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(400.29 767.48) rotate(-80)"/>
+      <rect class="cls-2" x="625.68" y="167.81" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(346.67 798.38) rotate(-80)"/>
+      <rect class="cls-2" x="432.07" y="188.06" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-39.16 125.45) rotate(-15)"/>
+      <rect class="cls-2" x="379.85" y="209.78" width="49.61" height="46.77" rx="2.61" ry="2.61" transform="translate(-62.37 233.57) rotate(-30)"/>
+      <rect class="cls-2" x="679.76" y="155.39" width="46.77" height="49.61" rx="2.61" ry="2.61" transform="translate(403.59 841.37) rotate(-80)"/>
+    </g>
+    <g>
+      <rect class="cls-2" x="429.03" y="38.69" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="429.03" y="86.89" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="429.03" y="135" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="480.03" y="31.09" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="480.03" y="79.29" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="480.03" y="127.49" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="531.03" y="7.08" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="531.03" y="55.18" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="531.03" y="103.38" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="494.25" y="185.94" width="38.27" height="35.43" rx=".95" ry=".95"/>
+      <rect class="cls-2" x="590.72" y="34.56" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(512.44 656.9) rotate(-86)"/>
+      <rect class="cls-2" x="587.32" y="82.66" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(461.29 698.25) rotate(-86)"/>
+      <rect class="cls-2" x="584.02" y="130.66" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(410.33 739.61) rotate(-86)"/>
+      <rect class="cls-2" x="648.05" y="78.57" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(453.93 736.39) rotate(-80)"/>
+      <rect class="cls-2" x="639.75" y="126.08" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(400.29 767.47) rotate(-80)"/>
+      <rect class="cls-2" x="631.35" y="173.48" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(346.67 798.37) rotate(-80)"/>
+      <rect class="cls-2" x="437.73" y="193.73" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-39.16 125.46) rotate(-15)"/>
+      <rect class="cls-2" x="385.52" y="215.45" width="38.27" height="35.43" rx=".95" ry=".95" transform="translate(-62.37 233.57) rotate(-30)"/>
+      <rect class="cls-2" x="685.43" y="161.06" width="35.43" height="38.27" rx=".95" ry=".95" transform="translate(403.59 841.37) rotate(-80)"/>
+    </g>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/docs/images/TOTEM_logo_bright.svg b/docs/images/TOTEM_logo_bright.svg
new file mode 100644
index 0000000..52505a4
--- /dev/null
+++ b/docs/images/TOTEM_logo_bright.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" width="830" height="380.94" viewBox="0 0 830 380.94">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #24292f;
+      }
+    </style>
+  </defs>
+  <path class="cls-1" d="M138.99,125.94c0-37.81-30.76-68.57-68.56-68.57S1.86,88.14,1.86,125.94s30.76,68.57,68.57,68.57,68.56-30.76,68.56-68.57Zm-68.56,26.67c-14.71,0-26.69-11.97-26.69-26.67s11.98-26.67,26.69-26.67,26.67,11.97,26.67,26.67-11.97,26.67-26.67,26.67Z"/>
+  <path class="cls-1" d="M369.33,125.94c0-37.81-30.76-68.57-68.57-68.57s-68.56,30.76-68.56,68.57,30.76,68.57,68.56,68.57,68.57-30.76,68.57-68.57Zm-68.57,26.67c-14.71,0-26.67-11.97-26.67-26.67s11.97-26.67,26.67-26.67,26.69,11.97,26.69,26.67-11.98,26.67-26.69,26.67Z"/>
+  <path class="cls-1" d="M185.6,261.33c11.58,0,20.94-9.38,20.94-20.95V120.96c0-11.57-9.37-20.95-20.94-20.95s-20.94,9.38-20.94,20.95v119.42c0,11.57,9.37,20.95,20.94,20.95Z"/>
+  <path class="cls-1" d="M235.09,287.77h-98.98c-11.58,0-20.94,9.38-20.94,20.95s9.37,20.95,20.94,20.95h98.98c11.58,0,20.94-9.38,20.94-20.95s-9.37-20.95-20.94-20.95Z"/>
+  <path class="cls-1" d="M20.94,41.9H119.93c11.58,0,20.94-9.38,20.94-20.95S131.5,0,119.93,0H20.94C9.37,0,0,9.38,0,20.95s9.37,20.95,20.94,20.95Z"/>
+  <path class="cls-1" d="M251.27,41.9h99c11.58,0,20.94-9.38,20.94-20.95S361.84,0,350.27,0h-99c-11.58,0-20.94,9.38-20.94,20.95s9.37,20.95,20.94,20.95Z"/>
+  <path class="cls-1" d="M599.66,125.94c0-37.81-30.76-68.57-68.56-68.57s-68.57,30.76-68.57,68.57,30.76,68.57,68.57,68.57,68.56-30.76,68.56-68.57Zm-68.56,26.67c-14.71,0-26.69-11.97-26.69-26.67s11.98-26.67,26.69-26.67,26.67,11.97,26.67,26.67-11.97,26.67-26.67,26.67Z"/>
+  <path class="cls-1" d="M486.63,213.71c-.54,0-1.05,.12-1.58,.16-.53-.04-1.04-.16-1.58-.16h-46.61V93.75c0-11.57-9.37-20.95-20.94-20.95s-20.94,9.38-20.94,20.95v119.95h-46.59c-.54,0-1.05,.12-1.58,.16-.53-.04-1.04-.16-1.58-.16-11.58,0-20.94,9.38-20.94,20.95v125.34c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95v-104.39h28.81v104.39c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95v-104.39h28.82v104.39c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95v-125.34c0-11.57-9.37-20.95-20.94-20.95Z"/>
+  <path class="cls-1" d="M761.43,57.37c-37.8,0-68.56,30.76-68.56,68.57s30.76,68.57,68.56,68.57,68.57-30.76,68.57-68.57-30.76-68.57-68.57-68.57Zm0,95.25c-14.71,0-26.67-11.97-26.67-26.67s11.97-26.67,26.67-26.67,26.69,11.97,26.69,26.67-11.98,26.67-26.69,26.67Z"/>
+  <path class="cls-1" d="M714.87,203.4c-9.9-5.92-22.76-2.81-28.77,7.12l-39.84,66.05-39.85-66.05c-6-9.94-18.88-13.08-28.77-7.12-9.9,5.98-13.09,18.85-7.12,28.75l57.79,95.79c3.8,6.29,10.61,10.13,17.94,10.13s14.14-3.85,17.94-10.13l57.78-95.79c5.98-9.91,2.79-22.78-7.12-28.76Z"/>
+  <path class="cls-1" d="M596.77,45.32h28.55v86.95c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95V45.32h28.55c11.58,0,20.94-9.38,20.94-20.95s-9.37-20.95-20.94-20.95h-98.98c-11.58,0-20.94,9.38-20.94,20.95s9.37,20.95,20.94,20.95Z"/>
+</svg>
\ No newline at end of file
diff --git a/docs/images/TOTEM_logo_dark.svg b/docs/images/TOTEM_logo_dark.svg
new file mode 100644
index 0000000..62922b0
--- /dev/null
+++ b/docs/images/TOTEM_logo_dark.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" width="830" height="380.94" viewBox="0 0 830 380.94">
+  <defs>
+    <style>
+      .cls-1 {
+        fill: #c9d1d9;
+      }
+    </style>
+  </defs>
+  <path class="cls-1" d="M138.99,125.94c0-37.81-30.76-68.57-68.56-68.57S1.86,88.14,1.86,125.94s30.76,68.57,68.57,68.57,68.56-30.76,68.56-68.57Zm-68.56,26.67c-14.71,0-26.69-11.97-26.69-26.67s11.98-26.67,26.69-26.67,26.67,11.97,26.67,26.67-11.97,26.67-26.67,26.67Z"/>
+  <path class="cls-1" d="M369.33,125.94c0-37.81-30.76-68.57-68.57-68.57s-68.56,30.76-68.56,68.57,30.76,68.57,68.56,68.57,68.57-30.76,68.57-68.57Zm-68.57,26.67c-14.71,0-26.67-11.97-26.67-26.67s11.97-26.67,26.67-26.67,26.69,11.97,26.69,26.67-11.98,26.67-26.69,26.67Z"/>
+  <path class="cls-1" d="M185.6,261.33c11.58,0,20.94-9.38,20.94-20.95V120.96c0-11.57-9.37-20.95-20.94-20.95s-20.94,9.38-20.94,20.95v119.42c0,11.57,9.37,20.95,20.94,20.95Z"/>
+  <path class="cls-1" d="M235.09,287.77h-98.98c-11.58,0-20.94,9.38-20.94,20.95s9.37,20.95,20.94,20.95h98.98c11.58,0,20.94-9.38,20.94-20.95s-9.37-20.95-20.94-20.95Z"/>
+  <path class="cls-1" d="M20.94,41.9H119.93c11.58,0,20.94-9.38,20.94-20.95S131.5,0,119.93,0H20.94C9.37,0,0,9.38,0,20.95s9.37,20.95,20.94,20.95Z"/>
+  <path class="cls-1" d="M251.27,41.9h99c11.58,0,20.94-9.38,20.94-20.95S361.84,0,350.27,0h-99c-11.58,0-20.94,9.38-20.94,20.95s9.37,20.95,20.94,20.95Z"/>
+  <path class="cls-1" d="M599.66,125.94c0-37.81-30.76-68.57-68.56-68.57s-68.57,30.76-68.57,68.57,30.76,68.57,68.57,68.57,68.56-30.76,68.56-68.57Zm-68.56,26.67c-14.71,0-26.69-11.97-26.69-26.67s11.98-26.67,26.69-26.67,26.67,11.97,26.67,26.67-11.97,26.67-26.67,26.67Z"/>
+  <path class="cls-1" d="M486.63,213.71c-.54,0-1.05,.12-1.58,.16-.53-.04-1.04-.16-1.58-.16h-46.61V93.75c0-11.57-9.37-20.95-20.94-20.95s-20.94,9.38-20.94,20.95v119.95h-46.59c-.54,0-1.05,.12-1.58,.16-.53-.04-1.04-.16-1.58-.16-11.58,0-20.94,9.38-20.94,20.95v125.34c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95v-104.39h28.81v104.39c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95v-104.39h28.82v104.39c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95v-125.34c0-11.57-9.37-20.95-20.94-20.95Z"/>
+  <path class="cls-1" d="M761.43,57.37c-37.8,0-68.56,30.76-68.56,68.57s30.76,68.57,68.56,68.57,68.57-30.76,68.57-68.57-30.76-68.57-68.57-68.57Zm0,95.25c-14.71,0-26.67-11.97-26.67-26.67s11.97-26.67,26.67-26.67,26.69,11.97,26.69,26.67-11.98,26.67-26.69,26.67Z"/>
+  <path class="cls-1" d="M714.87,203.4c-9.9-5.92-22.76-2.81-28.77,7.12l-39.84,66.05-39.85-66.05c-6-9.94-18.88-13.08-28.77-7.12-9.9,5.98-13.09,18.85-7.12,28.75l57.79,95.79c3.8,6.29,10.61,10.13,17.94,10.13s14.14-3.85,17.94-10.13l57.78-95.79c5.98-9.91,2.79-22.78-7.12-28.76Z"/>
+  <path class="cls-1" d="M596.77,45.32h28.55v86.95c0,11.57,9.37,20.95,20.94,20.95s20.94-9.38,20.94-20.95V45.32h28.55c11.58,0,20.94-9.38,20.94-20.95s-9.37-20.95-20.94-20.95h-98.98c-11.58,0-20.94,9.38-20.94,20.95s9.37,20.95,20.94,20.95Z"/>
+</svg>
\ No newline at end of file