diff options
| -rw-r--r-- | .github/workflows/build.yml | 5 | ||||
| -rw-r--r-- | config/boards/shields/totem/Kconfig.defconfig | 19 | ||||
| -rw-r--r-- | config/boards/shields/totem/Kconfig.shield | 8 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem.conf | 0 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem.dtsi | 44 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem.keymap | 160 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem.zmk.yml | 11 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem_left.conf | 0 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem_left.overlay | 17 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem_right.conf | 0 | ||||
| -rw-r--r-- | config/boards/shields/totem/totem_right.overlay | 21 | ||||
| -rw-r--r-- | config/totem.conf | 4 | ||||
| -rw-r--r-- | config/totem.json | 53 | ||||
| -rw-r--r-- | config/totem.keymap | 137 | ||||
| -rw-r--r-- | config/west.yml | 11 | ||||
| -rw-r--r-- | docs/images/TOTEM_layout.svg | 107 | ||||
| -rw-r--r-- | docs/images/TOTEM_logo_bright.svg | 21 | ||||
| -rw-r--r-- | docs/images/TOTEM_logo_dark.svg | 21 |
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 + = <¯o_press &kp LSHFT> + , <¯o_tap &kp N2> + , <¯o_release &kp LSHFT> + , <¯o_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 < NAV SPACE < 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>; +}; + +< { + 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 +< 3 ESCAPE &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp SLASH < 4 APOSTROPHE + &mt LCTRL DEL < 1 TAB &kp SPACE &kp RET < 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 |