From 167d2c0be527734ca992cf0b6ae2ba0ac41b3ef6 Mon Sep 17 00:00:00 2001 From: schwarzgrau Date: Tue, 13 Sep 2022 01:24:15 +0200 Subject: [PATCH] initial upload --- build.yaml | 20 +-- config/boards/shields/totem/Kconfig.defconfig | 30 ++++ config/boards/shields/totem/Kconfig.shield | 10 ++ config/boards/shields/totem/totem.conf | 3 + config/boards/shields/totem/totem.dtsi | 40 +++++ config/boards/shields/totem/totem.keymap | 160 ++++++++++++++++++ config/boards/shields/totem/totem.zmk.yml | 11 ++ .../shields/totem/totem_left.conf} | 0 .../boards/shields/totem/totem_left.overlay | 17 ++ config/boards/shields/totem/totem_right.conf | 0 .../boards/shields/totem/totem_right.overlay | 21 +++ config/hummingbird.keymap | 98 ----------- config/totem.conf | 0 config/totem.keymap | 160 ++++++++++++++++++ 14 files changed, 457 insertions(+), 113 deletions(-) create mode 100644 config/boards/shields/totem/Kconfig.defconfig create mode 100644 config/boards/shields/totem/Kconfig.shield create mode 100644 config/boards/shields/totem/totem.conf create mode 100644 config/boards/shields/totem/totem.dtsi create mode 100644 config/boards/shields/totem/totem.keymap create mode 100644 config/boards/shields/totem/totem.zmk.yml rename config/{hummingbird.conf => boards/shields/totem/totem_left.conf} (100%) create mode 100644 config/boards/shields/totem/totem_left.overlay create mode 100644 config/boards/shields/totem/totem_right.conf create mode 100644 config/boards/shields/totem/totem_right.overlay delete mode 100644 config/hummingbird.keymap create mode 100644 config/totem.conf create mode 100644 config/totem.keymap diff --git a/build.yaml b/build.yaml index ab26577..55c7237 100644 --- a/build.yaml +++ b/build.yaml @@ -1,17 +1,7 @@ -# This file generates the GitHub Actions matrix -# For simple board + shield combinations, add them -# to the top level board and shield arrays, for more -# control, add individual board + shield combinations to -# the `include` property, e.g: -# -# board: [ "nice_nano_v2" ] -# shield: [ "corne_left", "corne_right" ] -# include: -# - board: bdn9_rev2 -# - board: nice_nano_v2 -# shield: reviung41 -# ---- include: - board: seeeduino_xiao_ble - shield: hummingbird + shield: totem_left + - board: seeeduino_xiao_ble + shield: totem_right +# - board: seeeduino_xiao_ble +# shield: settings_reset \ No newline at end of file diff --git a/config/boards/shields/totem/Kconfig.defconfig b/config/boards/shields/totem/Kconfig.defconfig new file mode 100644 index 0000000..409b76b --- /dev/null +++ b/config/boards/shields/totem/Kconfig.defconfig @@ -0,0 +1,30 @@ +if SHIELD_TOTEM_LEFT + + config ZMK_KEYBOARD_NAME + default "TOTEM" + + config ZMK_SPLIT_BLE_ROLE_CENTRAL + default y + +endif # LEFT + + + +if SHIELD_TOTEM_LEFT || SHIELD_TOTEM_RIGHT + + config ZMK_SPLIT + default y + +endif # LEFT RIGHT + + + +if ZMK_BACKLIGHT + + config PWM + default y + + config LED_PWM + default y + +endif # ZMK_BACKLIGHT \ No newline at end of file diff --git a/config/boards/shields/totem/Kconfig.shield b/config/boards/shields/totem/Kconfig.shield new file mode 100644 index 0000000..f6431b9 --- /dev/null +++ b/config/boards/shields/totem/Kconfig.shield @@ -0,0 +1,10 @@ +config SHIELD_TOTEM + bool + +config SHIELD_TOTEM_LEFT + def_bool $(shields_list_contains,totem_left) + select SHIELD_TOTEM + +config SHIELD_TOTEM_RIGHT + def_bool $(shields_list_contains,totem_right) + select SHIELD_TOTEM \ No newline at end of file diff --git a/config/boards/shields/totem/totem.conf b/config/boards/shields/totem/totem.conf new file mode 100644 index 0000000..29e2d68 --- /dev/null +++ b/config/boards/shields/totem/totem.conf @@ -0,0 +1,3 @@ +# Uncomment these two line to add support for encoders to your firmware +#CONFIG_EC11=y +#CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y \ No newline at end of file diff --git a/config/boards/shields/totem/totem.dtsi b/config/boards/shields/totem/totem.dtsi new file mode 100644 index 0000000..a7d1481 --- /dev/null +++ b/config/boards/shields/totem/totem.dtsi @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform { + compatible = "zmk,matrix-transform"; + columns = <10>; + rows = <4>; + 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 { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + row-gpios + = <&xiao_d 1 GPIO_ACTIVE_HIGH> + , <&xiao_d 2 GPIO_ACTIVE_HIGH> + , <&xiao_d 3 GPIO_ACTIVE_HIGH> + , <&xiao_d 4 GPIO_ACTIVE_HIGH> + ; + }; + +}; \ 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..9d140b4 --- /dev/null +++ b/config/boards/shields/totem/totem.keymap @@ -0,0 +1,160 @@ +// +// ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ +// ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ +// █ █ █ █ █ █ █ █ █ █ █ +// ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ +// █ ▄▄▄█▄▄▄ █ █ +// ▀ █ █ █ █▄█ +// ▀▀▀▀▀ █ █ █ ▀ +// ▀ ▀ ▀ +// +// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ + + +#include +#include +#include +#include + +#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 = < +// ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + + &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..aced633 --- /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: [seeed_xiao] +features: + - keys +siblings: + - totem_left + - totem_right diff --git a/config/hummingbird.conf b/config/boards/shields/totem/totem_left.conf similarity index 100% rename from config/hummingbird.conf rename to 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..39c592f --- /dev/null +++ b/config/boards/shields/totem/totem_left.overlay @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2022 GEIST + * + * SPDX-License-Identifier: MIT + */ + +#include "totem.dtsi" + +&kscan0 { + col-gpios + = <&xiao_d 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; +}; \ No newline at end of file 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 diff --git a/config/boards/shields/totem/totem_right.overlay b/config/boards/shields/totem/totem_right.overlay new file mode 100644 index 0000000..5510a5e --- /dev/null +++ b/config/boards/shields/totem/totem_right.overlay @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2020 Pete Johanson + * + * SPDX-License-Identifier: MIT + */ + +#include "totem.dtsi" + +&default_transform { + col-offset = <5>; +}; + +&kscan0 { + col-gpios + = <&xiao_d 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&xiao_d 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; +}; diff --git a/config/hummingbird.keymap b/config/hummingbird.keymap deleted file mode 100644 index 990d790..0000000 --- a/config/hummingbird.keymap +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2022 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -#include -#include - -#define DEF_L 0 -#define NAV_L 1 -#define NUM_L 2 -#define SYM_L 3 - -// Using layer taps on thumbs, having quick tap as well helps w/ repeating space/backspace -< { quick_tap_ms = <200>; }; - -/ { - behaviors { - hm: homerow_mods { - compatible = "zmk,behavior-hold-tap"; - label = "homerow mods"; - #binding-cells = <2>; - tapping_term_ms = <225>; - flavor = "tap-preferred"; - bindings = <&kp>, <&kp>; - }; - }; - - combos { - compatible = "zmk,combos"; - combo_z { - timeout-ms = <50>; - key-positions = <20 21>; - bindings = <&kp Z>; - }; - combo_b { - timeout-ms = <50>; - key-positions = <21 22>; - bindings = <&kp B>; - }; - - combo_y { - timeout-ms = <50>; - key-positions = <23 24>; - bindings = <&kp Y>; - }; - - combo_slash { - timeout-ms = <50>; - key-positions = <24 25>; - bindings = <&kp SLASH>; - }; - }; - - keymap { - compatible = "zmk,keymap"; - - default_layer { - bindings = < - &kp Q &kp W &kp E &kp R &kp T &kp H &kp U &kp I &kp O &kp P - &hm LGUI A &hm LALT S &hm LCTRL D &hm LSHFT F &kp G &kp N &hm RSHFT J &hm RCTRL K &hm LALT L &hm RGUI QUOT - &kp X &kp C &kp V &kp M &kp COMMA &kp DOT - < NAV_L TAB &kp RET < NUM_L SPACE < SYM_L BKSP - >; - }; - - nav_layer { - label = "Nav"; - bindings = < - &trans &trans &trans &trans &trans &trans &kp HOME &kp UARW &kp PG_UP &trans - &trans &trans &trans &trans &trans &trans &kp LARW &kp DARW &kp RARW &trans - &trans &trans &trans &kp END &trans &kp PG_DN - &trans &trans &kp ESC &kp DEL - >; - }; - - num_layer { - label = "Num"; - bindings = < - &kp LBKT &kp N7 &kp N8 &kp N9 &kp RBKT &trans &trans &trans &trans &trans - &kp SEMI &kp N4 &kp N5 &kp N6 &kp EQUAL &trans &trans &trans &trans &trans - &kp N1 &kp N2 &kp N3 &trans &trans &trans - &kp N0 &kp MINUS &trans &trans - >; - }; - - sym_layer { - label = "Sym"; - bindings = < - &kp LBRC &kp LS(N7) &kp LS(N8) &kp LS(N9) &kp RBRC &trans &trans &trans &trans &trans - &kp COLON &kp LS(N4) &kp LS(N5) &kp LS(N6) &kp PLUS &trans &trans &trans &trans &trans - &kp LS(N1) &kp LS(N2) &kp LS(N3) &trans &trans &trans - &kp LS(N0) &kp UNDER &trans &trans - >; - }; - }; -}; diff --git a/config/totem.conf b/config/totem.conf new file mode 100644 index 0000000..e69de29 diff --git a/config/totem.keymap b/config/totem.keymap new file mode 100644 index 0000000..1fa48f1 --- /dev/null +++ b/config/totem.keymap @@ -0,0 +1,160 @@ +// +// ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ +// ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ +// █ █ █ █ █ █ █ █ █ █ █ +// ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ +// █ ▄▄▄█▄▄▄ █ █ +// ▀ █ █ █ █▄█ +// ▀▀▀▀▀ █ █ █ ▀ +// ▀ ▀ ▀ +// +// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ + + +#include +#include +#include +#include + +#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 = < +// ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + + &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