Commit 797a834732da
Changed files (31)
keyboards
keyball44
config
boards
firmwares
lib
keyboards/keyball44/config/boards/shields/keyball_nano/Kconfig.defconfig
@@ -0,0 +1,47 @@
+if SHIELD_KEYBALL44_RIGHT
+
+config ZMK_KEYBOARD_NAME
+ default "Keyball44"
+
+config ZMK_SPLIT_BLE_ROLE_CENTRAL
+ default y
+
+endif
+
+if SHIELD_KEYBALL44_LEFT || SHIELD_KEYBALL44_RIGHT
+
+config ZMK_SPLIT
+ default y
+
+endif
+
+if ZMK_DISPLAY
+
+config I2C
+ default y
+
+config SSD1306
+ default y
+
+choice ZMK_DISPLAY_WORK_QUEUE
+ default ZMK_DISPLAY_WORK_QUEUE_DEDICATED
+endchoice
+
+endif
+
+if LVGL
+
+config LV_Z_VDB_SIZE
+ default 64
+
+config LV_DPI_DEF
+ default 148
+
+config LV_Z_BITS_PER_PIXEL
+ default 1
+
+choice LV_COLOR_DEPTH
+ default LV_COLOR_DEPTH_1
+endchoice
+
+endif
keyboards/keyball44/config/boards/shields/keyball_nano/Kconfig.shield
@@ -0,0 +1,5 @@
+config SHIELD_KEYBALL44_LEFT
+ def_bool $(shields_list_contains,keyball44_left)
+
+config SHIELD_KEYBALL44_RIGHT
+ def_bool $(shields_list_contains,keyball44_right)
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44.conf
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44.dtsi
@@ -0,0 +1,76 @@
+#include <dt-bindings/zmk/matrix_transform.h>
+
+/ {
+ chosen {
+ zephyr,display = &oled;
+ zmk,kscan = &kscan0;
+ zmk,matrix_transform = &default_transform;
+ };
+
+ default_transform: keymap_transform_0 {
+ compatible = "zmk,matrix-transform";
+ columns = <12>;
+ rows = <4>;
+
+ map = <
+ RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) RC(0,6)
+ RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) RC(1,6)
+ RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) RC(2,6)
+ RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,11) RC(3,10) RC(3,7)
+ >;
+ };
+
+ kscan0: kscan {
+ compatible = "zmk,kscan-gpio-matrix";
+ label = "KSCAN";
+
+ diode-direction = "col2row";
+ row-gpios
+ = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ ;
+ };
+};
+
+&pinctrl {
+ i2c0_default: i2c0_default {
+ group1 {
+ psels = <NRF_PSEL(TWIM_SDA, 0, 17)>,
+ <NRF_PSEL(TWIM_SCL, 0, 20)>;
+ };
+ };
+
+ i2c0_sleep: i2c0_sleep {
+ group1 {
+ psels = <NRF_PSEL(TWIM_SDA, 0, 17)>,
+ <NRF_PSEL(TWIM_SCL, 0, 20)>;
+ low-power-enable;
+ };
+ };
+};
+
+&i2c0 {
+ status = "okay";
+ compatible = "nordic,nrf-twi";
+ pinctrl-0 = <&i2c0_default>;
+ pinctrl-1 = <&i2c0_sleep>;
+ pinctrl-names = "default", "sleep";
+
+ oled: ssd1306@3c {
+ compatible = "solomon,ssd1306fb";
+ reg = <0x3c>;
+ width = <128>;
+ height = <32>;
+ segment-offset = <0>;
+ page-offset = <0>;
+ display-offset = <0>;
+ multiplex-ratio = <31>;
+ segment-remap;
+ com-invdir;
+ com-sequential;
+ inversion-on;
+ prechargep = <0x22>;
+ };
+};
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44.zmk.yml
@@ -0,0 +1,13 @@
+file_format: "1"
+id: keyball44
+name: Keyball44
+type: shield
+url: https://github.com/Yowkees/keyball
+requires: [pro_micro]
+features:
+ - keys
+ - pointer
+ - underglow
+siblings:
+ - keyball44_left
+ - keyball44_right
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44_left.conf
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44_left.overlay
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2020 ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include "keyball44.dtsi"
+
+&kscan0 {
+ col-gpios
+ = <&pro_micro 4 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 5 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 6 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 7 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 8 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 9 GPIO_ACTIVE_HIGH>
+ ;
+};
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44_right.conf
@@ -0,0 +1,6 @@
+CONFIG_SPI=y
+CONFIG_INPUT=y
+CONFIG_ZMK_MOUSE=y
+CONFIG_ZMK_EXT_POWER=y
+CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y
+CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY=y
keyboards/keyball44/config/boards/shields/keyball_nano/keyball44_right.overlay
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2020 ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include <input/processors.dtsi>
+#include "keyball44.dtsi"
+
+&default_transform {
+ col-offset = <6>;
+};
+
+&kscan0 {
+ col-gpios
+ = <&pro_micro 4 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 5 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 6 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 7 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 8 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 9 GPIO_ACTIVE_HIGH>
+ ;
+};
+
+/* Use spi3 for trackball to avoid conflict with i2c0 (OLED) */
+&pinctrl {
+ spi3_default: spi3_default {
+ group1 {
+ psels = <NRF_PSEL(SPIM_SCK, 1, 13)>,
+ <NRF_PSEL(SPIM_MOSI, 0, 10)>,
+ <NRF_PSEL(SPIM_MISO, 1, 11)>;
+ };
+ };
+
+ spi3_sleep: spi3_sleep {
+ group1 {
+ psels = <NRF_PSEL(SPIM_SCK, 1, 13)>,
+ <NRF_PSEL(SPIM_MOSI, 0, 10)>,
+ <NRF_PSEL(SPIM_MISO, 1, 11)>;
+ low-power-enable;
+ };
+ };
+};
+
+&spi3 {
+ status = "okay";
+ compatible = "nordic,nrf-spim";
+ pinctrl-0 = <&spi3_default>;
+ pinctrl-1 = <&spi3_sleep>;
+ pinctrl-names = "default", "sleep";
+ cs-gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
+
+ trackball: trackball@0 {
+ status = "okay";
+ compatible = "pixart,pmw3360";
+ reg = <0>;
+ spi-max-frequency = <2000000>;
+ irq-gpios = <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+ };
+};
+
+/ {
+ trackball_listener {
+ compatible = "zmk,input-listener";
+ device = <&trackball>;
+
+ /* Auto-activate mouse layer (layer 7) on trackball movement.
+ * Layer deactivates 1000ms after last movement. */
+ input-processors = <&zip_temp_layer 7 1000>;
+ };
+};
keyboards/keyball44/config/combos.dtsi
@@ -0,0 +1,62 @@
+/* KEY POSITIONS (Keyball44)
+
+ ╭──────────────────────────────╮ ╭──────────────────────────────╮
+ │ 0 1 2 3 4 5 │ │ 6 7 8 9 10 11 │
+ │ 12 13 14 15 16 17 │ │ 18 19 20 21 22 23 │
+ │ 24 25 26 27 28 29 │ │ 30 31 32 33 34 35 │
+ ╰────╮ 36 37 38 39 40 │ │ 41 42 43 ╭─────────╯
+ ╰────────────────────────╯ ╰───────────────────╯
+ */
+
+#undef COMBO_TERM
+#define COMBO_TERM 40
+
+// All Layers - ESC on home row
+ZMK_COMBO(esc, &kp ESC, 21 22)
+
+// Layer switching combos
+ZMK_COMBO(to_bepo, &to BEP, 40 41, ERG QWE)
+ZMK_COMBO(to_ergol, &to ERG, 1 10, BEP QWE)
+ZMK_COMBO(to_qwerty, &to QWE, 39 42, BEP ERG)
+
+// Toggle mouse layer
+ZMK_COMBO(toggle_mouse, &tog MOU, 1 4, BEP ERG QWE MOU)
+
+// Caps word
+ZMK_COMBO(capsword, &caps_word, 25 34, BEP ERG QWE)
+
+// Symbol combos - left hand
+ZMK_COMBO(arobase, &kp AT, 2 3, BEP ERG QWE)
+ZMK_COMBO(pipe, &kp PIPE, 1 2, BEP ERG QWE)
+ZMK_COMBO(hash, &kp HASH, 3 4, BEP ERG QWE)
+ZMK_COMBO(ampr, &kp AMPS, 4 5, BEP ERG QWE)
+ZMK_COMBO(dollar, &kp DLLR, 4 16, BEP ERG QWE)
+ZMK_COMBO(slash, &kp SLASH, 3 15, BEP ERG QWE)
+ZMK_COMBO(bslash, &kp BSLH, 15 27, BEP ERG QWE)
+ZMK_COMBO(minus, &kp KP_MINUS, 2 14, BEP ERG QWE)
+ZMK_COMBO(underscore, &kp UNDER, 16 28, BEP ERG QWE)
+ZMK_COMBO(equal, &kp EQUAL, 14 26, BEP ERG QWE)
+
+// Symbol combos - right hand
+ZMK_COMBO(lprn, &kp LPAR, 8 20, BEP ERG QWE)
+ZMK_COMBO(rprn, &kp RPAR, 20 32, BEP ERG QWE)
+ZMK_COMBO(lcbr, &kp LBRC, 7 19, BEP ERG QWE)
+ZMK_COMBO(rcbr, &kp RBRC, 19 31, BEP ERG QWE)
+ZMK_COMBO(lbrc, &kp LBKT, 9 21, BEP ERG QWE)
+ZMK_COMBO(rbrc, &kp RBKT, 21 33, BEP ERG QWE)
+ZMK_COMBO(labk, &kp GT, 9 8, BEP ERG QWE)
+ZMK_COMBO(rabk, &kp LT, 8 7, BEP ERG QWE)
+
+ZMK_COMBO(dquo, &standalone_dquo, 6 18, BEP ERG QWE)
+ZMK_COMBO(tilde, &standalone_tild, 5 17, BEP ERG QWE)
+ZMK_COMBO(prcnt, &kp PRCNT, 17 29, BEP ERG QWE)
+ZMK_COMBO(grave, &standalone_grav, 18 30, BEP ERG QWE)
+ZMK_COMBO(star, &kp STAR, 10 22, BEP ERG QWE)
+ZMK_COMBO(plus, &kp PLUS, 22 34, BEP ERG QWE)
+
+
+/*
+Local Variables:
+mode: c
+End:
+*/
keyboards/keyball44/config/constants.h
@@ -0,0 +1,43 @@
+#pragma once
+
+// Keys
+#define ___ &trans
+#define XXX &none
+
+// Layers
+#define BEP 0
+#define ERG 1
+#define QWE 2
+#define ACC 3
+#define SYM 4
+#define NAV 5
+#define NUM 6
+#define MOU 7
+
+// Modifier keys
+#define GL LGUI
+#define CL LCTRL
+#define AL LALT
+#define SL LSHFT
+#define GR RGUI
+#define CR RCTRL
+#define AR RALT
+#define SR RSHFT
+
+// OS
+#define WINDOWS 0
+#define LINUX 1
+#define MAC_OS 2
+
+// Hyper Key and Functions
+#define LEFT_HYPER LS(LA(LC(LGUI)))
+#define HL LEFT_HYPER
+#define LH(keycode) LS(LA(LC(LG(keycode))))
+
+#define MATH_1_4 RA(N6) // ¼
+#define MATH_1_2 RA(N7) // ½
+#define MATH_3_4 RA(N8) // ¾
+
+#define MATH_PM RA(N1) //
+#define MATH_DEG RA(SEMI) // °
+#define MATH_MICRO RA(M) // µ
keyboards/keyball44/config/hold-tap.dtsi
@@ -0,0 +1,45 @@
+/* Timerless Home Row Mods */
+/* https://github.com/urob/zmk-config#timeless-homerow-mods */
+/*
+ * Keyball44 key positions:
+ * 0 1 2 3 4 5 6 7 8 9 10 11
+ * 12 13 14 15 16 17 18 19 20 21 22 23
+ * 24 25 26 27 28 29 30 31 32 33 34 35
+ * 36 37 38 39 40 41 42 43
+ */
+
+/* left-hand HRMs */
+ZMK_HOLD_TAP(hml,
+ flavor = "balanced";
+ tapping-term-ms = <280>;
+ quick-tap-ms = <175>;
+ require-prior-idle-ms = <150>;
+ bindings = <&kp>, <&kp>;
+ hold-trigger-key-positions = <6 7 8 9 10 11 18 19 20 21 22 23 30 31 32 33 34 35 36 37 38 39 40 41 42 43>;
+ hold-trigger-on-release;
+)
+
+/* right-hand HRMs */
+ZMK_HOLD_TAP(hmr,
+ flavor = "balanced";
+ tapping-term-ms = <280>;
+ quick-tap-ms = <175>;
+ require-prior-idle-ms = <150>;
+ bindings = <&kp>, <&kp>;
+ hold-trigger-key-positions = <0 1 2 3 4 5 12 13 14 15 16 17 24 25 26 27 28 29 36 37 38 39 40 41 42 43>;
+ hold-trigger-on-release;
+)
+
+/* Smart number: hold for NUM layer, tap for numword */
+ZMK_HOLD_TAP(smart_num,
+ flavor = "balanced";
+ tapping-term-ms = <200>;
+ quick-tap-ms = <175>;
+ bindings = <&mo>, <&num_word>;
+)
+
+/*
+Local Variables:
+mode: c
+End:
+*/
keyboards/keyball44/config/keyball44.conf
@@ -0,0 +1,25 @@
+# Bluetooth
+CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
+CONFIG_BT_PERIPHERAL_PREF_MAX_INT=9
+CONFIG_BT_PERIPHERAL_PREF_LATENCY=16
+CONFIG_BT_BUF_ACL_TX_COUNT=32
+CONFIG_BT_L2CAP_TX_BUF_COUNT=32
+
+# Split
+CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y
+CONFIG_ZMK_BEHAVIORS_QUEUE_SIZE=512
+
+# Display (OLED)
+CONFIG_ZMK_DISPLAY=y
+
+# Mouse / Trackball
+CONFIG_ZMK_POINTING=y
+CONFIG_ZMK_MOUSE=y
+
+# Power
+CONFIG_ZMK_EXT_POWER=y
+CONFIG_ZMK_SLEEP=y
+# 720000 ms = 12 min
+CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=720000
+
+CONFIG_ZMK_PM_SOFT_OFF=y
keyboards/keyball44/config/keyball44.json
@@ -0,0 +1,59 @@
+{
+ "id": "keyball44",
+ "name": "keyball44",
+ "layouts": {
+ "default_layout": {
+ "name": "default_layout",
+ "layout": [
+ { "row": 0, "col": 0, "x": 0, "y": 0.5 },
+ { "row": 0, "col": 1, "x": 1, "y": 0.5 },
+ { "row": 0, "col": 2, "x": 2, "y": 0.25 },
+ { "row": 0, "col": 3, "x": 3, "y": 0 },
+ { "row": 0, "col": 4, "x": 4, "y": 0.2 },
+ { "row": 0, "col": 5, "x": 5, "y": 0.4 },
+ { "row": 0, "col": 9, "x": 9, "y": 0.4 },
+ { "row": 0, "col": 10, "x": 10, "y": 0.2 },
+ { "row": 0, "col": 11, "x": 11, "y": 0 },
+ { "row": 0, "col": 12, "x": 12, "y": 0.25 },
+ { "row": 0, "col": 13, "x": 13, "y": 0.5 },
+ { "row": 0, "col": 14, "x": 14, "y": 0.5 },
+
+ { "row": 1, "col": 0, "x": 0, "y": 1.5 },
+ { "row": 1, "col": 1, "x": 1, "y": 1.5 },
+ { "row": 1, "col": 2, "x": 2, "y": 1.25 },
+ { "row": 1, "col": 3, "x": 3, "y": 1 },
+ { "row": 1, "col": 4, "x": 4, "y": 1.2 },
+ { "row": 1, "col": 5, "x": 5, "y": 1.4 },
+ { "row": 1, "col": 9, "x": 9, "y": 1.4 },
+ { "row": 1, "col": 10, "x": 10, "y": 1.2 },
+ { "row": 1, "col": 11, "x": 11, "y": 1 },
+ { "row": 1, "col": 12, "x": 12, "y": 1.25 },
+ { "row": 1, "col": 13, "x": 13, "y": 1.5 },
+ { "row": 1, "col": 14, "x": 14, "y": 1.5 },
+
+ { "row": 2, "col": 0, "x": 0, "y": 2.5 },
+ { "row": 2, "col": 1, "x": 1, "y": 2.5 },
+ { "row": 2, "col": 2, "x": 2, "y": 2.25 },
+ { "row": 2, "col": 3, "x": 3, "y": 2 },
+ { "row": 2, "col": 4, "x": 4, "y": 2.2 },
+ { "row": 2, "col": 5, "x": 5, "y": 2.4 },
+ { "row": 2, "col": 9, "x": 9, "y": 2.4 },
+ { "row": 2, "col": 10, "x": 10, "y": 2.2 },
+ { "row": 2, "col": 11, "x": 11, "y": 2 },
+ { "row": 2, "col": 12, "x": 12, "y": 2.25 },
+ { "row": 2, "col": 13, "x": 13, "y": 2.5 },
+ { "row": 2, "col": 14, "x": 14, "y": 2.5 },
+
+ { "row": 3, "col": 0, "x": 2, "y": 3.25 },
+ { "row": 3, "col": 1, "x": 3, "y": 3 },
+ { "row": 3, "col": 2, "x": 4.25, "y": 4 },
+ { "row": 3, "col": 3, "x": 6, "y": 3, "r": 10, "rx": 0, "ry": 0 },
+ { "row": 3, "col": 4, "x": 7.75, "y": 1.04, "r": 25, "rx": 0, "ry": 0 },
+ { "row": 3, "col": 8, "x": 5.5, "y": 7.75, "r": -25, "rx": 0, "ry": 0 },
+ { "row": 3, "col": 9, "x": 8.5, "y": 5.7, "r": -10, "rx": 0, "ry": 0 },
+ { "row": 3, "col": 14, "x": 14, "y": 3.5 }
+ ]
+ }
+ },
+ "sensors": []
+}
keyboards/keyball44/config/keyball44.keymap
@@ -0,0 +1,185 @@
+#include <behaviors/mouse_keys.dtsi>
+#include <dt-bindings/zmk/mouse.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/bt.h>
+#include <dt-bindings/zmk/keys.h>
+#include <dt-bindings/zmk/outputs.h>
+
+#include "constants.h"
+#define HOST_OS LINUX
+
+#include "zmk-helpers/helper.h"
+#include "zmk-helpers/unicode-chars/french.dtsi"
+#include "combos.dtsi"
+#include "leader.dtsi"
+#include "numword.dtsi"
+#include "hold-tap.dtsi"
+#include "mod-morph.dtsi"
+#include "mouse.dtsi"
+
+/* KEY POSITIONS (Keyball44)
+
+ ╭──────────────────────────────╮ ╭──────────────────────────────╮
+ │ 0 1 2 3 4 5 │ │ 6 7 8 9 10 11 │
+ │ 12 13 14 15 16 17 │ │ 18 19 20 21 22 23 │
+ │ 24 25 26 27 28 29 │ │ 30 31 32 33 34 35 │
+ ╰────╮ 36 37 38 39 40 │ │ 41 42 43 ╭─────────╯
+ ╰────────────────────────╯ ╰───────────────────╯
+ Left thumb: 36=LGUI, 37=LALT, 38=ESC/MOU, 39=SPC, 40=TAB/NAV
+ Right thumb: 41=ENTER, 42=BSPC/SYM, trackball, 43=DEL
+*/
+
+< {
+ tapping-term-ms = <240>;
+ flavor = "balanced";
+ quick-tap-ms = <150>;
+};
+
+&mt {
+ tapping-term-ms = <200>;
+ flavor = "tap-preferred";
+ quick-tap-ms = <150>;
+};
+
+&caps_word { continue-list = <UNDERSCORE MINUS>; };
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+
+ // 0: Bépo
+ Bepo_layer {
+ label = "Bépo";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ &kp TAB &b_pipe &kp EACUT &p_amp &kp O &AGRA E &car_excl &kp V &kp D &kp L &kp J &kp Z
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &smart_num NUM NUM &hml GL A &hml AL U &hml SL I &cl_e_euro &hyp_com_smc &hmr HL C &hmr CR T &hmr SR S &hmr AR R &hmr GL N &kp M
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &kp GRAVE &AGRA A &kp Y &kp X &dot_col &kp K &sqt_qma &kp Q &kp G &kp H &kp F &kp W
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ &kp LGUI &kp LALT < MOU DEL &kp SPACE < NAV BSPC < SYM RET &kp AR &kp DEL
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 1: ErgoL
+ ErgoL_layer {
+ label = "ErgoL";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ &kp TAB &kp Q &kp C &kp O &kp P &kp W &kp J &kp M &kp D &kp EXCL &kp Y &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &kp EQUAL &hml GL A &hml AL S &hml SL E &hml CL N &kp F &kp L &hmr CR R &hmr SR T &hmr AR I &hmr GL U &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &kp GRAVE &kp Z &kp X &min_qma &kp V &kp B &dot_col &kp H &kp G &com_smc &kp K &kp RBKT
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ ___ ___ ___ ___ ___ ___ ___ ___
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 2: Qwerty
+ Qwerty_layer {
+ label = "QWRT";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &kp EQUAL &hml GL A &hml AL S &hml SL D &hml CL F &kp G &kp H &hmr CR J &hmr SR K &hmr AR L &hmr GL SEMI &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &kp GRAVE &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RBKT
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ ___ ___ ___ ___ ___ ___ ___ ___
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 3: Accents
+ Accents_layer {
+ label = "Acc";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ XXX &kp AE &AIGU I &AGRA I &CIRC I &TREM I &TREM O &CIRC O &AGRA O &AIGU O XXX &kp DQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ &kp GRAVE &kp OE &AIGU E &AGRA E &CIRC E &TREM E &TREM A &CIRC A &AGRA A &AIGU A &kp NTIL &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX XXX XXX XXX XXX XXX &TREM U &CIRC U &AGRA U &AIGU U &kp CDIL &kp CARET
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ ___ ___ ___ ___ ___ ___ ___ ___
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 4: Symbols
+ Symbols_layer {
+ label = "Sym";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ &kp BSLH &AGRA SPACE &kp LT &kp GT &kp MINUS &kp PIPE &kp CARET &kp LBRC &kp RBRC &kp DLLR &CIRC SPACE XXX
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX &kp EXCL &hml AL STAR &hml SL FSLH &hml CL EQUAL &kp AMPS &kp HASH &hmr CR LPAR &hmr SR RPAR &hmr AR SEMI &TREM SPACE XXX
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX &kp TILDE &kp PLUS &kp LBKT &kp RBKT &kp PRCNT &kp AT &kp COLON &kp COMMA &kp DOT &AIGU SPACE XXX
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ ___ ___ ___ ___ ___ ___ ___ ___
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 5: Navigation
+ Nav_layer {
+ label = "Nav";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ &out OUT_TOG XXX XXX XXX XXX &bt BT_CLR &kp PRINTSCREEN &kp HOME &kp UP &kp END &kp PG_UP XXX
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX &kp GL &kp C_PREV &kp C_PP &kp C_NEXT XXX XXX &kp LEFT &kp DOWN &kp RIGHT &kp PG_DN XXX
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX &bt BT_PRV &bt BT_NXT XXX XXX XXX XXX XXX XXX XXX XXX XXX
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ ___ ___ ___ ___ ___ ___ ___ ___
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 6: Numbers
+ Numbers_layer {
+ label = "Num";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ XXX &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp MATH_1_4 &kp N7 &kp N8 &kp N9 &kp STAR &kp SLASH
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp MATH_1_2 &kp N4 &kp N5 &kp N6 &kp MINUS &kp PLUS
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX &kp F11 &kp F12 &kp F13 &kp F14 &kp F15 &kp MATH_3_4 &kp N1 &kp N2 &kp N3 &kp DOT &kp COMMA
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ ___ ___ ___ ___ ___ ___ ___ &kp N0
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+
+ // 7: Mouse (auto-activated on trackball movement, 1000ms timeout)
+ // Trackball = cursor movement. This layer provides clicks and scroll.
+ Mouse_layer {
+ label = "Mouse";
+ bindings = <
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+ XXX XXX XXX &mwh_up XXX XXX XXX XXX XXX XXX XXX XXX
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX XXX &mwh_lf &mwh_dn &mwh_rg XXX XXX &mkp LCLK &mkp RCLK &mkp MCLK XXX XXX
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+ XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
+// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮ ╭───────────┼─────────────╮ ╭────────────╯
+ XXX XXX XXX &mkp LCLK &mkp RCLK &mkp LCLK &mkp RCLK &mkp MCLK
+// ╰───────┴──────────┴───────────┴────────────┴────────────╯ ╰───────────┴─────────────╯ ╰────────────╯
+ >;
+ };
+ };
+};
+
+/*
+Local Variables:
+mode: c
+End:
+*/
keyboards/keyball44/config/leader.dtsi
@@ -0,0 +1,232 @@
+// Leader key configuration for eyelash_corne
+// Port of Moonlander leader sequences to ZMK
+// Using zmk-leader-key module syntax
+
+/ {
+ behaviors {
+ leader: leader {
+ compatible = "zmk,behavior-leader-key";
+ #binding-cells = <0>;
+
+ // ====== LAYOUT SWITCHING ======
+ // Leader + l + <key> for layout changes
+
+ bepo { sequence = <L B>; bindings = <&to 0>; };
+ ergol { sequence = <L E>; bindings = <&to 1>; };
+ qwerty { sequence = <L Q>; bindings = <&to 2>; };
+
+ // ====== DEVELOPMENT PATTERNS - GENERAL ======
+ // Leader + c + <key> for code snippets
+
+ nil { sequence = <C N>; bindings = <&kp N &kp I &kp L>; };
+
+ // Note: Complex macros need to be defined as ZMK macros
+ // For now, keeping simpler sequences
+
+ // ====== PERSONAL MACROS ======
+ // Leader + m + <key> for personal macros
+
+ // These would need macro definitions for complex sequences
+ // Keeping placeholders for now
+
+ // ====== APPLICATION SHORTCUTS ======
+ // Leader + a + <key> for application launches (using niri keybindings)
+
+ fuzzel { sequence = <A D>; bindings = <&kp LG(D)>; };
+ emacs { sequence = <A E>; bindings = <&kp LG(LS(RET))>; };
+ terminal { sequence = <A T>; bindings = <&kp LG(RET)>; };
+ emoji { sequence = <A J>; bindings = <&kp LG(LC(D))>; };
+ clipboard { sequence = <A V>; bindings = <&kp LG(LC(V))>; };
+ raffi { sequence = <A R>; bindings = <&kp LG(LS(D))>; };
+ };
+ };
+
+ // Macros for complex leader sequences
+ macros {
+ // Development patterns - General
+ macro_go_err: macro_go_err {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp I &kp F &kp SPACE &kp E &kp R &kp R &kp SPACE &kp EXCL &kp EQUAL &kp SPACE &kp N &kp I &kp L &kp SPACE &kp LBRC &kp RET &kp TAB>;
+ };
+
+ macro_console_log: macro_console_log {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp C &kp O &kp N &kp S &kp O &kp L &kp E &kp DOT &kp L &kp O &kp G &kp LPAR &kp RPAR &kp LEFT>;
+ };
+
+ macro_fmt_println: macro_fmt_println {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp F &kp M &kp T &kp DOT &kp P &kp R &kp I &kp N &kp T &kp L &kp N &kp LPAR &kp RPAR &kp LEFT>;
+ };
+
+ macro_function: macro_function {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp F &kp U &kp N &kp C &kp T &kp I &kp O &kp N &kp LPAR &kp RPAR &kp SPACE &kp LBRC &kp RBRC &kp LEFT &kp LEFT>;
+ };
+
+ macro_arrow_fn: macro_arrow_fn {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp RPAR &kp SPACE &kp EQUAL &kp GT &kp SPACE &kp LBRC &kp RBRC &kp LEFT &kp LEFT>;
+ };
+
+ // Python patterns
+ macro_py_main: macro_py_main {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp I &kp F &kp SPACE &kp UNDER &kp UNDER &kp N &kp A &kp M &kp E &kp UNDER &kp UNDER &kp SPACE &kp EQUAL &kp EQUAL &kp SPACE &kp DQT &kp UNDER &kp UNDER &kp M &kp A &kp I &kp N &kp UNDER &kp UNDER &kp DQT &kp COLON &kp RET &kp TAB>;
+ };
+
+ macro_py_def: macro_py_def {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp D &kp E &kp F &kp SPACE &kp LPAR &kp RPAR &kp COLON &kp RET &kp TAB>;
+ };
+
+ macro_py_class: macro_py_class {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp C &kp L &kp A &kp S &kp S &kp SPACE &kp COLON &kp RET &kp TAB>;
+ };
+
+ macro_py_print: macro_py_print {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp P &kp R &kp I &kp N &kp T &kp LPAR &kp F &kp DQT &kp DQT &kp RPAR &kp LEFT &kp LEFT>;
+ };
+
+ macro_py_try: macro_py_try {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp T &kp R &kp Y &kp COLON &kp RET &kp TAB &kp RET &kp E &kp X &kp C &kp E &kp P &kp T &kp SPACE &kp E &kp X &kp C &kp E &kp P &kp T &kp I &kp O &kp N &kp SPACE &kp A &kp S &kp SPACE &kp E &kp COLON &kp RET &kp TAB>;
+ };
+
+ macro_py_with: macro_py_with {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp W &kp I &kp T &kp H &kp SPACE &kp O &kp P &kp E &kp N &kp LPAR &kp DQT &kp DQT &kp COMMA &kp SPACE &kp DQT &kp R &kp DQT &kp RPAR &kp SPACE &kp A &kp S &kp SPACE &kp F &kp COLON &kp RET &kp TAB>;
+ };
+
+ // Emacs Lisp patterns
+ macro_el_defun: macro_el_defun {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp D &kp E &kp F &kp U &kp N &kp SPACE &kp SPACE &kp LPAR &kp RPAR &kp RET>;
+ };
+
+ macro_el_interactive: macro_el_interactive {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp I &kp N &kp T &kp E &kp R &kp A &kp C &kp T &kp I &kp V &kp E &kp RPAR>;
+ };
+
+ macro_el_let: macro_el_let {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp L &kp E &kp T &kp SPACE &kp LPAR &kp LPAR>;
+ };
+
+ macro_el_setq: macro_el_setq {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp S &kp E &kp T &kp Q &kp SPACE &kp SPACE &kp RPAR &kp LEFT &kp LEFT>;
+ };
+
+ macro_el_message: macro_el_message {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp M &kp E &kp S &kp S &kp A &kp G &kp E &kp SPACE &kp DQT &kp DQT &kp RPAR &kp LEFT &kp LEFT>;
+ };
+
+ macro_el_require: macro_el_require {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp R &kp E &kp Q &kp U &kp I &kp R &kp E &kp SPACE &kp SQT &kp RPAR &kp LEFT>;
+ };
+
+ // Nix patterns
+ macro_nix_fn: macro_nix_fn {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LBRC &kp SPACE &kp P &kp K &kp G &kp S &kp COMMA &kp SPACE &kp DOT &kp DOT &kp DOT &kp SPACE &kp RBRC &kp COLON>;
+ };
+
+ macro_nix_let: macro_nix_let {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp L &kp E &kp T &kp RET &kp TAB &kp RET &kp I &kp N &kp RET>;
+ };
+
+ macro_nix_with: macro_nix_with {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp W &kp I &kp T &kp H &kp SPACE &kp P &kp K &kp G &kp S &kp SEMI &kp SPACE &kp LBKT &kp RET &kp TAB &kp RET &kp RBKT>;
+ };
+
+ macro_nix_inherit: macro_nix_inherit {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp I &kp N &kp H &kp E &kp R &kp I &kp T &kp SPACE &kp SEMI &kp LEFT &kp LEFT>;
+ };
+
+ macro_nix_build: macro_nix_build {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp B &kp U &kp I &kp L &kp D &kp I &kp N &kp P &kp U &kp T &kp S &kp SPACE &kp EQUAL &kp SPACE &kp LBKT &kp SPACE &kp RBKT &kp SEMI>;
+ };
+
+ macro_nix_script: macro_nix_script {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp P &kp K &kp G &kp S &kp DOT &kp W &kp R &kp I &kp T &kp E &kp S &kp H &kp E &kp L &kp L &kp S &kp C &kp R &kp I &kp P &kp T &kp B &kp I &kp N &kp SPACE &kp DQT &kp DQT &kp SPACE &kp SQT &kp SQT &kp RET &kp TAB &kp RET &kp SQT &kp SQT>;
+ };
+
+ // Import patterns
+ macro_import: macro_import {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp I &kp M &kp P &kp O &kp R &kp T &kp SPACE>;
+ };
+
+ macro_from_import: macro_from_import {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp F &kp R &kp O &kp M &kp SPACE &kp SPACE &kp I &kp M &kp P &kp O &kp R &kp T &kp SPACE>;
+ };
+
+ macro_nix_module: macro_nix_module {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LBRC &kp SPACE &kp P &kp K &kp G &kp S &kp SPACE &kp RBRC &kp COLON &kp SPACE &kp LBRC &kp RET &kp TAB &kp RET &kp RBRC>;
+ };
+
+ macro_use_package: macro_use_package {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp LPAR &kp U &kp S &kp E &kp MINUS &kp P &kp A &kp C &kp K &kp A &kp G &kp E &kp SPACE &kp RET &kp TAB>;
+ };
+
+ // Personal macros
+ macro_email: macro_email {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp AT &kp S &kp B &kp R &kp DOT &kp P &kp M>;
+ };
+
+ macro_git_sig: macro_git_sig {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp SPACE &kp D &kp E &kp M &kp E &kp E &kp S &kp T &kp E &kp R &kp SPACE &kp LT &kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp AT &kp S &kp B &kp R &kp DOT &kp P &kp M &kp GT>;
+ };
+
+ macro_email_sig: macro_email_sig {
+ compatible = "zmk,behavior-macro";
+ #binding-cells = <0>;
+ bindings = <&kp MINUS &kp MINUS &kp RET &kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp SPACE &kp D &kp E &kp M &kp E &kp E &kp S &kp T &kp E &kp R &kp RET &kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp AT &kp S &kp B &kp R &kp DOT &kp P &kp M>;
+ };
+ };
+};
keyboards/keyball44/config/mod-morph.dtsi
@@ -0,0 +1,124 @@
+#define EACUT RA(E) // é/É
+#define EURO RA(N5) // €
+#define AE RA(Z) // æ/Æ
+#define OE RA(K) // œ/Œ
+#define CDIL RA(COMMA) // ç/Ç
+#define NTIL RA(N) // ñ/Ñ
+
+#define ACC_AC RC(SEMI) // ´
+#define ACC_AI RA(SLASH) // ´
+#define ACC_CI LBKT // ^
+#define ACC_GR RA(LBKT) // `
+#define ACC_TI RC(RBKT) // ~
+#define ACC_TR LS(LBKT) // ¨
+
+// ` to input
+ZMK_MACRO_ONE_PARAM(AGRA, bindings =
+ <&kp GRAVE>,
+ <¯o_param_1to1>,
+ <¯o_tap &kp MACRO_PLACEHOLDER>;
+)
+
+// ´ to input
+ZMK_MACRO_ONE_PARAM(AIGU, bindings =
+ <&kp SQT>,
+ <¯o_param_1to1>,
+ <¯o_tap &kp MACRO_PLACEHOLDER>;
+)
+
+// ¨ to input
+ZMK_MACRO_ONE_PARAM(TREM, bindings =
+ <&kp DQT>,
+ <¯o_param_1to1>,
+ <¯o_tap &kp MACRO_PLACEHOLDER>;
+)
+
+// ~ to input (TILDE = LS(GRAVE), so use shift + grave)
+// Note: can't use "TILD" as name — it's a deprecated ZMK keycode #define
+ZMK_MACRO_ONE_PARAM(TILDEMACRO, bindings =
+ <¯o_press &kp LSHFT>,
+ <¯o_tap &kp GRAVE>,
+ <¯o_release &kp LSHFT>,
+ <¯o_param_1to1>,
+ <¯o_tap &kp MACRO_PLACEHOLDER>;
+)
+
+// Standalone dead key macros (dead key + space) for use in combos
+ZMK_MACRO(standalone_dquo, bindings = <¯o_tap &kp DQT &kp SPACE>;) // "
+ZMK_MACRO(standalone_tild, bindings = <¯o_press &kp LSHFT>, <¯o_tap &kp GRAVE>, <¯o_release &kp LSHFT>, <¯o_tap &kp SPACE>;) // ~
+ZMK_MACRO(standalone_grav, bindings = <¯o_tap &kp GRAVE &kp SPACE>;) // `
+
+// ^ to input
+ZMK_MACRO_ONE_PARAM(CIRC, bindings =
+ <&kp CARET>,
+ <¯o_param_1to1>,
+ <¯o_tap &kp MACRO_PLACEHOLDER>;
+)
+
+// tap: minus | shift + tap: question mark
+ZMK_MOD_MORPH(min_qma,
+ bindings = <&kp MINUS>, <&kp QMARK>;
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// tap: comma | shift + tab: semicolon
+ZMK_MOD_MORPH(com_smc,
+ bindings = <&kp COMMA>, <&kp SEMICOLON>;
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// tap: period | shift + tap: colon
+ZMK_MOD_MORPH(dot_col,
+ bindings = <&kp DOT>, <&kp COLON>;
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// Bépo morphs
+
+// tap: quote (') | shift + tab: question mark
+ZMK_MOD_MORPH(sqt_qma,
+ bindings = <&AIGU SPACE>, <&kp QMARK>;
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// tap: Caret (^) | shift + tap: EXCLAMATION (!)
+ZMK_MOD_MORPH(car_excl,
+ bindings = <&kp CARET>, <&kp EXCLAMATION>;
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// tap: B | right_alt + tap : pipe (|)
+ZMK_MOD_MORPH(b_pipe,
+ bindings = <&kp B>, <&kp PIPE>;
+ mods = <(MOD_RALT)>;
+)
+
+// tap: P | right_alt + tap : ampersand (&)
+ZMK_MOD_MORPH(p_amp,
+ bindings = <&kp P>, <&kp AMPERSAND>;
+ mods = <(MOD_RALT)>;
+)
+
+// hold: numbers layer | tap: SPACE | right_alt + tap : undercore (_)
+ZMK_MOD_MORPH(num_spc_und,
+ bindings = << NUM SPACE>, <&kp UNDERSCORE>;
+ mods = <(MOD_RALT)>;
+)
+
+// hold: left control | tap: E | right_alt + tap: EURO (€)
+ZMK_MOD_MORPH(cl_e_euro,
+ bindings = <&hml CL E>, <&kp EURO>;
+ mods = <(MOD_RALT)>;
+)
+
+// hold: right_hype | tap: comma | shift + tab: semicolon
+ZMK_MOD_MORPH(hyp_com_smc,
+ bindings = <&hml HL COMMA>, <&kp SEMICOLON>;
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+/*
+Local Variables:
+mode: c
+End:
+*/
keyboards/keyball44/config/mouse.dtsi
@@ -0,0 +1,39 @@
+&mmv {
+ acceleration-exponent=<1>; // 0=linear (no accel), 1=natural acceleration curve
+ delay-ms=<0>; // no startup delay for snappier response
+ time-to-max-speed-ms = <400>; // smoother ramp to top speed (was 200)
+};
+
+&msc {
+ acceleration-exponent=<1>;
+ delay-ms=<40>; // snappier scroll start (was 70)
+ time-to-max-speed-ms = <300>; // smoother scroll ramp (was 200)
+};
+
+// Move cursor
+#define mmv_lf mmv MOVE_LEFT
+#define mmv_rg mmv MOVE_RIGHT
+#define mmv_up mmv MOVE_UP
+#define mmv_dn mmv MOVE_DOWN
+
+// Mouse buttons
+#define mkp_lf mkp LCLK
+#define mkp_md mkp MCLK
+#define mkp_rg mkp RCLK
+
+// Scroll wheel
+#define mwh_lf msc SCRL_LEFT
+#define mwh_rg msc SCRL_RIGHT
+#define mwh_up msc SCRL_UP
+#define mwh_dn msc SCRL_DOWN
+
+#define MWL SCRL_LEFT
+#define MWR SCRL_RIGHT
+#define MWU SCRL_UP
+#define MWD SCRL_DOWN
+
+/*
+Local Variables:
+mode: c
+End:
+*/
keyboards/keyball44/config/numword.dtsi
@@ -0,0 +1,19 @@
+// Numword behavior - smart number layer
+// Based on https://github.com/urob/zmk-auto-layer
+
+/ {
+ behaviors {
+ num_word: num_word {
+ compatible = "zmk,behavior-auto-layer";
+ #binding-cells = <1>;
+ continue-list = <BACKSPACE DELETE DOT COMMA PLUS MINUS STAR FSLH EQUAL>;
+ ignore-numbers;
+ };
+ };
+};
+
+/*
+Local Variables:
+mode: c
+End:
+*/
keyboards/keyball44/config/west.yml
@@ -0,0 +1,29 @@
+manifest:
+ remotes:
+ - name: zmkfirmware
+ url-base: https://github.com/zmkfirmware
+ - name: inorichi
+ url-base: https://github.com/inorichi
+ - name: george-norton
+ url-base: https://github.com/george-norton
+ - name: urob
+ url-base: https://github.com/urob
+ projects:
+ - name: zmk
+ remote: zmkfirmware
+ revision: v0.3.0
+ import: app/west.yml
+ - name: zmk-driver-pmw3360
+ remote: george-norton
+ revision: v0.3
+ - name: zmk-helpers
+ remote: urob
+ revision: v0.3.0
+ - name: zmk-auto-layer
+ remote: urob
+ revision: v0.3.0
+ - name: zmk-leader-key
+ remote: urob
+ revision: v0.3.0
+ self:
+ path: config
keyboards/keyball44/firmwares/keyball44_left.uf2
Binary file
keyboards/keyball44/firmwares/keyball44_right.uf2
Binary file
keyboards/keyball44/lib/functions.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+# Author: Chmouel Boudjnah <chmouel@chmouel.com>
+
+set -euo pipefail
+
+if [[ -e config/includes/local.h ]]; then
+ cat <<EOF >config/includes/local.h
+#define MYDEBUG_PASTE_MACRO &kp D &kp E &kp B &kp U &kp G
+#define MYDEBUG_PASTE_MACRO_2 &kp STAR &kp SPACE &kp D &kp E &kp B &kp U &kp G &kp SPACE &kp STAR
+EOF
+fi
+
+function echo_red() {
+ echo -e "\033[0;31m$1\033[0m"
+}
+
+function echo_green() {
+ echo -e "\033[0;32m$1\033[0m"
+}
+
+function echo_blue() {
+ echo -e "\033[0;34m$1\033[0m"
+}
+
+function echo_yellow() {
+ echo -e "\033[0;33m$1\033[0m"
+}
keyboards/keyball44/build.yaml
@@ -0,0 +1,10 @@
+---
+include:
+ - board: nice_nano_v2
+ shield: keyball44_left
+ #snippet: zmk-usb-logging # Uncomment to log over USB.
+ - board: nice_nano_v2
+ shield: keyball44_right
+ #snippet: zmk-usb-logging
+ - board: nice_nano_v2
+ shield: settings_reset
keyboards/keyball44/Dockerfile
@@ -0,0 +1,28 @@
+# syntax=docker/dockerfile:1.17.0
+FROM zmkfirmware/zmk-build-arm:stable AS builder
+
+COPY ./config/west.yml /workspace/zmk-config/config/
+WORKDIR /workspace/zmk-config/
+
+RUN west init -l config
+RUN west update
+RUN west zephyr-export
+
+COPY ./config/* /workspace/zmk-config/config/
+COPY ./config/boards /workspace/zmk-config/config/boards
+
+FROM builder AS builder_left
+RUN west build -s zmk/app \
+ -b nice_nano_v2 -d /tmp/left -- \
+ -DZMK_CONFIG=/workspace/zmk-config/config \
+ -DSHIELD="keyball44_left"
+
+FROM builder AS builder_right
+RUN west build -s zmk/app \
+ -b nice_nano_v2 -d /tmp/right -- \
+ -DZMK_CONFIG=/workspace/zmk-config/config \
+ -DSHIELD="keyball44_right"
+
+FROM scratch AS output_collector
+COPY --from=builder_right /tmp/right/zephyr/zmk.uf2 keyball44_right.uf2
+COPY --from=builder_left /tmp/left/zephyr/zmk.uf2 keyball44_left.uf2
keyboards/keyball44/go.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+set -eufo pipefail
+
+cPWD="$(dirname "$(readlink -f "$0")")"
+# shellcheck disable=SC1091
+source "${cPWD}/lib/functions.sh"
+
+function build() {
+ tar -cf - Dockerfile build.yaml config | docker build --target output_collector --output type=local,dest="firmwares" -f Dockerfile -
+}
+
+function flash() {
+ side=${1}
+ id=${2}
+
+ echo -n "$(echo_red) Connect ${side} side as usb storage: "
+ while [[ ! -e /dev/disk/by-id/"${id}" ]]; do
+ echo -n "$(echo_blue .)"
+ sleep 1
+ done
+ echo " ✅"
+
+ if [[ -d /run/media/"${USER}"/NICENANO ]]; then
+ echo "$(echo_green ) Using auto-mounted /run/media/${USER}/NICENANO"
+ cp -bv "firmwares/keyball44_${side}.uf2" /run/media/"${USER}"/NICENANO/CURRENT.UF2
+ else
+ sudo umount /mnt 2>/dev/null >/dev/null || true
+ sudo mount /dev/disk/by-id/"${id}" /mnt
+ sudo cp -bv "firmwares/keyball44_${side}.uf2" /mnt/CURRENT.UF2
+ fi
+}
+
+help() {
+ echo "go.sh [build/flash]"
+}
+
+[[ -z ${1-""} ]] && {
+ set +x
+ echo "need at least one arg"
+ help
+ exit 1
+}
+
+case "$1" in
+build) build ;;
+flash)
+ build
+
+ flash left usb-Adafruit_nRF_UF2_FEA589DBF0ED86AA-0:0
+ echo "$(echo_green ) Left side is completed.."
+ sleep 2
+
+ flash right usb-Adafruit_nRF_UF2_DDCBE6D91191787B-0:0
+ echo "$(echo_green )" "Right side is completed.. enjoy 🥳"
+ ;;
+*)
+ echo "Wrong argument $1"
+ help
+ exit 1
+ ;;
+esac
keyboards/keyball44/README.md
@@ -0,0 +1,45 @@
+# Keyball44 ZMK Configuration
+
+Split keyboard with integrated trackball (PMW3360), running ZMK firmware on nice!nano v2 controllers.
+
+## Layout
+
+- 44 keys: 3×6 per side + 5 left thumb keys + 3 right thumb keys
+- Trackball on the right side (replaces one thumb key)
+- OLED display on each side
+
+## Layers
+
+| # | Name | Description |
+|---|---------|-------------|
+| 0 | Bépo | French ergonomic layout (default) |
+| 1 | ErgoL | ErgoL layout |
+| 2 | Qwerty | Standard QWERTY |
+| 3 | Accents | French accents |
+| 4 | Symbols | Programming symbols |
+| 5 | Nav | Navigation + media + BT |
+| 6 | Numbers | Numpad + function keys |
+| 7 | Mouse | Mouse buttons (trackball handles movement) |
+
+## Building
+
+```bash
+./go.sh build
+```
+
+## Flashing
+
+1. Put the nice!nano into bootloader mode (double-tap reset)
+2. Update USB IDs in `go.sh` to match your controllers
+3. Run `./go.sh flash`
+
+## Shield Source
+
+Based on [toeck98/zmk_config_Keyball44](https://github.com/toeck98/zmk_config_Keyball44) shield definitions, using PMW3360 trackball driver.
+
+## TODO
+
+- [ ] Update USB device IDs in `go.sh` after first flash
+- [ ] Tune trackball sensitivity/scroll in right overlay
+- [ ] Add scroll/snipe layer modes for trackball
+- [ ] Test and adjust combos for Keyball44 key positions
keyboards/generate-keymaps.sh
@@ -204,6 +204,34 @@ EOF
fi
}
+generate_keyball44() {
+ log_info "Generating keymap for keyball44 (ZMK)..."
+
+ local zmk_config="$SCRIPT_DIR/keyball44/config/keyball44.keymap"
+ local layout_json="$SCRIPT_DIR/keyball44/config/keyball44.json"
+ local output_svg="$OUTPUT_DIR/keyball44.svg"
+ local keymap_yaml
+ keymap_yaml=$(mktemp "${TMPDIR:-/tmp}/keyball44-keymap.XXXXXX.yaml")
+
+ if [[ ! -f "$zmk_config" ]]; then
+ log_warn "ZMK config not found at $zmk_config"
+ return 1
+ fi
+
+ # Parse ZMK keymap to YAML, then replace layout with JSON reference
+ keymap -c "$RESOLVED_CONFIG" parse -z "$zmk_config" >"$keymap_yaml"
+
+ # Replace the layout line with the JSON physical layout
+ sed -i "s|^layout:.*|layout: {qmk_info_json: $layout_json}|" "$keymap_yaml"
+
+ # Draw SVG from YAML
+ keymap -c "$RESOLVED_CONFIG" draw "$keymap_yaml" >"$output_svg"
+ rm -f "$keymap_yaml"
+
+ log_success "Generated: $output_svg"
+ svg_to_png "$output_svg"
+}
+
# Main logic
case "${1:-all}" in
eyelash | eyelash_corne)
@@ -212,16 +240,21 @@ eyelash | eyelash_corne)
moonlander)
generate_moonlander
;;
+keyball | keyball44)
+ generate_keyball44
+ ;;
all)
generate_eyelash_corne || true
generate_moonlander || true
+ generate_keyball44 || true
;;
*)
- echo "Usage: $0 [eyelash|moonlander|all]"
+ echo "Usage: $0 [eyelash|moonlander|keyball44|all]"
echo ""
echo "Options:"
echo " eyelash Generate only eyelash_corne keymap"
echo " moonlander Generate only moonlander keymap"
+ echo " keyball44 Generate only keyball44 keymap"
echo " all Generate all keymaps (default)"
echo ""
echo "Output directory: $OUTPUT_DIR"
keyboards/keyball44.png
Binary file
keyboards/keyball44.svg
@@ -0,0 +1,2950 @@
+<svg width="915" height="3775" viewBox="0 0 915 3775" class="keymap" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>/* start glyphs */
+<svg id="bt-clear">
+<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-bluetooth-x" viewBox="0 0 32 32" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M7 8l10 8l-5 4v-16l1 .802m0 6.396l-6 4.802" />
+ <path d="M16 6l4 4" />
+ <path d="M20 6l-4 4" />
+</svg>
+
+</svg>
+<svg id="bt-next">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon icon-tabler icon-tabler-bluetooth-next">
+ <g stroke="none">
+ <path d="M10.59.5h13.65v13.64H10.59Z"/>
+ <path fill="currentColor" d="M2 5v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 2 5Zm11 0v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 13 5Z" style="fill:#fff;fill-opacity:1;stroke:none;stroke-opacity:1" transform="translate(10.59 .5) scale(.5686)"/>
+ </g>
+ \g>
+ <path d="m1.69 7.1 12.45 9.96-6.23 4.98V2.1l1.25 1m0 7.97-7.47 5.98" style="stroke:#fff;stroke-width:2.49081;stroke-opacity:1"/>
+ \g>
+</svg>
+
+</svg>
+<svg id="bt-prev">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon icon-tabler icon-tabler-bluetooth-next">
+ <g stroke="none">
+ <path d="M24.24 14.14H10.59V.5h13.65Z"/>
+ <path fill="currentColor" d="M2 5v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 2 5Zm11 0v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 13 5Z" style="fill:#fff;fill-opacity:1;stroke:none;stroke-opacity:1" transform="rotate(180 12.12 7.07) scale(.5686)"/>
+ </g>
+ \g>
+ <path d="m1.69 7.1 12.45 9.96-6.23 4.98V2.1l1.25 1m0 7.97-7.47 5.98" style="stroke:#fff;stroke-width:2.49081;stroke-opacity:1"/>
+ \g>
+</svg>
+
+</svg>
+<svg id="click-middle">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 1120 1120">
+ <path fill="#fff" d="m738.2-366.06-41.73-77.07q29-47.38 22.98-102.18-6-54.8-46.31-95.1Q626.47-687.1 560-687.1t-113.14 46.67q-40.3 40.3-46.31 95.11-6.01 54.8 22.98 102.18l-41.72 77.07q-64.35-71.42-62.23-166.88 2.13-95.46 70.71-164.04Q461.01-767.7 560-767.7q99 0 169.7 70.72 68.6 68.58 70.72 164.04 2.12 95.46-62.23 166.88zM615.85 10.83H504.14V-231L362-159.58l198-367.7 197.99 367.7L615.86-231Z"/>
+</svg>
+
+</svg>
+<svg id="delete">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M360-200q-22 0-40-11.5T289-241L120-480l169-239q13-18 31-29.5t40-11.5h420q24.75 0 42.375 17.625T840-700v440q0 24.75-17.625 42.375T780-200H360Zm420-60v-440 440Zm-431 0h431v-440H349L195-480l154 220Zm99-66 112-112 112 112 43-43-113-111 111-111-43-43-110 112-112-112-43 43 113 111-113 111 43 43Z"/></svg>
+
+</svg>
+<svg id="material:backspace">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="m448-326 112-112 112 112 43-43-113-111 111-111-43-43-110 112-112-112-43 43 113 111-113 111 43 43Zm-98 166q-14.25 0-27-6.38-12.75-6.37-21-17.62L80-480l221-296q8.25-11.25 21-17.63 12.75-6.37 27-6.37h472q24.75 0 42.38 17.62Q881-764.75 881-740v520q0 24.75-17.62 42.37Q845.75-160 821-160H350ZM155-480l195 260h471v-520H350L155-480Zm431 0Z"/></svg>
+</svg>
+<svg id="material:keyboard_return">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M359-240 120-479l239-239 43 43-167 167h545v-172h60v231H236l166 166-43 43Z"/></svg>
+</svg>
+<svg id="material:keyboard_tab">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M820-240v-480h60v480h-60Zm-340 1-43-42 169-169H80v-60h526L438-679l42-42 241 241-241 241Z"/></svg>
+</svg>
+<svg id="material:left_click">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M468-240q-96-5-162-74t-66-166q0-100 70-170t170-70q97 0 166 66t74 163l-63-20q-11-64-60-106.5T480-660q-75 0-127.5 52.5T300-480q0 67 42.5 116.5T449-303l19 63ZM821-60 650-231 600-80 480-480l400 120-151 50 171 171-79 79Z"/></svg>
+</svg>
+<svg id="material:right_click">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="m492-240 19-63q64-11 106.5-60.5T660-480q0-75-52.5-127.5T480-660q-68 0-117 42.5T303-511l-63 20q5-97 74-163t166-66q100 0 170 70t70 170q0 97-66 166t-162 74ZM139-60l-79-79 171-171-151-50 400-120L360-80l-50-151L139-60Z"/></svg>
+</svg>
+<svg id="output-toggle">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8.03 10.37">
+ <g style="fill:#fff;fill-opacity:1">
+ <g style="fill:#fff;fill-opacity:1;stroke-width:.365;stroke-dasharray:none">
+ <path d="M106.89 150.28a.53.53 0 1 0 1.06 0 .53.53 0 1 0-1.06 0" style="fill:#fff;fill-opacity:1;stroke-width:.365;stroke-dasharray:none" transform="translate(-100.98 -140.44)"/>
+ <path d="M107.42 149.75v-3.04m-1.32 1.19v.8l1.32.79m0-.39 1.32-.54v-.66" style="fill:none;fill-opacity:1;stroke:#fff;stroke-width:.365;stroke-dasharray:none;stroke-opacity:1" transform="translate(-100.98 -140.44)"/>
+ <path d="M108.48 147.9h.53v-.53h-.53zm-2.63-.26a.26.26 0 1 0 .53 0 .26.26 0 1 0-.53 0m1.05-.93h1.05l-.53-.66Z" style="fill:#fff;fill-opacity:1;stroke-width:.365;stroke-dasharray:none" transform="translate(-100.98 -140.44)"/>
+ </g>
+ <path d="m98.5 149.47 2.65 2.11-1.32 1.06v-4.23l1.32 1.06-2.64 2.11" style="fill:none;fill-opacity:1;stroke:#fff;stroke-width:.365;stroke-dasharray:none;stroke-opacity:1" transform="translate(-98.4 -148.03)"/>
+ <path d="m99.58 156.1 4.97-4.97" style="fill:none;fill-opacity:1;stroke:#fff;stroke-width:.365;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" transform="translate(-98.4 -148.03)"/>
+ </g>
+</svg>
+
+</svg>
+<svg id="play-pause">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 26" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon icon-tabler icon-tabler-player-play">
+ <path fill="#fff" stroke="none" d="M11.02 4v16a1 1 0 0 0 1.52.85l13-8a1 1 0 0 0 0-1.7l-13-8a1 1 0 0 0-1.52.85Z" style="fill:#fff;fill-opacity:1"/>
+ <path fill="#fff" stroke="none" d="M1.6 3h2.72c.82 0 1.48.65 1.48 1.45V19.5c0 .8-.66 1.44-1.48 1.44h-2.7c-.82 0-1.48-.65-1.48-1.44V4.45C.14 3.65.8 3 1.61 3Z" style="fill:#fff;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"/>
+</svg>
+
+</svg>
+<svg id="scroll-down">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.64 76.65">
+ <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
+ <path d="m21.6 59.94 16.72 16.71 16.71-16.7H38.32Z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
+</svg>
+
+</svg>
+<svg id="scroll-left">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.64 76.65">
+ <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
+ <path d="M16.7 21.61 0 38.32l16.71 16.72V38.32Z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
+</svg>
+
+</svg>
+<svg id="scroll-right">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.64 76.65">
+ <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
+ <path d="m59.94 55.04 16.7-16.72-16.7-16.7v16.7z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
+</svg>
+
+</svg>
+<svg id="scroll-up">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.64 76.65">
+ <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
+ <path d="M55.03 16.7 38.32 0 21.6 16.7h16.7z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
+</svg>
+
+</svg>
+<svg id="tabler:arrow-big-down">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="currentColor"
+ class="icon icon-tabler icons-tabler-filled icon-tabler-arrow-big-down"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M10 2l-.15 .005a2 2 0 0 0 -1.85 1.995v6.999l-2.586 .001a2 2 0 0 0 -1.414 3.414l6.586 6.586a2 2 0 0 0 2.828 0l6.586 -6.586a2 2 0 0 0 .434 -2.18l-.068 -.145a2 2 0 0 0 -1.78 -1.089l-2.586 -.001v-6.999a2 2 0 0 0 -2 -2h-4z" />
+</svg>
+</svg>
+<svg id="tabler:arrow-big-left">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="currentColor"
+ class="icon icon-tabler icons-tabler-filled icon-tabler-arrow-big-left"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M9.586 4l-6.586 6.586a2 2 0 0 0 0 2.828l6.586 6.586a2 2 0 0 0 2.18 .434l.145 -.068a2 2 0 0 0 1.089 -1.78v-2.586h7a2 2 0 0 0 2 -2v-4l-.005 -.15a2 2 0 0 0 -1.995 -1.85l-7 -.001v-2.585a2 2 0 0 0 -3.414 -1.414z" />
+</svg>
+</svg>
+<svg id="tabler:arrow-big-right">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="currentColor"
+ class="icon icon-tabler icons-tabler-filled icon-tabler-arrow-big-right"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M12.089 3.634a2 2 0 0 0 -1.089 1.78l-.001 2.586h-6.999a2 2 0 0 0 -2 2v4l.005 .15a2 2 0 0 0 1.995 1.85l6.999 -.001l.001 2.587a2 2 0 0 0 3.414 1.414l6.586 -6.586a2 2 0 0 0 0 -2.828l-6.586 -6.586a2 2 0 0 0 -2.18 -.434l-.145 .068z" />
+</svg>
+</svg>
+<svg id="tabler:arrow-big-up">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="currentColor"
+ class="icon icon-tabler icons-tabler-filled icon-tabler-arrow-big-up"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M10.586 3l-6.586 6.586a2 2 0 0 0 -.434 2.18l.068 .145a2 2 0 0 0 1.78 1.089h2.586v7a2 2 0 0 0 2 2h4l.15 -.005a2 2 0 0 0 1.85 -1.995l-.001 -7h2.587a2 2 0 0 0 1.414 -3.414l-6.586 -6.586a2 2 0 0 0 -2.828 0z" />
+</svg>
+</svg>
+<svg id="tabler:camera">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="none"
+ stroke="currentColor"
+ stroke-width="2"
+ stroke-linecap="round"
+ stroke-linejoin="round"
+ class="icon icon-tabler icons-tabler-outline icon-tabler-camera"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M5 7h1a2 2 0 0 0 2 -2a1 1 0 0 1 1 -1h6a1 1 0 0 1 1 1a2 2 0 0 0 2 2h1a2 2 0 0 1 2 2v9a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-9a2 2 0 0 1 2 -2" />
+ <path d="M9 13a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
+</svg>
+</svg>
+<svg id="tabler:player-track-next">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="currentColor"
+ class="icon icon-tabler icons-tabler-filled icon-tabler-player-track-next"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M2 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 -7c-.647 -.565 -1.659 -.106 -1.659 .753z" />
+ <path d="M13 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 -7c-.647 -.565 -1.659 -.106 -1.659 .753z" />
+</svg>
+</svg>
+<svg id="tabler:player-track-prev">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="currentColor"
+ class="icon icon-tabler icons-tabler-filled icon-tabler-player-track-prev"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M20.341 4.247l-8 7a1 1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 -1.012 -1.318 -1.659 -.753z" />
+ <path d="M9.341 4.247l-8 7a1 1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 -1.012 -1.318 -1.659 -.753z" />
+</svg>
+</svg>
+<svg id="tabler:space">
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+
+
+ viewBox="0 0 24 24"
+ fill="none"
+ stroke="currentColor"
+ stroke-width="2"
+ stroke-linecap="round"
+ stroke-linejoin="round"
+ class="icon icon-tabler icons-tabler-outline icon-tabler-space"
+>
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M4 10v3a1 1 0 0 0 1 1h14a1 1 0 0 0 1 -1v-3" />
+</svg>
+</svg>
+</defs>/* end glyphs */
+<style>/* inherit to force styles through use tags */
+svg path {
+ fill: inherit;
+}
+
+/* font and background color specifications */
+svg.keymap {
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;
+ font-size: 14px;
+ font-weight: bold;
+ font-kerning: normal;
+ text-rendering: optimizeLegibility;
+ fill: white;
+}
+
+/* default key styling */
+rect.key {
+ fill: #1c2128;
+ stroke: #adbac7;
+ stroke-width: 1;
+}
+
+/* default key side styling, only used is draw_key_sides is set */
+rect.side {
+ filter: brightness(90%);
+}
+
+/* color accent for combo boxes */
+rect.combo, rect.combo-separate {
+ fill: #4a5568;
+ stroke: #cbd5e0;
+ stroke-width: 2;
+}
+
+/* color accent for held keys */
+rect.held, rect.combo.held {
+ fill: #FF9E3B;
+}
+
+/* color accent for ghost (optional) keys */
+rect.ghost, rect.combo.ghost {
+ stroke-dasharray: 4, 4;
+ stroke-width: 2;
+}
+
+text {
+ text-anchor: middle;
+ dominant-baseline: middle;
+}
+
+/* styling for layer labels */
+text.label {
+ font-weight: bold;
+ text-anchor: start;
+ fill: #adbac7;
+ font-size: 28px;
+ stroke: #777;
+ stroke-width: 0px;
+ paint-order: stroke;
+}
+
+/* styling for combo tap, and key hold/shifted label text */
+text.combo, text.hold, text.shifted {
+ font-size: 10px;
+ font-weight: bold;
+ text-transform: uppercase;
+ fill: white;
+}
+
+text.hold {
+ text-anchor: middle;
+ dominant-baseline: auto;
+}
+
+text.shifted {
+ text-anchor: middle;
+ dominant-baseline: hanging;
+}
+
+/* styling for hold/shifted label text in combo box */
+text.combo.hold, text.combo.shifted {
+ font-size: 8px;
+}
+
+/* lighter symbol for transparent keys */
+text.trans {
+ fill: #7b7e81;
+}
+
+/* styling for unused/empty keys (XXXXXXX, KC_NO) */
+/* Target keys that have neither text nor glyph (use) elements */
+/* Exclude combo diagram keys */
+g[class*='layer-']:not([class*='combopos']) g.key:not(:has(text)):not(:has(use)) rect.key {
+ fill: #0d1117;
+ stroke: #30363d;
+ stroke-dasharray: 2, 2;
+ opacity: 0.5;
+}
+
+/* styling for combo dendrons */
+path.combo {
+ stroke-width: 1;
+ stroke: gray;
+ fill: none;
+}
+
+/* Start Tabler Icons Cleanup */
+/* cannot use height/width with glyphs */
+
+.icon-tabler > path {
+ fill: white;
+ stroke: none;
+}
+
+.icon-tabler-cut > path,
+.icon-tabler-space > path,
+.icon-tabler-copy > path,
+.icon-tabler-clipboard > path,
+.icon-tabler-camera > path,
+.icon-tabler-volume > path,
+.icon-tabler-volume-2 > path,
+.icon-tabler-bluetooth-x > path,
+.icon-tabler-bluetooth-prev > path,
+.icon-tabler-bluetooth-next > path {
+ fill: none;
+ stroke: white;
+}
+
+#tabler\:cut,
+#tabler\:copy,
+#tabler\:clipboard,
+#tabler\:camera {
+ transform: scale(1.4);
+ transform-box: fill-box;
+}
+
+#tabler\:space {
+ transform: scale(1.8);
+ transform-box: fill-box;
+}
+
+#tabler\:volume,
+#tabler\:volume-2 {
+ transform: scale(1.7);
+ transform-box: fill-box;
+}
+
+#tabler\:arrow-big-up,
+#tabler\:arrow-big-down,
+#tabler\:arrow-big-left,
+#tabler\:arrow-big-right {
+ transform: scale(1.3);
+ transform-box: fill-box;
+}
+
+/* hide tabler's default box */
+.icon-tabler > path[stroke="none"][fill="none"] {
+ visibility: hidden;
+}
+/* End Tabler Icons Cleanup */
+
+/* Material glyphs */
+#material\:keyboard_return{
+ transform: scale(2);
+ transform-box: fill-box;
+}
+
+#material\:backspace{
+ transform: scale(2) translateY(1px);
+ transform-box: fill-box;
+}
+
+.shifted.material\:left_click {
+ transform: scale(1.2) translateY(5px);
+ transform-box: fill-box;
+}
+
+#material\:left_click,
+#material\:right_click,
+#material\:keyboard_tab {
+ transform: scale(1.5);
+ transform-box: fill-box;
+}
+
+/* Custom glyphs */
+.bt-clear {
+ transform: scale(2.4) translate(2px, 1.5px);
+}
+
+.bt-prev,
+.bt-next {
+ transform: scale(1.5) translate(2px);
+}
+
+#delete {
+ transform: scale(2) rotate(180deg) translate(-1px, -1px);
+ transform-box: fill-box;
+}
+
+#nbsp {
+ transform: scale(2.5);
+ transform-box: fill-box;
+}
+
+.combo.scroll {
+ transform: scale(1.2) translate(-19px, -6px);
+}
+
+.scroll,
+.scroll-right {
+ transform: scale(1.5);
+}
+
+.scroll-down {
+ transform: scale(1.5) translateY(-2px);
+}
+
+.scroll-up {
+ transform: scale(1.5) translateY(2px);
+}
+
+.scroll-left {
+ transform: scale(1.5) translate(2px);
+}
+
+.click-middle {
+ transform: scale(1.7) translate(2px, 1px);
+ transform-box: fill-box;
+}
+
+.cursor-right {
+ transform: scale(1.8);
+}
+
+.cursor-down {
+ transform: scale(1.8) translateY(-1px);
+}
+
+.cursor-up {
+ transform: scale(1.9) translateY(1px);
+}
+
+.cursor-left {
+ transform: scale(1.8) translate(1px);
+}
+
+.output-toggle {
+ transform: scale(2.5);
+ fill: none;
+ stroke: white;
+ stroke-width: 4px;
+}
+
+.layer-lock {
+ transform: scale(1.8);
+ transform-box: fill-box;
+}
+</style>
+<g transform="translate(30, 0)" class="layer-Bépo">
+<text x="0" y="28" class="label" id="Bpo">Bépo</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:keyboard_tab" xlink:href="#material:keyboard_tab" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:keyboard_tab"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">B</text>
+<text x="0" y="-23" class="key shifted">|</text>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">É</text>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">P</text>
+<text x="0" y="-23" class="key shifted">&</text>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">O</text>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">È</text>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">^</text>
+<text x="0" y="-23" class="key shifted">!</text>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">V</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">D</text>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">L</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">J</text>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Z</text>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">
+<tspan x="0" dy="-0.9em" style="font-size: 67%">&num_word</tspan><tspan x="0" dy="1.2em" style="font-size: 67%">6</tspan>
+</text>
+<a href="#Num">
+<text x="0" y="23" class="key hold layer-activator">Num</text>
+</a></g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">A</text>
+<text x="0" y="23" class="key hold">GUI</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">U</text>
+<text x="0" y="23" class="key hold">ALT</text>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">I</text>
+<text x="0" y="23" class="key hold">SHIFT</text>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">E</text>
+<text x="0" y="23" class="key hold">CTRL</text>
+<text x="0" y="-23" class="key shifted">€</text>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">,</text>
+<text x="0" y="23" class="key hold"><tspan style="font-size: 86%">Meh+GUI</tspan></text>
+<text x="0" y="-23" class="key shifted">;</text>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">C</text>
+<text x="0" y="23" class="key hold"><tspan style="font-size: 86%">Meh+GUI</tspan></text>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">T</text>
+<text x="0" y="23" class="key hold">RCTRL</text>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">S</text>
+<text x="0" y="23" class="key hold">RSHFT</text>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">R</text>
+<text x="0" y="23" class="key hold">RALT</text>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">N</text>
+<text x="0" y="23" class="key hold">GUI</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">M</text>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">`</text>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">À</text>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Y</text>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">X</text>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">.</text>
+<text x="0" y="-23" class="key shifted">:</text>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">K</text>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">'</text>
+<text x="0" y="-23" class="key shifted">?</text>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Q</text>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">G</text>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">H</text>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F</text>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">W</text>
+</g>
+<g transform="translate(140, 210)" class="key keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">GUI</text>
+</g>
+<g transform="translate(196, 196)" class="key keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">ALT</text>
+</g>
+<g transform="translate(266, 252)" class="key keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#delete" xlink:href="#delete" x="-7" y="-7" height="14" width="14.0" class="key tap glyph delete"/>
+<a href="#Mouse">
+<text x="0" y="23" class="key hold layer-activator">Mouse</text>
+</a></g>
+<g transform="translate(324, 256) rotate(10.0)" class="key keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:space" xlink:href="#tabler:space" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:space"/>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:backspace" xlink:href="#material:backspace" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:backspace"/>
+<a href="#Nav">
+<text x="0" y="23" class="key hold layer-activator">Nav</text>
+</a></g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:keyboard_return" xlink:href="#material:keyboard_return" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:keyboard_return"/>
+<a href="#Sym">
+<text x="0" y="23" class="key hold layer-activator">Sym</text>
+</a></g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">RALT</text>
+</g>
+<g transform="translate(812, 224)" class="key keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#delete" xlink:href="#delete" x="-7" y="-7" height="14" width="14.0" class="key tap glyph delete"/>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+<g class="combo combopos-1">
+<rect rx="6" ry="6" x="152" y="19" width="32" height="32" class="combo"/>
+<text x="168" y="35" class="combo tap">@</text>
+</g>
+<g class="combo combopos-2">
+<rect rx="6" ry="6" x="96" y="33" width="32" height="32" class="combo"/>
+<text x="112" y="49" class="combo tap">|</text>
+</g>
+<g class="combo combopos-3">
+<rect rx="6" ry="6" x="208" y="18" width="32" height="32" class="combo"/>
+<text x="224" y="34" class="combo tap">#</text>
+</g>
+<g class="combo combopos-4">
+<rect rx="6" ry="6" x="264" y="29" width="32" height="32" class="combo"/>
+<text x="280" y="45" class="combo tap">&</text>
+</g>
+<g class="combo combopos-5">
+<rect rx="6" ry="6" x="236" y="51" width="32" height="32" class="combo"/>
+<text x="252" y="67" class="combo tap">$</text>
+</g>
+<g class="combo combopos-6">
+<rect rx="6" ry="6" x="180" y="40" width="32" height="32" class="combo"/>
+<text x="196" y="56" class="combo tap">/</text>
+</g>
+<g class="combo combopos-7">
+<rect rx="6" ry="6" x="180" y="96" width="32" height="32" class="combo"/>
+<text x="196" y="112" class="combo tap">\</text>
+</g>
+<g class="combo combopos-8">
+<rect rx="6" ry="6" x="124" y="54" width="32" height="32" class="combo"/>
+<text x="140" y="70" class="combo tap">-</text>
+</g>
+<g class="combo combopos-9">
+<rect rx="6" ry="6" x="236" y="107" width="32" height="32" class="combo"/>
+<text x="252" y="123" class="combo tap">_</text>
+</g>
+<g class="combo combopos-10">
+<rect rx="6" ry="6" x="124" y="110" width="32" height="32" class="combo"/>
+<text x="140" y="126" class="combo tap">=</text>
+</g>
+<g class="combo combopos-11">
+<rect rx="6" ry="6" x="628" y="40" width="32" height="32" class="combo"/>
+<text x="644" y="56" class="combo tap">(</text>
+</g>
+<g class="combo combopos-12">
+<rect rx="6" ry="6" x="628" y="96" width="32" height="32" class="combo"/>
+<text x="644" y="112" class="combo tap">)</text>
+</g>
+<g class="combo combopos-13">
+<rect rx="6" ry="6" x="572" y="51" width="32" height="32" class="combo"/>
+<text x="588" y="67" class="combo tap">{</text>
+</g>
+<g class="combo combopos-14">
+<rect rx="6" ry="6" x="572" y="107" width="32" height="32" class="combo"/>
+<text x="588" y="123" class="combo tap">}</text>
+</g>
+<g class="combo combopos-15">
+<rect rx="6" ry="6" x="684" y="54" width="32" height="32" class="combo"/>
+<text x="700" y="70" class="combo tap">[</text>
+</g>
+<g class="combo combopos-16">
+<rect rx="6" ry="6" x="684" y="110" width="32" height="32" class="combo"/>
+<text x="700" y="126" class="combo tap">]</text>
+</g>
+<g class="combo combopos-17">
+<rect rx="6" ry="6" x="656" y="19" width="32" height="32" class="combo"/>
+<text x="672" y="35" class="combo tap">></text>
+</g>
+<g class="combo combopos-18">
+<rect rx="6" ry="6" x="600" y="18" width="32" height="32" class="combo"/>
+<text x="616" y="34" class="combo tap"><</text>
+</g>
+<g class="combo combopos-19">
+<rect rx="6" ry="6" x="516" y="62" width="32" height="32" class="combo"/>
+<text x="532" y="78" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-20">
+<rect rx="6" ry="6" x="292" y="62" width="32" height="32" class="combo"/>
+<text x="308" y="78" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-21">
+<rect rx="6" ry="6" x="292" y="118" width="32" height="32" class="combo"/>
+<text x="308" y="134" class="combo tap">%</text>
+</g>
+<g class="combo combopos-22">
+<rect rx="6" ry="6" x="516" y="118" width="32" height="32" class="combo"/>
+<text x="532" y="134" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-23">
+<rect rx="6" ry="6" x="740" y="68" width="32" height="32" class="combo"/>
+<text x="756" y="84" class="combo tap">*</text>
+</g>
+<g class="combo combopos-24">
+<rect rx="6" ry="6" x="740" y="124" width="32" height="32" class="combo"/>
+<text x="756" y="140" class="combo tap">+</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 370)" class="layer-ErgoL">
+<text x="0" y="28" class="label" id="ErgoL">ErgoL</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:keyboard_tab" xlink:href="#material:keyboard_tab" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:keyboard_tab"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Q</text>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">C</text>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">O</text>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">P</text>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">W</text>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">J</text>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">M</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">D</text>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">!</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Y</text>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">[</text>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">=</text>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">A</text>
+<text x="0" y="23" class="key hold">GUI</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">S</text>
+<text x="0" y="23" class="key hold">ALT</text>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">E</text>
+<text x="0" y="23" class="key hold">SHIFT</text>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">N</text>
+<text x="0" y="23" class="key hold">CTRL</text>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F</text>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">L</text>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">R</text>
+<text x="0" y="23" class="key hold">RCTRL</text>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">T</text>
+<text x="0" y="23" class="key hold">RSHFT</text>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">I</text>
+<text x="0" y="23" class="key hold">RALT</text>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">U</text>
+<text x="0" y="23" class="key hold">GUI</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">'</text>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">`</text>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Z</text>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">X</text>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">-</text>
+<text x="0" y="-23" class="key shifted">?</text>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">V</text>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">B</text>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">.</text>
+<text x="0" y="-23" class="key shifted">:</text>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">H</text>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">G</text>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">,</text>
+<text x="0" y="-23" class="key shifted">;</text>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">K</text>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">]</text>
+</g>
+<g transform="translate(140, 210)" class="key trans keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(196, 196)" class="key trans keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(266, 252)" class="key trans keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key trans keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key trans keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key trans keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key trans keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(812, 224)" class="key trans keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+<g class="combo combopos-1">
+<rect rx="6" ry="6" x="152" y="19" width="32" height="32" class="combo"/>
+<text x="168" y="35" class="combo tap">@</text>
+</g>
+<g class="combo combopos-2">
+<rect rx="6" ry="6" x="96" y="33" width="32" height="32" class="combo"/>
+<text x="112" y="49" class="combo tap">|</text>
+</g>
+<g class="combo combopos-3">
+<rect rx="6" ry="6" x="208" y="18" width="32" height="32" class="combo"/>
+<text x="224" y="34" class="combo tap">#</text>
+</g>
+<g class="combo combopos-4">
+<rect rx="6" ry="6" x="264" y="29" width="32" height="32" class="combo"/>
+<text x="280" y="45" class="combo tap">&</text>
+</g>
+<g class="combo combopos-5">
+<rect rx="6" ry="6" x="236" y="51" width="32" height="32" class="combo"/>
+<text x="252" y="67" class="combo tap">$</text>
+</g>
+<g class="combo combopos-6">
+<rect rx="6" ry="6" x="180" y="40" width="32" height="32" class="combo"/>
+<text x="196" y="56" class="combo tap">/</text>
+</g>
+<g class="combo combopos-7">
+<rect rx="6" ry="6" x="180" y="96" width="32" height="32" class="combo"/>
+<text x="196" y="112" class="combo tap">\</text>
+</g>
+<g class="combo combopos-8">
+<rect rx="6" ry="6" x="124" y="54" width="32" height="32" class="combo"/>
+<text x="140" y="70" class="combo tap">-</text>
+</g>
+<g class="combo combopos-9">
+<rect rx="6" ry="6" x="236" y="107" width="32" height="32" class="combo"/>
+<text x="252" y="123" class="combo tap">_</text>
+</g>
+<g class="combo combopos-10">
+<rect rx="6" ry="6" x="124" y="110" width="32" height="32" class="combo"/>
+<text x="140" y="126" class="combo tap">=</text>
+</g>
+<g class="combo combopos-11">
+<rect rx="6" ry="6" x="628" y="40" width="32" height="32" class="combo"/>
+<text x="644" y="56" class="combo tap">(</text>
+</g>
+<g class="combo combopos-12">
+<rect rx="6" ry="6" x="628" y="96" width="32" height="32" class="combo"/>
+<text x="644" y="112" class="combo tap">)</text>
+</g>
+<g class="combo combopos-13">
+<rect rx="6" ry="6" x="572" y="51" width="32" height="32" class="combo"/>
+<text x="588" y="67" class="combo tap">{</text>
+</g>
+<g class="combo combopos-14">
+<rect rx="6" ry="6" x="572" y="107" width="32" height="32" class="combo"/>
+<text x="588" y="123" class="combo tap">}</text>
+</g>
+<g class="combo combopos-15">
+<rect rx="6" ry="6" x="684" y="54" width="32" height="32" class="combo"/>
+<text x="700" y="70" class="combo tap">[</text>
+</g>
+<g class="combo combopos-16">
+<rect rx="6" ry="6" x="684" y="110" width="32" height="32" class="combo"/>
+<text x="700" y="126" class="combo tap">]</text>
+</g>
+<g class="combo combopos-17">
+<rect rx="6" ry="6" x="656" y="19" width="32" height="32" class="combo"/>
+<text x="672" y="35" class="combo tap">></text>
+</g>
+<g class="combo combopos-18">
+<rect rx="6" ry="6" x="600" y="18" width="32" height="32" class="combo"/>
+<text x="616" y="34" class="combo tap"><</text>
+</g>
+<g class="combo combopos-19">
+<rect rx="6" ry="6" x="516" y="62" width="32" height="32" class="combo"/>
+<text x="532" y="78" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-20">
+<rect rx="6" ry="6" x="292" y="62" width="32" height="32" class="combo"/>
+<text x="308" y="78" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-21">
+<rect rx="6" ry="6" x="292" y="118" width="32" height="32" class="combo"/>
+<text x="308" y="134" class="combo tap">%</text>
+</g>
+<g class="combo combopos-22">
+<rect rx="6" ry="6" x="516" y="118" width="32" height="32" class="combo"/>
+<text x="532" y="134" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-23">
+<rect rx="6" ry="6" x="740" y="68" width="32" height="32" class="combo"/>
+<text x="756" y="84" class="combo tap">*</text>
+</g>
+<g class="combo combopos-24">
+<rect rx="6" ry="6" x="740" y="124" width="32" height="32" class="combo"/>
+<text x="756" y="140" class="combo tap">+</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 740)" class="layer-QWRT">
+<text x="0" y="28" class="label" id="QWRT">QWRT</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:keyboard_tab" xlink:href="#material:keyboard_tab" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:keyboard_tab"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Q</text>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">W</text>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">E</text>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">R</text>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">T</text>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Y</text>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">U</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">I</text>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">O</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">P</text>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">[</text>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">=</text>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">A</text>
+<text x="0" y="23" class="key hold">GUI</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">S</text>
+<text x="0" y="23" class="key hold">ALT</text>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">D</text>
+<text x="0" y="23" class="key hold">SHIFT</text>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F</text>
+<text x="0" y="23" class="key hold">CTRL</text>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">G</text>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">H</text>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">J</text>
+<text x="0" y="23" class="key hold">RCTRL</text>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">K</text>
+<text x="0" y="23" class="key hold">RSHFT</text>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">L</text>
+<text x="0" y="23" class="key hold">RALT</text>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">;</text>
+<text x="0" y="23" class="key hold">GUI</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">'</text>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">`</text>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Z</text>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">X</text>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">C</text>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">V</text>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">B</text>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">N</text>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">M</text>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">,</text>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">.</text>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">/</text>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">]</text>
+</g>
+<g transform="translate(140, 210)" class="key trans keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(196, 196)" class="key trans keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(266, 252)" class="key trans keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key trans keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key trans keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key trans keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key trans keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(812, 224)" class="key trans keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+<g class="combo combopos-1">
+<rect rx="6" ry="6" x="152" y="19" width="32" height="32" class="combo"/>
+<text x="168" y="35" class="combo tap">@</text>
+</g>
+<g class="combo combopos-2">
+<rect rx="6" ry="6" x="96" y="33" width="32" height="32" class="combo"/>
+<text x="112" y="49" class="combo tap">|</text>
+</g>
+<g class="combo combopos-3">
+<rect rx="6" ry="6" x="208" y="18" width="32" height="32" class="combo"/>
+<text x="224" y="34" class="combo tap">#</text>
+</g>
+<g class="combo combopos-4">
+<rect rx="6" ry="6" x="264" y="29" width="32" height="32" class="combo"/>
+<text x="280" y="45" class="combo tap">&</text>
+</g>
+<g class="combo combopos-5">
+<rect rx="6" ry="6" x="236" y="51" width="32" height="32" class="combo"/>
+<text x="252" y="67" class="combo tap">$</text>
+</g>
+<g class="combo combopos-6">
+<rect rx="6" ry="6" x="180" y="40" width="32" height="32" class="combo"/>
+<text x="196" y="56" class="combo tap">/</text>
+</g>
+<g class="combo combopos-7">
+<rect rx="6" ry="6" x="180" y="96" width="32" height="32" class="combo"/>
+<text x="196" y="112" class="combo tap">\</text>
+</g>
+<g class="combo combopos-8">
+<rect rx="6" ry="6" x="124" y="54" width="32" height="32" class="combo"/>
+<text x="140" y="70" class="combo tap">-</text>
+</g>
+<g class="combo combopos-9">
+<rect rx="6" ry="6" x="236" y="107" width="32" height="32" class="combo"/>
+<text x="252" y="123" class="combo tap">_</text>
+</g>
+<g class="combo combopos-10">
+<rect rx="6" ry="6" x="124" y="110" width="32" height="32" class="combo"/>
+<text x="140" y="126" class="combo tap">=</text>
+</g>
+<g class="combo combopos-11">
+<rect rx="6" ry="6" x="628" y="40" width="32" height="32" class="combo"/>
+<text x="644" y="56" class="combo tap">(</text>
+</g>
+<g class="combo combopos-12">
+<rect rx="6" ry="6" x="628" y="96" width="32" height="32" class="combo"/>
+<text x="644" y="112" class="combo tap">)</text>
+</g>
+<g class="combo combopos-13">
+<rect rx="6" ry="6" x="572" y="51" width="32" height="32" class="combo"/>
+<text x="588" y="67" class="combo tap">{</text>
+</g>
+<g class="combo combopos-14">
+<rect rx="6" ry="6" x="572" y="107" width="32" height="32" class="combo"/>
+<text x="588" y="123" class="combo tap">}</text>
+</g>
+<g class="combo combopos-15">
+<rect rx="6" ry="6" x="684" y="54" width="32" height="32" class="combo"/>
+<text x="700" y="70" class="combo tap">[</text>
+</g>
+<g class="combo combopos-16">
+<rect rx="6" ry="6" x="684" y="110" width="32" height="32" class="combo"/>
+<text x="700" y="126" class="combo tap">]</text>
+</g>
+<g class="combo combopos-17">
+<rect rx="6" ry="6" x="656" y="19" width="32" height="32" class="combo"/>
+<text x="672" y="35" class="combo tap">></text>
+</g>
+<g class="combo combopos-18">
+<rect rx="6" ry="6" x="600" y="18" width="32" height="32" class="combo"/>
+<text x="616" y="34" class="combo tap"><</text>
+</g>
+<g class="combo combopos-19">
+<rect rx="6" ry="6" x="516" y="62" width="32" height="32" class="combo"/>
+<text x="532" y="78" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-20">
+<rect rx="6" ry="6" x="292" y="62" width="32" height="32" class="combo"/>
+<text x="308" y="78" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-21">
+<rect rx="6" ry="6" x="292" y="118" width="32" height="32" class="combo"/>
+<text x="308" y="134" class="combo tap">%</text>
+</g>
+<g class="combo combopos-22">
+<rect rx="6" ry="6" x="516" y="118" width="32" height="32" class="combo"/>
+<text x="532" y="134" class="combo tap"><tspan style="font-size: 60%">&standalo…</tspan></text>
+</g>
+<g class="combo combopos-23">
+<rect rx="6" ry="6" x="740" y="68" width="32" height="32" class="combo"/>
+<text x="756" y="84" class="combo tap">*</text>
+</g>
+<g class="combo combopos-24">
+<rect rx="6" ry="6" x="740" y="124" width="32" height="32" class="combo"/>
+<text x="756" y="140" class="combo tap">+</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 1110)" class="layer-Acc">
+<text x="0" y="28" class="label" id="Acc">Acc</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Æ</text>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Í</text>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ì</text>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Î</text>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ï</text>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ö</text>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ô</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ò</text>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ó</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">"</text>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">`</text>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Œ</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">É</text>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">È</text>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ê</text>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ë</text>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ä</text>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Â</text>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">À</text>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Á</text>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ñ</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">'</text>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ü</text>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Û</text>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ù</text>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">Ú</text>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap"><</text>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">^</text>
+</g>
+<g transform="translate(140, 210)" class="key trans keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(196, 196)" class="key trans keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(266, 252)" class="key trans keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key trans keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key trans keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key trans keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key trans keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(812, 224)" class="key trans keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 1480)" class="layer-Sym">
+<text x="0" y="28" class="label" id="Sym">Sym</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">\</text>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">`</text>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap"><</text>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">></text>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">-</text>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">|</text>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">^</text>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">{</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">}</text>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">$</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">^</text>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">!</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">*</text>
+<text x="0" y="23" class="key hold">ALT</text>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">/</text>
+<text x="0" y="23" class="key hold">SHIFT</text>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">=</text>
+<text x="0" y="23" class="key hold">CTRL</text>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">&</text>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">#</text>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">(</text>
+<text x="0" y="23" class="key hold">RCTRL</text>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">)</text>
+<text x="0" y="23" class="key hold">RSHFT</text>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">;</text>
+<text x="0" y="23" class="key hold">RALT</text>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">"</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">~</text>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">+</text>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">[</text>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">]</text>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">%</text>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">@</text>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">:</text>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">,</text>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">.</text>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">'</text>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 210)" class="key trans keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(196, 196)" class="key trans keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(266, 252)" class="key trans keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key trans keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key trans keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key held keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key held"/>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key trans keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(812, 224)" class="key trans keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 1850)" class="layer-Nav">
+<text x="0" y="28" class="label" id="Nav">Nav</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#output-toggle" xlink:href="#output-toggle" x="-5" y="-7" height="14" width="10.840887174541948" class="key tap glyph output-toggle"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#bt-clear" xlink:href="#bt-clear" x="-7" y="-7" height="14" width="14.0" class="key tap glyph bt-clear"/>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:camera" xlink:href="#tabler:camera" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:camera"/>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">HOME</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:arrow-big-up" xlink:href="#tabler:arrow-big-up" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:arrow-big-up"/>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">END</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">
+<tspan x="0" dy="-0.6em">PAGE</tspan><tspan x="0" dy="1.2em">UP</tspan>
+</text>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">GUI</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:player-track-prev" xlink:href="#tabler:player-track-prev" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:player-track-prev"/>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#play-pause" xlink:href="#play-pause" x="-6" y="-7" height="14" width="12.923076923076923" class="key tap glyph play-pause"/>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:player-track-next" xlink:href="#tabler:player-track-next" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:player-track-next"/>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:arrow-big-left" xlink:href="#tabler:arrow-big-left" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:arrow-big-left"/>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:arrow-big-down" xlink:href="#tabler:arrow-big-down" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:arrow-big-down"/>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#tabler:arrow-big-right" xlink:href="#tabler:arrow-big-right" x="-7" y="-7" height="14" width="14.0" class="key tap glyph tabler:arrow-big-right"/>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">
+<tspan x="0" dy="-0.6em">PAGE</tspan><tspan x="0" dy="1.2em">DOWN</tspan>
+</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#bt-prev" xlink:href="#bt-prev" x="-7" y="-7" height="14" width="14.0" class="key tap glyph bt-prev"/>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#bt-next" xlink:href="#bt-next" x="-7" y="-7" height="14" width="14.0" class="key tap glyph bt-next"/>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 210)" class="key trans keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(196, 196)" class="key trans keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(266, 252)" class="key trans keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key trans keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key held keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key held"/>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key trans keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key trans keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(812, 224)" class="key trans keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 2220)" class="layer-Num">
+<text x="0" y="28" class="label" id="Num">Num</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F1</text>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F2</text>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F3</text>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F4</text>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F5</text>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">¼</text>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">7</text>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">8</text>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">9</text>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">*</text>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">/</text>
+</g>
+<g transform="translate(28, 112)" class="key held keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key held"/>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F6</text>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F7</text>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F8</text>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F9</text>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F10</text>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">½</text>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">4</text>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">5</text>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">6</text>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">-</text>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">+</text>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F11</text>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F12</text>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F13</text>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F14</text>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">F15</text>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">¾</text>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">1</text>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">2</text>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">3</text>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">.</text>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">,</text>
+</g>
+<g transform="translate(140, 210)" class="key trans keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(196, 196)" class="key trans keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(266, 252)" class="key trans keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key trans keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key trans keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key trans keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key trans keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key trans"/>
+<text x="0" y="0" class="key trans tap">▽</text>
+</g>
+<g transform="translate(812, 224)" class="key keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<text x="0" y="0" class="key tap">0</text>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+</g>
+</g>
+<g transform="translate(30, 2589)" class="layer-Mouse">
+<text x="0" y="28" class="label" id="Mouse">Mouse</text>
+<g transform="translate(0, 56)">
+<g transform="translate(28, 56)" class="key keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 56)" class="key keypos-1">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 42)" class="key keypos-2">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(196, 28)" class="key keypos-3">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#scroll-up" xlink:href="#scroll-up" x="-7" y="-7" height="14" width="13.998173515981735" class="key tap glyph scroll-up"/>
+</g>
+<g transform="translate(252, 39)" class="key keypos-4">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(308, 50)" class="key keypos-5">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(532, 50)" class="key keypos-6">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(588, 39)" class="key keypos-7">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(644, 28)" class="key keypos-8">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(700, 42)" class="key keypos-9">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(756, 56)" class="key keypos-10">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(812, 56)" class="key keypos-11">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(28, 112)" class="key keypos-12">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 112)" class="key keypos-13">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 98)" class="key keypos-14">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#scroll-left" xlink:href="#scroll-left" x="-7" y="-7" height="14" width="13.998173515981735" class="key tap glyph scroll-left"/>
+</g>
+<g transform="translate(196, 84)" class="key keypos-15">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#scroll-down" xlink:href="#scroll-down" x="-7" y="-7" height="14" width="13.998173515981735" class="key tap glyph scroll-down"/>
+</g>
+<g transform="translate(252, 95)" class="key keypos-16">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#scroll-right" xlink:href="#scroll-right" x="-7" y="-7" height="14" width="13.998173515981735" class="key tap glyph scroll-right"/>
+</g>
+<g transform="translate(308, 106)" class="key keypos-17">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(532, 106)" class="key keypos-18">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(588, 95)" class="key keypos-19">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:left_click" xlink:href="#material:left_click" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:left_click"/>
+</g>
+<g transform="translate(644, 84)" class="key keypos-20">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:right_click" xlink:href="#material:right_click" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:right_click"/>
+</g>
+<g transform="translate(700, 98)" class="key keypos-21">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#click-middle" xlink:href="#click-middle" x="-7" y="-7" height="14" width="14.0" class="key tap glyph click-middle"/>
+</g>
+<g transform="translate(756, 112)" class="key keypos-22">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(812, 112)" class="key keypos-23">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(28, 168)" class="key keypos-24">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(84, 168)" class="key keypos-25">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 154)" class="key keypos-26">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(196, 140)" class="key keypos-27">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(252, 151)" class="key keypos-28">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(308, 162)" class="key keypos-29">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(532, 162)" class="key keypos-30">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(588, 151)" class="key keypos-31">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(644, 140)" class="key keypos-32">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(700, 154)" class="key keypos-33">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(756, 168)" class="key keypos-34">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(812, 168)" class="key keypos-35">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(140, 210)" class="key keypos-36">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(196, 196)" class="key keypos-37">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+</g>
+<g transform="translate(266, 252)" class="key held keypos-38">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key held"/>
+</g>
+<g transform="translate(324, 256) rotate(10.0)" class="key keypos-39">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:left_click" xlink:href="#material:left_click" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:left_click"/>
+</g>
+<g transform="translate(382, 273) rotate(25.0)" class="key keypos-40">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:right_click" xlink:href="#material:right_click" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:right_click"/>
+</g>
+<g transform="translate(500, 277) rotate(-25.0)" class="key keypos-41">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:left_click" xlink:href="#material:left_click" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:left_click"/>
+</g>
+<g transform="translate(557, 254) rotate(-10.0)" class="key keypos-42">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#material:right_click" xlink:href="#material:right_click" x="-7" y="-7" height="14" width="14.0" class="key tap glyph material:right_click"/>
+</g>
+<g transform="translate(812, 224)" class="key keypos-43">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key"/>
+<use href="#click-middle" xlink:href="#click-middle" x="-7" y="-7" height="14" width="14.0" class="key tap glyph click-middle"/>
+</g>
+<g class="combo combopos-0">
+<rect rx="6" ry="6" x="712" y="89" width="32" height="32" class="combo"/>
+<text x="728" y="105" class="combo tap">ESC</text>
+</g>
+</g>
+</g>
+<text x="30" y="2987" class="label" id="Combos">Combos</text>
+<g transform="translate(30, 2959)" class="layer-combopos-0">
+<g transform="translate(0, 56)">
+<g transform="translate(28, 28)" class="key combo-separate keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key combo-separate"/>
+<a href="#Bpo">
+<text x="0" y="0" class="key combo-separate tap layer-activator">Bépo</text>
+</a><text x="0" y="23" class="key combo-separate hold">toggle</text>
+</g>
+<g transform="translate(14, 87)" class="key keypos-1">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 87)" class="key keypos-2">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 80)" class="key keypos-3">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 73)" class="key keypos-4">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 79)" class="key keypos-5">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 84)" class="key keypos-6">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 84)" class="key keypos-7">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 79)" class="key keypos-8">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 73)" class="key keypos-9">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 80)" class="key keypos-10">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 87)" class="key keypos-11">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 87)" class="key keypos-12">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 115)" class="key keypos-13">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 115)" class="key keypos-14">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 108)" class="key keypos-15">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 101)" class="key keypos-16">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 107)" class="key keypos-17">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 112)" class="key keypos-18">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 112)" class="key keypos-19">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 107)" class="key keypos-20">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 101)" class="key keypos-21">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 108)" class="key keypos-22">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 115)" class="key keypos-23">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 115)" class="key keypos-24">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 143)" class="key keypos-25">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 143)" class="key keypos-26">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 136)" class="key keypos-27">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 129)" class="key keypos-28">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 135)" class="key keypos-29">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 140)" class="key keypos-30">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 140)" class="key keypos-31">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 135)" class="key keypos-32">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 129)" class="key keypos-33">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 136)" class="key keypos-34">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 143)" class="key keypos-35">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 143)" class="key keypos-36">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 164)" class="key keypos-37">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 157)" class="key keypos-38">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(133, 185)" class="key keypos-39">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(162, 187) rotate(10.0)" class="key keypos-40">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(191, 196) rotate(25.0)" class="key held keypos-41">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(250, 197) rotate(-25.0)" class="key held keypos-42">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(278, 186) rotate(-10.0)" class="key keypos-43">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 171)" class="key keypos-44">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+</g>
+</g>
+<g transform="translate(480, 2959)" class="layer-combopos-1">
+<g transform="translate(0, 56)">
+<g transform="translate(28, 28)" class="key combo-separate keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key combo-separate"/>
+<a href="#ErgoL">
+<text x="0" y="0" class="key combo-separate tap layer-activator">ErgoL</text>
+</a><text x="0" y="23" class="key combo-separate hold">toggle</text>
+</g>
+<g transform="translate(14, 87)" class="key keypos-1">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 87)" class="key held keypos-2">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(70, 80)" class="key keypos-3">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 73)" class="key keypos-4">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 79)" class="key keypos-5">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 84)" class="key keypos-6">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 84)" class="key keypos-7">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 79)" class="key keypos-8">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 73)" class="key keypos-9">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 80)" class="key keypos-10">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 87)" class="key held keypos-11">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(406, 87)" class="key keypos-12">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 115)" class="key keypos-13">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 115)" class="key keypos-14">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 108)" class="key keypos-15">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 101)" class="key keypos-16">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 107)" class="key keypos-17">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 112)" class="key keypos-18">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 112)" class="key keypos-19">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 107)" class="key keypos-20">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 101)" class="key keypos-21">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 108)" class="key keypos-22">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 115)" class="key keypos-23">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 115)" class="key keypos-24">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 143)" class="key keypos-25">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 143)" class="key keypos-26">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 136)" class="key keypos-27">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 129)" class="key keypos-28">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 135)" class="key keypos-29">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 140)" class="key keypos-30">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 140)" class="key keypos-31">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 135)" class="key keypos-32">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 129)" class="key keypos-33">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 136)" class="key keypos-34">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 143)" class="key keypos-35">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 143)" class="key keypos-36">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 164)" class="key keypos-37">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 157)" class="key keypos-38">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(133, 185)" class="key keypos-39">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(162, 187) rotate(10.0)" class="key keypos-40">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(191, 196) rotate(25.0)" class="key keypos-41">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(250, 197) rotate(-25.0)" class="key keypos-42">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(278, 186) rotate(-10.0)" class="key keypos-43">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 171)" class="key keypos-44">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+</g>
+</g>
+<g transform="translate(30, 3231)" class="layer-combopos-2">
+<g transform="translate(0, 28)">
+<g transform="translate(28, 28)" class="key combo-separate keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key combo-separate"/>
+<a href="#QWRT">
+<text x="0" y="0" class="key combo-separate tap layer-activator">QWRT</text>
+</a><text x="0" y="23" class="key combo-separate hold">toggle</text>
+</g>
+<g transform="translate(14, 87)" class="key keypos-1">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 87)" class="key keypos-2">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 80)" class="key keypos-3">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 73)" class="key keypos-4">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 79)" class="key keypos-5">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 84)" class="key keypos-6">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 84)" class="key keypos-7">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 79)" class="key keypos-8">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 73)" class="key keypos-9">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 80)" class="key keypos-10">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 87)" class="key keypos-11">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 87)" class="key keypos-12">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 115)" class="key keypos-13">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 115)" class="key keypos-14">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 108)" class="key keypos-15">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 101)" class="key keypos-16">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 107)" class="key keypos-17">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 112)" class="key keypos-18">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 112)" class="key keypos-19">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 107)" class="key keypos-20">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 101)" class="key keypos-21">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 108)" class="key keypos-22">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 115)" class="key keypos-23">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 115)" class="key keypos-24">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 143)" class="key keypos-25">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 143)" class="key keypos-26">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 136)" class="key keypos-27">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 129)" class="key keypos-28">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 135)" class="key keypos-29">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 140)" class="key keypos-30">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 140)" class="key keypos-31">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 135)" class="key keypos-32">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 129)" class="key keypos-33">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 136)" class="key keypos-34">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 143)" class="key keypos-35">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 143)" class="key keypos-36">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 164)" class="key keypos-37">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 157)" class="key keypos-38">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(133, 185)" class="key keypos-39">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(162, 187) rotate(10.0)" class="key held keypos-40">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(191, 196) rotate(25.0)" class="key keypos-41">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(250, 197) rotate(-25.0)" class="key keypos-42">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(278, 186) rotate(-10.0)" class="key held keypos-43">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(406, 171)" class="key keypos-44">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+</g>
+</g>
+<g transform="translate(480, 3231)" class="layer-combopos-3">
+<g transform="translate(0, 28)">
+<g transform="translate(28, 28)" class="key combo-separate keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key combo-separate"/>
+<a href="#Mouse">
+<text x="0" y="0" class="key combo-separate tap layer-activator">Mouse</text>
+</a><text x="0" y="23" class="key combo-separate hold">toggle</text>
+</g>
+<g transform="translate(14, 87)" class="key keypos-1">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 87)" class="key held keypos-2">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(70, 80)" class="key keypos-3">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 73)" class="key keypos-4">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 79)" class="key held keypos-5">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(154, 84)" class="key keypos-6">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 84)" class="key keypos-7">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 79)" class="key keypos-8">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 73)" class="key keypos-9">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 80)" class="key keypos-10">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 87)" class="key keypos-11">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 87)" class="key keypos-12">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 115)" class="key keypos-13">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 115)" class="key keypos-14">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 108)" class="key keypos-15">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 101)" class="key keypos-16">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 107)" class="key keypos-17">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 112)" class="key keypos-18">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 112)" class="key keypos-19">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 107)" class="key keypos-20">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 101)" class="key keypos-21">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 108)" class="key keypos-22">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 115)" class="key keypos-23">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 115)" class="key keypos-24">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 143)" class="key keypos-25">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 143)" class="key keypos-26">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 136)" class="key keypos-27">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 129)" class="key keypos-28">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 135)" class="key keypos-29">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 140)" class="key keypos-30">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 140)" class="key keypos-31">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 135)" class="key keypos-32">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 129)" class="key keypos-33">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 136)" class="key keypos-34">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 143)" class="key keypos-35">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 143)" class="key keypos-36">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 164)" class="key keypos-37">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 157)" class="key keypos-38">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(133, 185)" class="key keypos-39">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(162, 187) rotate(10.0)" class="key keypos-40">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(191, 196) rotate(25.0)" class="key keypos-41">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(250, 197) rotate(-25.0)" class="key keypos-42">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(278, 186) rotate(-10.0)" class="key keypos-43">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 171)" class="key keypos-44">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+</g>
+</g>
+<g transform="translate(30, 3475)" class="layer-combopos-4">
+<g transform="translate(0, 28)">
+<g transform="translate(28, 28)" class="key combo-separate keypos-0">
+<rect rx="6" ry="6" x="-25" y="-25" width="50" height="50" class="key combo-separate"/>
+<text x="0" y="0" class="key combo-separate tap">
+<tspan x="0" dy="-0.6em">CAPS</tspan><tspan x="0" dy="1.2em">WORD</tspan>
+</text>
+</g>
+<g transform="translate(14, 87)" class="key keypos-1">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 87)" class="key keypos-2">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 80)" class="key keypos-3">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 73)" class="key keypos-4">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 79)" class="key keypos-5">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 84)" class="key keypos-6">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 84)" class="key keypos-7">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 79)" class="key keypos-8">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 73)" class="key keypos-9">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 80)" class="key keypos-10">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 87)" class="key keypos-11">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 87)" class="key keypos-12">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 115)" class="key keypos-13">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 115)" class="key keypos-14">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 108)" class="key keypos-15">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 101)" class="key keypos-16">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 107)" class="key keypos-17">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 112)" class="key keypos-18">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 112)" class="key keypos-19">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 107)" class="key keypos-20">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 101)" class="key keypos-21">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 108)" class="key keypos-22">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 115)" class="key keypos-23">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 115)" class="key keypos-24">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(14, 143)" class="key keypos-25">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(42, 143)" class="key held keypos-26">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(70, 136)" class="key keypos-27">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 129)" class="key keypos-28">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(126, 135)" class="key keypos-29">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(154, 140)" class="key keypos-30">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(266, 140)" class="key keypos-31">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(294, 135)" class="key keypos-32">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(322, 129)" class="key keypos-33">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(350, 136)" class="key keypos-34">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(378, 143)" class="key held keypos-35">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key held"/>
+</g>
+<g transform="translate(406, 143)" class="key keypos-36">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(70, 164)" class="key keypos-37">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(98, 157)" class="key keypos-38">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(133, 185)" class="key keypos-39">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(162, 187) rotate(10.0)" class="key keypos-40">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(191, 196) rotate(25.0)" class="key keypos-41">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(250, 197) rotate(-25.0)" class="key keypos-42">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(278, 186) rotate(-10.0)" class="key keypos-43">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+<g transform="translate(406, 171)" class="key keypos-44">
+<rect rx="6" ry="6" x="-11" y="-11" width="22" height="22" class="key"/>
+</g>
+</g>
+</g>
+</svg>
keyboards/Makefile
@@ -1,6 +1,7 @@
.PHONY: help moonlander/build moonlander/flash moonlander/clean moonlander/update
.PHONY: eyelash_corne/build eyelash_corne/flash
-.PHONY: draw moonlander/draw eyelash_corne/draw
+.PHONY: keyball44/build keyball44/flash
+.PHONY: draw moonlander/draw eyelash_corne/draw keyball44/draw
.PHONY: all clean
# Default target
@@ -14,13 +15,18 @@ help:
@echo " moonlander/clean - Clean Moonlander build artifacts"
@echo ""
@echo "Eyelash Corne (ZMK):"
- @echo " eyelash_corne/build - Build Eyelash Corne firmware (aliases: corne/build)"
- @echo " eyelash_corne/flash - Build and flash Eyelash Corne firmware (aliases: corne/flash)"
+ @echo " eyelash_corne/build - Build Eyelash Corne firmware"
+ @echo " eyelash_corne/flash - Build and flash Eyelash Corne firmware"
+ @echo ""
+ @echo "Keyball44 (ZMK):"
+ @echo " keyball44/build - Build Keyball44 firmware"
+ @echo " keyball44/flash - Build and flash Keyball44 firmware"
@echo ""
@echo "Keymap Drawing:"
@echo " draw - Generate keymap SVGs for all keyboards"
@echo " moonlander/draw - Generate keymap SVG for Moonlander"
@echo " eyelash_corne/draw - Generate keymap SVG for Eyelash Corne"
+ @echo " keyball44/draw - Generate keymap SVG for Keyball44"
@echo ""
@echo "Other:"
@echo " all - Build all keyboards"
@@ -46,6 +52,13 @@ eyelash_corne/build:
eyelash_corne/flash:
cd eyelash_corne && ./go.sh flash
+# Keyball44 targets
+keyball44/build:
+ cd keyball44 && ./go.sh build
+
+keyball44/flash:
+ cd keyball44 && ./go.sh flash
+
# Keymap drawing targets
draw:
./generate-keymaps.sh all
@@ -56,8 +69,12 @@ moonlander/draw:
eyelash_corne/draw:
./generate-keymaps.sh eyelash_corne
+keyball44/draw:
+ ./generate-keymaps.sh keyball44
+
# Composite targets
-all: moonlander/build eyelash_corne/build
+all: moonlander/build eyelash_corne/build keyball44/build
clean: moonlander/clean
rm -rf eyelash_corne/firmwares
+ rm -rf keyball44/firmwares