diff options
author | Joshua T <joshua@sonofone.net> | 2016-08-24 23:46:52 -0500 |
---|---|---|
committer | Joshua T <joshua@sonofone.net> | 2016-08-24 23:46:52 -0500 |
commit | 42fa91a57dad18ccc3f6bf308f50b3f1e882dadd (patch) | |
tree | dae1290be66b6af1d498b0cf68fbef44f90d02be | |
parent | cac69cb58029bf246b22038f034205afbedbc695 (diff) | |
parent | ad206155aa6f87de3fb9f0aefe60685ec12905a8 (diff) | |
download | firmware-42fa91a57dad18ccc3f6bf308f50b3f1e882dadd.tar.gz firmware-42fa91a57dad18ccc3f6bf308f50b3f1e882dadd.tar.bz2 firmware-42fa91a57dad18ccc3f6bf308f50b3f1e882dadd.zip |
Merge remote-tracking branch 'upstream/master'
219 files changed, 16346 insertions, 3936 deletions
diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..8fd1fd752 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,93 @@ +# auto for anything unspecified +* text=auto + +# sources +*.c text +*.cc text +*.cxx text +*.cpp text +*.c++ text +*.hpp text +*.h text +*.h++ text +*.hh text +*.bat text +*.coffee text +*.css text +*.htm text +*.html text +*.inc text +*.ini text +*.js text +*.jsx text +*.json text +*.less text +*.php text +*.pl text +*.py text +*.rb text +*.sass text +*.scm text +*.scss text +*.sh text +*.sql text +*.styl text +*.ts text +*.xml text +*.xhtml text + +# make files (need to always use lf for compatibility with Windows 10 bash) +Makefile eol=lf +*.mk eol=lf + +# make files (need to always use lf for compatibility with Windows 10 bash) +*.sh eol=lf + +# documentation +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +# hex files +*.hex binary diff --git a/.gitignore b/.gitignore index 8c85d6ffa..07bbf13db 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ CMakeLists.txt .settings/ .idea .browse.VC.db* +*.stackdump @@ -190,6 +190,10 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c endif +ifeq ($(strip $(VIRTSER_ENABLE)), yes) + OPT_DEFS += -DVIRTSER_ENABLE +endif + ifeq ($(strip $(AUDIO_ENABLE)), yes) OPT_DEFS += -DAUDIO_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_music.c @@ -198,6 +202,11 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio/luts.c endif +ifeq ($(strip $(UCIS_ENABLE)), yes) + OPT_DEFS += -DUCIS_ENABLE + UNICODE_ENABLE = yes +endif + ifeq ($(strip $(UNICODE_ENABLE)), yes) OPT_DEFS += -DUNICODE_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c @@ -273,4 +282,4 @@ BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h) -$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h)
\ No newline at end of file +$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h) diff --git a/doc/TMK_README.md b/doc/TMK_README.md index f3d96717a..e3438eda2 100644 --- a/doc/TMK_README.md +++ b/doc/TMK_README.md @@ -113,7 +113,7 @@ Third party libraries like LUFA, PJRC and V-USB have their own license respectiv Build Firmware and Program Controller ------------------------------------- -See [doc/build.md](tmk_core/doc/build.md), or the readme in the particular keyboards/* folder. +See [build environment setup](/readme.md#build-environment-setup), or the readme in the particular keyboards/* folder. diff --git a/doc/keycode.txt b/doc/keycode.txt index c1134f9bf..5a42c50bf 100644 --- a/doc/keycode.txt +++ b/doc/keycode.txt @@ -2,7 +2,7 @@ Keycode Symbol Table ==================== Keycodes are defined in `common/keycode.h`. Range of 00-A4 and E0-E7 are identical with HID Usage: -<http://www.usb.org/developers/devclass_docs/Hut1_11.pdf> +<http://www.usb.org/developers/hidpage/Hut1_12v2.pdf> Virtual keycodes are defined out of above range to support special actions. diff --git a/doc/keymap.md b/doc/keymap.md index d1985e567..6f2a663fc 100644 --- a/doc/keymap.md +++ b/doc/keymap.md @@ -455,6 +455,35 @@ Turn the backlight on and off without changing level. +### 2.6 Swap-Hands Action +The swap-hands action allows support for one-handed keyboards without requiring a separate layer. Set `ONEHAND_ENABLE` in the Makefile and define a `hand_swap_config` entry in your keymap. Now whenever the `ACTION_SWAP_HANDS` command key is pressed the keyboard is mirrored. For instance, to type "Hello, World" on QWERTY you would type `^Ge^s^s^w^c W^wr^sd` + +### 2.6.1 Configuration +The configuration table is a simple 2-dimensional array to map from column/row to new column/row. Example `hand_swap_config` for Planck: + +``` +const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, +}; +``` + +Note that the array indices are reversed same as the matrix and the values are of type `keypos_t` which is `{col, row}` and all values are zero-based. In the example above, `hand_swap_config[2][4]` (third row, fifth column) would return {7, 2} (third row, eighth column). + +### 2.6.2 Advanced Swap Commands +- **`ACTION_SWAP_HANDS()`** Swaps hands when pressed, returns to normal when released (momentary). +- **`ACTION_SWAP_HANDS_TOGGLE()`** Toggles swap on and off with every keypress. +- **`ACTION_SWAP_HANDS_TAP_TOGGLE()`** Toggles with a tap; momentary when held. +- **`ACTION_SWAP_HANDS_TAP_KEY(key)`** Sends `key` with a tap; momentary swap when held. +- **`ACTION_SWAP_HANDS_ON_OFF()`** Alias for `ACTION_SWAP_HANDS()` +- **`ACTION_SWAP_HANDS_OFF_ON()`** Momentarily turns off swap. +- **`ACTION_SWAP_HANDS_ON()`** Turns on swapping and leaves it on. +- **`ACTION_SWAP_HANDS_OFF()`** Turn off swapping and leaves it off. Good for returning to a known state. + + + ## 3. Layer switching Example There are some ways to switch layer with 'Layer' actions. diff --git a/keyboards/amj60/Makefile b/keyboards/amj60/Makefile new file mode 100644 index 000000000..1f695aa4d --- /dev/null +++ b/keyboards/amj60/Makefile @@ -0,0 +1,70 @@ + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID + +ifndef QUANTUM_DIR + include ../../Makefile +endif diff --git a/keyboards/amj60/amj60.c b/keyboards/amj60/amj60.c new file mode 100644 index 000000000..993a5917d --- /dev/null +++ b/keyboards/amj60/amj60.c @@ -0,0 +1,30 @@ +#include "amj60.h" +#include "led.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + matrix_init_user(); + led_init_ports(); +}; + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + matrix_scan_user(); +}; + +void led_init_ports(void) { + // * Set our LED pins as output + DDRB |= (1<<2); +} + +void led_set_kb(uint8_t usb_led) { + if (usb_led & (1<<USB_LED_CAPS_LOCK)) { + // Turn capslock on + PORTB &= ~(1<<2); + } else { + // Turn capslock off + PORTB |= (1<<2); + } +} diff --git a/keyboards/amj60/amj60.h b/keyboards/amj60/amj60.h new file mode 100644 index 000000000..a0cb47331 --- /dev/null +++ b/keyboards/amj60/amj60.h @@ -0,0 +1,153 @@ +#ifndef AMJ60_H +#define AMJ60_H + +#include "quantum.h" + +// readability +#define XXX KC_NO + +/* AMJ60 layout to the best of my knowledge matrix layout + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49| + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * |-----------------------------------------------------------| + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3c | 3d | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ +} + +/* + * ANSI + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * |-----------------------------------------------------------| + * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +#define KEYMAP_ANSI( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ +} + +/* AMJ60 HHKB matrix layout + * ,------------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49 | + * |------------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |------------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * |------------------------------------------------------------| + * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c | + * |------------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `------------------------------------------------------------' + */ + +#define KEYMAP_HHKB( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ +} + +/* ISO + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | + * |-----------------------------------------------------------| + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +#define KEYMAP_ISO( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ +} +/* ISO w/ split right shift key matrix layout + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | + * |-----------------------------------------------------------| + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +#define KEYMAP_ISO_SPLITRSHIFT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ +} + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboards/amj60/config.h b/keyboards/amj60/config.h new file mode 100644 index 000000000..d98e0e9f2 --- /dev/null +++ b/keyboards/amj60/config.h @@ -0,0 +1,94 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6066 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Han Chen +#define PRODUCT AMJ60 +#define DESCRIPTION qmk port of AMJ60 PCB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5} +#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3} +#define UNUSED_PINS + +#define BACKLIGHT_PIN B6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Backlight configuration + */ +#define BACKLIGHT_LEVELS 4 + +/* Underlight configuration + */ + +#define RGB_DI_PIN E2 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/amj60/keymaps/iso_split_rshift/Makefile b/keyboards/amj60/keymaps/iso_split_rshift/Makefile new file mode 100644 index 000000000..2969ed8ae --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/Makefile @@ -0,0 +1,23 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/amj60/keymaps/iso_split_rshift/build.sh b/keyboards/amj60/keymaps/iso_split_rshift/build.sh new file mode 100755 index 000000000..6b4b4568f --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/build.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# adjust for cpu +# -j 16 gave best result on a hyperthreaded quad core core i7 + +LIMIT=10 +THREADS="-j 16" +KMAP=iso_split_rshift + +echo "We need sudo later" +sudo ls 2>&1 /dev/null + +function wait_bootloader { + echo "Waiting for Bootloader..." + local STARTTIME=$(date +"%s") + local REMIND=0 + local EXEC=dfu-programmer + local TARGET=atmega32u4 + while true + do + sudo $EXEC $TARGET get > /dev/null 2>&1 + [ $? -eq 0 ] && break + ENDTIME=$(date +"%s") + DURATION=$(($ENDTIME-$STARTTIME)) + if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ] + then + echo "Did you forget to press the reset button?" + REMIND=1 + fi + sleep 1 + done +} +make clean +make KEYMAP=${KMAP} ${THREADS} +if [[ $? -eq 0 ]] +then + echo "please trigger flashing!" + wait_bootloader + sudo make KEYMAP=${KMAP} dfu ${THREADS} +else + echo "make failed" + exit 77 +fi diff --git a/keyboards/amj60/keymaps/iso_split_rshift/keymap.c b/keyboards/amj60/keymaps/iso_split_rshift/keymap.c new file mode 100644 index 000000000..60fb0bfb0 --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/keymap.c @@ -0,0 +1,147 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "amj60.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _DEF 0 +#define _SPC 1 +#define _TAB 2 +#define _SFX 3 + +// dual-role shortcuts +#define TABDUAL LT(_TAB, KC_TAB) +#define CAPSDUAL CTL_T(KC_ESC) +#define SPACEDUAL LT(_SPC, KC_SPACE) +#define ENTERDUAL CTL_T(KC_ENT) +// arrow cluster duality bottom right corner +#define ARRLEFT ALT_T(KC_LEFT) +#define ARRDOWN GUI_T(KC_DOWN) +#define ARRUP SFT_T(KC_UP) +#define ARRRIGHT CTL_T(KC_RIGHT) +// german brackets +#define GER_CUR_L RALT(KC_7) // [ +#define GER_CUR_R RALT(KC_0) // ] +#define GER_PAR_L LSFT(KC_8) // ( +#define GER_PAR_R LSFT(KC_9) // ) +#define GER_ANG_L KC_NUBS // < +#define GER_ANG_R LSFT(KC_NUBS) // > +#define GER_BRC_L RALT(KC_8) // [ +#define GER_BRC_R RALT(KC_9) // ] + +// increase readability +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _DEF: Default Layer + * ,-----------------------------------------------------------. + * |Grv| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Tab is Fn1 + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return | + * |-----------------------------------------------------------| + * |Sft | < | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| RShift is UP + * |-----------------------------------------------------------| + * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| Gui Menu, RCtrl is + * `-----------------------------------------------------------' LEFT DWN RIGHT + */ + [_DEF] = KEYMAP_ISO_SPLITRSHIFT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + TABDUAL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ARRUP, TG(_SFX), \ + KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT), + + /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) + * ,-----------------------------------------------------------. + * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete| + * |-----------------------------------------------------------| + * | |Paus| Up| [ | ] | | | | ( | ) | | | | | + * |-----------------------------------------------------------| + * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | + * |-----------------------------------------------------------| + * | | | | | < | > | |M0 | | | | | Vol+ | | + * |-----------------------------------------------------------| + * | | | | |Alt |Prev|Vol-|Next| + * `-----------------------------------------------------------' + */ + [_SPC] = KEYMAP_ISO_SPLITRSHIFT( + KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + _______, KC_PAUS, KC_UP, GER_BRC_L, GER_BRC_R, _______, _______, GER_PAR_L, GER_PAR_R, _______, _______, _______, _______, _______, \ + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, \ + _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), + + /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (by holding tab) + * ,-----------------------------------------------------------. + * |WAKE| | | | | | | | | | | | |Insert| TAB+GRC = WAKE + * |-----------------------------------------------------------| + * | | | | | | | | | { | } | | | | | + * |-----------------------------------------------------------| + * | | | | | | |Pos1|PgDn|PgUp|End| | |Retrn | + * |-----------------------------------------------------------| + * | | | | | | | |AF2| | | | | PgUp | | + * |-----------------------------------------------------------| + * | | | | |Alt |Pos1|PgDn|End | + * `-----------------------------------------------------------' + */ + [_TAB] = KEYMAP_ISO_SPLITRSHIFT( + KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \ + _______, _______, _______, _______, _______, _______, _______, GER_CUR_L, GER_CUR_R, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, KC_ENT, \ + _______, _______, _______, _______, _______, _______, _______, M(1), _______, _______, _______, _______, KC_PGUP, _______, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), + + /* Keymap 3: Split right shift Numpad toggle Layer (by tapping the split rshift key) + * ,-----------------------------------------------------------. + * |RSET| | | | | | | 7| 8| 9| | | |Backsp | + * |-----------------------------------------------------------| + * | | | | | | | | 4 | 5 | 6 | | | | \ | + * |-----------------------------------------------------------| + * | | L | L | | | | | 1 | 2 | 3 | | | Return | + * |-----------------------------------------------------------| + * | | | L | L | L | L | L | L | | 0 | | /| Up | | All "L"s represent + * |-----------------------------------------------------------| LED controlling + * |Ctrl|Win |Alt | |Alt |Left|Down|Right| + * `-----------------------------------------------------------' + */ + [_SFX] = KEYMAP_ISO_SPLITRSHIFT( + RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \ + _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, KC_BSLS, \ + _______, F(2), F(3), _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \ + _______, F(4), F(5), F(6), F(7), F(8), F(9), _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \ + _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT), +}; + +enum function_id { + LAUNCH, + RGBLED_TOGGLE, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_FUNCTION(LAUNCH), + [10] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ENT), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return (record->event.pressed ? + MACRO( D(RALT), T(SPC), U(RALT), END ) + :MACRO( END )); + break; + case 1: + return (record->event.pressed ? + MACRO( D(LALT), T(F2), U(LALT), END ) + :MACRO( END )); + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/amj60/keymaps/iso_split_rshift/readme.md b/keyboards/amj60/keymaps/iso_split_rshift/readme.md new file mode 100644 index 000000000..2113d93e4 --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/readme.md @@ -0,0 +1,30 @@ +toneman77's custom spacefn Layout +===================== + +##Quantum MK Firmware +For the full Quantum feature list, see the parent readme.md. + +# Features +* heavily modified ISO (!) layout with split right shift key +* spaceFn +* Dual-Role keys: +* + | Original key | when tapped | when held | + | ---------------- | ------------- | ------------- | + | Space | Space | layer change | + | Caps lock | Escape | Control | + | Tab | Tab | layer change | + | Enter | Enter | Control | + +* vim-style arrow keys on hjkl (spacefn layer) +* corresponding Home/PgDn/PgUp/End on hjkl (tab layer) +* bonus arrow keys in the bottom right corner on Alt/Win/Menu/rCtrl/Shift +* more bonus arrow keys on wasd (spacefn layer) +* media keys prev/next/play/vol+/vol- (spacefn layer) +* firmware bootloader button +* additional brackets that only work in german layout due to horrible placement +in the default qwertz layout + + +### Additional Credits +* visualization of the layers [here](http://www.keyboard-layout-editor.com/#/gists/aba4e4396459ede85bc66a22cee88e48) (without the LED keys) diff --git a/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh b/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh new file mode 100755 index 000000000..da5457e19 --- /dev/null +++ b/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh @@ -0,0 +1,4 @@ +#!/bin/bash +git checkout amj60 # gets you on branch amj60 +git fetch origin # gets you up to date with origin +git merge origin/master diff --git a/keyboards/amj60/readme.md b/keyboards/amj60/readme.md new file mode 100644 index 000000000..0896134e0 --- /dev/null +++ b/keyboards/amj60/readme.md @@ -0,0 +1,57 @@ +AMJ60 keyboard firmware +====================== +DIY/Assembled compact 60% keyboard. + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/amj60 +folder. Once your dev env is setup, you'll be able to type `make` to generate +your .hex - you can then use `make dfu` to program your PCB once you hit the +reset button. + +Depending on which keymap you would like to use, you will have to compile +slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to +define your favorite layout yourself. To define your own keymap create file +named `<name>.c` in the keymaps folder, and see keymap document (you can find +in top readme.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with +`KEYMAP` option like: +`` +$ make KEYMAP=[default|jack|<name>] +`` +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` +folder. + +## Variations +KEYMAP macros for the following layouts are available: + +* default, for all the available, possible keys +* ANSI, for 60% ANSI keyboard +* ISO +* ISO w/ split right shift key +* HHKB + +Remark: all but "ISO w/ split right shift key" are untested and were done to the best of my knowledge. + +### Original tmk firmware +The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ60). + +## Further information +Since information and documentation for this board are sparse, (at least for non-chinese speaking ppl) here is everything that could be found + +* [geekhack discussion](https://geekhack.org/index.php?topic=53070.0) +* [chinese discussion](https://www.v2ex.com/t/161887) +* Board has [dedicated pinouts](https://i.imgur.com/D0sWhyh.jpg?1) for a bluetooth module +* has pins for external power [picture](https://i.imgur.com/00VrtIp.jpg?1). +* most information comes from [reddit](https://www.reddit.com/r/MechanicalKeyboards/comments/32oonr/gh60_pcb_for_your_custom_keyboard/) diff --git a/keyboards/atreus/Makefile b/keyboards/atreus/Makefile index 95ee1d4d7..5894d231f 100644 --- a/keyboards/atreus/Makefile +++ b/keyboards/atreus/Makefile @@ -2,11 +2,11 @@ ifdef TEENSY2 OPT_DEFS += -DATREUS_TEENSY2 - ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex + ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex else OPT_DEFS += -DATREUS_ASTAR OPT_DEFS += -DCATERINA_BOOTLOADER - ATRUES_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ + ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) endif @@ -84,5 +84,5 @@ endif USB ?= /dev/cu.usbmodem1411 upload: build - $(ATRUES_UPLOAD_COMMAND) -
\ No newline at end of file + $(ATREUS_UPLOAD_COMMAND) + diff --git a/keyboards/atreus/keymaps/xyverz/keymap.c b/keyboards/atreus/keymaps/xyverz/keymap.c index 447fbcf10..b418cc9b5 100644 --- a/keyboards/atreus/keymaps/xyverz/keymap.c +++ b/keyboards/atreus/keymaps/xyverz/keymap.c @@ -46,14 +46,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_L1] = { /* LAYER 1 */ {KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0 }, {KC_TAB, KC_INS, KC_UP, KC_DEL, KC_HOME, KC_NO, KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU, KC_EQL }, - {KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_BSLS}, + {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_LCTL, KC_PGDN, KC_MPRV, KC_MPLY, KC_MNXT, KC_BSLS}, {KC_TRNS, KC_GRV, KC_LGUI, KC_TRNS, KC_DEL, KC_LALT, KC_SPC, KC_TRNS, KC_LBRC, KC_RBRC, KC_ENT } }, [_L2] = { /* LAYER 2 */ {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN}, - {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 }, - {KC_TRNS, KC_TRNS, DVORAK, QWERTY, COLEMAK, KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12 }, - {KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_BSPC, KC_LALT, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET } + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_PLUS}, + {KC_TRNS, KC_TRNS, DVORAK, QWERTY, COLEMAK, KC_LCTL, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12 }, + {KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_BSPC, KC_LALT, KC_SPC, KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), RESET} } }; diff --git a/keyboards/ergodox/ez/keymaps/steno/Makefile b/keyboards/ergodox/ez/keymaps/steno/Makefile new file mode 100644 index 000000000..b6fb9b1a8 --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/steno/Makefile @@ -0,0 +1,3 @@ +VIRTSER_ENABLE = yes +# Not enough interupts, so something has to go +MOUSEKEY_ENABLE = no diff --git a/keyboards/ergodox/ez/keymaps/steno/keymap.c b/keyboards/ergodox/ez/keymaps/steno/keymap.c new file mode 100644 index 000000000..3e9830905 --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/steno/keymap.c @@ -0,0 +1,324 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "sendchar.h" +#include "virtser.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys +#define TXBOLT 3 // TxBolt Steno Virtual Serial +#define TXBOLT2 4 // TxBolt Steno Virtual Serial Alternative Layout + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | TX | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | BOLT |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(TXBOLT), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | RESET | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +// TxBolt Codes +#define Sl 0b00000001 +#define Tl 0b00000010 +#define Kl 0b00000100 +#define Pl 0b00001000 +#define Wl 0b00010000 +#define Hl 0b00100000 +#define Rl 0b01000001 +#define Al 0b01000010 +#define Ol 0b01000100 +#define X 0b01001000 +#define Er 0b01010000 +#define Ur 0b01100000 +#define Fr 0b10000001 +#define Rr 0b10000010 +#define Pr 0b10000100 +#define Br 0b10001000 +#define Lr 0b10010000 +#define Gr 0b10100000 +#define Tr 0b11000001 +#define Sr 0b11000010 +#define Dr 0b11000100 +#define Zr 0b11001000 +#define NM 0b11010000 +#define GRPMASK 0b11000000 +#define GRP0 0b00000000 +#define GRP1 0b01000000 +#define GRP2 0b10000000 +#define GRP3 0b11000000 +/* Keymap 3: TxBolt (Serial) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | BKSPC | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | # | # | # | # | # | | | | # | # | # | # | # | # | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | S | T | P | H | * |------| |------| * | F | P | L | T | D | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | S | K | W | R | * | | | | * | R | B | G | S | Z | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | A | O |------| |------| E | U | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// TxBolt over Serial +[TXBOLT] = KEYMAP( + KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, M(NM), M(NM), M(NM), M(NM), M(NM), KC_NO, + KC_NO, M(Sl), M(Tl), M(Pl), M(Hl), M(X), + KC_NO, M(Sl), M(Kl), M(Wl), M(Rl), M(X), KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + M(Al), M(Ol), KC_NO, + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, M(NM), M(NM), M(NM), M(NM), M(NM), M(NM), + M(X), M(Fr), M(Pr), M(Lr), M(Tr), M(Dr), + KC_NO, M(X), M(Rr), M(Br), M(Gr), M(Sr), M(Zr), + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_NO, M(Er), M(Ur) +), +/* Keymap 4: TxBolt (Serial) Alternative + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | # | # | # | # | # | | | | # | # | # | # | # | # | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | S | T | P | H | * | | | | * | F | P | L | T | D | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | S | K | W | R | * |------| |------| * | R | B | G | S | Z | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | A | O | | E | U | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// TxBolt over Serial +[TXBOLT2] = KEYMAP( + KC_NO, M(NM), M(NM), M(NM), M(NM), M(NM), KC_NO, + KC_NO, M(Sl), M(Tl), M(Pl), M(Hl), M(X), KC_NO, + KC_NO, M(Sl), M(Kl), M(Wl), M(Rl), M(X), + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, M(Al), M(Ol), + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO, + // right hand + KC_NO, M(NM), M(NM), M(NM), M(NM), M(NM), M(NM), + KC_TRNS, M(X), M(Fr), M(Pr), M(Lr), M(Tr), M(Dr), + M(X), M(Rr), M(Br), M(Gr), M(Sr), M(Zr), + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + M(Er), M(Ur), KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_NO +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +uint8_t chord[4] = {0,0,0,0}; +uint8_t pressed_count = 0; + +void send_chord(void) +{ + for(uint8_t i = 0; i < 4; i++) + { + if(chord[i]) + virtser_send(chord[i]); + } + virtser_send(0); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + // We need to track keypresses in all modes, in case the user + // changes mode whilst pressing other keys. + if (record->event.pressed) + pressed_count++; + else + pressed_count--; + return true; +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + + if (record->event.pressed) { + uint8_t grp = (id & GRPMASK) >> 6; + chord[grp] |= id; + } + else { + if (pressed_count == 0) { + send_chord(); + chord[0] = chord[1] = chord[2] = chord[3] = 0; + } + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/ez/keymaps/steno/readme.md b/keyboards/ergodox/ez/keymaps/steno/readme.md new file mode 100644 index 000000000..d67cde2a3 --- /dev/null +++ b/keyboards/ergodox/ez/keymaps/steno/readme.md @@ -0,0 +1,92 @@ +# ErgoDox EZ Steno Configuration + +This layout has a layer that uses the TxBolt Stenograph protocol over a Virtual Serial port. It requires something like Plover in order to function. + +In Plover, you can select TX Bolt as the Stenotype Machine, and find the COM port that was assigned. In this way, your regular keyboard will still function normally, and you can switch back and forth between the Steno and Keyboard layers. + +<pre><code> +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | TX | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | BOLT |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +/* Keymap 2: Media keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | RESET | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +/* Keymap 3: TxBolt (Serial) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | BKSPC | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | # | # | # | # | # | | | | # | # | # | # | # | # | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | S | T | P | H | * |------| |------| * | F | P | L | T | D | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | S | K | W | R | * | | | | * | R | B | G | S | Z | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | A | O |------| |------| E | U | + * | | | | | | | | + * `--------------------' `--------------------' + */ +</code></pre> diff --git a/keyboards/ergodox/infinity/infinity.c b/keyboards/ergodox/infinity/infinity.c index f89e046d0..c5793385f 100644 --- a/keyboards/ergodox/infinity/infinity.c +++ b/keyboards/ergodox/infinity/infinity.c @@ -130,3 +130,27 @@ void ergodox_right_led_3_off(void){ void ergodox_right_led_off(uint8_t led){ } + +#ifdef ONEHAND_ENABLE +__attribute__ ((weak)) +const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}}, + {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}}, + {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}}, + {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}}, + {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}}, + {{0, 14}, {1, 14}, {2, 14}, {3, 14}, {4, 14}}, + {{0, 15}, {1, 15}, {2, 15}, {3, 15}, {4, 15}}, + {{0, 16}, {1, 16}, {2, 16}, {3, 16}, {4, 16}}, + {{0, 17}, {1, 17}, {2, 17}, {3, 17}, {4, 17}}, + {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}}, + {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}}, + {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}}, + {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}}, + {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}}, + {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}}, + {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}}, + {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}}, + {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}}, +}; +#endif diff --git a/keyboards/ergodox/keymaps/algernon/Makefile b/keyboards/ergodox/keymaps/algernon/Makefile index 6bf3976b9..00194857a 100644 --- a/keyboards/ergodox/keymaps/algernon/Makefile +++ b/keyboards/ergodox/keymaps/algernon/Makefile @@ -8,10 +8,17 @@ CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes KEYLOGGER_ENABLE ?= yes +ADORE_AUTOLOG ?= no + ifeq (${FORCE_NKRO},yes) OPT_DEFS += -DFORCE_NKRO endif +ifeq (${ADORE_AUTOLOG},yes) +KEYLOGGER_ENABLE = yes +OPT_DEFS += -DADORE_AUTOLOG +endif + ifeq (${KEYLOGGER_ENABLE},yes) OPT_DEFS += -DKEYLOGGER_ENABLE CONSOLE_ENABLE = yes diff --git a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png Binary files differindex 3df68ea53..44ad8a1eb 100644 --- a/keyboards/ergodox/keymaps/algernon/images/adore-layer.png +++ b/keyboards/ergodox/keymaps/algernon/images/adore-layer.png diff --git a/keyboards/ergodox/keymaps/algernon/images/base-layer.png b/keyboards/ergodox/keymaps/algernon/images/base-layer.png Binary files differindex 7b25a05b3..da159fbe2 100644 --- a/keyboards/ergodox/keymaps/algernon/images/base-layer.png +++ b/keyboards/ergodox/keymaps/algernon/images/base-layer.png diff --git a/keyboards/ergodox/keymaps/algernon/images/one-handed-layer.png b/keyboards/ergodox/keymaps/algernon/images/one-handed-layer.png Binary files differdeleted file mode 100644 index 698d11e5f..000000000 --- a/keyboards/ergodox/keymaps/algernon/images/one-handed-layer.png +++ /dev/null diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c index c4de53da2..144030e2e 100644 --- a/keyboards/ergodox/keymaps/algernon/keymap.c +++ b/keyboards/ergodox/keymaps/algernon/keymap.c @@ -1,1218 +1,1206 @@ -/*
- * algernon's ErgoDox EZ layout, please see the readme.md file!
- */
-
-#include "ergodox.h"
-#include "led.h"
-#include "debug.h"
-#include "action_layer.h"
-#include "action_util.h"
-#include "mousekey.h"
-#include "timer.h"
-#include "keymap_plover.h"
-#include "eeconfig.h"
-#include "wait.h"
+/* + * algernon's ErgoDox EZ layout, please see the readme.md file! + */ + +#include "ergodox.h" +#include "led.h" +#include "debug.h" +#include "action_layer.h" +#include "action_util.h" +#include "mousekey.h" +#include "timer.h" +#include "keymap_plover.h" +#include "eeconfig.h" +#include "wait.h" #include "version.h" -
-/* Layers */
-
-enum {
- BASE = 0,
- ADORE,
- ARRW,
- APPSEL,
- HUN,
- NMDIA,
- OHLFT,
- OHRGT,
- PLVR,
-};
-
-/* Macros */
-
-enum {
- NONE = 0,
- // Buttons that do extra stuff
- A_GUI,
- A_PLVR,
- A_ESC,
- A_MPN,
-
- // Function / number keys
- KF_1, // 1, F1
- KF_2, // 2, F2
- KF_3, // ...
- KF_4,
- KF_5,
- KF_6,
- KF_7,
- KF_8,
- KF_9,
- KF_10,
- KF_11, // =, F11
-
- // Application select keys
- APP_SLK, // Slack
- APP_EMCS, // Emacs
- APP_TERM, // Terminal
- APP_CHRM, // Chrome
- APP_MSIC, // Music
-
- // Diagonal mouse movement
- A_MUL,
- A_MUR,
- A_MDL,
- A_MDR,
-
- // Hungarian layer keys
- HU_AA, // Ã
- HU_OO, // Ó
- HU_EE, // É
- HU_UU, // Ú
- HU_II, // Ã
- HU_OE, // Ö
- HU_UE, // Ü
- HU_OEE, // Å
- HU_UEE, // Å°
-
- // One-handed layout specials
- OH_BSSPC,
- OH_ENTSFT,
- OH_BASE,
- OH_LEFT,
- OH_RIGHT,
-};
-
-/* Fn keys */
-
-enum {
- F_BSE = 0,
- F_HUN,
- F_GUI,
- F_SFT,
- F_ALT,
- F_CTRL
-};
-
-/* Custom keycodes */
-
-enum {
- CT_CLN = 0,
- CT_MNS,
- CT_TA,
-};
-
-/* States & timers */
-
-uint16_t gui_timer = 0;
-
-uint16_t kf_timers[12];
-
-uint16_t oh_base_timer = 0;
-uint16_t oh_bsspc_timer = 0;
-uint16_t oh_entsft_timer = 0;
-
-#define OH_BLINK_INTERVAL 500
-
-uint8_t oh_left_blink = 0;
-uint16_t oh_left_blink_timer = 0;
-uint8_t oh_right_blink = 0;
-uint16_t oh_right_blink_timer = 0;
-
-#if KEYLOGGER_ENABLE
-bool log_enable = false;
-#endif
-
-bool time_travel = false;
-
-/* The Keymap */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Keymap 0: Base Layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | Next/Prev | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | \ |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow |
- * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
- * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | | | | | : | | - | | | | |
- * `-----------------------------------' `-----------------------------------'
- * ,-------------. ,-------------.
- * | LAlt | GUI | | MDIA | 1HND |
- * ,------|------|------| |------+------+------.
- * | | | Ctrl | | LEAD | | |
- * |Backsp|LShift|------| |------| Enter| Space|
- * | | | ESC | | HUN | | |
- * `--------------------' `--------------------'
- */
-[BASE] = KEYMAP(
-// left hand
- KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
-,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
-,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
-,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
-,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN)
-
- ,F(F_ALT),F(F_GUI)
- ,F(F_CTRL)
- ,KC_BSPC,F(F_SFT),M(A_ESC)
-
- // right hand
- ,KC_APP ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
- ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS
- ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
- ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
- ,TD(CT_MNS),KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,OSL(NMDIA),M(OH_LEFT)
- ,KC_LEAD
- ,F(F_HUN) ,KC_ENT ,KC_SPC
- ),
-
-/* Keymap 1: Adore layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | Next/Prev | , | . | L | W | M | [ | | ] | F | H | C | P | Y | \ |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = / Arrow |
- * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
- * | Play/Pause| / | Z | ' | K | X | | | | B | G | V | J | Q | Stop |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | | | | | : | | - | | | | |
- * `-----------------------------------' `-----------------------------------'
- * ,-------------. ,-------------.
- * | LAlt | GUI | | MDIA | 1HND |
- * ,------|------|------| |------+------+------.
- * | | | Ctrl | | LEAD | | |
- * |Backsp|LShift|------| |------| Enter| Space|
- * | | | ESC | | HUN | | |
- * `--------------------' `--------------------'
- */
-[ADORE] = KEYMAP(
-// left hand
- KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
-,M(A_MPN) ,KC_COMM ,KC_DOT ,KC_L ,KC_W ,KC_M ,KC_LBRC
-,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U
-,KC_MPLY ,KC_SLSH ,KC_Z ,KC_QUOT,KC_K ,KC_X ,KC_LPRN
-,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN)
-
- ,F(F_ALT),F(F_GUI)
- ,F(F_CTRL)
- ,KC_BSPC,F(F_SFT),M(A_ESC)
-
- // right hand
- ,KC_APP ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
- ,KC_RBRC ,KC_F ,KC_H ,KC_C ,KC_P ,KC_Y ,KC_BSLS
- ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL
- ,KC_RPRN ,KC_B ,KC_G ,KC_V ,KC_J ,KC_Q ,KC_MSTP
- ,TD(CT_MNS),KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,OSL(NMDIA),M(OH_LEFT)
- ,KC_LEAD
- ,F(F_HUN) ,KC_ENT ,KC_SPC
- ),
-
-/* Keymap 2: Arrow layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | | | | | | | | | | | | | | | |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | | | | | | | | | | | Home | Up | End | | |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | | | | | | |------| |------| | Left | Down | Rght | | |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | | | | | | | | | | | | | | | |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| PgUp | PgDn |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-
-[ARRW] = KEYMAP(
-// left hand
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
- // right hand
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,KC_TRNS ,KC_PGUP ,KC_PGDN
- ),
-
-/* Keymap 3: Application select layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | | | | | | | | | | | | | | | |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | | | | | | |------| |------| | | | | | |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | | | | | | | | | | | | | | | |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-
-[APPSEL] = KEYMAP(
-// left hand
- KC_TRNS ,M(APP_MSIC),M(APP_SLK),M(APP_EMCS),M(APP_TERM),M(APP_CHRM),KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
- // right hand
- ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
-
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,KC_TRNS ,KC_TRNS ,KC_TRNS
- ),
-
-
-/* Keymap 4: Hungarian Layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | | | | | | | | | | | | | | | |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | | | Å | | Å° | | | | | | | | | | |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | | à | Ó | É | Ú | à |------| |------| | | | | | |
- * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
- * | | | Ö | | Ü | | | | | | | | | | |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | BASE | | |
- * `--------------------' `--------------------'
- */
-
-[HUN] = KEYMAP(
-// left hand
- KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO
-,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II)
-,KC_NO ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO
-,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,KC_NO ,KC_NO
- ,KC_NO
- ,KC_NO ,KC_TRNS ,KC_TRNS
-
- // right hand
- ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,KC_NO ,KC_NO
- ,KC_NO
- ,F(F_BSE),KC_TRNS ,KC_TRNS
- ),
-
-/* Keymap 5: Navigation & Media layer
- *
- * ,-----------------------------------------------------. ,-----------------------------------------------------.
- * | MS Slow | | | | | |ScrLCK| |ScrLCK| | | | | | |
- * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
- * | MS Normal | | Home | Up | PgUp | | | |Scroll| |MsUpL | MsUp |MsUpR | |PrintScreen|
- * |-----------+------+------+------+------+------| | | Up |------+------+------+------+------+-----------|
- * | MS Fast | | Left | Down | Right| |------| |------| |MsLeft| MsDn |MsRght| | |
- * |-----------+------+------+------+------+------| | |Scroll|------+------+------+------+------+-----------|
- * | Play/Pause| | End | Down | PgDn | | | | Down | |MsDnL | MsDn |MsDnR | | Stop |
- * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
- * | | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | Mute | VlUp | | BASE | MClk |
- * ,------|------|------| |------+------+------.
- * | | | VlDn | | Prev |Left |Right |
- * | SPC | Enter|------| |------| Click| Click|
- * | | | ESC | | Next | | |
- * `--------------------' `--------------------'
- */
-[NMDIA] = KEYMAP(
-// left hand
- KC_ACL0 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L)
-,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO
-,KC_ACL2 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO
-,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO
-,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_MUTE ,KC_VOLU
- ,KC_VOLD
- ,KC_SPC,KC_ENTER,M(A_ESC)
-
- // right hand
- ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_WH_U ,KC_NO ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO ,KC_PSCR
- ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
- ,KC_WH_D ,KC_NO ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO ,KC_MSTP
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,KC_TRNS ,KC_MS_BTN3
- ,KC_MPRV
- ,KC_MNXT ,KC_BTN1 ,KC_BTN2
- ),
-
-/* Keymap 6: One-handed, left side
- *
- * ,-----------------------------------------------------.
- * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A BSE|
- * |-----------+------+------+------+------+-------------|
- * | Tab | ' | , | . | P | Y | [ |
- * |-----------+------+------+------+------+------| |
- * | - | A | O | E | U | I |------|
- * |-----------+------+------+------+------+------| ( |
- * | Play/Pause| ; | Q | J | K | X | |
- * `-----------+------+------+------+------+-------------'
- * | Home | End | Down | Up | ESC |
- * `-----------------------------------'
- * ,-------------.
- * | LAlt | GUI |
- * ,------|------|------|
- * |BackSp|LShift| Ctrl |
- * | | |------|
- * |Space |Enter |OTHER |
- * `--------------------'
- */
-[OHLFT] = KEYMAP(
-// left hand
- KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,M(OH_BASE)
-,KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
-,KC_MINS ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
-,KC_MPLY ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
-,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_ESC)
-
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,M(OH_BSSPC),M(OH_ENTSFT),M(OH_RIGHT)
-
- // right hand
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,KC_NO ,KC_NO
- ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO
- ),
-
-/* Keymap 7: One-handed, right side
- *
- * ,-----------------------------------------------------.
- * | = F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A BSE|
- * |-----------+------+------+------+------+-------------|
- * | / | L | R | C | G | F | ] |
- * |-----------+------+------+------+------+------| |
- * | \ | S | N | T | H | D |------|
- * |-----------+------+------+------+------+------| ) |
- * | Stop | Z | V | W | M | B | |
- * `-----------+------+------+------+------+-------------'
- * | PgDn | PgUp | Right| Left | ESC |
- * `-----------------------------------'
- * ,-------------.
- * | LAlt | GUI |
- * ,------|------|------|
- * |BackSp|LShift| Ctrl |
- * | | |------|
- * |Space |Enter |OTHER |
- * `--------------------'
- */
-[OHRGT] = KEYMAP(
-// left hand
- M(KF_11) ,M(KF_10) ,M(KF_9) ,M(KF_8) ,M(KF_7) ,M(KF_6) ,M(OH_BASE)
-,KC_SLSH ,KC_L ,KC_R ,KC_C ,KC_G ,KC_F ,KC_RBRC
-,KC_BSLS ,KC_S ,KC_N ,KC_T ,KC_H ,KC_D
-,KC_MSTP ,KC_Z ,KC_V ,KC_W ,KC_M ,KC_B ,KC_RPRN
-,KC_PGDN ,KC_PGUP ,KC_RGHT ,KC_LEFT ,M(A_ESC)
-
- ,KC_TRNS ,KC_TRNS
- ,KC_TRNS
- ,M(OH_BSSPC),M(OH_ENTSFT),M(OH_LEFT)
-
- // right hand
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-
- ,KC_NO ,KC_NO
- ,KC_NO
- ,KC_NO ,KC_NO ,KC_NO
- ),
-
-/* Keymap 8: Steno for Plover
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | BASE | | | | | | | | |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | # | # | # | # | # | # | | # | # | # | # | # | # | # |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | T | P | H | |------| |------| | F | P | L | T | D |
- * |--------+ S +------+------+------+ * | * | | * | * +------+------+------+------+--------|
- * | | | K | W | R | | | | | | R | B | G | S | Z |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | A | O |------| |------| E | U |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-
-[PLVR] = KEYMAP(
-// left hand
-KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR),
-KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
-KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
-KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
-KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO,
- KC_NO,
- PV_A, PV_O, KC_NO,
-
- // right hand
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
- PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
- PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO,
- KC_NO,
- KC_NO,PV_E, PV_U
- ),
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
- [F_BSE] = ACTION_LAYER_CLEAR(ON_PRESS)
- ,[F_HUN] = ACTION_LAYER_INVERT(HUN, ON_PRESS)
- ,[F_GUI] = ACTION_MACRO_TAP(A_GUI)
- ,[F_SFT] = ACTION_MODS_ONESHOT (MOD_LSFT)
- ,[F_ALT] = ACTION_MODS_ONESHOT (MOD_LALT)
- ,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL)
-};
-
-void toggle_steno(int pressed)
-{
- uint8_t layer = biton32(layer_state);
-
- if (pressed) {
- if (layer != PLVR) layer_on(PLVR); else layer_off(PLVR);
-
- register_code(PV_LP);
- register_code(PV_LH);
- register_code(PV_LR);
- register_code(PV_O);
- register_code(PV_RL);
- register_code(PV_RG);
- } else {
- unregister_code(PV_LP);
- unregister_code(PV_LH);
- unregister_code(PV_LR);
- unregister_code(PV_O);
- unregister_code(PV_RL);
- unregister_code(PV_RG);
- }
-}
-
-macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char)
-{
- uint8_t need_shift = 0;
- uint8_t hold_shift = 0;
-
- if (!record->event.pressed)
- return MACRO_NONE;
-
- layer_off (HUN);
-
- if (keyboard_report->mods & MOD_BIT (KC_LSFT)) {
- hold_shift = 1;
- need_shift = 1;
- unregister_code (KC_LSFT);
- }
- if ((get_oneshot_mods () & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out ()) {
- need_shift = 1;
- hold_shift = 0;
- unregister_code (KC_LSFT);
- }
-
- clear_oneshot_mods ();
-
- register_code (KC_RALT);
- unregister_code (KC_RALT);
- if (accent == (KC_DQT)) {
- register_code (KC_RSFT);
- }
- register_code (accent);
- unregister_code (accent);
- if (need_shift && accent != (KC_DQT)) {
- register_code (KC_RSFT);
- } else if (accent == (KC_DQT) && !need_shift) {
- unregister_code (KC_RSFT);
- }
- register_code (hun_char);
- unregister_code (hun_char);
- if (need_shift || accent == (KC_DQT))
- unregister_code (KC_RSFT);
- if (hold_shift)
- register_code (KC_LSFT);
-
- return MACRO_NONE;
-}
-
-void ang_handle_kf (keyrecord_t *record, uint8_t id)
-{
- uint8_t code = id - KF_1;
-
- if (record->event.pressed) {
- kf_timers[code] = timer_read ();
- } else {
- uint8_t kc;
-
- if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) {
- // Long press
- kc = KC_F1 + code;
- } else {
- if (id == KF_11)
- kc = KC_EQL;
- else
- kc = KC_1 + code;
- }
-
- register_code (kc);
- unregister_code (kc);
- }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- switch(id) {
- case A_ESC:
- if (record->event.pressed) {
- if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) {
- clear_oneshot_mods ();
- } else {
- register_code (KC_ESC);
- }
- layer_off (HUN);
- } else {
- unregister_code (KC_ESC);
- }
- break;
-
- case A_MPN:
- if (record->event.pressed) {
- if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
- ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
- int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
-
- if (oneshot)
- clear_oneshot_mods ();
- unregister_code (KC_LSFT);
-
- register_code (KC_MPRV);
- unregister_code (KC_MPRV);
-
- if (!oneshot)
- register_code (KC_LSFT);
- } else {
- return MACRO (T(MNXT), END);
- }
- }
- break;
-
- /* Hungarian layer */
- case HU_AA:
- return ang_do_hun (record, KC_QUOT, KC_A);
- case HU_OO:
- return ang_do_hun (record, KC_QUOT, KC_O);
- case HU_EE:
- return ang_do_hun (record, KC_QUOT, KC_E);
- case HU_UU:
- return ang_do_hun (record, KC_QUOT, KC_U);
- case HU_II:
- return ang_do_hun (record, KC_QUOT, KC_I);
- case HU_OE:
- return ang_do_hun (record, KC_DQT, KC_O);
- case HU_UE:
- return ang_do_hun (record, KC_DQT, KC_U);
- case HU_OEE:
- return ang_do_hun (record, KC_EQL, KC_O);
- case HU_UEE:
- return ang_do_hun (record, KC_EQL, KC_U);
-
- /* Mouse movement */
- case A_MUL:
- if (record->event.pressed) {
- mousekey_on(KC_MS_UP);
- mousekey_on(KC_MS_LEFT);
- } else {
- mousekey_off(KC_MS_UP);
- mousekey_off(KC_MS_LEFT);
- }
- mousekey_send();
- break;
-
- case A_MUR:
- if (record->event.pressed) {
- mousekey_on(KC_MS_UP);
- mousekey_on(KC_MS_RIGHT);
- } else {
- mousekey_off(KC_MS_UP);
- mousekey_off(KC_MS_RIGHT);
- }
- mousekey_send();
- break;
-
- case A_MDL:
- if (record->event.pressed) {
- mousekey_on(KC_MS_DOWN);
- mousekey_on(KC_MS_LEFT);
- } else {
- mousekey_off(KC_MS_DOWN);
- mousekey_off(KC_MS_LEFT);
- }
- mousekey_send();
- break;
-
- case A_MDR:
- if (record->event.pressed) {
- mousekey_on(KC_MS_DOWN);
- mousekey_on(KC_MS_RIGHT);
- } else {
- mousekey_off(KC_MS_DOWN);
- mousekey_off(KC_MS_RIGHT);
- }
- mousekey_send();
- break;
-
- /* Plover base */
- case A_PLVR:
- toggle_steno(record->event.pressed);
- break;
-
- /* GUI & AppSel */
- case A_GUI:
- if (record->event.pressed) {
- register_code (KC_LGUI);
- if (record->tap.count && !record->tap.interrupted) {
- if (record->tap.count >= 2) {
- register_code (KC_W);
- layer_on (APPSEL);
- set_oneshot_layer (APPSEL, ONESHOT_START);
- }
- } else {
- record->tap.count = 0;
- }
- gui_timer = 0;
- } else {
- if (record->tap.count >= 2)
- {
- unregister_code (KC_W);
- clear_oneshot_layer_state (ONESHOT_PRESSED);
- }
- gui_timer = timer_read ();
- }
- break;
-
- case APP_SLK:
- return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END);
-
- case APP_EMCS:
- return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
-
- case APP_TERM:
- return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END);
-
- case APP_CHRM:
- return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
-
- case APP_MSIC:
- return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
-
- /* Function keys */
- case KF_1 ... KF_11:
- ang_handle_kf (record, id);
- break;
-
- /* 1HAND layout */
- case OH_BASE:
- if (record->event.pressed) {
- oh_base_timer = timer_read ();
- } else {
- if (timer_elapsed (oh_base_timer) > TAPPING_TERM) {
- layer_clear ();
- } else {
- return MACRO (T(APP), END);
- }
- }
- break;
-
- case OH_BSSPC:
- if (record->event.pressed) {
- oh_bsspc_timer = timer_read ();
- } else {
- if (timer_elapsed (oh_bsspc_timer) > TAPPING_TERM) {
- return MACRO (T(BSPC), END);
- } else {
- return MACRO (T(SPC), END);
- }
- }
- break;
-
- case OH_ENTSFT:
- if (record->event.pressed) {
- oh_entsft_timer = timer_read ();
- } else {
- if (timer_elapsed (oh_entsft_timer) > TAPPING_TERM) {
- if (keyboard_report->mods & MOD_BIT(KC_LSFT))
- unregister_code (KC_LSFT);
- else
- register_code (KC_LSFT);
- } else {
- return MACRO (T(ENT), END);
- }
- }
- break;
-
- case OH_LEFT:
- if (record->event.pressed) {
- layer_move (OHLFT);
- oh_left_blink = 1;
- oh_left_blink_timer = timer_read ();
- ergodox_right_led_1_on ();
- }
- break;
-
- case OH_RIGHT:
- if (record->event.pressed) {
- layer_move (OHRGT);
- oh_right_blink = 1;
- oh_right_blink_timer = timer_read ();
- ergodox_right_led_3_on ();
- }
- break;
- }
- return MACRO_NONE;
-};
-
-uint8_t is_adore = 0;
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
- uint8_t dl;
-
- ergodox_led_all_on();
- for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) {
- ergodox_led_all_set (i);
- wait_ms (5);
- }
- wait_ms(1000);
- for (int i = LED_BRIGHTNESS_LO; i > 0; i--) {
- ergodox_led_all_set (i);
- wait_ms (10);
- }
- ergodox_led_all_off();
-
- if (!eeconfig_is_enabled())
- eeconfig_init();
- dl = eeconfig_read_default_layer ();
- if (dl == (1UL << ADORE))
- is_adore = 1;
-};
-
-LEADER_EXTERNS();
-
-void ang_do_unicode (void) {
- register_code (KC_RCTL);
- register_code (KC_RSFT);
- register_code (KC_U);
- unregister_code (KC_U);
- unregister_code (KC_RSFT);
- unregister_code (KC_RCTL);
- wait_ms (100);
-}
-
-void ang_tap (uint16_t codes[]) {
- for (int i = 0; codes[i] != 0; i++) {
- register_code (codes[i]);
- unregister_code (codes[i]);
- wait_ms (50);
- }
-}
-
-#define TAP_ONCE(code) \
- register_code (code); \
- unregister_code (code)
-
-void ang_tap_dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code (KC_RSFT);
- register_code (KC_SCLN);
- } else if (state->count == 2) {
- register_code (KC_SCLN);
- }
-}
-
-void ang_tap_dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code (KC_SCLN);
- unregister_code (KC_RSFT);
- } else if (state->count == 2) {
- unregister_code (KC_SCLN);
- }
-}
-
-void ang_tap_dance_mns_finished (qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code (KC_MINS);
- } else if (state->count == 2) {
- register_code (KC_RSFT);
- register_code (KC_MINS);
- }
-}
-
-void ang_tap_dance_mns_reset (qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code (KC_MINS);
- } else if (state->count == 2) {
- unregister_code (KC_RSFT);
- unregister_code (KC_MINS);
- }
-}
-
-typedef struct {
- bool layer_toggle;
- bool sticky;
- bool finished_once;
-} td_ta_state_t;
-
-void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) {
- td_ta_state_t *td_ta = (td_ta_state_t *) user_data;
-
- if (td_ta->finished_once) {
- return;
- }
-
- if (td_ta->sticky) {
- td_ta->sticky = false;
- td_ta->layer_toggle = false;
- layer_off (ARRW);
- return;
- }
-
- td_ta->finished_once = true;
- if (state->count == 1 && !state->pressed) {
- register_code (KC_TAB);
- td_ta->sticky = false;
- td_ta->layer_toggle = false;
- } else {
- td_ta->layer_toggle = true;
- layer_on (ARRW);
- td_ta->sticky = (state->count == 2);
- }
-}
-
-void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) {
- td_ta_state_t *td_ta = (td_ta_state_t *) user_data;
-
- if (!td_ta->layer_toggle)
- unregister_code (KC_TAB);
- if (!td_ta->sticky)
- layer_off (ARRW);
-
- td_ta->finished_once = false;
-}
-
-const qk_tap_dance_action_t tap_dance_actions[] = {
- [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_cln_finished, ang_tap_dance_cln_reset)
- ,[CT_MNS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_mns_finished, ang_tap_dance_mns_reset)
- ,[CT_TA] = {
- .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset },
- .user_data = (void *)&((td_ta_state_t) { false, false, false })
- }
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
-
- if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
- unregister_code (KC_LGUI);
-
- if (layer != OHLFT)
- oh_left_blink = 0;
- if (layer != OHRGT)
- oh_right_blink = 0;
-
- if (layer == HUN) {
- ergodox_right_led_2_on();
- ergodox_right_led_3_on();
- } else if (layer == NMDIA) {
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- } else if (layer == PLVR) {
- ergodox_right_led_1_on ();
- ergodox_right_led_2_on ();
- ergodox_right_led_3_on ();
- } else if (layer == ADORE) {
- ergodox_right_led_1_on ();
- ergodox_right_led_2_on ();
- ergodox_right_led_3_on ();
-
- ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
- }
-
- if (layer == OHLFT || layer == OHRGT) {
- ergodox_right_led_2_on();
-
- if (oh_left_blink) {
- if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL) {
- if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) == 0)
- ergodox_right_led_1_off ();
- }
- if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL * 2) {
- ergodox_right_led_1_on ();
- oh_left_blink_timer = timer_read ();
- }
- }
-
- if (oh_right_blink) {
- if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL) {
- if ((keyboard_report->mods & MOD_BIT(KC_LCTRL)) == 0)
- ergodox_right_led_3_off ();
- }
- if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL * 2) {
- ergodox_right_led_3_on ();
- oh_right_blink_timer = timer_read ();
- }
- }
- }
-
- if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
- ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
- ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
- ergodox_right_led_1_on ();
- } else {
- ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
- if (layer != OHLFT && layer != NMDIA && layer != PLVR && layer != ADORE)
- ergodox_right_led_1_off ();
- }
-
- if (keyboard_report->mods & MOD_BIT(KC_LALT) ||
- ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) {
- ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
- ergodox_right_led_2_on ();
- } else {
- ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
- if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != NMDIA && layer != PLVR && layer != ADORE)
- ergodox_right_led_2_off ();
- }
-
- if (keyboard_report->mods & MOD_BIT(KC_LCTRL) ||
- ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) {
- ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
- ergodox_right_led_3_on ();
- } else {
- ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
- if (layer != OHRGT && layer != HUN && layer != PLVR && layer != ADORE)
- ergodox_right_led_3_off ();
- }
-
- LEADER_DICTIONARY() {
- leading = false;
- leader_end ();
-
-#if KEYLOGGER_ENABLE
- SEQ_ONE_KEY (KC_D) {
- ergodox_led_all_on();
- wait_ms(100);
- ergodox_led_all_off();
- log_enable = !log_enable;
- }
-#endif
-
- SEQ_ONE_KEY (KC_T) {
- time_travel = !time_travel;
- }
-
- SEQ_ONE_KEY (KC_U) {
- ang_do_unicode ();
- }
-
- SEQ_ONE_KEY (KC_V) {
- SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")");
- }
-
- SEQ_ONE_KEY (KC_L) {
- /* λ */
- ang_do_unicode ();
-
- uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0};
- ang_tap (codes);
- }
-
- SEQ_ONE_KEY (KC_Y) {
- uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0};
- ang_tap (codes);
- }
-
- SEQ_ONE_KEY (KC_S) {
- ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
- TAP_ONCE (KC_BSLS);
- register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
- ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC);
- register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
- TAP_ONCE (KC_SLSH);
- ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
- }
-
- SEQ_TWO_KEYS (KC_W, KC_M) {
- register_code (KC_LALT);
- register_code (KC_F2);
- unregister_code (KC_F2);
- unregister_code (KC_LALT);
-
- wait_ms (1000);
-
- uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0};
- ang_tap (codes);
- register_code (KC_LGUI);
- register_code (KC_UP);
- unregister_code (KC_UP);
- unregister_code (KC_LGUI);
- }
-
- SEQ_ONE_KEY (KC_A) {
- if (is_adore == 0) {
- default_layer_and (0);
- default_layer_or ((1UL << ADORE));
- eeconfig_update_default_layer ((1UL << ADORE));
- is_adore = 1;
-
- ergodox_led_all_off ();
- ergodox_right_led_3_on ();
- wait_ms (100);
- ergodox_right_led_2_on ();
- wait_ms (100);
- ergodox_right_led_3_off ();
- ergodox_right_led_1_on ();
- wait_ms (100);
- ergodox_right_led_2_off ();
- wait_ms (100);
- ergodox_right_led_1_off ();
- } else {
- is_adore = 0;
- default_layer_and (0);
- default_layer_or (1UL << BASE);
- eeconfig_update_default_layer ((1UL << BASE));
-
- ergodox_led_all_off ();
- ergodox_right_led_1_on ();
- wait_ms (100);
- ergodox_right_led_2_on ();
- wait_ms (100);
- ergodox_right_led_1_off ();
- ergodox_right_led_3_on ();
- wait_ms (100);
- ergodox_right_led_2_off ();
- wait_ms (100);
- ergodox_right_led_3_off ();
- }
- }
- }
-}
-
-static uint16_t last4[4];
-
-bool process_record_user (uint16_t keycode, keyrecord_t *record) {
-#if KEYLOGGER_ENABLE
- uint8_t layer = biton32(layer_state);
-
- if (log_enable && layer == BASE) {
- xprintf ("KL: col=%d, row=%d\n", record->event.key.col,
- record->event.key.row);
- }
-#endif
-
- if (time_travel && !record->event.pressed) {
- uint8_t p;
-
- // shift cache one to the left
- for (p = 0; p < 3; p++) {
- last4[p] = last4[p + 1];
- }
- last4[3] = keycode;
-
- if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) {
- uint16_t codes[] = {KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0};
- ang_tap (codes);
- register_code (KC_RSFT);
- register_code (KC_EQL);
- unregister_code (KC_EQL);
- unregister_code (KC_RSFT);
-
- uint16_t codes2[] = {KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0};
- ang_tap (codes2);
-
- return false;
- }
- }
-
- return true;
-}
+ +/* Layers */ + +enum { + BASE = 0, + ADORE, + ARRW, + APPSEL, + HUN, + NMDIA, + PLVR, +}; + +/* Macros */ + +enum { + NONE = 0, + // Buttons that do extra stuff + A_GUI, + A_PLVR, + A_ESC, + A_MPN, + + // Function / number keys + KF_1, // 1, F1 + KF_2, // 2, F2 + KF_3, // ... + KF_4, + KF_5, + KF_6, + KF_7, + KF_8, + KF_9, + KF_10, + KF_11, // =, F11 + + // Application select keys + APP_SLK, // Slack + APP_EMCS, // Emacs + APP_TERM, // Terminal + APP_CHRM, // Chrome + APP_MSIC, // Music + + // Diagonal mouse movement + A_MUL, + A_MUR, + A_MDL, + A_MDR, + + // Hungarian layer keys + HU_AA, // à + HU_OO, // Ó + HU_EE, // É + HU_UU, // Ú + HU_II, // à + HU_OE, // Ö + HU_UE, // Ü + HU_OEE, // Š+ HU_UEE, // Ű +}; + +/* Fn keys */ + +enum { + F_BSE = 0, + F_HUN, + F_GUI, + F_SFT, + F_ALT, + F_CTRL +}; + +/* Custom keycodes */ + +enum { + CT_CLN = 0, + CT_MNS, + CT_TA, + CT_LBP, + CT_RBP +}; + +/* States & timers */ + +uint16_t gui_timer = 0; + +uint16_t kf_timers[12]; + +#if KEYLOGGER_ENABLE +bool log_enable = false; +#endif + +bool time_travel = false; + +/* The Keymap */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Keymap 0: Base Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | Next/Prev | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | ~ | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | \ | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow | + * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------| + * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | : | | - | | | | | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | LAlt | GUI | | MDIA | Del | + * ,------|------|------| |------+------+------. + * | | | Ctrl | | LEAD | | | + * |Backsp|LShift|------| |------| Enter| Space| + * | | | ESC | | HUN | | | + * `--------------------' `--------------------' + */ +[BASE] = KEYMAP( +// left hand + M(A_MPN) ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) +,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC +,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I +,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) + + ,F(F_ALT),F(F_GUI) + ,F(F_CTRL) + ,KC_BSPC,F(F_SFT),M(A_ESC) + + // right hand + ,KC_APP ,M(KF_6),M(KF_7) ,M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 + ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS + ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL + ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP + ,TD(CT_MNS),KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,OSL(NMDIA),KC_DEL + ,KC_LEAD + ,F(F_HUN) ,KC_ENT ,KC_SPC + ), + +/* Keymap 1: Adore layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | Play/Pause| 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | `~ | X | W | K | L | M | ( | | ) | F | H | C | P | Y | \ | + * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| + * | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | Z | Q | ' | , | . | : | | - | B | G | V | J | / | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | LAlt | GUI | | MDIA | Del | + * ,------|------|------| |------+------+------. + * | | | Ctrl | | HUN | | | + * |Backsp|LShift|------| |------| Enter| Space| + * | | | ESC | | LEAD | | | + * `--------------------' `--------------------' + */ +[ADORE] = KEYMAP( +// left hand + KC_MPLY ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR) +,KC_GRV ,KC_X ,KC_W ,KC_K ,KC_L ,KC_M ,TD(CT_LBP) +,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U +,KC_NO ,KC_Z ,KC_Q ,KC_QUOT,KC_COMM,KC_DOT ,TD(CT_CLN) +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,F(F_ALT),F(F_GUI) + ,F(F_CTRL) + ,KC_BSPC,F(F_SFT),M(A_ESC) + + // right hand + ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 + ,TD(CT_RBP),KC_F ,KC_H ,KC_C ,KC_P ,KC_Y ,KC_BSLS + ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL + ,TD(CT_MNS),KC_B ,KC_G ,KC_V ,KC_J ,KC_SLSH ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,OSL(NMDIA),KC_DEL + ,F(F_HUN) + ,KC_LEAD ,KC_ENT ,KC_SPC + ), + +/* Keymap 2: Arrow layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | | | | | | | | | | Home | Up | End | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | Left | Down | Rght | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | Enter| |------| |------| PgUp | PgDn | + * | | | | | | | | + * `--------------------' `--------------------' + */ + +[ARRW] = KEYMAP( +// left hand + KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_ENT ,KC_TRNS ,KC_TRNS + + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_PGUP ,KC_PGDN + ), + +/* Keymap 3: Application select layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ + +[APPSEL] = KEYMAP( +// left hand + KC_TRNS ,M(APP_MSIC),M(APP_SLK),M(APP_EMCS),M(APP_TERM),M(APP_CHRM),KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS + + // right hand + ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS + ), + + +/* Keymap 4: Hungarian Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | | Š| | Ű | | | | | | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | à | Ó | É | Ú | à |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | Ö | | Ü | | | | | | | | | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | BASE | | | + * `--------------------' `--------------------' + */ + +[HUN] = KEYMAP( +// left hand + KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO +,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II) +,KC_NO ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,KC_NO ,KC_NO + ,KC_NO + ,KC_NO ,KC_TRNS ,KC_TRNS + + // right hand + ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,KC_NO ,KC_NO + ,KC_NO + ,F(F_BSE),KC_TRNS ,KC_TRNS + ), + +/* Keymap 5: Navigation & Media layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | MS Slow | | | | | |ScrLCK| |ScrLCK| | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | MS Normal | | Home | Up | PgUp | | | |Scroll| |MsUpL | MsUp |MsUpR | |PrintScreen| + * |-----------+------+------+------+------+------| | | Up |------+------+------+------+------+-----------| + * | MS Fast | | Left | Down | Right| |------| |------| |MsLeft| MsDn |MsRght| | | + * |-----------+------+------+------+------+------| | |Scroll|------+------+------+------+------+-----------| + * | Play/Pause| | End | Down | PgDn | | | | Down | |MsDnL | MsDn |MsDnR | | Stop | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Mute | VlUp | | BASE | MClk | + * ,------|------|------| |------+------+------. + * | | | VlDn | | Prev |Left |Right | + * | SPC | Enter|------| |------| Click| Click| + * | | | ESC | | Next | | | + * `--------------------' `--------------------' + */ +[NMDIA] = KEYMAP( +// left hand + KC_ACL0 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L) +,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO +,KC_ACL2 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO +,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_MUTE ,KC_VOLU + ,KC_VOLD + ,KC_SPC,KC_ENTER,M(A_ESC) + + // right hand + ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_WH_U ,KC_NO ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO ,KC_PSCR + ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO + ,KC_WH_D ,KC_NO ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO ,KC_MSTP + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,KC_TRNS ,KC_MS_BTN3 + ,KC_MPRV + ,KC_MNXT ,KC_BTN1 ,KC_BTN2 + ), + +/* Keymap 6: Steno for Plover + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | BASE | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | # | # | # | # | # | # | | # | # | # | # | # | # | # | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | T | P | H | |------| |------| | F | P | L | T | D | + * |--------+ S +------+------+------+ * | * | | * | * +------+------+------+------+--------| + * | | | K | W | R | | | | | | R | B | G | S | Z | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | A | O |------| |------| E | U | + * | | | | | | | | + * `--------------------' `--------------------' + */ + +[PLVR] = KEYMAP( +// left hand +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR), +KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, +KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, +KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + PV_A, PV_O, KC_NO, + + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, + PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, + PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, + KC_NO, + KC_NO,PV_E, PV_U + ), + +}; + +const uint16_t PROGMEM fn_actions[] = { + [F_BSE] = ACTION_LAYER_CLEAR(ON_PRESS) + ,[F_HUN] = ACTION_LAYER_INVERT(HUN, ON_PRESS) + ,[F_GUI] = ACTION_MACRO_TAP(A_GUI) + ,[F_SFT] = ACTION_MODS_ONESHOT (MOD_LSFT) + ,[F_ALT] = ACTION_MODS_ONESHOT (MOD_LALT) + ,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL) +}; + +void toggle_steno(int pressed) +{ + uint8_t layer = biton32(layer_state); + + if (pressed) { + if (layer != PLVR) layer_on(PLVR); else layer_off(PLVR); + + register_code(PV_LP); + register_code(PV_LH); + register_code(PV_LR); + register_code(PV_O); + register_code(PV_RL); + register_code(PV_RG); + } else { + unregister_code(PV_LP); + unregister_code(PV_LH); + unregister_code(PV_LR); + unregister_code(PV_O); + unregister_code(PV_RL); + unregister_code(PV_RG); + } +} + +macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) +{ + uint8_t need_shift = 0; + uint8_t hold_shift = 0; + + if (!record->event.pressed) + return MACRO_NONE; + + layer_off (HUN); + + if (keyboard_report->mods & MOD_BIT (KC_LSFT)) { + hold_shift = 1; + need_shift = 1; + unregister_code (KC_LSFT); + } + if ((get_oneshot_mods () & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out ()) { + need_shift = 1; + hold_shift = 0; + unregister_code (KC_LSFT); + } + + clear_oneshot_mods (); + + register_code (KC_RALT); + unregister_code (KC_RALT); + if (accent == (KC_DQT)) { + register_code (KC_RSFT); + } + register_code (accent); + unregister_code (accent); + if (need_shift && accent != (KC_DQT)) { + register_code (KC_RSFT); + } else if (accent == (KC_DQT) && !need_shift) { + unregister_code (KC_RSFT); + } + register_code (hun_char); + unregister_code (hun_char); + if (need_shift || accent == (KC_DQT)) + unregister_code (KC_RSFT); + if (hold_shift) + register_code (KC_LSFT); + + return MACRO_NONE; +} + +void ang_handle_kf (keyrecord_t *record, uint8_t id) +{ + uint8_t code = id - KF_1; + + if (record->event.pressed) { + kf_timers[code] = timer_read (); + } else { + uint8_t kc; + + if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) { + // Long press + kc = KC_F1 + code; + } else { + if (id == KF_11) + kc = KC_EQL; + else + kc = KC_1 + code; + } + + register_code (kc); + unregister_code (kc); + } +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case A_ESC: + if (record->event.pressed) { + if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) { + clear_oneshot_mods (); + } else { + register_code (KC_ESC); + } + layer_off (HUN); + } else { + unregister_code (KC_ESC); + } + break; + + case A_MPN: + if (record->event.pressed) { + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || + ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { + int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out()); + + if (oneshot) + clear_oneshot_mods (); + unregister_code (KC_LSFT); + + register_code (KC_MPRV); + unregister_code (KC_MPRV); + + if (!oneshot) + register_code (KC_LSFT); + } else { + return MACRO (T(MNXT), END); + } + } + break; + + /* Hungarian layer */ + case HU_AA: + return ang_do_hun (record, KC_QUOT, KC_A); + case HU_OO: + return ang_do_hun (record, KC_QUOT, KC_O); + case HU_EE: + return ang_do_hun (record, KC_QUOT, KC_E); + case HU_UU: + return ang_do_hun (record, KC_QUOT, KC_U); + case HU_II: + return ang_do_hun (record, KC_QUOT, KC_I); + case HU_OE: + return ang_do_hun (record, KC_DQT, KC_O); + case HU_UE: + return ang_do_hun (record, KC_DQT, KC_U); + case HU_OEE: + return ang_do_hun (record, KC_EQL, KC_O); + case HU_UEE: + return ang_do_hun (record, KC_EQL, KC_U); + + /* Mouse movement */ + case A_MUL: + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_LEFT); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_LEFT); + } + mousekey_send(); + break; + + case A_MUR: + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_RIGHT); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_RIGHT); + } + mousekey_send(); + break; + + case A_MDL: + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_LEFT); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_LEFT); + } + mousekey_send(); + break; + + case A_MDR: + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_RIGHT); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_RIGHT); + } + mousekey_send(); + break; + + /* Plover base */ + case A_PLVR: + toggle_steno(record->event.pressed); + break; + + /* GUI & AppSel */ + case A_GUI: + if (record->event.pressed) { + register_code (KC_LGUI); + if (record->tap.count && !record->tap.interrupted) { + if (record->tap.count >= 2) { + register_code (KC_W); + layer_on (APPSEL); + set_oneshot_layer (APPSEL, ONESHOT_START); + } + } else { + record->tap.count = 0; + } + gui_timer = 0; + } else { + if (record->tap.count >= 2) + { + unregister_code (KC_W); + clear_oneshot_layer_state (ONESHOT_PRESSED); + } + gui_timer = timer_read (); + } + break; + + case APP_SLK: + return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END); + + case APP_EMCS: + return MACRODOWN(T(G), T(N), T(U), T(SPC), T(E), T(M), T(A), T(C), T(S), T(SPC), T(2), T(4), T(ENT), END); + + case APP_TERM: + return MACRODOWN(T(T), T(E), T(R), T(M), T(ENT), END); + + case APP_CHRM: + return MACRODOWN(T(C), T(H), T(R), T(O), T(M), T(ENT), END); + + case APP_MSIC: + return MACRODOWN(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END); + + /* Function keys */ + case KF_1 ... KF_11: + ang_handle_kf (record, id); + break; + } + + return MACRO_NONE; +}; + +uint8_t is_adore = 0; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + uint8_t dl; + + ergodox_led_all_on(); + for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) { + ergodox_led_all_set (i); + wait_ms (5); + } + wait_ms(1000); + for (int i = LED_BRIGHTNESS_LO; i > 0; i--) { + ergodox_led_all_set (i); + wait_ms (10); + } + ergodox_led_all_off(); + + if (!eeconfig_is_enabled()) + eeconfig_init(); + dl = eeconfig_read_default_layer (); + if (dl == (1UL << ADORE)) { + is_adore = 1; +#if ADORE_AUTOLOG + log_enable = true; +#endif + } +}; + +LEADER_EXTERNS(); + +void ang_do_unicode (void) { + register_code (KC_RCTL); + register_code (KC_RSFT); + register_code (KC_U); + unregister_code (KC_U); + unregister_code (KC_RSFT); + unregister_code (KC_RCTL); + wait_ms (100); +} + +void ang_tap (uint16_t codes[]) { + for (int i = 0; codes[i] != 0; i++) { + register_code (codes[i]); + unregister_code (codes[i]); + wait_ms (50); + } +} + +#define TAP_ONCE(code) \ + register_code (code); \ + unregister_code (code) + +void ang_tap_dance_bp_finished (qk_tap_dance_state_t *state, void *user_data) { + bool left, parens; + + if (state->count > 2) { + state->count = 0; + return; + } + + if (state->keycode == TD(CT_LBP)) + left = true; + else + left = false; + + if (state->count == 1) + parens = false; + else + parens = true; + + if (parens) { + register_code (KC_RSFT); + if (left) { + TAP_ONCE(KC_9); + } else { + TAP_ONCE(KC_0); + } + unregister_code (KC_RSFT); + } else { + if (left) { + TAP_ONCE (KC_LBRC); + } else { + TAP_ONCE (KC_RBRC); + } + } +} + +void ang_tap_dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code (KC_RSFT); + register_code (KC_SCLN); + } else if (state->count == 2) { + register_code (KC_SCLN); + } +} + +void ang_tap_dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + unregister_code (KC_SCLN); + unregister_code (KC_RSFT); + } else if (state->count == 2) { + unregister_code (KC_SCLN); + } +} + +void ang_tap_dance_mns_finished (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code (KC_MINS); + } else if (state->count == 2) { + register_code (KC_RSFT); + register_code (KC_MINS); + } +} + +void ang_tap_dance_mns_reset (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + unregister_code (KC_MINS); + } else if (state->count == 2) { + unregister_code (KC_RSFT); + unregister_code (KC_MINS); + } +} + +typedef struct { + bool layer_toggle; + bool sticky; + bool finished_once; +} td_ta_state_t; + +void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { + td_ta_state_t *td_ta = (td_ta_state_t *) user_data; + + if (td_ta->finished_once) { + return; + } + + if (td_ta->sticky) { + td_ta->sticky = false; + td_ta->layer_toggle = false; + layer_off (ARRW); + return; + } + + td_ta->finished_once = true; + if (state->count == 1 && !state->pressed) { + register_code (KC_TAB); + td_ta->sticky = false; + td_ta->layer_toggle = false; + } else { + td_ta->layer_toggle = true; + layer_on (ARRW); + td_ta->sticky = (state->count == 2); + } +} + +void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) { + td_ta_state_t *td_ta = (td_ta_state_t *) user_data; + + if (!td_ta->layer_toggle) + unregister_code (KC_TAB); + if (!td_ta->sticky) + layer_off (ARRW); + + td_ta->finished_once = false; +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_cln_finished, ang_tap_dance_cln_reset) + ,[CT_MNS] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, ang_tap_dance_mns_finished, ang_tap_dance_mns_reset) + ,[CT_TA] = { + .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset }, + .user_data = (void *)&((td_ta_state_t) { false, false, false }) + } + ,[CT_LBP] = ACTION_TAP_DANCE_FN (ang_tap_dance_bp_finished) + ,[CT_RBP] = ACTION_TAP_DANCE_FN (ang_tap_dance_bp_finished) +}; + +static uint16_t uni[32]; +static uint8_t unicnt; +static bool unimagic = false; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) + unregister_code (KC_LGUI); + + if (layer == HUN) { + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + } else if (layer == NMDIA) { + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + } else if (layer == PLVR) { + ergodox_right_led_1_on (); + ergodox_right_led_2_on (); + ergodox_right_led_3_on (); + } else if (layer == ADORE) { + ergodox_right_led_1_on (); + ergodox_right_led_2_on (); + ergodox_right_led_3_on (); + + ergodox_right_led_2_set (LED_BRIGHTNESS_HI); + } + + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || + ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { + ergodox_right_led_1_set (LED_BRIGHTNESS_HI); + ergodox_right_led_1_on (); + } else { + ergodox_right_led_1_set (LED_BRIGHTNESS_LO); + if (layer != NMDIA && layer != PLVR && layer != ADORE) + ergodox_right_led_1_off (); + } + + if (keyboard_report->mods & MOD_BIT(KC_LALT) || + ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) { + ergodox_right_led_2_set (LED_BRIGHTNESS_HI); + ergodox_right_led_2_on (); + } else { + ergodox_right_led_2_set (LED_BRIGHTNESS_LO); + if (layer != HUN && layer != NMDIA && layer != PLVR && layer != ADORE) + ergodox_right_led_2_off (); + } + + if (keyboard_report->mods & MOD_BIT(KC_LCTRL) || + ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) { + ergodox_right_led_3_set (LED_BRIGHTNESS_HI); + ergodox_right_led_3_on (); + } else { + ergodox_right_led_3_set (LED_BRIGHTNESS_LO); + if (layer != HUN && layer != PLVR && layer != ADORE) + ergodox_right_led_3_off (); + } + + LEADER_DICTIONARY() { + leading = false; + leader_end (); + +#if KEYLOGGER_ENABLE + SEQ_ONE_KEY (KC_D) { + ergodox_led_all_on(); + wait_ms(100); + ergodox_led_all_off(); + log_enable = !log_enable; + } +#endif + + SEQ_ONE_KEY (KC_T) { + time_travel = !time_travel; + } + + SEQ_ONE_KEY (KC_U) { + ang_do_unicode (); + } + + SEQ_TWO_KEYS (KC_LEAD, KC_U) { + unicnt = 0; + unimagic = true; + register_code(KC_RSFT); + TAP_ONCE(KC_U); + unregister_code(KC_RSFT); + } + + SEQ_ONE_KEY (KC_V) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")"); + } + + SEQ_ONE_KEY (KC_L) { + /* λ */ + ang_do_unicode (); + + uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0}; + ang_tap (codes); + } + + SEQ_ONE_KEY (KC_Y) { + uint16_t codes[] = {KC_BSLS, KC_O, KC_SLSH, 0}; + ang_tap (codes); + } + + SEQ_ONE_KEY (KC_S) { + ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC); + TAP_ONCE (KC_BSLS); + register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT); + ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC); + register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT); + TAP_ONCE (KC_SLSH); + ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC); + } + + SEQ_TWO_KEYS (KC_W, KC_M) { + register_code (KC_LALT); + register_code (KC_F2); + unregister_code (KC_F2); + unregister_code (KC_LALT); + + wait_ms (1000); + + uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0}; + ang_tap (codes); + register_code (KC_LGUI); + register_code (KC_UP); + unregister_code (KC_UP); + unregister_code (KC_LGUI); + } + + SEQ_ONE_KEY (KC_A) { + if (is_adore == 0) { + default_layer_and (0); + default_layer_or ((1UL << ADORE)); + eeconfig_update_default_layer ((1UL << ADORE)); + is_adore = 1; + + ergodox_led_all_off (); + ergodox_right_led_3_on (); + wait_ms (100); + ergodox_right_led_2_on (); + wait_ms (100); + ergodox_right_led_3_off (); + ergodox_right_led_1_on (); + wait_ms (100); + ergodox_right_led_2_off (); + wait_ms (100); + ergodox_right_led_1_off (); +#if ADORE_AUTOLOG + log_enable = true; +#endif + } else { +#if ADORE_AUTOLOG + log_enable = false; +#endif + is_adore = 0; + default_layer_and (0); + default_layer_or (1UL << BASE); + eeconfig_update_default_layer ((1UL << BASE)); + + ergodox_led_all_off (); + ergodox_right_led_1_on (); + wait_ms (100); + ergodox_right_led_2_on (); + wait_ms (100); + ergodox_right_led_1_off (); + ergodox_right_led_3_on (); + wait_ms (100); + ergodox_right_led_2_off (); + wait_ms (100); + ergodox_right_led_3_off (); + } + } + } +} + +static uint16_t last4[4]; + +bool is_uni_seq(char *seq) { + uint8_t i; + + for (i = 0; seq[i]; i++) { + uint16_t code; + if (('1' <= seq[i]) && (seq[i] <= '9')) + code = seq[i] - '1' + KC_1; + else if (seq[i] == '0') + code = KC_0; + else + code = seq[i] - 'a' + KC_A; + + if (i > unicnt) + return false; + if (uni[i] != code) + return false; + } + + if (uni[i] == KC_ENT || uni[i] == KC_SPC) + return true; + + return false; +} + +uint16_t hex_to_keycode(uint8_t hex) +{ + if (hex == 0x0) { + return KC_0; + } else if (hex < 0xA) { + return KC_1 + (hex - 0x1); + } else { + return KC_A + (hex - 0xA); + } +} + +void register_hex(uint16_t hex) { + bool leading_zeros = true; + + for(int i = 3; i >= 0; i--) { + uint8_t digit = ((hex >> (i*4)) & 0xF); + if (digit != 0) + leading_zeros = false; + else if (leading_zeros) + continue; + register_code(hex_to_keycode(digit)); + unregister_code(hex_to_keycode(digit)); + wait_ms(10); + } +} + +typedef struct { + char *symbol; + uint16_t codes[4]; +} qk_ucis_symbol_t; + +static qk_ucis_symbol_t ucis_symbol_table[] = { + {"poop", {0x1, 0xf4a9, 0}}, + {"rofl", {0x1, 0xf923, 0}}, + {"kiss", {0x1, 0xf619, 0}}, + {"snowman", {0x2603, 0}}, + {NULL, {}} +}; + +bool process_record_ucis (uint16_t keycode, keyrecord_t *record) { + uint8_t i; + + if (!unimagic) + return true; + + if (!record->event.pressed) + return true; + + uni[unicnt] = keycode; + unicnt++; + + if (keycode == KC_BSPC) { + if (unicnt >= 2) { + unicnt-= 2; + return true; + } else { + unicnt--; + return false; + } + } + + if (keycode == KC_ENT || keycode == KC_SPC) { + bool symbol_found = false; + + for (i = unicnt; i > 0; i--) { + register_code (KC_BSPC); + unregister_code (KC_BSPC); + wait_ms(10); + } + + ang_do_unicode(); + wait_ms(10); + for (i = 0; ucis_symbol_table[i].symbol; i++) { + if (is_uni_seq (ucis_symbol_table[i].symbol)) { + symbol_found = true; + for (uint8_t j = 0; ucis_symbol_table[i].codes[j]; j++) { + register_hex(ucis_symbol_table[i].codes[j]); + } + break; + } + } + if (!symbol_found) { + for (i = 0; i < unicnt - 1; i++) { + uint8_t code; + + if (uni[i] > KF_1) + code = uni[i] - KF_1 + KC_1; + else + code = uni[i]; + TAP_ONCE(code); + wait_ms (10); + } + } + + unimagic = false; + return true; + } + return true; +} + +bool process_record_user (uint16_t keycode, keyrecord_t *record) { +#if KEYLOGGER_ENABLE + if (log_enable) { + xprintf ("KL: col=%d, row=%d\n", record->event.key.col, + record->event.key.row); + } +#endif + + if (!process_record_ucis (keycode, record)) + return false; + + if (time_travel && !record->event.pressed) { + uint8_t p; + + // shift cache one to the left + for (p = 0; p < 3; p++) { + last4[p] = last4[p + 1]; + } + last4[3] = keycode; + + if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) { + uint16_t codes[] = {KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0}; + ang_tap (codes); + register_code (KC_RSFT); + register_code (KC_EQL); + unregister_code (KC_EQL); + unregister_code (KC_RSFT); + + uint16_t codes2[] = {KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0}; + ang_tap (codes2); + + return false; + } + } + + return true; +} diff --git a/keyboards/ergodox/keymaps/algernon/readme.md b/keyboards/ergodox/keymaps/algernon/readme.md index 6fe177511..26dfddbe6 100644 --- a/keyboards/ergodox/keymaps/algernon/readme.md +++ b/keyboards/ergodox/keymaps/algernon/readme.md @@ -16,11 +16,12 @@ Some of the things in the layout only work when one uses Spacemacs and GNOME und - [ADORE layer](#adore-layer) - [Hungarian layer](#hungarian-layer) - [Navigation and media layer](#navigation-and-media-layer) - - [One-handed layer](#one-handed-layer) - [Steno layer](#steno-layer) - [LED states](#led-states) * [Tools](#tools) - [Heatmap](#heatmap) +* [Special features](#special-features) + - [Unicode Symbol Input](#unicode-symbol-input) * [Building](#building) - [Using on Windows](#using-on-windows) * [Changelog](#changelog) @@ -38,7 +39,7 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest * The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap. * The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout. * The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode. -* The **Media** and **Hun** layer keys are one-shot, the **1Hand** and **STENO** keys are toggles. +* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle. * When holding any of the **Arrow** layer keys, the arrow layer activates while the layer key is held. Tapping the key produces the normal key. * Tapping the `:` key once yields `:`, tapping it twice yields `;`. * The **Lead** key allows me to type in a sequence of keys, and trigger some actions: @@ -51,6 +52,7 @@ At its core, this is a Dvorak layout, with some minor changes. The more interest - `LEAD v` prints the firmware version, the keyboard and the keymap. - `LEAD d` toggles logging keypress positions to the HID console. - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader. + - `LEAD LEAD u` enters the [Unicode symbol input][#unicode-symbol-input] mode. ## ADORE layer @@ -74,20 +76,6 @@ On this layer, the accented characters are at the same position as their base va This layer is primarily for navigating with the cursor or the mouse, and some media things. -## One-handed layer - -[![One-handed layer](images/one-handed-layer.png)](http://www.keyboard-layout-editor.com/#/gists/edff2495135955b8963198dace7f7ece) - -The one-handed layer is used in situations where the right hand is occupied, by mousing around, for example. Tapping the `OTHER` key switches which side is active. For the most part, keys remain in their usual position. When the right half is active, keys are mirrored to the left half. - -The differences are as follows: - -* The `ESC` key has been moved to the bottom row, so the `OTHER` key is easier to tap. -* Most keys on the thumb cluster now have dual uses, and these do not change when switching sides: - - The `Space`/`Backspace` key sends `Space` on tap, `Backspace` when held for longer than a normal tap. - - The `Enter`/`Shift` key sends `Enter` on short-tap, `Shift` on long-tap. -* The `Apps`/`BASE` key can be used to go back to the base layer, by long-tapping it. A short-tap will send the `App` key, as usual. - ## Steno layer [![Steno layer for Plover](images/steno-layer.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667) @@ -103,11 +91,25 @@ For the layers, the following rules apply: * When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active. * When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue* LEDs are on. * When the [Navigation and media layer](#navigation-and-media-layer) is active, the *red* and *green* ones are on. -* When the [One-handed layer](#one-handed-layer) is active, the *green* LED is on and bright, and either the *red* or the *blue* one is going to slowly blink, depending on the currently active side. * For the [Steno layer](#steno-layer), all LEDs will be turned on. Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on. +# Special features + +## Unicode Symbol Input + +Once in the Unicode Symbol Input mode, one is able to type in symbol names, press `Enter` or `Space`, and get the Unicode symbol itself back. When in the mode, a capital `U` is printed first. Once the sequence is finished, all of it is erased by sending enough `Backspace` taps, and the firmware starts the OS-specific unicode input sequence. Then, it looks up the symbol name, and enters the associated code. If it is not found, it will just replay the pressed keycodes. + +The currently supported symbols are: + +- `snowman`: ☃ +- `kiss`: 😙 +- `rofl`: 🤣 +- `poop`: 💩 + +This is an experimental feature, and may or may not work reliably. + # Tools ## Heatmap @@ -133,14 +135,14 @@ To make my workflow easier, this layout is maintained in [its own repository][al $ git clone https://github.com/jackhumbert/qmk_firmware.git $ cd qmk_firmware $ git clone https://github.com/algernon/ergodox-layout.git \ - keyboards/ergodox_ez/keymaps/algernon-master -$ make KEYBOARD=ergodox_ez KEYMAP=algernon-master + keyboards/ergodox/keymaps/algernon-master +$ make keyboard=ergodox keymap=algernon-master ``` From time to time, updates may be submitted back to the QMK repository. If you are reading it there, you can build the firmware like any other firmware included with it (assuming you are in the root directory of the firmware): ``` -$ make KEYBOARD=ergodox_ez KEYMAP=algernon +$ make keyboard=ergodox keymap=algernon ``` ## Using on Windows @@ -149,6 +151,16 @@ The keymap default to forcing NKRO, which seems to upset Windows, and except the # Changelog +## v1.5 - 2016-08-12 + +* The **1HAND** layer has been removed. +* A `Delete` key is now available on the right thumb cluster. +* The [ADORE](#adore-layer) layer received a major update, see the layout image above. +* It is now possible to enable automatic logging for the [ADORE](#adore-layer) layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default. +* The `~` key and the `Media Next/Prev` key have been swapped on the [base layer](#base-layer). +* On the **ARROW** layer, `Backspace` has been replaced by `Enter`. +* There is some experimental support for entering Unicode symbols. + ## v1.4 - 2016-07-29 * When toggling the key logging on or off, the LEDs will do a little dance. diff --git a/keyboards/ergodox/keymaps/jafo/jafo-Notes b/keyboards/ergodox/keymaps/jafo/jafo-Notes new file mode 100644 index 000000000..9376125e9 --- /dev/null +++ b/keyboards/ergodox/keymaps/jafo/jafo-Notes @@ -0,0 +1,10 @@ +These are notes on how to build and deploy the firmware to Ez, but they are +from before the qmk restructuring. + +cd qmk_firmware/keyboard/ergodox_ez +make KEYMAP=jafo +cp ergodox_ez.hex keymaps/jafo/ +/tmp/teensy.64bit +Open hex keymap file +Program +Upload diff --git a/keyboards/ergodox/keymaps/jafo/jafo-layout.pdf b/keyboards/ergodox/keymaps/jafo/jafo-layout.pdf Binary files differnew file mode 100644 index 000000000..189b49b12 --- /dev/null +++ b/keyboards/ergodox/keymaps/jafo/jafo-layout.pdf diff --git a/keyboards/ergodox/keymaps/jafo/jafo_highres.png b/keyboards/ergodox/keymaps/jafo/jafo_highres.png Binary files differnew file mode 100644 index 000000000..e3d7cef85 --- /dev/null +++ b/keyboards/ergodox/keymaps/jafo/jafo_highres.png diff --git a/keyboards/ergodox/keymaps/jafo/keymap.c b/keyboards/ergodox/keymaps/jafo/keymap.c new file mode 100644 index 000000000..4f1428f2b --- /dev/null +++ b/keyboards/ergodox/keymaps/jafo/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Grv | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | = | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Esc/Cmd| A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" | Del | Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Ctrl/Esc| Alt| | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + GUI_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(MDIA), + LT(SYMB,KC_GRV),KC_QUOT, KC_DELT, KC_LEFT,KC_RGHT, + CTL_T(KC_ESC), KC_LALT, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + TG(MDIA), KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| LEFT | DOWN | UP | RIGHT| | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | Lclk | Mclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/jafo/readme.md b/keyboards/ergodox/keymaps/jafo/readme.md new file mode 100644 index 000000000..c870dfd05 --- /dev/null +++ b/keyboards/ergodox/keymaps/jafo/readme.md @@ -0,0 +1,20 @@ +# ErgoDox EZ "jafo" Configuration + +This is a layout based on the ErgoDox Ez default layout, but with some +customizations I made for my use-case. I use Linux, vi and the i3 window +manager, so I made these changes: + +- Arrow keys laid out in vi positions in media layer. + +- Esc (tap) and Win (held) to the left of A. i3 uses Win key for navigation + and having that be symmetric on the left and right makes it easier. + +- Grave accent below equals, I was having a hard time using ~ + +- Layer 2 switch below the L1 switch, so I can go into a mode where I get + arrow keys under my vi motion fingers. + +- Making the Ctrl (held) and Esc (tap) on my thumbs symmetric. Not sure I + need that with the Esc left of A and Ctrl on the Z and / keys when held... + +![Jafo](jafo_highres.png) diff --git a/keyboards/ergodox/keymaps/ordinary/keymap.c b/keyboards/ergodox/keymaps/ordinary/keymap.c index bf0574ea2..302c41cc8 100644 --- a/keyboards/ergodox/keymaps/ordinary/keymap.c +++ b/keyboards/ergodox/keymaps/ordinary/keymap.c @@ -3,21 +3,18 @@ #include "debug.h" #include "action_layer.h" #include "action_util.h" -#include "mousekey.h" #define BASE 0 // default layer #define SYMB 1 // symbols layer #define MDIA 2 // media layer #define SPEC 3 // special layer -#define LCaps 10 // left caps-shift key -#define LSymb 11 // left symbol-shift key -#define LMdia 12 // left media-shift key -#define LSpec 13 // left special-shift key -#define RCaps 14 // right caps-shift key -#define RSymb 15 // right symbol-shift key -#define RMdia 16 // right media-shift key -#define RSpec 17 // right special-shift key +#define LSymb 10 // left symbol-shift key +#define LMdia 11 // left media-shift key +#define LSpec 12 // left special-shift key +#define RSymb 13 // right symbol-shift key +#define RMdia 14 // right media-shift key +#define RSpec 15 // right special-shift key #define MUL 20 // mouse up left #define MUR 21 // mouse up right @@ -25,123 +22,124 @@ #define MDR 23 // mouse down right /* - * The Ordinary Layout for the Ergodox EZ keyboard, v4 - * + * The Ordinary Layout for the Ergodox EZ keyboard, v4.20 + * * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com * * No rights reserved. This software is in the public domain. * Credit me if you are friendly but if you're a jerk don't bother. - * + * If you use or modify this layout I would love to hear from you. + * * Details: readme.md - * https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary + * https://github.com/nrrkeene/qmk_firmware/tree/master/keyboards/ergodox/keymaps/ordinary */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/******* Base Layer ******************************************************************************************************** +/******* Base Layer **************************************************************************************************** * - * ,------------------------------------------------------. ,------------------------------------------------------. - * | Special `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Special | - * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------| - * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media | - * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------| - * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | - * |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------| - * | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals | - * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------' - * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | - * `-----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | Home | End | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | PgUp | | Up | | | - * |Backsp| Del |------| |------| Enter| Space| - * | | | PgDn | | Down | | | - * `--------------------' `--------------------' + * ,------------------------------------------------------. ,------------------------------------------------------. + * | Special `~ | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | =+ Special | + * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------| + * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media | + * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------| + * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol | + * |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------| + * | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals | + * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------' + * | LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh | RCtrl | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | Home | End | | Left | Right| + * ,------|------|------| |------+------+------. + * | | | PgUp | | Up | | | + * |Backsp| Del |------| |------| Enter| Space| + * | | | PgDn | | Down | | | + * `--------------------' `--------------------' */ [BASE] = KEYMAP( // left hand - F(LSpec),KC_1,KC_2,KC_3 ,KC_4 ,KC_5 ,KC_ESC + F(LSpec) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC ,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G -,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP ,KC_BSPC,KC_DEL ,KC_PGDN - // right hand - ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec) - ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) - ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) - ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps) - ,KC_RGUI,KC_RALT,KC_HYPR ,KC_MEH ,KC_RCTL - ,KC_LEFT ,KC_RGHT - ,KC_UP - ,KC_DOWN ,KC_ENT ,KC_SPC + // right hand + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec) + ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) + ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb) + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_RGUI,KC_RALT,KC_HYPR ,KC_MEH ,KC_RCTL + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_DOWN ,KC_ENT ,KC_SPC ), -/******* Symbols Layer ***************************************************************************************************** +/******* Symbols Layer ************************************************************************************************* * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | Esc | | - | F6 | F7 | F8 | F9 | F10 | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | - * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| - * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | LCtrl | Meh |Hyper | LAlt | LGui | |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent| - * `-----------------------------------' `-------------------------------------' - * ,-------------. ,-------------. - * | Left | Right| | Home | End | - * ,------|------|------| |------+------+------. - * | | | Up | | PgUp | | | - * |Space |Enter |------| |------|BackSp| Del | - * | | | Down | | PgDn | | | - * `--------------------' `--------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | Esc | | - | F6 | F7 | F8 | F9 | F10 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | + * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| + * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | LCtrl | Meh |Hyper | LAlt | LGui | | 0 | . | = | + | Ent | + * `-----------------------------------' `-----------------------------------' + * ,-------------. ,-------------. + * | Left | Right| | Home | End | + * ,------|------|------| |------+------+------. + * | | | Up | | PgUp | | | + * |Space |Enter |------| |------|BackSp| Del | + * | | | Down | | PgDn | | | + * `--------------------' `--------------------' */ [SYMB] = KEYMAP( // left hand KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_ESC ,KC_TRNS ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) -,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB -,KC_LCTL ,KC_MEH ,KC_HYPR,KC_LALT ,KC_LGUI +,KC_LCTL ,KC_MEH ,KC_HYPR ,KC_LALT ,KC_LGUI ,KC_LEFT ,KC_RGHT ,KC_UP ,KC_SPC ,KC_ENT ,KC_DOWN - // right hand - ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS - ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS - ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_TRNS - ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_TRNS - ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT) - ,KC_HOME ,KC_END - ,KC_PGUP - ,KC_PGDN ,KC_BSPC ,KC_DEL + // right hand + ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS + ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_TRNS + ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_TRNS + ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT + ,KC_HOME ,KC_END + ,KC_PGUP + ,KC_PGDN ,KC_BSPC ,KC_DEL ), /******* Media Layer ******************************************************************************************************* * - * ,---------------------------------------------------------------. ,---------------------------------------------------------------. - * | | F11 | F12 | F13 | F14 | F15 | Esc | | | F16 | F17 | F18 | F19 | F20 | | - * |------+---------+---------+---------+---------+----------------| |------+---------+---------+---------+---------+---------+------| - * | |Shut Down|MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll| |Scroll|PrintScrn| Home | Up | PgUp | Mail | | - * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| - * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | - * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| - * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | - * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' - * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| - * `---------------------------------------------' `---------------------------------------------' - * ,-------------. ,-------------. - * | Stop |Refrsh| | Prev | Next | - * ,------|------|------| |------+------+------. - * |Brwser|Brwser|Search| |VolUp | | | - * |Back | Fwd |------| |------| Stop | Play-| - * | | | Home | |VolDn | | Pause| - * `--------------------' `--------------------' + * ,---------------------------------------------------------------. ,---------------------------------------------------------------. + * | | F11 | F12 | F13 | F14 | F15 | Esc | | | F16 | F17 | F18 | F19 | F20 | | + * |------+---------+---------+---------+---------+----------------| |------+---------+---------+---------+---------+---------+------| + * | |Shut Down|MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll| |Scroll|PrintScrn| Home | Up | PgUp | Mail | | + * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------| + * | | Sleep |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | MyComp | | + * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------| + * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | | + * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------' + * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl| + * `---------------------------------------------' `---------------------------------------------' + * ,-------------. ,-------------. + * | Stop |Refrsh| | Prev | Next | + * ,------|------|------| |------+------+------. + * |Brwser|Brwser|Search| |VolUp | | | + * |Back | Fwd |------| |------| Stop | Play-| + * | | | Home | |VolDn | | Pause| + * `--------------------' `--------------------' */ [MDIA] = KEYMAP( // left hand @@ -166,67 +164,63 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /******* Special Layer ***************************************************************************************************** * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | Esc | | | | | | | | | | | | Bspc | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | |------| |------| | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | RShift | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | Esc | | | | | | | | | | | - | Bspc | | + * |-------------+------+------+------+------+-------------| |------+------+------+------+------+------+-------------| + * | Media Lock | | | | | | | | | | | | [ | ] | Media Lock | + * |-------------+------+------+------+------+------| | | |------+------+------+------+------+-------------| + * | Symbol Lock | | | | | |------| |------| | | | | | Symbol Lock | + * |-------------+------+------+------+------+------| | | |------+------+------+------+------+-------------| + * | Caps Lock | | | | | | | | | | | | | | Caps Lock | + * `-------------+------+------+------+------+-------------' `-------------+------+------+------+------+-------------' + * | | | | | | | | | | | | + * `------------------------------------' `------------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' */ [SPEC] = KEYMAP( // left hand KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_CAPS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS,KC_TRNS ,KC_TRNS - // right hand - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS + // right hand + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_MINS ,KC_BSPC ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LBRC ,KC_RBRC ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_CAPS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS + ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ) }; const uint16_t PROGMEM fn_actions[] = { // the faux shift keys are implemented as macro taps - [LCaps] = ACTION_MACRO_TAP(LCaps) - ,[LSymb] = ACTION_MACRO_TAP(LSymb) + [LSymb] = ACTION_MACRO_TAP(LSymb) ,[LMdia] = ACTION_MACRO_TAP(LMdia) ,[LSpec] = ACTION_MACRO_TAP(LSpec) - ,[RCaps] = ACTION_MACRO_TAP(RCaps) ,[RSymb] = ACTION_MACRO_TAP(RSymb) ,[RMdia] = ACTION_MACRO_TAP(RMdia) ,[RSpec] = ACTION_MACRO_TAP(RSpec) }; -uint16_t caps_shift = 0; uint16_t symb_shift = 0; uint16_t mdia_shift = 0; +uint16_t spec_shift = 0; -bool symb_lock = false; bool mdia_lock = false; +bool symb_lock = false; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -237,50 +231,28 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // only because sometimes rapid pressing led to irregular events; this way the states // are self healing during use. - case LCaps: // both caps-shift keys trigger Left Shift - case RCaps: // so they don't interfere with the magic combo - if (record->event.pressed && !record->tap.count) { - if(++caps_shift > 2) caps_shift = 2; - if(caps_shift == 2) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } else if(caps_shift == 1) { - register_code(KC_LSFT); - } - } else { - if(--caps_shift < 0) caps_shift = 0; - if(caps_shift == 0) unregister_code(KC_LSFT); - } - break; - - case LSymb: - if (record->event.pressed) { - if(++symb_shift > 2) symb_shift = 2; - if(symb_shift == 2) { - symb_lock = !symb_lock; - } else if(symb_shift == 1) { - layer_on(SYMB); - } - } else { - if(--symb_shift < 0) symb_shift = 0; - if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB); + case LSymb: // + if (record->event.pressed) { // when the LSymb button is pressed + if(++symb_shift > 2) mdia_shift = 2; // increment the symb shift count, max two + if(spec_shift) symb_lock = !symb_lock; // if the Special layer is on, toggle the shift lock + layer_on(SYMB); // in any case, turn on the Symbols layer + } else { // when the LSymb button is released + if(--symb_shift < 0) symb_shift = 0; // decrement the shift count, minimum zero + if((!symb_shift) && (!symb_lock)) layer_off(SYMB); // if both shifts are released and the lock is off, turn off the Symbols layer } break; case LMdia: if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { + if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { register_code(KC_TAB); } else { + if(spec_shift) mdia_lock = !mdia_lock; if(++mdia_shift > 2) mdia_shift = 2; - if(mdia_shift == 2) { - mdia_lock = !mdia_lock; - } else if(mdia_shift == 1) { - layer_on(MDIA); - } + layer_on(MDIA); } } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { + if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { unregister_code(KC_TAB); } else { if(--mdia_shift < 0) mdia_shift = 0; @@ -290,35 +262,36 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case LSpec: - if (record->event.pressed) { - if (record->tap.count && !record->tap.interrupted) { - register_code(KC_GRV); + if (record->event.pressed) { // when the LSpec button is pressed + if(symb_shift) symb_lock == !symb_lock; // if another layer button is engaged, then + else if(mdia_shift) mdia_lock = !mdia_lock; // lock that layer, be it caps or symb or mdia + else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) { + register_code(KC_GRV); // otherwise, if it's an uninterrupted tap, emit a char } else { - layer_on(SPEC); + if(++spec_shift > 2) spec_shift = 2; + layer_on(SPEC); // otherwise, turn on the Special layer } } else { - if(record->tap.count && !record->tap.interrupted) { + if(record->tap.count && !record->tap.interrupted && (!spec_shift)) { unregister_code(KC_GRV); } else { - layer_off(SPEC); + if(--spec_shift < 0) spec_shift = 0; + if(!spec_shift) layer_off(SPEC); } } break; case RSymb: if (record->event.pressed) { - if (record->tap.count && (!symb_shift) && (!symb_lock)) { + if (record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) { register_code(KC_QUOT); } else { if(++symb_shift > 2) symb_shift = 2; - if(symb_shift == 2) { - symb_lock = !symb_lock; - } else if(symb_shift == 1) { - layer_on(SYMB); - } + if(spec_shift) symb_lock = !symb_lock; + layer_on(SYMB); } } else { - if(record->tap.count && symb_shift == 0) { + if(record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) { unregister_code(KC_QUOT); } else { if(--symb_shift < 0) symb_shift = 0; @@ -329,18 +302,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RMdia: if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { + if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { register_code(KC_BSLS); } else { if(++mdia_shift > 2) mdia_shift = 2; - if(mdia_shift == 2) { - mdia_lock = !mdia_lock; - } else if(mdia_shift == 1) { - layer_on(MDIA); - } + if(spec_shift) mdia_lock = !mdia_lock; + layer_on(MDIA); } } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { + if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { unregister_code(KC_BSLS); } else { if(--mdia_shift < 0) mdia_shift = 0; @@ -351,16 +321,20 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case RSpec: if (record->event.pressed) { - if (record->tap.count && !record->tap.interrupted) { + if(symb_shift) symb_lock = !symb_lock; + else if(mdia_shift) mdia_lock = !mdia_lock; + else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) { register_code(KC_EQL); } else { + if(++spec_shift > 2) spec_shift = 2; layer_on(SPEC); } } else { - if(record->tap.count && !record->tap.interrupted) { + if(record->tap.count && !record->tap.interrupted && (!spec_shift)) { unregister_code(KC_EQL); } else { - layer_off(SPEC); + if(--spec_shift < 0) spec_shift = 0; + if(!spec_shift) layer_off(SPEC); } } break; @@ -419,7 +393,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // none break; } - + return MACRO_NONE; }; @@ -431,7 +405,9 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { // shift or caps lock turns on red light - if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) { + if((keyboard_report->mods & MOD_BIT(KC_LSFT)) + || (keyboard_report->mods & MOD_BIT(KC_RSFT)) + || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) { ergodox_right_led_1_on(); } else { ergodox_right_led_1_off(); @@ -451,4 +427,3 @@ void matrix_scan_user(void) { ergodox_right_led_3_off(); } }; - diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-base.png b/keyboards/ergodox/keymaps/ordinary/ordinary-base.png Binary files differindex 9c561a10a..831db4f5d 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-base.png +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-base.png diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-base.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-base.txt index 25731ea2e..7763c3d37 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-base.txt +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-base.txt @@ -1,24 +1,24 @@ [{x:3.5},"#\n3",{x:10.5},"*\n8"], [{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"], [{y:-0.875,x:5.5},"%\n5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc"},"_\n\n\n\n\n\n-","^\n6"], -[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#2277ff",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"], +[{y:-0.875,c:"#c6c600",w:1.5},"Special\n\n~\n\n\n\nShift\n`",{c:"#cccccc"},"!\n1",{x:14.5},")\n0",{c:"#c6c600",w:1.5},"+\n\nSpecial\n\n\n\n=\nShift"], [{y:-0.375,x:3.5,c:"#cccccc"},"E",{x:10.5},"I"], [{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"], [{y:-0.875,x:5.5},"T",{h:1.5},"{\n\n\n\n\n\n[",{x:4.5,h:1.5},"}\n\n\n\n\n\n]","Y"], -[{y:-0.875,c:"#2277ff",w:1.5},"Media\n\nTab\n\n\n\nShift",{c:"#cccccc"},"Q",{x:14.5},"P",{c:"#2277ff",w:1.5},"|\n\\\nMedia\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#cccccc"},"D",{x:10.5},"K"], +[{y:-0.875,c:"#c6c600",t:"#002299",w:1.5},"Media\n\nTab\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"Q",{x:14.5},"P",{c:"#c6c600",t:"#002299",w:1.5},"|\n\\\nMedia\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000"},"D",{x:10.5},"K"], [{y:-0.875,x:2.5},"S",{x:1},"F",{x:8.5},"J",{x:1},"L"], [{y:-0.875,x:5.5},"G",{x:6.5},"H"], -[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc"},"A",{x:14.5},":\n;",{c:"#2277ff",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"], -[{y:-0.625,x:6.5,c:"#54d6de",fa:[0,0,0,1],h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"], +[{y:-0.875,c:"#c6c600",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"A",{x:14.5},":\n;",{c:"#c6c600",t:"#007d00",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#ff8500",t:"#000000",fa:[0,0,0,1],h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"], [{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"], [{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."], [{y:-0.875,x:5.5},"B",{x:6.5},"N"], -[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], +[{y:-0.875,c:"#c6c600",t:"#9e0000",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#cccccc",t:"#000000"},"Z",{x:14.5},"?\n/",{c:"#c6c600",t:"#9e0000",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#dddd77",t:"#000000"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], [{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ff8500"},"Home","End"], [{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], [{x:2},"Page\n\n\n\n\n\nDown"], [{r:-30,rx:13,y:-1,x:-3},"Left","Right"], diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-media.png b/keyboards/ergodox/keymaps/ordinary/ordinary-media.png Binary files differindex 99e5ed80b..5ff3f5338 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-media.png +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-media.png diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-media.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-media.txt index 4eccc9f35..e1467b22e 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-media.txt +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-media.txt @@ -1,27 +1,27 @@ [{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"], [{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"], [{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#737373",a:7},"",{c:"#99de2a",a:4},"F16"], -[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"], -[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#ffb063"},"Home",{x:1},"Page\n\n\n\n\n\nUp"], -[{y:-0.875,x:5.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#e6e067"},"Print\n\n\n\n\n\nScreen"], -[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#e6e067",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#ff0000",w:1.5},"\n\nMedia\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#ff8500",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], +[{y:-0.875,c:"#c6c600",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#c6c600",w:1.5},"\n\nShift\n\n\n\n\nLock"], +[{y:-0.375,x:3.5,c:"#0066cc"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"], +[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nUpLeft",{x:1},"Mouse\n\n\n\n\n\nUpRgt",{x:8.5,c:"#1e8fff"},"Home",{x:1},"Page\n\n\n\n\n\nUp"], +[{y:-0.875,x:5.5,c:"#9977ee"},"Vol\n\n\n\n\n\nUp",{c:"#1e8fff",h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#9977ee"},"Print\n\n\n\n\n\nScreen"], +[{y:-0.875,c:"#000000",t:"#3f68ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#9977ee",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#3f68ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#0066cc",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], [{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nLeft",{x:1},"Mouse\n\n\n\n\n\nRight",{x:8.5},"Cursor\n\n\n\n\n\nLeft",{x:1},"Cursor\n\n\n\n\n\nRight"], -[{y:-0.875,x:5.5,c:"#e6e067"},"Vol\n\n\n\n\n\nDown",{x:6.5},"Num\n\n\n\n\n\nLock"], -[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#e6e067"},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#2277ff",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], -[{y:-0.625,x:6.5,c:"#ffb063",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"], -[{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], -[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#ffb063"},"End",{x:1},"Page\n\n\n\n\n\nDown"], -[{y:-0.875,x:5.5,c:"#e6e067"},"Mute",{x:6.5,c:"#737373",a:7},""], -[{y:-0.875,c:"#2277ff",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,w:1.5},"\n\nCapitals\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#ff8500"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063",fa:[0,0,0,1]},"Delete\n\n\nOption"], -[{y:-0.875,x:2.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert\n\n\nCmd",{x:1,c:"#77aaff"},"Hyper"], +[{y:-0.875,x:5.5,c:"#9977ee"},"Vol\n\n\n\n\n\nDown",{x:6.5},"Num\n\n\n\n\n\nLock"], +[{y:-0.875,c:"#c6c600",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#9977ee",t:"#000000"},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#c6c600",t:"#007d00",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#1e8fff",t:"#000000",h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"], +[{y:-0.75,x:3.5,c:"#0066cc"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], +[{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nDnLeft",{x:1},"Mouse\n\n\n\n\n\nDnRgt",{x:8.5,c:"#1e8fff"},"End",{x:1},"Page\n\n\n\n\n\nDown"], +[{y:-0.875,x:5.5,c:"#9977ee"},"Mute",{x:6.5,c:"#737373",a:7},""], +[{y:-0.875,c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#737373",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#9e0000",a:4,w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#0066cc",t:"#000000"},"Middle\n\n\n\n\n\nClick",{x:10.5,c:"#1e8fff",fa:[0,0,0,1]},"Delete\n\n\nOption"], +[{y:-0.875,x:2.5,c:"#0066cc"},"Left\n\n\n\n\n\nClick",{x:1},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#1e8fff"},"Insert\n\n\nCmd",{x:1,c:"#dddd77"},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Crtl\n\n\nRCtrl"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ccbb00"},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#6633ee"},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], [{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"], [{x:2},"Home\n\n\nBrowser"], [{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"], -[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#ccbb00",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"], -[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nDown"] +[{x:-3,c:"#9977ee"},"Vol\n\n\n\n\n\nUp",{c:"#6633ee",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"], +[{x:-3,c:"#9977ee"},"Vol\n\n\n\n\n\nDown"] diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-special.png b/keyboards/ergodox/keymaps/ordinary/ordinary-special.png Binary files differindex 6eecf447e..4fb9d1d16 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-special.png +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-special.png diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-special.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-special.txt index a08827c6d..97f40f9db 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-special.txt +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-special.txt @@ -1,21 +1,21 @@ [{x:3.5,a:7},"",{x:10.5},""], -[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], -[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""], -[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1,a:4},"_\n\n\n\n\n\n-"], +[{y:-0.875,x:5.5,a:7},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""], +[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#ff8500"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""], +[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1,a:4},"{\n["], +[{y:-0.875,x:5.5,a:7},"",{h:1.5},"",{x:4.5,h:1.5},"",""], +[{y:-0.875,c:"#c6c600",t:"#002299",a:4,w:1.5},"Media\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5,a:4},"\n\n}\n]",{c:"#c6c600",t:"#002299",w:1.5},"Media\n\n\n\n\n\nLock"], [{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""], -[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], -[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""], -[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], -[{y:-0.375,x:3.5},"",{x:10.5},""], [{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], [{y:-0.875,x:5.5},"",{x:6.5},""], -[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], -[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""], +[{y:-0.875,c:"#c6c600",t:"#007d00",a:4,w:1.5},"Symbols\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#007d00",a:4,w:1.5},"Symbols\n\n\n\n\n\nLock"], +[{y:-0.625,x:6.5,c:"#cccccc",t:"#000000",a:7,h:1.5},"",{x:4.5,h:1.5},""], [{y:-0.75,x:3.5},"",{x:10.5},""], [{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], [{y:-0.875,x:5.5},"",{x:6.5},""], -[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"], -[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""], +[{y:-0.875,c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nLock",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#c6c600",t:"#9e0000",a:4,w:1.5},"Capitals\n\n\n\n\n\nLock"], +[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""], [{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""], [{y:-0.75,x:0.5},"","",{x:14.5},"",""], [{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""], diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.png b/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.png Binary files differindex e4de64a96..dd9086329 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.png +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.png diff --git a/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt b/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt index e199f5c59..001bf370d 100644 --- a/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboards/ergodox/keymaps/ordinary/ordinary-symbol.txt @@ -1,24 +1,24 @@ [{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"], [{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"], [{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#bbddbb"},"_\n\n\n\n\n\n-",{c:"#99de2a"},"F6"], -[{y:-0.875,c:"#2277ff",w:1.5},"Special\n\n\n\n\n\nShift",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nSpecial\n\n\n\n\nShift"], +[{y:-0.875,c:"#c6c600",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#c6c600",w:1.5},"\n\nShift\n\n\n\n\nLock"], [{y:-0.375,x:3.5,c:"#bbddbb"},"{",{x:10.5,c:"#89b087"},"8"], [{y:-0.875,x:2.5,c:"#bbddbb"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"], [{y:-0.875,x:5.5,c:"#bbddbb"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"], -[{y:-0.875,c:"#2277ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#bbddbb"},"!",{x:14.5,c:"#89b087"},"/",{c:"#2277ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#bbddbb"},"(",{x:10.5,c:"#89b087"},"5"], +[{y:-0.875,c:"#c6c600",t:"#002299",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"!",{x:14.5,c:"#89b087"},"/",{c:"#c6c600",t:"#002299",w:1.5},"\n\nMedia\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#bbddbb",t:"#000000"},"(",{x:10.5,c:"#89b087"},"5"], [{y:-0.875,x:2.5,c:"#bbddbb"},"$",{x:1},")",{x:8.5,c:"#89b087"},"4",{x:1},"6"], [{y:-0.875,x:5.5,c:"#bbddbb"},"`",{x:6.5},"/"], -[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], -[{y:-0.625,x:6.5,c:"#54d6de",t:"#000000",fa:[0,0,0,1],h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"], +[{y:-0.875,c:"#000000",t:"#007d00",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#007d00",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#ff8500",t:"#000000",fa:[0,0,0,1],h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"], [{y:-0.75,x:3.5,c:"#bbddbb"},"[",{x:10.5,c:"#89b087"},"2"], [{y:-0.875,x:2.5,c:"#bbddbb"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"], [{y:-0.875,x:5.5,c:"#bbddbb"},"~",{x:6.5},"\\"], -[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], -[{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5,c:"#89b087"},".\n\n\nOption"], -[{y:-0.875,x:2.5,c:"#77aaff"},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5,c:"#89b087"},"0\n\n\nCmd",{x:1},"=\n\n\nHyper"], -[{y:-0.75,x:0.5,c:"#77aaff"},"Ctrl\n\n\nLCtrl","Meh",{x:14.5,c:"#89b087"},"+\n\n\nMeh","Enter\n\n\nCtrl"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Left","Right"], +[{y:-0.875,c:"#c6c600",t:"#9e0000",w:1.5},"Capitals\n\n\n\n\n\nShift",{c:"#bbddbb",t:"#000000"},"%",{x:14.5,c:"#89b087"},"-",{c:"#c6c600",t:"#9e0000",w:1.5},"\n\nCapitals\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#dddd77",t:"#000000"},"Option\n\n\nLAlt",{x:10.5,c:"#89b087"},"."], +[{y:-0.875,x:2.5,c:"#dddd77"},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5,c:"#89b087"},"0",{x:1},"="], +[{y:-0.75,x:0.5,c:"#dddd77"},"Ctrl\n\n\nLCtrl","Meh",{x:14.5,c:"#89b087"},"+","Enter"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#ff8500"},"Left","Right"], [{h:2},"Space",{h:2},"Enter","Up"], [{x:2},"Down"], [{r:-30,rx:13,y:-1,x:-3},"Home","End"], diff --git a/keyboards/ergodox/keymaps/ordinary/readme.md b/keyboards/ergodox/keymaps/ordinary/readme.md index 6465cd79e..820b80b45 100644 --- a/keyboards/ergodox/keymaps/ordinary/readme.md +++ b/keyboards/ergodox/keymaps/ordinary/readme.md @@ -10,66 +10,51 @@ no rights reserved, use for any purposes, credit me if you are a nice person ## The Base Layout ## -* The light blue keys are modifiers: traditional Control, Option, and Command keys, plus Hyper and Meh -* The dark blue keys are Shift keys: Capitals Shift (traditional shift), Symbol Shift, and Media Shift; plus a Shift Lock key -* Several dark blue keys double for entry of characters which would typically be in those locations -* The turquoise keys are text navigation and manipulation -* The red keys is Escape and it is always found in that location no matter what +* *White Keys* are all the normal characters and symbols in all the normal locations (except for the brackets). +* *Modifier Keys* are light yellow and in the traditional location: Control, Option, Command, plus Hyper and Meh. +* *Shift Keys* are dark yellow, found on the outsides of the keyboard. Capitals Shift (traditional shift) is found in the usual place and above that is found Symbol Shift, Media Shift, and Special Shift (Shift Lock). +* Several of the shift keys double for entry of characters which would typically be in those locations. +* *Thumb Keys* shown in orange are for text navigation and manipulation. +* *Escape* is red and it is always found in that location no matter what. ![Ordinary base layout](ordinary-base.png) -This layout puts the modifier keys along the bottom of the keyboard where they are on most keyboards. They are in the regular order, with the addition of Hyper and Meh keys. The modifier keys are all in the same place on all layers, although some layers also assign symbols on those buttons. On the outside edges are the Shift keys. The traditional shift key is called Capitals Shift and it is in the normal location. Above that are Symbols Shift and Media Shift. Each Shift key momentarily switches the layout to that layer, and if you use the Shift Lock button you can lock the layout to that layer. - -Touch typists will also find tilde, tab, equals/plus, slash/pipe, and quote/double-quote sharing space on those Shift keys where they would probably be on a common keyboard. Other than the turquoise keys the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway so only Escape really requires retraining of muscle memory, and see below for the Special Escape Sequence. - -The four big turquoise keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another. +The four big orange keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another. The Forward Tab and Backward Tab keys are in their locations mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code. ## The Symbols Layer ## -* The light green keys are the eponymous symbols -* The bright green keys are F-Keys -* The dark green keys constitute a number pad -* The turquoise keys are the *reverse* of the turquoise keys on the base layer +* *Symbols* shown in light green. All kinds of brackets are available on this layer. Ampersand and Pipe justapose each other. Pipe, slash, and backslash are arranged in a column. +* *F-Keys* are bright green and overlay the row of numerals. +* *Number pad* in dark green under the right hand includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads so that NumLock is not needed. +* *Thumb keys* on this layer are the *reverse* of the orange keys on the base layer, with the keys either mirrored or shifted. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the turquoise keys, and Enter is right where it should be. ![Ordinary symbol layout](ordinary-symbol.png) -The Ergodox EZ ships with the "Coder Layer" which I like to call the Symbols layer. There are some significant improvements in The Ordinary Layout over the default layout. - -The symbol keys are mostly the same as on the default layout, which did a good job in this regard, but with a few enhancements: - -* Angle brackets on this layer mean that curly, square, and angle brackets are all available on different layers of the same two buttons. Also, they mean that all kinds of brackets, including parentheses, are available on both the Base and Symbols layers. -* The slash, backslash, and pipe characters are grouped together as a memory aid. -* The & and | symbols are juxtaposed as a memory aid - -The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads, because this layout does not use a Num Lock key to switch the buttons between numeric keycodes and navigational keycodes. See the explanation in The Media Layout section about navigation using these same buttons. - -Finally, consider the turquoise text-nav keys. Here in the Symbols layer, these are *reversed* from the base layer, with the keys either mirrored or shifted. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the turquoise keys, and Enter is right where it should be. +The Symbols Layer is based on the Coder Layer from the default Ergodox EZ layout. I slightly rearranged the symbols, added some symbols, expanded the number pad, and straightened out the F-Keys. It's very handy to have the symbols directly underneath the normal typing keys. ## The Media Layer ## -* The dark orange keys on the left move the mouse cursor -* The dark orange keys on the right move the text cursor -* The light orange keys are for scrolling and paging -* The bright green keys are more F-keys -* The dark yellow keys signal Web and Audio applications -* The light yellow keys signal the operating system +* *Mouse Cursor Keys* are under the left hand, shown in dark blue. Diagonal keys won't automatically repeat unless combined with other keys. Buttons to left- middle- and right-click the mouse are also featured. +* *Text Cursor Keys* are under the right hand, shown in dark blue. They overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand. +* *Scrolling and Paging* keys are shown in light blue and have some useful redundancy across the layout. +* Higher-order *F-Keys* are shown in bright green overylaying the numerals. +* *Application Keys* to control web browsers and audio players are dark purple but don't get too excited because these have weak support on operating systems I've looked at. Good luck. +* The light purple keys are various operating system keys such as NumLock and Mute and a button to navigate to My Computer (usually your home dir). * The dark gray keys do nothing in case you bump them by accident ![Ordinary media layout](ordinary-media.png) -This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents. +This layer is a substantial extension of the Media layer on the Ergodox EZ default layout. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents. -Moreover, the orange keys on the right overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand. - -Alas, the yellow keys have at best spotty success with common software. Good luck with those but don't expect too much. +Keys to directly interact with the operating system are also found on this layer, such as volume and shutdown. ## Switching Between Layers ## In addition to Symbols and Media there is the Capitals layer which is exactly the same as pressing the shift key. Each layer is accessed by a shift key on each edge of the keyboard and corresponds to one of the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). The color of a layer illuminates when the layer is active. -Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. If you press both of a pair of shift keys, the layer will lock on until you press both shift keys again. For instance, the widely and rightly loathed Caps Lock is engaged by pressing both Capitals Shift buttons. All the Shift keys work this way. +Shift buttons work in the expected way: press them and all of the keys switch to that layer; release them and the keys switch back to the base layer. Lock the shift keys using the Shift Lock button, which is the same as the Special Shift button. Multiple layers can be turned on at once. The Capitals layer will affect characters on other layers to capitalize. Other layers, however, don't 'mix': Symbols blankets the base layout; Media blankets Symbols. @@ -77,27 +62,29 @@ Multiple layers can be turned on at once. The Capitals layer will affect charact ![Ordinary special layout](ordinary-special.png) +The Special Shift layer is mostly used to lock the shift keys but in order to make this layout more _ordinary_ there are a few special sequences which put some keys near their most common traditional locations. + ### Escape ### -The One True Location for the Escape key is segregated way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one is home to the tilde (er, grave) which is commonly found there. In the Ordinary layout the Escape key is found on all layers in the prominent location in the corner next to the 5, whnich is easy to remember, and yet it isn't natural for those of us with muscle memory flicking our wrists up and to the left looking for Escape. +The One True Location for the Escape key is segregated way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one is home to the tilde (er, grave) which is commonly found there. In the Ordinary layout the Escape key is found on all layers in the prominent location in the corner next to the 5, which is easy to remember, and yet it isn't natural for those of us with muscle memory flicking our wrists up and to the left looking for Escape. The Ordinary layout offers as a consolation prize a Special sequence for Escape: Special Shift + 1. This is natural so you can tap the top left button, then the button next to it and get Escape. This gesture works in all layers. ### Backspace ### -At the top right corner of the Ergodox EZ you can a gesture similar to the special Escape sequence, using the 0 key, to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times. +At the top right corner of the Ergodox EZ you can a gesture similar to the special Escape sequence using the 0 key to produce a Backspace. Users of this keyboard and this layout are well advised to learn to use their thumbs for deleting text, but sometimes you are doing other computery things and just want to flick your digits up to the right and press backspace a bunch times. -### RShift ### +### Other Characters ### -The Ordinary Layout locks layers by pressing both of a pair of shift keys. This interferes with the QMK firmware magic sequence, which is LShift+RShift. To work around this, both of the Capitals Shift keys produce a *Left Shift* keystroke. If for some reason a person needs *Right Shift* they can find it by pressing a Special Shift key, then the Capitals Shift key on the right side of the keyboard. +The Escape and Backspace special sequences are so useful why not have a few more? You can find dash under 9, left bracket under o, and right bracket under p. That's pretty much all the characters from the top right corner of the keyboard which moved to make room for the columnar layout. **** -The Ordinary Layout for the Ergodox EZ keyboard, v4 +The Ordinary Layout for the Ergodox EZ keyboard, v4.20 Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com No rights reserved. This software is in the public domain. Credit me if you are friendly but if you're a jerk don't bother. Details: readme.md - https://github.com/nrrkeene/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/ordinary + https://github.com/nrrkeene/qmk_firmware/tree/master/keyboards/ergodox/keymaps/ordinary diff --git a/keyboards/ergodox/keymaps/xyverz/keymap.c b/keyboards/ergodox/keymaps/xyverz/keymap.c new file mode 100644 index 000000000..08ee5aeda --- /dev/null +++ b/keyboards/ergodox/keymaps/xyverz/keymap.c @@ -0,0 +1,312 @@ +/* + * About this keymap: + * + * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak + * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner + * keys. I've decided to continue using this layout with my ErgoDox. + * + * The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional + * keys as shown in the diagrams. The Colemak layout is merely an adaptation of that. + * + * I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck + * layouts. + * + */ + +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +#define _DV 0 // Dvorak layer +#define _QW 1 // Qwerty layer +#define _CM 2 // Colemak layer +#define _MD 3 // Media Layer +#define _KP 4 // Keypad Layer + +// Macro name shortcuts +#define DVORAK M(_DV) +#define QWERTY M(_QW) +#define COLEMAK M(_CM) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Layer 0 : Dvorak + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | ' | , | . | P | Y | | | | F | G | C | R | L | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - | + * |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| + * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCTL | LALT | | RALT | RCTL | + * ,------|------|------| |------+------+------. + * | | | Home | | PgUp | | | + * | BkSp | Del |------| |------| Enter| Space| + * | | | End | | PgDn | | | + * `--------------------' `--------------------' + * + */ +[_DV] = KEYMAP( + // left hand + KC_RBRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, XXXXXXX, + KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(_MD), + KC_LGUI, KC_GRV, KC_INS, KC_LEFT, KC_RGHT, + KC_LCTL, KC_LALT, + KC_HOME, + KC_BSPC, KC_DEL, KC_END, + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, + XXXXXXX, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + MO(_KP), KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_UP, KC_DOWN, KC_SLSH, KC_EQL, KC_RGUI, + KC_RALT, KC_RCTL, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC + ), + + +/* Layer 1: QWERTY + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | CapsLk | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCTL | LALT | | RALT | RCTL | + * ,------|------|------| |------+------+------. + * | | | Home | | PgUp | | | + * | BkSp | Del |------| |------| Enter| Space| + * | | | End | | PgDn | | | + * `--------------------' `--------------------' + */ +[_QW] = KEYMAP( + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MD), + KC_LGUI, KC_GRV, KC_INS, KC_LEFT, KC_RGHT, + KC_LCTL, KC_LALT, + KC_HOME, + KC_BSPC, KC_DEL, KC_END, + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + MO(_KP), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI, + KC_LALT, KC_LCTL, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC + ), + + +/* Layer 2 : Colemak + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSpc | A | R | S | T | D |------| |------| H | N | E | I | O | ' | + * |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCTL | LALT | | RALT | RCTL | + * ,------|------|------| |------+------+------. + * | | | Home | | PgUp | | | + * | BkSp | Del |------| |------| Enter| Space| + * | | | End | | PgDn | | | + * `--------------------' `--------------------' + */ +[_CM] = KEYMAP( + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DELT, KC_Q, KC_W, KC_F, KC_P, KC_G, XXXXXXX, + KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MD), + KC_LGUI, KC_GRV, KC_INS, KC_LEFT, KC_RGHT, + KC_LCTL, KC_LALT, + KC_HOME, + KC_BSPC, KC_DEL, KC_END, + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + XXXXXXX, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + MO(_KP), KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_RGUI, + KC_LALT, KC_LCTL, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC + ), + + +/* Layer 3 : Media layer + * ,--------------------------------------------------. ,--------------------------------------------------. + * | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | PrSc | ScLk | Paus | | | | | | Mute | Vol- | Vol+ | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| Stop | Prev | Play | Next | Sel | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |Dvorak|Qwerty|Colemk| | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[_MD] = KEYMAP( + // left hand + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, DVORAK, QWERTY, COLEMAK, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, + _______, + _______, _______, _______, + // right hand + KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, + _______, + _______, _______, _______ + ), + + +/* Layer 4 : Keypad layer + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Power | | | | | | | | | | NmLk | KP = | KP / | KP * | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Sleep | | | | | | | | | | KP 7 | KP 8 | KP 9 | KP - | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | KP 0 | | KP . |KP Ent| | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[_KP] = KEYMAP( + // left hand + KC_PWR, _______, _______, _______, _______, _______, _______, + KC_SLEP, _______, _______, _______, _______, _______, _______, + KC_WAKE, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, + _______, + _______, _______, _______, + // right hand + _______, _______, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, _______, + _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, + _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, + _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, + KC_P0, _______, KC_PDOT, KC_PENT, _______, + _______, _______, + _______, + _______, _______, _______ + ), + +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _DV: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DV); + } + break; + case _QW: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_CM); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/xyverz/readme.md b/keyboards/ergodox/keymaps/xyverz/readme.md new file mode 100644 index 000000000..6ecdabc9e --- /dev/null +++ b/keyboards/ergodox/keymaps/xyverz/readme.md @@ -0,0 +1,122 @@ +# Xyverz's ErgoDox EZ Keymap + +## About this keymap: + +The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner keys. I've decided to continue using this layout with my ErgoDox. + +The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional keys as shown in the diagrams. The Colemak layout is merely an adaptation of that. + +I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck layouts. + +## Still to do: + + * Need to figure out a better position for the ESC key. + * Come up with a function for the empty keys shown in the alpha layers below. + * Fix the CapsLock, NumLock, and ScrLck LEDs. + +### Layer 0: Dvorak layer + + ,--------------------------------------------------.,--------------------------------------------------. + | ] | 1 | 2 | 3 | 4 | 5 | ESC || ESC | 6 | 7 | 8 | 9 | 0 | [ | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Tab | ' | , | . | Y | Y | || | F | G | C | R | L | \ | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | CapsLk | A | O | E | U | I |------||------| D | H | T | N | S | - | + |--------+------+------+------+------+------| _MD || _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | X | || | B | M | W | V | Z | RShift | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | LCtr | LAlt || Ralt | RCtr | + ,------|------|------||------+------+------. + | | | Home || PgUp | | | + | BkSp | Del |------||------| Enter| Space| + | | | End || PgDn | | | + `--------------------'`--------------------' + +### Layer 1: QWERTY layer + + ,--------------------------------------------------.,--------------------------------------------------. + | = | 1 | 2 | 3 | 4 | 5 | ESC || ESC | 6 | 7 | 8 | 9 | 0 | - | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Tab | Q | W | E | R | T | || | Y | U | I | O | P | \ | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | CapsLk | A | S | D | F | G |------||------| H | J | K | L | ; | ' | + |--------+------+------+------+------+------| _MD || _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | || | N | M | , | . | / | RShift | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | LCtr | LAlt || Ralt | RCtr | + ,------|------|------||------+------+------. + | | | Home || PgUp | | | + | BkSp | Del |------||------| Enter| Space| + | | | End || PgDn | | | + `--------------------'`--------------------' + +### Keymap 2: Colemak layer + + ,--------------------------------------------------.,--------------------------------------------------. + | = | 1 | 2 | 3 | 4 | 5 | ESC || ESC | 6 | 7 | 8 | 9 | 0 | - | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Tab | Q | W | F | P | G | || | J | L | U | Y | ; | \ | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | BkSpc | A | R | S | T | D |------||------| H | N | E | I | O | ' | + |--------+------+------+------+------+------| _MD || _KP |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | || | K | M | , | . | / | RShift | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | LCtr | LAlt || Ralt | RCtr | + ,------|------|------||------+------+------. + | | | Home || PgUp | | | + | BkSp | Del |------||------| Enter| Space| + | | | End || PgDn | | | + `--------------------'`--------------------' + +### layer 3 : Media layer + + ,--------------------------------------------------.,--------------------------------------------------. + | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 || F12 | F6 | F7 | F8 | F9 | F10 | | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | | | PrSc | ScLk | Paus | | || | | Mute | Vol- | Vol+ | | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | | | | | | |------||------| Stop | Prev | Play | Next | Sel | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | | |Dvorak|Qwerty|Colemk| | || | | | | | | | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | | || | | + ,------|------|------||------+------+------. + | | | || | | | + | | |------||------| | | + | | | || | | | + `--------------------'`--------------------' + + + +### Keymap 4: Keypad layer + + ,--------------------------------------------------.,--------------------------------------------------. + | Power | | | | | | || | | NmLk | KP = | KP / | KP * | | + |--------+------+------+------+------+-------------||------+------+------+------+------+------+--------| + | Sleep | | | | | | || | | KP 7 | KP 8 | KP 9 | KP - | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | Wake | | | | | |------||------| | KP 4 | KP 5 | KP 6 | KP + | | + |--------+------+------+------+------+------| || |------+------+------+------+------+--------| + | | | | | | | || | | KP 1 | KP 2 | KP 3 |KP Ent| | + `--------+------+------+------+------+-------------'`-------------+------+------+------+------+--------' + | | | | | | | KP 0 | | KP . |KP Ent| | + `----------------------------------' `----------------------------------' + ,-------------.,-------------. + | | || | | + ,------|------|------||------+------+------. + | | | || | | | + | | |------||------| | | + | | | || | | | + `--------------------'`--------------------' diff --git a/keyboards/handwired/minorca/Makefile b/keyboards/handwired/minorca/Makefile new file mode 100644 index 000000000..155c1f9a2 --- /dev/null +++ b/keyboards/handwired/minorca/Makefile @@ -0,0 +1,71 @@ +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/handwired/minorca/config.h b/keyboards/handwired/minorca/config.h new file mode 100644 index 000000000..4cdafcbd2 --- /dev/null +++ b/keyboards/handwired/minorca/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6660 +#define DEVICE_VER 0x0001 +#define MANUFACTURER ME +#define PRODUCT MinOrca +#define DESCRIPTION Tiny Whale + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* MinOrca PCB default pin-out */ +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 } +#define MATRIX_ROW_PINS { B0, B1, B2, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/handwired/minorca/keymaps/default/Makefile b/keyboards/handwired/minorca/keymaps/default/Makefile new file mode 100644 index 000000000..a573488a5 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/default/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../../Makefile +endif diff --git a/keyboards/handwired/minorca/keymaps/default/config.h b/keyboards/handwired/minorca/keymaps/default/config.h new file mode 100644 index 000000000..bf40376c1 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/default/config.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* bootmagic salt key */ +#define BOOTMAGIC_KEY_SALT KC_ESC + +/* skip bootmagic and eeconfig */ +#define BOOTMAGIC_KEY_SKIP KC_SPACE + +#endif diff --git a/keyboards/handwired/minorca/keymaps/default/keymap.c b/keyboards/handwired/minorca/keymaps/default/keymap.c new file mode 100644 index 000000000..a55d578e4 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "minorca.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = { /* Base */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, XXXXXXX, KC_ENT }, + {KC_LCTRL,XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_FN1, KC_FN0 }, + {KC_NO, XXXXXXX, KC_NO, KC_LALT, KC_SPC, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, KC_DOT, KC_SLSH, KC_NO } + }, + [1] = { /* First */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELT }, + {KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, XXXXXXX, KC_LGUI }, + {KC_LCTRL,XXXXXXX, KC_Z, KC_X, KC_C, KC_PGDN, KC_END, KC_L, KC_SCLN, KC_UP, KC_FN1, KC_FN0 }, + {KC_NO, XXXXXXX, KC_NO, KC_LALT, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_DOWN, KC_RIGHT,KC_NO } + }, + [2] = { /* Second */ + {KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DELT }, + {KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, XXXXXXX, KC_ENT }, + {KC_CAPS, XXXXXXX, KC_LSFT, KC_RSFT, KC_PAUSE,KC_F10, KC_F11, KC_F12, KC_NO, KC_UP, KC_FN1, KC_FN0 }, + {KC_NO, XXXXXXX, KC_NO, KC_LALT, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_DOWN, KC_RIGHT,KC_NO } + }, +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), // to First overlay + [1] = ACTION_LAYER_MOMENTARY(2), // to Second overlay + +};
\ No newline at end of file diff --git a/keyboards/handwired/minorca/keymaps/default/readme.md b/keyboards/handwired/minorca/keymaps/default/readme.md new file mode 100644 index 000000000..6ed31f82b --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The Default Minorca Layout + +Copied from https://github.com/pancinteractive/qmk_firmware/blob/master/keyboard/minorca_mkV/keymaps/default/keymap.c + +It looks incomplete.
\ No newline at end of file diff --git a/keyboards/handwired/minorca/keymaps/readme.md b/keyboards/handwired/minorca/keymaps/readme.md new file mode 100644 index 000000000..058923ba2 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/readme.md @@ -0,0 +1,23 @@ +# How to add your own keymap + +Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`: + + _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author] + +\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements + +and contain the following files: + +* `keymap.c` +* `readme.md` *recommended* +* `config.h` *optional*, found automatically when compiling +* `Makefile` *optional*, found automatically when compling + +When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format: + + * **folder_name** description + +# List of Minorca keymaps + +* **default** default Minorca layout +* **rgb** layout with WS2812b control diff --git a/keyboards/handwired/minorca/keymaps/rgb/Makefile b/keyboards/handwired/minorca/keymaps/rgb/Makefile new file mode 100644 index 000000000..2b2af1335 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../../Makefile +endif diff --git a/keyboards/handwired/minorca/keymaps/rgb/config.h b/keyboards/handwired/minorca/keymaps/rgb/config.h new file mode 100644 index 000000000..deaac2e26 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/config.h @@ -0,0 +1,20 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* bootmagic salt key */ +#define BOOTMAGIC_KEY_SALT KC_ESC + +/* skip bootmagic and eeconfig */ +#define BOOTMAGIC_KEY_SKIP KC_SPACE + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D5 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 13 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +#endif diff --git a/keyboards/handwired/minorca/keymaps/rgb/example.jpg b/keyboards/handwired/minorca/keymaps/rgb/example.jpg Binary files differnew file mode 100644 index 000000000..a04c8d37d --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/example.jpg diff --git a/keyboards/handwired/minorca/keymaps/rgb/keymap.c b/keyboards/handwired/minorca/keymaps/rgb/keymap.c new file mode 100644 index 000000000..9002afbb8 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/keymap.c @@ -0,0 +1,65 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "minorca.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _LOWER 1 +#define _RAISE 2 +#define _TB 3 + +// Macro name shortcuts +#define QWERTY M(_QWERTY) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = { /* Qwerty */ + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {FUNC(0), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, XXXXXXX, KC_QUOT}, + {KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, FUNC(1)}, + {KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, FUNC(2), XXXXXXX, XXXXXXX, FUNC(3), XXXXXXX, KC_RALT, KC_APP, KC_RCTL} +}, + +[_RAISE] = { + {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), XXXXXXX, S(KC_BSLS)}, + {KC_TRNS, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_ENT}, + {KC_TRNS, XXXXXXX, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, KC_TRNS, XXXXXXX, KC_MNXT, KC_MUTE, KC_MPLY} +}, + +[_LOWER] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, XXXXXXX, KC_BSLS}, + {KC_TRNS, XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_PGUP, KC_ENT}, + {KC_TRNS, XXXXXXX, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, KC_TRNS, XXXXXXX, KC_HOME, KC_PGDN, KC_END} +}, + +[_TB] = { /* Tab */ + {KC_ESC, KC_CALC, KC_WHOM, KC_MAIL, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, KC_TRNS}, + {KC_TRNS, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_UP, KC_ENT}, + {BL_STEP, XXXXXXX, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, KC_TRNS, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT} +} +}; + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(_TB, KC_TAB), + [1] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), + [2] = ACTION_LAYER_TAP_KEY(_RAISE, KC_SPC), + [3] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), +}; diff --git a/keyboards/handwired/minorca/keymaps/rgb/readme.md b/keyboards/handwired/minorca/keymaps/rgb/readme.md new file mode 100644 index 000000000..f50dfa546 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/readme.md @@ -0,0 +1,25 @@ +#RGB backlight for MinOrca + +![wiring](example.jpg) + +Example of adding WS2812b LEDs to a MinOrca. + +http://www.40percent.club/2016/08/tiny-whale.html + +The keymap is a work in progress. The RGB functions are accessed by holding down the TAB key. + +* Tab + Z Toggle on/off +* Tab + X Mode +* Tab + C Hue+ +* Tab + V Hue- +* Tab + B Saturation+ +* Tab + N Saturation- +* Tab + M Brightness+ +* Tab + , Brightness- + +Example wiring: + +WS2812 data pin is connected to D5 + +![wiring](wiring1.jpg) +![wiring closeup](wiring2.jpg) diff --git a/keyboards/handwired/minorca/keymaps/rgb/wiring1.jpg b/keyboards/handwired/minorca/keymaps/rgb/wiring1.jpg Binary files differnew file mode 100644 index 000000000..7dcbe80c5 --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/wiring1.jpg diff --git a/keyboards/handwired/minorca/keymaps/rgb/wiring2.jpg b/keyboards/handwired/minorca/keymaps/rgb/wiring2.jpg Binary files differnew file mode 100644 index 000000000..fd91d3e1c --- /dev/null +++ b/keyboards/handwired/minorca/keymaps/rgb/wiring2.jpg diff --git a/keyboards/handwired/minorca/minorca.c b/keyboards/handwired/minorca/minorca.c new file mode 100644 index 000000000..24e72c2a5 --- /dev/null +++ b/keyboards/handwired/minorca/minorca.c @@ -0,0 +1,6 @@ +#include "minorca.h" + +void matrix_init_kb(void) { + + matrix_init_user(); +}
\ No newline at end of file diff --git a/keyboards/handwired/minorca/minorca.h b/keyboards/handwired/minorca/minorca.h new file mode 100644 index 000000000..158e5b4c5 --- /dev/null +++ b/keyboards/handwired/minorca/minorca.h @@ -0,0 +1,6 @@ +#ifndef MINORCA_H +#define MINORCA_H + +#include "quantum.h" + +#endif diff --git a/keyboards/handwired/minorca/readme.md b/keyboards/handwired/minorca/readme.md new file mode 100644 index 000000000..93c767954 --- /dev/null +++ b/keyboards/handwired/minorca/readme.md @@ -0,0 +1,33 @@ +minorca keyboard firmware +====================== +Handwired 40% keyboard + +http://www.panc.co/blog/minorcasebright-information-page + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top readme.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: +``` +$ make KEYMAP=[default|jack|<name>] +``` +Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder. + +### Notable forks (which some of the keymap files are from) +- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck) +- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c) +- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck) +- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid) diff --git a/keyboards/hhkb/keymaps/shela/Makefile b/keyboards/hhkb/keymaps/shela/Makefile new file mode 100644 index 000000000..d0586bda6 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/Makefile @@ -0,0 +1 @@ +SRC += action_pseudo_lut.c diff --git a/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c new file mode 100644 index 000000000..b205968c7 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.c @@ -0,0 +1,142 @@ +#include "quantum.h" +#include "action_pseudo_lut.h" + +static uint8_t send_key_shift_bit[SHIFT_BIT_SIZE]; + +/* + * Pseudo layout action. + * This action converts a keycode in order to output the character according to the keymap you specified + * still your keyboard layout recognized wrongly on your OS. + * Memo: Using other layer keymap to get keycode + */ +void action_pseudo_lut(keyrecord_t *record, uint8_t base_keymap_id, const uint16_t (*keymap)[2]) { + static uint8_t prev_shift; + uint16_t keycode; + uint16_t pseudo_keycode; + + /* get keycode from keymap you specified */ + keycode = keymap_key_to_keycode(base_keymap_id, record->event.key); + + prev_shift = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + + if (record->event.pressed) { + /* when magic commands entered, keycode does not converted */ + if (IS_COMMAND()) { + if (prev_shift) { + add_shift_bit(keycode); + } + register_code(keycode); + return; + } + + if (prev_shift) { + pseudo_keycode = convert_keycode(keymap, keycode, true); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + add_shift_bit(keycode); + + if (IS_LSFT(pseudo_keycode)) { + register_code(QK_LSFT ^ pseudo_keycode); + } else { + /* delete shift mod temporarily */ + del_mods(prev_shift); + send_keyboard_report(); + register_code(pseudo_keycode); + add_mods(prev_shift); + send_keyboard_report(); + } + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + dprintf("pressed: %02X, converted: %04X\n", keycode, pseudo_keycode); + + if (IS_LSFT(pseudo_keycode)) { + add_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + register_code(QK_LSFT ^ pseudo_keycode); + /* on Windows, prevent key repeat to avoid unintended output */ + unregister_code(QK_LSFT ^ pseudo_keycode); + del_weak_mods(MOD_BIT(KC_LSFT)); + send_keyboard_report(); + } else { + register_code(pseudo_keycode); + } + } + } else { + if (get_shift_bit(keycode)) { + del_shift_bit(keycode); + pseudo_keycode = convert_keycode(keymap, keycode, true); + } else { + pseudo_keycode = convert_keycode(keymap, keycode, false); + } + dprintf("released: %02X, converted: %04X\n", keycode, pseudo_keycode); + + if (IS_LSFT(pseudo_keycode)) { + unregister_code(QK_LSFT ^ pseudo_keycode); + } else { + unregister_code(pseudo_keycode); + } + } +} + +uint16_t convert_keycode(const uint16_t (*keymap)[2], uint16_t keycode, bool shift_modded) +{ + uint16_t pseudo_keycode; + + switch (keycode) { + case KC_A ... KC_CAPSLOCK: +#if defined(__AVR__) + if (shift_modded) { + pseudo_keycode = pgm_read_word(&keymap[keycode][1]); + } else { + pseudo_keycode = pgm_read_word(&keymap[keycode][0]); + } +#else + if (shift_modded) { + pseudo_keycode = keymap[keycode][1]; + } else { + pseudo_keycode = keymap[keycode][0]; + } +#endif + /* if undefined, use got keycode as it is */ + if (pseudo_keycode == 0x00) { + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + } + break; + default: + if (shift_modded) { + pseudo_keycode = S(keycode); + } else { + pseudo_keycode = keycode; + } + break; + } + return pseudo_keycode; +} + +uint8_t get_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + return send_key_shift_bit[keycode >> 3] & (1 << (keycode & 7)); + } else { + dprintf("get_shift_bit: Can't get shift bit. keycode: %02X\n", keycode); + return 0; + } +} + +void add_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] |= (1 << (keycode & 7)); + } else { + dprintf("add_shift_bit: Can't add shift bit. keycode: %02X\n", keycode); + } +} + +void del_shift_bit(uint16_t keycode) { + if ((keycode >> 3) < SHIFT_BIT_SIZE) { + send_key_shift_bit[keycode >> 3] &= ~(1 << (keycode & 7)); + } else { + dprintf("del_shift_bit: Can't delete shift bit. keycode: %02X\n", keycode); + } +} diff --git a/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h new file mode 100644 index 000000000..681252440 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/action_pseudo_lut.h @@ -0,0 +1,15 @@ +#ifndef ACTION_PSEUDO_LUT_H +#define ACTION_PSEUDO_LUT_H + +#define SHIFT_BIT_SIZE (0xE7 / 8 + 1) // 1bit per 1key + +#define IS_LSFT(kc) ((QK_LSFT & (kc)) == QK_LSFT) + +void action_pseudo_lut(keyrecord_t *, uint8_t, const uint16_t (*)[2]); +uint16_t convert_keycode(const uint16_t (*)[2], uint16_t, bool); + +uint8_t get_shift_bit(uint16_t); +void add_shift_bit(uint16_t); +void del_shift_bit(uint16_t); + +#endif diff --git a/keyboards/hhkb/keymaps/shela/config.h b/keyboards/hhkb/keymaps/shela/config.h new file mode 100644 index 000000000..08cc1fb46 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/config.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_SHELA_H +#define CONFIG_SHELA_H + +#include "../../config.h" + +#undef TAPPING_TERM +#define TAPPING_TERM 230 + +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 2000 + +#endif diff --git a/keyboards/hhkb/keymaps/shela/keymap.c b/keyboards/hhkb/keymaps/shela/keymap.c new file mode 100644 index 000000000..c286b99de --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/keymap.c @@ -0,0 +1,179 @@ +/* + * HHKB Pro 2 US Layout for shela + */ +#include "hhkb.h" +#include "keymap_jis2us.h" +#include "action_pseudo_lut.h" + +enum keymap_layout { + BASE = 0, + PSEUDO_US, + DVORAK, + MOUSE, + TENKEY, + HHKB, + SPACE_FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Layer 0: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | ` | BSp | + * |-----------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | + * |-----------------------------------------------------------------------------------------| + * | Control | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | + * `-----------------------------------------------------------------------------------------' + * |LAlt | LGui | SpaceFN | RGui |RAlt | + * `-----------------------------------------------------------------' + */ + [BASE] = + KEYMAP(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, \ + KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_ENT, \ + OSM(MOD_LSFT),KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_FN0, \ + KC_LALT,KC_LGUI, KC_FN2, KC_RGUI,KC_RALT), + + /* Layer 1: Pseudo US Layout Layer */ + [PSEUDO_US] = + KEYMAP(KC_ESC, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_BSPC, \ + KC_TAB, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, \ + KC_LCTL,KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_ENT, \ + OSM(MOD_LSFT),KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_FN1, KC_RSFT,KC_FN0, \ + KC_LGUI,KC_FN3, KC_FN2, KC_FN4 ,KC_RGUI), + + /* Layer 2: Dvorak Layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | ` | BSp | + * |-----------------------------------------------------------------------------------------| + * | Tab | ' | , | . | P | Y | F | G | C | R | L | / | = | \ | + * |-----------------------------------------------------------------------------------------| + * | Control | A | O | E | U | I | D | H | T | N | S | - | Enter | + * |-----------------------------------------------------------------------------------------| + * | Shift | ; | Q | J | K | X | B | M | W | V | Z | Shift | Fn0 | + * `-----------------------------------------------------------------------------------------' + * |LAlt | LGui | SpaceFN | RGui |RAlt | + * `-----------------------------------------------------------------' + */ + [DVORAK] = + KEYMAP(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC,KC_RBRC,KC_GRV, KC_BSPC, \ + KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,KC_EQL, KC_BSLS, \ + KC_LCTL,KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,KC_ENT, \ + KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,KC_FN0, \ + KC_LALT,KC_LGUI, KC_FN2, KC_RGUI,KC_RALT), + + /* Layer 3: Mouse layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | MwL | MwD | MwU | MwR | | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | McL | McD | McU | McR | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | Mb1 | Mb2 | Mb3 | | | | Fn0 | + * `-----------------------------------------------------------------------------------------' + * | | | Mb1 | | | + * `-----------------------------------------------------------------' + */ + [MOUSE] = + KEYMAP(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1,KC_BTN2,KC_BTN3,KC_NO, KC_NO, KC_TRNS,KC_FN0, \ + KC_TRNS,KC_TRNS, KC_BTN1, KC_TRNS,KC_TRNS), + + /* Layer 4: Tenkey layer + * ,-----------------------------------------------------------------------------------------. + * | Esc | | | | | | | | | | / | * | - | | BSp | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | | 7 | 8 | 9 | + | | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | | 4 | 5 | 6 | Enter | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | | | 1 | 2 | 3 | + | Fn0 | + * `-----------------------------------------------------------------------------------------' + * | | | SpaceFN | 0 | . | + * `-----------------------------------------------------------------' + */ + [TENKEY] = + KEYMAP(KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSLS,KC_PAST,KC_PMNS,KC_NO, KC_BSPC, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_7,KC_KP_8,KC_KP_9,KC_PPLS,KC_NO, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_4,KC_KP_5,KC_KP_6,KC_PENT, \ + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1,KC_KP_2,KC_KP_3,KC_PPLS,KC_FN0, \ + KC_TRNS,KC_TRNS, KC_FN2, KC_KP_0,KC_PDOT), + + /* Layer 5: HHKB mode (HHKB Fn) + * ,-----------------------------------------------------------------------------------------. + * | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------| + * | Caps | Fn5 | Fn6 | Fn7 | Fn8 | Fn9 | | | Psc | Slk | Pus | Up | | BSp | + * |-----------------------------------------------------------------------------------------| + * | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | + * |-----------------------------------------------------------------------------------------| + * | | | | | | | + | - | End | PgD | Dow | | | + * `-----------------------------------------------------------------------------------------' + * | | | | | | + * `-----------------------------------------------------------------' + */ + [HHKB] = + KEYMAP(KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ + KC_CAPS,KC_FN5, KC_FN6, KC_FN7, KC_FN8, KC_FN9, KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_UP, KC_TRNS,KC_BSPC, \ + KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,KC_PENT, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), + + /* Layer 6: SpaceFN + * ,-----------------------------------------------------------------------------------------. + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | Del | + * |-----------------------------------------------------------------------------------------| + * | | End | Up | Hom | | | | Hom | Up | End | Psc | Slk | Pau | Ins | + * |-----------------------------------------------------------------------------------------| + * | | Lef | Dow | Rig | PgU | | PgU | Lef | Dow | Rig | | | | + * |-----------------------------------------------------------------------------------------| + * | | | | PgD | | Spc | PgD | ` | ~ | | | | | + * `-----------------------------------------------------------------------------------------' + * | | | | | | + * `-----------------------------------------------------------------' + */ + [SPACE_FN] = + KEYMAP(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_DEL, \ + KC_TRNS,KC_END, KC_UP, KC_HOME,KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_PSCR,KC_SLCK,KC_PAUS,KC_INS, \ + KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_PGUP,KC_NO, KC_PGUP,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS,KC_NO, KC_NO, KC_PGDN,KC_NO, KC_SPC, KC_PGDN,KC_GRV, KC_TILD,KC_NO, KC_NO, KC_TRNS,KC_NO, \ + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), +}; + +/* + * user defined action function + */ +enum function_id { + PSEUDO_US_FUNCTION, +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + + switch (id) { + case PSEUDO_US_FUNCTION: + action_pseudo_lut(record, BASE, keymap_jis2us); + break; + } +} + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(HHKB), + [1] = ACTION_FUNCTION(PSEUDO_US_FUNCTION), + [2] = ACTION_LAYER_TAP_KEY(SPACE_FN, KC_SPACE), + [3] = ACTION_MODS_TAP_KEY(MOD_LALT, KC_MHEN), + [4] = ACTION_MODS_TAP_KEY(MOD_RALT, KC_KANA), + [5] = ACTION_DEFAULT_LAYER_SET(BASE), + [6] = ACTION_DEFAULT_LAYER_SET(PSEUDO_US), + [7] = ACTION_DEFAULT_LAYER_SET(MOUSE), + [8] = ACTION_DEFAULT_LAYER_SET(TENKEY), + [9] = ACTION_DEFAULT_LAYER_SET(DVORAK), +}; diff --git a/keyboards/hhkb/keymaps/shela/keymap_jis2us.h b/keyboards/hhkb/keymaps/shela/keymap_jis2us.h new file mode 100644 index 000000000..cf2bd4f0e --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/keymap_jis2us.h @@ -0,0 +1,32 @@ +#ifndef KEYMAP_JIS2US_H +#define KEYMAP_JIS2US_H + +/* keymap for convert from JIS to US */ +const uint16_t PROGMEM keymap_jis2us[][2] = { + [KC_A ... KC_CAPS] = { 0x00, 0x00 }, /* default value */ + + [KC_1] = { KC_1, KC_EXLM }, /* 1 and ! -> 1 and ! */ + [KC_2] = { KC_2, KC_LBRC }, /* 2 and " -> 2 and @ */ + [KC_3] = { KC_3, KC_HASH }, /* 3 and # -> 3 and # */ + [KC_4] = { KC_4, KC_DLR }, /* 4 and $ -> 4 and $ */ + [KC_5] = { KC_5, KC_PERC }, /* 5 and % -> 5 and % */ + [KC_6] = { KC_6, KC_EQL }, /* 6 and & -> 6 and ^ */ + [KC_7] = { KC_7, KC_CIRC }, /* 7 and ' -> 7 and & */ + [KC_8] = { KC_8, KC_DQT }, /* 8 and ( -> 8 and * */ + [KC_9] = { KC_9, KC_ASTR }, /* 9 and ) -> 9 and ( */ + [KC_0] = { KC_0, KC_LPRN }, /* 0 and (no assign) -> 0 and ) */ + [KC_MINS] = { KC_MINS, S(KC_RO) }, /* - and = -> - and _ */ + [KC_EQL] = { KC_UNDS, KC_COLN }, /* ^ and ~ -> = and + */ + [KC_LBRC] = { KC_RBRC, KC_RCBR }, /* @ and ` -> [ and { */ + [KC_RBRC] = { KC_BSLS, KC_PIPE }, /* [ and { -> ] and } */ + [KC_BSLS] = { KC_JYEN, S(KC_JYEN) }, /* ] and } -> / and | */ + [KC_NUHS] = { KC_NUHS, S(KC_NUHS) }, /* (no assign) */ + [KC_SCLN] = { KC_SCLN, KC_QUOT }, /* ; and + -> ; and : */ + [KC_QUOT] = { KC_AMPR, KC_AT }, /* : and * -> ' and " */ + [KC_GRV] = { KC_LCBR, KC_PLUS }, /* (no assign) -> ` and ~ */ + [KC_COMM] = { KC_COMM, KC_LT }, /* , and < -> , and < */ + [KC_DOT] = { KC_DOT, KC_GT }, /* . and > -> . and > */ + [KC_SLSH] = { KC_SLSH, KC_QUES }, /* / and ? -> / and ? */ +}; + +#endif diff --git a/keyboards/hhkb/keymaps/shela/readme.md b/keyboards/hhkb/keymaps/shela/readme.md new file mode 100644 index 000000000..5a06a8363 --- /dev/null +++ b/keyboards/hhkb/keymaps/shela/readme.md @@ -0,0 +1,14 @@ +# Shela's HHKB Layout + +Layer 0: US Layout +Layer 1: Pseudo US Layout +Layer 2: Dvorak Layout +Layer 3: Mouse +Layer 4: Tenkey +Layer 5: HHKB Fn Key +Layer 6: SpaceFN + +## Pseudo US Layout + +On japanese Windows, HHKB Professional 2 US layout model recognized wrongly as JIS layout without changing OS settings. +But, you can use HHKB like a US layout keyboard as it is. diff --git a/keyboards/kc60/keymaps/workman-dead/README.md b/keyboards/kc60/keymaps/workman-dead/README.md new file mode 100644 index 000000000..f1fcdc960 --- /dev/null +++ b/keyboards/kc60/keymaps/workman-dead/README.md @@ -0,0 +1,17 @@ +# Workman dead with spacefn (kc60 @ QMK) + +## Layout reference +![workman dead with spacefn](./kc60-wm-dead.png) + +## Build + +To build this keymap, simply run `make KEYMAP=workman-dead`. + +## Notes + +* the default layout is `workman` (try it out, it's awesome!), but it can be changed to `qwerty` with the `rebel` key (the function layer won't change though) +* `comma` acts as a dead key, that means tapping/holding it will activate the **oneshot** `dead key` layer (marked red in the reference) +* hold `space` to access the `function` layer (marked blue in the reference) +* hold `tab` to activate the mouse layer +* the `function` layer contains mostly osx specific shortcuts +* on the right side of the bottom row `alt` and `super` are switched compared to a standard layout diff --git a/keyboards/kc60/keymaps/workman-dead/kc60-wm-dead.png b/keyboards/kc60/keymaps/workman-dead/kc60-wm-dead.png Binary files differnew file mode 100644 index 000000000..cc6a630a5 --- /dev/null +++ b/keyboards/kc60/keymaps/workman-dead/kc60-wm-dead.png diff --git a/keyboards/kc60/keymaps/workman-dead/keymap.c b/keyboards/kc60/keymaps/workman-dead/keymap.c new file mode 100644 index 000000000..103adeef6 --- /dev/null +++ b/keyboards/kc60/keymaps/workman-dead/keymap.c @@ -0,0 +1,183 @@ +#include "kc60.h" + +#define _WM 0 +#define _QW 1 +#define _DK 2 +#define _FUN 3 +#define _MS 4 + +#define _______ KC_NO +#define XXXXXXX KC_TRNS + +#define _DK_ACT 0 +#define _DK_REL 1 +#define _KC_COMS 2 +#define _KC_CENT 3 + +#define DK_ACT M(_DK_ACT) // activate dead key layer +#define DK_REL M(_DK_REL) // release dead key layer +#define KC_COMS M(_KC_COMS) // comma + space +#define KC_CENT M(_KC_CENT) // comma + enter +#define KC_TABM LT(_MS, KC_TAB) // press for tab, hold for mouse layer +#define KC_SPFN LT(_FUN, KC_SPC) // press for space, hold for function layer (aka spacefn) +#define KC_DFQW DF(_QW) // set default layer to qwerty +#define KC_DFWM DF(_WM) // set default layer to workman +#define KC_CMDQ LGUI(KC_Q) // command + q +#define KC_CMDD LGUI(KC_D) // command + d +#define KC_CMDA LGUI(KC_A) // command + a +#define KC_CMDS LGUI(KC_S) // command + s +#define KC_CMDZ LGUI(KC_Z) // command + z +#define KC_CMDX LGUI(KC_X) // command + x +#define KC_CMDC LGUI(KC_C) // command + c +#define KC_CMDV LGUI(KC_V) // command + v +#define KC_CSTB S(RCTL(KC_TAB)) // shift + control + tab +#define KC_C_TB RCTL(KC_TAB) // control + tab +#define KC_C_LF RCTL(KC_LEFT) // control + left +#define KC_C_RT RCTL(KC_RGHT) // control + right + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// Workman +/* +* ,-----------------------------------------------------------. +* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bsp | +* |-----------------------------------------------------------| +* |Tab/M| Q| D| R| W| B| J| F| U| P| ;| [| ]| \ | +* |-----------------------------------------------------------| +* |Ctrl | A| S| H| T| G| Y| N| E| O| I| '| Return | +* |-----------------------------------------------------------| +* |Shift | Z| X| M| C| V| K| L| ,| .| /| Shift | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | Space/FN | Alt | GUI | Ctrl | qwerty | +* `-----------------------------------------------------------' +*/ +[_WM] = KEYMAP( /* Workman */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_TABM, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_LCTL, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, _______, KC_ENT, \ + KC_LSFT, _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, DK_ACT, KC_DOT, KC_SLSH, _______, KC_RSFT, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, KC_RALT, KC_RGUI, KC_RCTL, KC_DFQW), + +// QWERTY +/* +* ,-----------------------------------------------------------. +* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bsp | +* |-----------------------------------------------------------| +* |Tab/M| Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | +* |-----------------------------------------------------------| +* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return | +* |-----------------------------------------------------------| +* |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | Space/FN | Alt | GUI | Ctrl | workman | +* `-----------------------------------------------------------' +*/ +[_QW] = KEYMAP( /* QWERTY */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_TABM, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_ENT, \ + KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DK_ACT, KC_DOT, KC_SLSH, _______, KC_RSFT, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_SPFN, KC_RALT, KC_RGUI, KC_RCTL, KC_DOWN), + +// dead key layer +/* +* ,-----------------------------------------------------------. +* | | | | | | | | | | | | | | Bsp | +* |-----------------------------------------------------------| +* | | %| &| ?| +| @| $| _| [| ]| !| ~| ^| | +* |-----------------------------------------------------------| +* | | #| (| =| 0| {| }| 1| *| )| -| `| Return | +* |-----------------------------------------------------------| +* | | 6| 7| 8| 9| || \| 2| 3| 4| 5| | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | , | Alt | GUI | Ctrl | | +* `-----------------------------------------------------------' +*/ +[_DK] = KEYMAP( /* dead key layer */ + XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, \ + XXXXXXX, KC_PERC, KC_AMPR, KC_QUES, KC_PLUS, KC_AT, KC_DLR, KC_UNDS, KC_LBRC, KC_RBRC, KC_EXLM, KC_TILD, KC_CIRC, _______, \ + _______, KC_HASH, KC_LPRN, KC_EQL, KC_0, KC_LCBR, KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, KC_GRV, _______, KC_CENT, \ + _______, _______, KC_6, KC_7, KC_8, KC_9, KC_PIPE, KC_BSLS, KC_2, DK_REL, KC_4, KC_5, _______, _______, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_COMS, KC_RALT, KC_RGUI, KC_RCTL, _______), + +// function layer +/* +* ,-----------------------------------------------------------. +* | | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|Del | +* |-----------------------------------------------------------| +* |Esc | Cq| Cd|cstb|ctb| | |pgd| up|pgu| | | |ins | +* |-----------------------------------------------------------| +* |Shift | Ca| Cs|clt|crt| | | lt| dw| rt|home|end| Bsp | +* |-----------------------------------------------------------| +* |Shift | Cz| Cx| | Cc| Cv| V-| V+|mute| | | | +* |-----------------------------------------------------------| +* |Ctrl | Alt | GUI | | Alt | GUI | Ctrl | Reset | +* `-----------------------------------------------------------' +*/ +[_FUN] = KEYMAP( /* function layer */ + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + KC_ESC, KC_CMDQ, KC_CMDD, KC_CSTB, KC_C_TB, _______, _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_INS, \ + KC_LSFT, KC_CMDA, KC_CMDS, KC_C_LF, KC_C_RT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, _______, KC_BSPC, \ + KC_LSFT, _______, KC_CMDZ, KC_CMDX, _______, KC_CMDC, KC_CMDV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, \ + KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, KC_RALT, KC_RGUI, KC_RCTL, RESET), + +// mouse layer +/* +* ,-----------------------------------------------------------. +* | | | | | | | | | | | | | | | +* |-----------------------------------------------------------| +* | |fast|med|slow| | | | | up| | | | | | +* |-----------------------------------------------------------| +* | | | | | | | | lt| dw| rt| rc| | | +* |-----------------------------------------------------------| +* | | | | | | | | | | | | | +* |-----------------------------------------------------------| +* | | | | lc | | | | | +* `-----------------------------------------------------------' +*/ +[_MS] = KEYMAP( /* mouse layer */ + XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + XXXXXXX, KC_ACL2, KC_ACL1, KC_ACL0, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, KC_BTN1, _______, _______, _______, _______), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _KC_COMS: + if (record->event.pressed) { + return MACRO(T(COMM), T(SPC), END); // comma + space + } + break; + case _KC_CENT: + if (record->event.pressed) { + return MACRO(T(COMM), T(ENT), END); // comma + enter + } + break; + case _DK_ACT: + if (record->event.pressed) { + if (keyboard_report->mods & MOD_BIT(KC_LSFT) || keyboard_report->mods & MOD_BIT(KC_RSFT)) { // act as comma when shift is pressed (eg <) + register_code(KC_COMM); + } else { // activate oneshot dead key layer otherwise + layer_on(_DK); + set_oneshot_layer(_DK, ONESHOT_START); + } + } else { // make sure to deactive dead key layer on key release + clear_oneshot_layer_state(ONESHOT_PRESSED); + unregister_code(KC_COMM); + } + break; + case _DK_REL: + if (record->event.pressed) { // act as 3 on keypress + register_code(KC_3); + } else { // make sure to deactive dead key layer on key release + clear_oneshot_layer_state(ONESHOT_PRESSED); + unregister_code(KC_3); + } + break; + } + + return MACRO_NONE; +}; diff --git a/keyboards/kitten_paw/Makefile b/keyboards/kitten_paw/Makefile new file mode 100644 index 000000000..912292173 --- /dev/null +++ b/keyboards/kitten_paw/Makefile @@ -0,0 +1,77 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u2 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 + OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +CUSTOM_MATRIX = yes +SRC += matrix.c led.c + +ifndef QUANTUM_DIR + include ../../Makefile +endif + diff --git a/keyboards/kitten_paw/config.h b/keyboards/kitten_paw/config.h new file mode 100644 index 000000000..d7089734a --- /dev/null +++ b/keyboards/kitten_paw/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6050 +#define DEVICE_VER 0x0104 +#define MANUFACTURER Costar +#define PRODUCT Majestouch + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 18 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +//#define MATRIX_ROW_PINS { D0, D5 } +//#define MATRIX_COL_PINS { F1, F0, B0 } +//#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/kitten_paw/keymaps/default/keymap.c b/keyboards/kitten_paw/keymaps/default/keymap.c new file mode 100644 index 000000000..f67235745 --- /dev/null +++ b/keyboards/kitten_paw/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +#include "kitten_paw.h" + +enum layers { + DEFAULT, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DEFAULT] = KEYMAP(\ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT) +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +}
\ No newline at end of file diff --git a/keyboards/kitten_paw/kitten_paw.c b/keyboards/kitten_paw/kitten_paw.c new file mode 100644 index 000000000..8713baf43 --- /dev/null +++ b/keyboards/kitten_paw/kitten_paw.c @@ -0,0 +1,30 @@ +#include "kitten_paw.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_quantum(); + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_quantum(); + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/kitten_paw/kitten_paw.h b/keyboards/kitten_paw/kitten_paw.h new file mode 100644 index 000000000..a6c1d27de --- /dev/null +++ b/keyboards/kitten_paw/kitten_paw.h @@ -0,0 +1,47 @@ +#ifndef KITTEN_PAW_H +#define KITTEN_PAW_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +/* + Matrix col/row mapping + + ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------. + | J6 | | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 | + `----' `-------------------' `-------------------' `-------------------' `--------------' + ,-------------------------------------------------------------------------. ,--------------. ,-------------------. + | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 | B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 | + |-------------------------------------------------------------------------| |--------------| |-------------------| + | J2 | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 | B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 | + |-------------------------------------------------------------------------| '--------------' |-------------- | + | O5 | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 | B1 | | K2 | L2 | Q2 | | + |-------------------------------------------------------------------------| ,----. |-------------------| + | N2 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 | N3 | | O6 | | K3 | L3 | Q3 | O3 | + |-------------------------------------------------------------------------| ,--------------. |-------------- | + | A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | | + `-------------------------------------------------------------------------' `--------------' `-------------------' +*/ + +#define KEYMAP( \ + KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \ + KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \ + KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \ +) \ +{ \ + {KC_NO, KB0, KC0, KD0,KC_NO, KF0, KG0,KC_NO,KC_NO,KC_NO, KK0, KL0,KC_NO,KC_NO, KO0,KC_NO, KQ0, KR0}, \ + { KA1, KB1,KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1,KC_NO,KC_NO,KC_NO,KC_NO, KQ1,KC_NO}, \ + {KC_NO, KB2,KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2,KC_NO, KN2,KC_NO, KP2, KQ2, KR2}, \ + {KC_NO, KB3,KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3,KC_NO, KQ3, KR3}, \ + { KA4, KB4,KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4,KC_NO,KC_NO, KO4,KC_NO, KQ4, KR4}, \ + { KA5,KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5,KC_NO,KC_NO, KO5,KC_NO, KQ5, KR5}, \ + {KC_NO, KB6, KC6,KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6,KC_NO,KC_NO, KO6,KC_NO, KQ6, KR6}, \ + { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7,KC_NO,KC_NO,KC_NO,KC_NO, KO7,KC_NO, KQ7, KR7} \ +} + +#endif diff --git a/keyboards/kitten_paw/led.c b/keyboards/kitten_paw/led.c new file mode 100644 index 000000000..a1bf057c4 --- /dev/null +++ b/keyboards/kitten_paw/led.c @@ -0,0 +1,47 @@ +/* + Copyright 2014 Ralf Schmitt <ralf@bunkertor.net> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <avr/io.h> +#include "stdint.h" +#include "led.h" + +/* LED pin configuration + * + * Scroll Lock PC5 + * Caps Lock PC6 + * Num Lock PB7 + * + */ +void led_set(uint8_t usb_led) { + DDRB |= (1<<7); + DDRC |= (1<<5) | (1<<6); + + if (usb_led & (1<<USB_LED_CAPS_LOCK)) + PORTC &= ~(1<<6); + else + PORTC |= (1<<6); + + if (usb_led & (1<<USB_LED_NUM_LOCK)) + PORTB &= ~(1<<7); + else + PORTB |= (1<<7); + + if (usb_led & (1<<USB_LED_SCROLL_LOCK)) + PORTC &= ~(1<<5); + else + PORTC |= (1<<5); +} diff --git a/keyboards/kitten_paw/matrix.c b/keyboards/kitten_paw/matrix.c new file mode 100644 index 000000000..46875293f --- /dev/null +++ b/keyboards/kitten_paw/matrix.c @@ -0,0 +1,164 @@ +/* + Copyright 2014 Ralf Schmitt <ralf@bunkertor.net> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <stdint.h> +#include <stdbool.h> +#include <avr/io.h> +#include <util/delay.h> +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif +static uint8_t debouncing = DEBOUNCING_DELAY; + +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static uint8_t read_rows(void); +static void select_col(uint8_t col); + +inline uint8_t matrix_rows(void) { + return MATRIX_ROWS; +} + +inline uint8_t matrix_cols(void) { + return MATRIX_COLS; +} + +/* Column pin configuration + * + * col: 0 1 2 3 4 5 6 7 + * pin: PC7 PD5 PD3 PD1 PC2 PD6 PD4 PD2 + * + * Rrr pin configuration + * + * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low + * active), together with 2 rrrs driven directly from the micro + * controller, to control the 18 rrrs. The rrrs are driven from + * pins B6,5,4,3,2,1,0. + */ +void matrix_init(void) { + DDRC &= ~0b10000100; // Row input pins + DDRD &= ~0b01111110; + PORTC |= 0b10000100; + PORTD |= 0b01111110; + + DDRB |= 0b01111111; // Column output pins + + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } +} + +uint8_t matrix_scan(void) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + select_col(col); + _delay_us(3); + uint8_t rows = read_rows(); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col); + bool curr_bit = rows & (1<<row); + if (prev_bit != curr_bit) { + matrix_debouncing[row] ^= ((matrix_row_t)1<<col); + debouncing = DEBOUNCING_DELAY; + } + } + } + + if (debouncing) { + if (--debouncing) { + _delay_ms(1); + } + else { + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = matrix_debouncing[i]; + } + } + } + + return 1; +} + +bool matrix_is_modified(void) { + if (debouncing) + return false; + else + return true; +} + +inline bool matrix_is_on(uint8_t row, uint8_t col) { + return (matrix[row] & ((matrix_row_t)1<<col)); +} + +inline matrix_row_t matrix_get_row(uint8_t row) { + return matrix[row]; +} + +void matrix_print(void) { + print("\nr/c 0123456789ABCDEF\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row))); + } +} + +uint8_t matrix_key_count(void) { + uint8_t count = 0; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + count += bitpop32(matrix[i]); + } + return count; +} + +static uint8_t read_rows(void) { + return + (PINC&(1<<7) ? 0 : (1<<0)) | + (PIND&(1<<5) ? 0 : (1<<1)) | + (PIND&(1<<3) ? 0 : (1<<2)) | + (PIND&(1<<1) ? 0 : (1<<3)) | + (PINC&(1<<2) ? 0 : (1<<4)) | + (PIND&(1<<2) ? 0 : (1<<5)) | + (PIND&(1<<4) ? 0 : (1<<6)) | + (PIND&(1<<6) ? 0 : (1<<7)); +} + +static void select_col(uint8_t col) { + switch (col) { + case 0: PORTB = (PORTB & ~0b01111111) | 0b01100100; break; + case 1: PORTB = (PORTB & ~0b01111111) | 0b01101100; break; + case 2: PORTB = (PORTB & ~0b01111111) | 0b01100010; break; + case 3: PORTB = (PORTB & ~0b01111111) | 0b01111010; break; + case 4: PORTB = (PORTB & ~0b01111111) | 0b01100110; break; + case 5: PORTB = (PORTB & ~0b01111111) | 0b01110110; break; + case 6: PORTB = (PORTB & ~0b01111111) | 0b01101110; break; + case 7: PORTB = (PORTB & ~0b01111111) | 0b01111110; break; + case 8: PORTB = (PORTB & ~0b01111111) | 0b01000001; break; + case 9: PORTB = (PORTB & ~0b01111111) | 0b00100001; break; + case 10: PORTB = (PORTB & ~0b01111111) | 0b01101010; break; + case 11: PORTB = (PORTB & ~0b01111111) | 0b01110010; break; + case 12: PORTB = (PORTB & ~0b01111111) | 0b01111100; break; + case 13: PORTB = (PORTB & ~0b01111111) | 0b01110100; break; + case 14: PORTB = (PORTB & ~0b01111111) | 0b01111000; break; + case 15: PORTB = (PORTB & ~0b01111111) | 0b01110000; break; + case 16: PORTB = (PORTB & ~0b01111111) | 0b01100000; break; + case 17: PORTB = (PORTB & ~0b01111111) | 0b01101000; break; + } +} diff --git a/keyboards/kitten_paw/readme.md b/keyboards/kitten_paw/readme.md new file mode 100644 index 000000000..a6ef2a067 --- /dev/null +++ b/keyboards/kitten_paw/readme.md @@ -0,0 +1,32 @@ +kitten_paw keyboard firmware +====================== +This is the firmware for the 2016 revision of the Kitten Paw controller by Bathroom Epiphanies. +Most of the boilerplate code is the work of [BathroomEpiphanies](https://github.com/BathroomEpiphanies). + +NKRO doesn't work at the moment, I don't know if I will take the time to find out how to fix this, so far 6KRO is enough for me. + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/kitten_paw folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: + +``` +$ make keymap=[default|jack|<name>] +``` + +Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` diff --git a/keyboards/phantom/keymaps/xyverz/keymap.c b/keyboards/phantom/keymaps/xyverz/keymap.c new file mode 100644 index 000000000..4a1522638 --- /dev/null +++ b/keyboards/phantom/keymaps/xyverz/keymap.c @@ -0,0 +1,104 @@ +#include "phantom.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + + +// Used for SHIFT_ESC +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QW 0 +#define _DV 1 +#define _CM 2 +#define _FL 3 + +// Macro name shortcuts +#define QWERTY M(_QW) +#define DVORAK M(_DV) +#define COLEMAK M(_CM) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QW] = { /* Layer 0: Qwerty */ + {KC_ESC, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS}, + {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP}, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN}, + {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX}, + {KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, KC_UP, XXXXXXX}, + {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT} + }, + +[_DV] = { /* Layer 1: Dvorak */ + {KC_ESC, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS}, + {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL, KC_END, KC_PGDN}, + {KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX}, + {KC_LSFT, XXXXXXX, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, XXXXXXX, KC_RSFT, XXXXXXX, KC_UP, XXXXXXX}, + {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT} + }, + +[_CM] = { /* Layer 2: Colemak */ + {KC_ESC, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS}, + {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, XXXXXXX, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX}, + {KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, KC_UP, XXXXXXX}, + {KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT} + }, + +[_FL] = { /* Layer 3: Functions */ + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, RESET, KC_MPRV, KC_MPLY, KC_MNXT}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX}, + {_______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX}, + {QWERTY, DVORAK, COLEMAK, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______}, + }, + + +}; + +enum function_id { + SHIFT_ESC, +}; + + +const uint16_t PROGMEM fn_actions[] = { + +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _DV: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DV); + } + break; + case _QW: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_CM); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/planck/keymaps/circuit/Makefile b/keyboards/planck/keymaps/circuit/Makefile new file mode 100644 index 000000000..1ed0ff956 --- /dev/null +++ b/keyboards/planck/keymaps/circuit/Makefile @@ -0,0 +1,25 @@ + +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +TAP_DANCE_ENABLE = yes # Enables the double-tap functionality of keys + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/planck/keymaps/circuit/Readme.md b/keyboards/planck/keymaps/circuit/Readme.md new file mode 100644 index 000000000..cbdf5de4e --- /dev/null +++ b/keyboards/planck/keymaps/circuit/Readme.md @@ -0,0 +1,44 @@ +##Design goals: +1. Arrow keys always available. +2. As close to a to my US layout 107-key QWERTY keyboard as I could manage, (i.e. as few arbitrary decisions as possible). +3. Togglable DVORAK keyboard. +4. most frequently used things in the easiest to reach places. +5. Ability to game on it, just for fun. + +My layout differs from most in the placement the ARROW keys, `ESC`, VOL keys, use of double-tap `CAPS`, and the GAME LOCK function. + +I put the layer buttons in the usual spots. I originally wanted only function/symbols layer, but that proved detrimental. I use some timed press actions to save some space, but this has been accounted for, (see GAME LOCK below). I'm not fully satisfied with the current product (see NOTES below), so it may change in the future. + +##Effective layers: +* Default later is obviously your letters and modifiers. +* Lower layer [NUMBER] is your numbers and punctuation. +* Upper layer [ACTION] is your symbols and actions. +* Function layer is the infrequently used function keys, layout toggle, game lock, and reset. + +There is also a toggle for the DVORAK/QWERTY layers, but in normal typing this is not of concern. + +###Special keys: +* `RSHFT` and `ENTER` are combined. Tap once for `ENTER` and hold for `RSHFT`. `ENTER` will be registered on release if released within 200 ms, else `RSHFT` is registered starting at 201 ms until release. +* If for some reason, this interferes with the normal usage of the `ENTER` key in any way, (some problem that may never happen), I have added a regular non-modified `ENTER` key on the same key in the [ACTION] layer. +* `LSHFT` and `CAPS` are also combined. The key works like a normal `LSHFT` unless double-tapped, in which case it counts as `CAPS`. This functionality unfortunately delays all key presses by at most 200 ms, but I have added ways to disable this both temporarily or permanently, described below. +* A failsafe `CAPS` key is on the same key in the [ACTION] layer. +* There are `UNDO`, `CUT`, `COPY`, and `PASTE` keys. This was intended to be a universal way to use these commands since in macOS cut is `⌘ + C` but in Windows it is `⌃ + C`. Unfortunately these special keys only work in Windows. ¯\\\_(ツ)\_/¯ + +##Game lock: +**TL;DR** the game lock toggle disables the double-tap `CAPS`, and disables `GUI` keys (WINDOWS key). + +I wished for this keyboard to be fully usable in the most demanding of games. The most demanding game I know of is ARMA 3 which has a binding to practically every individual key of a 107-key keyboard. This means I need to have pretty much every key possible somewhere. I also wanted the keyboard to be responsive in games for every critical keypress. This means having a way to disable features that introduce an inherent delay to registering keys, such as double-tap. + +I do not expect to see this used by the pros, but I enjoyed making it. As for use in ARMA 3, I got a little ways into the APEX campaign, but I found a few flaws. For Example, I cannot enable my HUD GPS since that requires `RCTRL`+`M` but `RCTRL` is not bound. The obvious fix is to rebind the action to a new key, but I still take this as a shortcoming of my layout. + +###If you wish to disable double-tap +####Disable it temporarily +Turn on the game lock. While on, it registers as normal `LSHFT` and has no delay. Whether in game mode or not, `CAPS` is on the same key in the [ACTION] layer. + +####Disable it permanently +Open the `Makefile` and set `TAP_DANCE_ENABLE = no`. I wrote the layout to compensate for this change, and no further changes to the code should be necessary. Whether or not it's disabled, `CAPS` is on the same key in the [ACTION] layer. + +##Notes: +* `ALT` and `GUI` are reversed compared to the normal US layout. I will also be using my Planck on my mac, and that's the standard in the Apple ecosystem. I may add a special compiler flag in the future to swap the two. +* The DVORAK `Z` key is to the right of the `S` key instead of under it as part of a compromise I made to keep the ARROW keys available on the default layer. I prioritize the ARROW keys, so the DVORAK layout is the one to suffer. +* I also support the little tones that the default Planck layout features, identical to them too, (minus those for layouts I don't support). To enable it, open the `Makefile` and set `AUDIO_ENABLE = yes`. diff --git a/keyboards/planck/keymaps/circuit/config.h b/keyboards/planck/keymaps/circuit/config.h new file mode 100644 index 000000000..22244f4a7 --- /dev/null +++ b/keyboards/planck/keymaps/circuit/config.h @@ -0,0 +1,91 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* Tap-dance interval definition */ +#define TAPPING_TERM 200 + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Planck Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#ifdef SUBPROJECT_rev3 + #include "rev3/config.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4/config.h" +#endif + +#endif diff --git a/keyboards/planck/keymaps/circuit/keyboard-layout.png b/keyboards/planck/keymaps/circuit/keyboard-layout.png Binary files differnew file mode 100644 index 000000000..e9296a6d9 --- /dev/null +++ b/keyboards/planck/keymaps/circuit/keyboard-layout.png diff --git a/keyboards/planck/keymaps/circuit/keymap.c b/keyboards/planck/keymaps/circuit/keymap.c new file mode 100644 index 000000000..63e01f389 --- /dev/null +++ b/keyboards/planck/keymaps/circuit/keymap.c @@ -0,0 +1,258 @@ +// Layout picture at http://www.keyboard-layout-editor.com/#/gists/125febfad6960add078e6f14256539b6 + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE +#include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _DVORAK 1 +#define _LOCKED 2 +#define _NUMBER 3 +#define _ACTION 4 +#define _FUNCTN 5 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + DVORAK, + NUMBER, + ACTION +}; + +// Key code names +#define SFT_ENT FUNC(0) // Tap for enter, hold for right shift +#define LOCK FUNC(1) +#define KC_PSTE KC_PASTE +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#ifdef TAP_DANCE_ENABLE +#define SFT_CAP TD(0) // Left shift, double tap for caps +#endif +#ifndef TAP_DANCE_ENABLE +#define SFT_CAP KC_LSFT // Regular left shift +#endif + +// Tap Dance Definitions +#ifdef TAP_DANCE_ENABLE +qk_tap_dance_action_t tap_dance_actions[] = { + [0] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS) +}; +#endif + +// Function definitions +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), + [1] = ACTION_LAYER_TOGGLE(_LOCKED) +}; + +// Layout definitions +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | BKSP | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |*Shift| Z | X | C | V | B | N | M | , | . | Up |SftEnt| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | Alt | Cmd | Vol- | ACTN | Space | NUMS | Vol+ | Left | Down | Left | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {SFT_CAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SFT_ENT}, + {KC_LCTL, KC_LALT, KC_LGUI, KC_VOLD, ACTION, KC_SPC, KC_SPC, NUMBER, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT} +}, + +/* DVORAK + * ,-----------------------------------------------------------------------------------. + * | | ' | , | . | P | Y | F | G | C | R | L | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | A | O | E | U | I | D | H | T | N | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | ; | Q | J | K | X | B | M | W | V | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {_______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______}, + {_______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_Z }, + {_______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* LOCK + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | NULL | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_LOCKED] = { + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* NUMBERS + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | ~ | NULL | NULL | NULL | | | _ | + | { | } | ? | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | ` | NULL | NULL | NULL | \ | - | = | [ | ] | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | NULL | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_NUMBER] = { + {_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______}, + {_______, KC_TILD, XXXXXXX, XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_QUES, KC_SLSH}, + {_______, KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, _______}, + {_______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______} +}, + +/* ACTIONS + * ,-----------------------------------------------------------------------------------. + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | CAPS | Undo | Cut | Copy | Paste| NULL | NULL | NULL | NULL | NULL | PgUp | Enter| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | Mute | | NULL | | NULL | Home | PgDn | End | + * `-----------------------------------------------------------------------------------' + */ +[_ACTION] = { + {_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {KC_CAPS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_ENT }, + {_______, _______, _______, KC_MUTE, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END } +}, + +/* FUNCTIONS + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | NULL | NULL | NULL | NULL | NULL |QWERTY|DVORAK| NULL | NULL | NULL | NULL | NULL | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Reset| NULL | Lock | NULL | | NULL | | NULL | NULL | NULL | NULL | + * `-----------------------------------------------------------------------------------' + */ +[_FUNCTN] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 }, + {KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 }, + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERTY, DVORAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {RESET, XXXXXXX, LOCK, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} +} + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + if (IS_LAYER_ON(_DVORAK)) { +#ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); +#endif + layer_off(_DVORAK); + } + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + if (!IS_LAYER_ON(_DVORAK)) { +#ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +#endif + layer_on(_DVORAK); + } + } + return false; + break; + case NUMBER: + if (record->event.pressed) { + layer_on(_NUMBER); + update_tri_layer(_NUMBER, _ACTION, _FUNCTN); + } else { + layer_off(_NUMBER); + update_tri_layer(_NUMBER, _ACTION, _FUNCTN); + } + return false; + break; + case ACTION: + if (record->event.pressed) { + layer_on(_ACTION); + update_tri_layer(_NUMBER, _ACTION, _FUNCTN); + } else { + layer_off(_ACTION); + update_tri_layer(_NUMBER, _ACTION, _FUNCTN); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { +#ifdef AUDIO_ENABLE + startup_user(); +#endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/dbroqua/keymap.c b/keyboards/planck/keymaps/dbroqua/keymap.c new file mode 100644 index 000000000..775f1d56f --- /dev/null +++ b/keyboards/planck/keymaps/dbroqua/keymap.c @@ -0,0 +1,314 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE +#include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | | Alt |Lower | Space |Raise |AltGr | [ | ] | \ | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {KC_LCTL, KC_LGUI, _______, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, KC_LBRC, KC_RBRC, KC_BSLS} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | Home | PgDwn| PgUp | End | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | |Insert| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| | | | | | | | | | Del | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END,_______,_______}, + {_______, _______, _______, _______, _______, _______, _______,_______,_______,_______, _______, KC_INS}, + {BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | - | = | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | Left | Down | Up | Right| | ` | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | Mute | Vol+ | Vol- | | | |Insert| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Prev | Play | Next | Del | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL}, + {_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_GRV}, + {_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, KC_INS}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_DEL} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/experimental/Makefile b/keyboards/planck/keymaps/experimental/Makefile index 877c4aed0..3a8250a9b 100644 --- a/keyboards/planck/keymaps/experimental/Makefile +++ b/keyboards/planck/keymaps/experimental/Makefile @@ -16,6 +16,7 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +ONEHAND_ENABLE = yes # Enable one-hand typing # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/planck/keymaps/experimental/keymap.c b/keyboards/planck/keymaps/experimental/keymap.c index 2c1270094..569dbcc8a 100644 --- a/keyboards/planck/keymaps/experimental/keymap.c +++ b/keyboards/planck/keymaps/experimental/keymap.c @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_FN0, KC_FN0, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, - {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_FN0, KC_FN0, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, - {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_FN0, KC_FN0, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower @@ -186,7 +186,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - + ACTION_SWAP_HANDS_TAP_KEY(KC_SPC), }; #ifdef AUDIO_ENABLE diff --git a/keyboards/planck/keymaps/premek/Makefile b/keyboards/planck/keymaps/premek/Makefile new file mode 100644 index 000000000..0f4953888 --- /dev/null +++ b/keyboards/planck/keymaps/premek/Makefile @@ -0,0 +1,25 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/planck/keymaps/premek/keymap.c b/keyboards/planck/keymaps/premek/keymap.c new file mode 100644 index 000000000..9b212ab25 --- /dev/null +++ b/keyboards/planck/keymaps/premek/keymap.c @@ -0,0 +1,231 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = { + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, + {KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {KC_LGUI, _______, _______, KC_LALT, LOWER, KC_SPC, KC_ENT, KC_SPC, RAISE, KC_RALT, _______, KC_RGUI} +}, +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, +[_LOWER] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0}, + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, KC_F6, KC_HOME, KC_PGDN, KC_PGUP, KC_END }, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_F12, KC_PLUS, KC_PIPE, KC_LCBR, KC_RCBR}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, +[_RAISE] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN}, + {_______, _______, _______, KC_QUOT, KC_MINS, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}, + {_______, KC_TILD, KC_GRV, KC_PLUS, KC_EQL, KC_PIPE, _______, KC_BSLS, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/premek/readme.md b/keyboards/planck/keymaps/premek/readme.md new file mode 100644 index 000000000..16debdd63 --- /dev/null +++ b/keyboards/planck/keymaps/premek/readme.md @@ -0,0 +1,4 @@ +# Split Layout +Inspired by TECK + +[Layout](http://www.keyboard-layout-editor.com/##@_switchMount=cherry&switchBrand=gateron&switchType=KS-3-Tea&pcb:true%3B&@_c=%23e6e6e6&t=%23757575&a:7&fa@:5%3B%3B&=Esc&_a:4&fa@:5&:0&:0&:0&:0&:0&:0&:0&:0&:5%3B%3B&=%0A%0A!%0A1%0A%0A%0A%0A%0A%0AQ&=%0A%0A%2F@%0A2%0A%0A%0A%0A%0A%0AW&=%0A%0A%23%0A3%0A%0A%0A%0A%0A%0AE&=%0A%0A$%0A4%0A%0A%0A%0A%0A%0AR&=%0A%0A%25%0A5%0A%0A%0A%0A%0A%0AT&_c=%23e3b02d&a:7%3B&=Del&_c=%23e6e6e6&a:4%3B&=%0A%0A%5E%0A6%0A%0A%0A%0A%0A%0AY&=%0A%0A%2F&%0A7%0A%0A%0A%0A%0A%0AU&=%0A%0A*%0A8%0A%0A%0A%0A%0A%0AI&=%0A%0A(%0A9%0A%0A%0A%0A%0A%0AO&=%0A%0A)%0A0%0A%0A%0A%0A%0A%0AP%3B&@_a:7%3B&=Shift&_a:4%3B&=%0A%0A%0AF1%0A%0A%0A%0A%0A%0AA&=%0A%0A%0AF2%0A%0A%0A%0A%0A%0AS&=%0A%0A'%0AF3%0A%0A%0A%0A%0A%0AD&_c=%23e3b02d&n:true%3B&=%0A%0A-%0AF4%0A%0A%0A%0A%0A%0AF&_c=%23e6e6e6%3B&=%0A%0A%0AF5%0A%0A%0A%0A%0A%0AG&_c=%23e3b02d&a:7%3B&=Tab&_c=%23e6e6e6&a:4%3B&=%0A%0A%0AF6%0A%0A%0A%0A%0A%0AH&_c=%23e3b02d&n:true%3B&=%0A%0A%2F&larr%2F%3B%0AHom%0A%0A%0A%0A%0A%0AJ&_c=%23e6e6e6%3B&=%0A%0A%2F&darr%2F%3B%0APgD%0A%0A%0A%0A%0A%0AK&=%0A%0A%2F&uarr%2F%3B%0APgU%0A%0A%0A%0A%0A%0AL&=%0A%0A%2F&rarr%2F%3B%0AEnd%0A%0A%0A%0A%0A%0A%2F%3B%3B&@_a:7%3B&=Ctrl&_a:4%3B&=%0A%0A~%0AF7%0A%0A%0A%0A%0A%0AZ&=%0A%0A%60%0AF8%0A%0A%0A%0A%0A%0AX&=%0A%0A+%0AF9%0A%0A%0A%0A%0A%0AC&=%0A%0A%2F=%0AF10%0A%0A%0A%0A%0A%0AV&=%0A%0A%7C%0AF11%0A%0A%0A%0A%0A%0AB&_c=%23e3b02d&a:7%3B&=BSp&_c=%23e6e6e6&a:4%3B&=%0A%0A%5C%0AF12%0A%0A%0A%0A%0A%0AN&=%0A%0A%5B%0A%0A%0A%0A%0A%0A%0AM&=%0A%0A%5D%0A%0A%0A%0A%0A%0A%0A,&=%0A%0A%7B%0A%0A%0A%0A%0A%0A%0A.&=%0A%0A%7D%0A%0A%0A%0A%0A%0A%0A%2F%2F%3B&@_a:7%3B&=&=&=&=Alt&_c=%23e3b02d%3B&=%2F&dArr%2F%3B&_c=%23e6e6e6%3B&=spc&_c=%23e3b02d%3B&=%2F&crarr%2F%3B&_c=%23e6e6e6%3B&=spc&_c=%23e3b02d%3B&=%2F&uArr%2F%3B&_c=%23e6e6e6%3B&=Alt&=&=) diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c index 90529428d..192933b18 100644 --- a/keyboards/planck/keymaps/xyverz/keymap.c +++ b/keyboards/planck/keymaps/xyverz/keymap.c @@ -19,18 +19,15 @@ extern keymap_config_t keymap_config; #define _DVORAK 2 #define _LOWER 3 #define _RAISE 4 -#define _PLOVER 5 #define _ADJUST 16 enum planck_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, - PLOVER, LOWER, RAISE, - BACKLIT, - EXT_PLV + BACKLIT }; // Fillers to make layering more clear @@ -129,30 +126,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {BACKLIT, _______, KC_HOME, KC_END, _______, KC_DEL, KC_INS, _______, KC_PGUP, KC_PGDN, _______, _______} }, -/* Plover layer (http://opensteno.org) - * ,-----------------------------------------------------------------------------------. - * | # | # | # | # | # | # | # | # | # | # | # | # | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | S | T | P | H | * | * | F | P | L | T | D | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Exit | | | A | O | | E | U | | | | - * `-----------------------------------------------------------------------------------' - */ - -[_PLOVER] = { - {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, - {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, - {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} -}, - /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -161,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -175,8 +153,6 @@ float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_plover[][2] = SONG(PLOVER_SOUND); -float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); float tone_goodbye[][2] = SONG(GOODBYE_SOUND); @@ -248,34 +224,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case PLOVER: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - stop_all_notes(); - PLAY_NOTE_ARRAY(tone_plover, false, 0); - #endif - layer_off(_RAISE); - layer_off(_LOWER); - layer_off(_ADJUST); - layer_on(_PLOVER); - if (!eeconfig_is_enabled()) { - eeconfig_init(); - } - keymap_config.raw = eeconfig_read_keymap(); - keymap_config.nkro = 1; - eeconfig_update_keymap(keymap_config.raw); - } - return false; - break; - case EXT_PLV: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); - #endif - layer_off(_PLOVER); - } - return false; - break; } return true; } @@ -311,4 +259,4 @@ void music_scale_user(void) PLAY_NOTE_ARRAY(music_scale, false, 0); } -#endif
\ No newline at end of file +#endif diff --git a/keyboards/planck/keymaps/xyverz/makefile.mk b/keyboards/planck/keymaps/xyverz/makefile.mk index 0f4953888..93a89bb4a 100644 --- a/keyboards/planck/keymaps/xyverz/makefile.mk +++ b/keyboards/planck/keymaps/xyverz/makefile.mk @@ -9,10 +9,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c index 8d70bb4e5..645b450d1 100644 --- a/keyboards/planck/planck.c +++ b/keyboards/planck/planck.c @@ -1,5 +1,15 @@ #include "planck.h" +#ifdef ONEHAND_ENABLE +__attribute__ ((weak)) +const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, +}; +#endif + void matrix_init_kb(void) { // Turn status LED on DDRE |= (1<<6); diff --git a/keyboards/preonic/keymaps/jacwib/Makefile b/keyboards/preonic/keymaps/jacwib/Makefile new file mode 100644 index 000000000..3e87d41d3 --- /dev/null +++ b/keyboards/preonic/keymaps/jacwib/Makefile @@ -0,0 +1,20 @@ + + +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/preonic/keymaps/jacwib/config.h b/keyboards/preonic/keymaps/jacwib/config.h new file mode 100644 index 000000000..23e9e0ed2 --- /dev/null +++ b/keyboards/preonic/keymaps/jacwib/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#define FORCE_NKRO 1 + +#endif diff --git a/keyboards/preonic/keymaps/jacwib/keymap.c b/keyboards/preonic/keymaps/jacwib/keymap.c new file mode 100644 index 000000000..cf441bf30 --- /dev/null +++ b/keyboards/preonic/keymaps/jacwib/keymap.c @@ -0,0 +1,215 @@ +#include "preonic.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "keymap_nordic.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum preonic_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + BACKLIT +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Å | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | Ö | Ä | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| < | Z | X | C | V | B | N | M | . | , | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt |AltGr |Lower | Space| Enter|Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, NO_PLUS, KC_BSPC}, + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AM }, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_AE, NO_OSLH}, + {KC_LSFT, NO_LESS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_COMM, NO_MINS}, + {KC_LCTL, KC_LGUI, KC_LALT, NO_ALGR, LOWER, KC_SPC, KC_ENT, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | | @ | £ | $ | | | { | [ | ] | } | \ | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | |VolUp | | | ~ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | |LastS |PauseP|NextS | | * | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | |VolDwn| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | |Bspc | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {_______, NO_AT, NO_PND, NO_DLR, _______, _______, NO_LCBR, NO_LBRC, NO_RBRC, NO_RCBR, NO_BSLS, KC_DEL}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, NO_TILD}, + {_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, LSFT(KC_BSLS)}, + {_______, NO_PIPE, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, _______, _______} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ! | " | # | ¤ | % | & | / | ( | ) | = | ? | Ins | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | |Mouse^| | | | |ScrlUp| | | ^ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | |Mouse<|MouseV|Mouse>| | |MLC |MMC |MRC | ' | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | > | | | | | | |ScrlDown| : | ; | _ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | |Bspc | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {LSFT(KC_1),NO_QUO2,LSFT(KC_3), NO_BULT,LSFT(KC_5), NO_AMPR, NO_SLSH, NO_LPRN, NO_RPRN, NO_EQL, NO_QUES, KC_INS}, + {_______, _______, _______, KC_MS_U, _______, _______, _______, _______, KC_WH_U, _______, _______, NO_CIRC}, + {_______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, NO_APOS, NO_QUOT}, + {_______, NO_GRTR, _______, _______, _______, _______, _______, _______, KC_WH_D, NO_COLN, NO_SCLN, NO_UNDS}, + {_______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, _______, _______, _______} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | Reset| | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | |Rsft | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |MusOn |MusOff| | | | | | | | | Reset| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT}, + {_______, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______, _______, RESET }, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { + {NOTE_B5, 20}, + {NOTE_B6, 8}, + {NOTE_DS6, 20}, + {NOTE_B6, 8} +}; + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + } + return true; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/preonic/keymaps/jacwib/readme.md b/keyboards/preonic/keymaps/jacwib/readme.md new file mode 100644 index 000000000..066031235 --- /dev/null +++ b/keyboards/preonic/keymaps/jacwib/readme.md @@ -0,0 +1,3 @@ +# Jacwib's preonic keymap. + +Designed for use with a swedish language. diff --git a/keyboards/preonic/keymaps/kinesis/Makefile b/keyboards/preonic/keymaps/kinesis/Makefile new file mode 100644 index 000000000..6c8d2897c --- /dev/null +++ b/keyboards/preonic/keymaps/kinesis/Makefile @@ -0,0 +1,27 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +TAP_DANCE_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/preonic/keymaps/kinesis/config.h b/keyboards/preonic/keymaps/kinesis/config.h new file mode 100644 index 000000000..086baa84f --- /dev/null +++ b/keyboards/preonic/keymaps/kinesis/config.h @@ -0,0 +1,92 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6061 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Preonic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D1 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 28 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +#define TAPPING_TERM 200 + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/preonic/keymaps/kinesis/keymap.c b/keyboards/preonic/keymaps/kinesis/keymap.c new file mode 100644 index 000000000..9691be91d --- /dev/null +++ b/keyboards/preonic/keymaps/kinesis/keymap.c @@ -0,0 +1,144 @@ +#include "preonic.h" +#include "action_layer.h" +#include "eeconfig.h" +#ifdef AUDIO_ENABLE +#include "audio.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _FN 1 +#define _ULCK 2 + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define HYP_TIC ALL_T(KC_GRV) +#define EQ_LOCK TD(TD_EQ_LOCK) +#define MIN_ULK TD(TD_MIN_ULOCK) + +//Tap Dance Declarations +enum { + TD_EQ_LOCK = 0, + TD_MIN_ULOCK +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | FN | ` | Alt | LGUI | Back | ESC |ENTER | SPCE | RGUI | [ | ] | FN | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = { + {EQ_LOCK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MIN_ULK }, + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS }, + {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, + {KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC }, + {MO(_FN), HYP_TIC, KC_LALT, KC_LGUI, KC_BSPC, KC_ESC, KC_ENT, KC_SPC, KC_RGUI, KC_LBRC, KC_RBRC, MO(_FN) } + }, + + /* Fn + * ,-----------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | VOL- | VOL+ | MUTE |BLtogg| | LEFT | DOWN | UP | RGHT | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | BL- | BL+ |Aud on|AudOff|AGnorm|AGswap| | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff| | |PLY/PS| | PREV | NEXT | | + * `-----------------------------------------------------------------------------------' + */ + [_FN] = { + {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______ }, + {_______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______ }, + {_______, KC_VOLD, KC_VOLU, KC_MUTE, BL_TOGG, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______ }, + {_______, BL_DEC, BL_INC, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______ }, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, KC_MPLY, _______, KC_MPRV, KC_MNXT, _______ } + } + +}; + +float tone_startup[][2] = { + {NOTE_B5, 20}, + {NOTE_B6, 8}, + {NOTE_DS6, 20}, + {NOTE_B6, 8} +}; + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +/*bool process_record_user(uint16_t keycode, keyrecord_t *record) {*/ + /*return true;*/ + /*[>switch (keycode) {<]*/ + /*[>case QWERTY:<]*/ + /*[>return true;<]*/ + /*[>}<]*/ +/*};*/ + +void matrix_init_user(void) { + startup_user(); +} + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + + +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for equal, twice for hyper + X (alfred lock) + [TD_EQ_LOCK] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, HYPR(KC_X)), + //Tap once for minus, twice for time.heals.nothing + [TD_MIN_ULOCK] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, M(_ULCK)) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _ULCK: + if (record->event.pressed) { + /* time.heals.nothing */ + return MACRO( I(220), T(T), T(I), T(M), T(E), T(DOT), T(H), T(E), T(A), T(L), T(S), T(DOT), T(N), T(O), T(T), T(H), T(I), T(N), T(G), END); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/preonic/keymaps/kinesis/readme.md b/keyboards/preonic/keymaps/kinesis/readme.md new file mode 100644 index 000000000..e911968dd --- /dev/null +++ b/keyboards/preonic/keymaps/kinesis/readme.md @@ -0,0 +1 @@ +# The default Preonic layout - largely based on the Planck's
\ No newline at end of file diff --git a/keyboards/preonic/preonic.c b/keyboards/preonic/preonic.c index 889c3fc8f..d9c119b8d 100644 --- a/keyboards/preonic/preonic.c +++ b/keyboards/preonic/preonic.c @@ -1,5 +1,16 @@ #include "preonic.h" +#ifdef ONEHAND_ENABLE +__attribute__ ((weak)) +const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, + {{11, 4}, {10, 4}, {9, 4}, {8, 4}, {7, 4}, {6, 4}, {5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, +}; +#endif + void matrix_init_kb(void) { // Turn status LED on diff --git a/keyboards/readme.md b/keyboards/readme.md index f6c90b1f6..4f1796219 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -39,6 +39,7 @@ These keyboards are part of the QMK repository, but their manufacturers are not * [hhkb](/keyboards/hhkb) — The Happy Hacking keyboard can be hacked with a custom controller to run QMK. * [jd45](/keyboards/jd45) — Another Geekhack community project, designed by jdcarpe. * [kc60](/keyboards/kc60) — A programmable Chinese-made keyboard, lost in the mists of time. +* [kitten_paw](/keyboards/kitten_paw) — A replacement controller (2016 revision) for the Filco Majestouch by [Bathroom Epiphanies](https://github.com/BathroomEpiphanies) * [phantom](/keyboards/phantom) — A tenkeyless kit by Teel, also from Geekhack. * [retro_refit](/keyboards/retro_refit) — Another creation by IBNobody. * [satan](/keyboards/satan) — A GH60 variant. diff --git a/keyboards/s60-x/Makefile b/keyboards/s60-x/Makefile new file mode 100644 index 000000000..8b51d4609 --- /dev/null +++ b/keyboards/s60-x/Makefile @@ -0,0 +1,75 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../Makefile +endif + + diff --git a/keyboards/s60-x/config.h b/keyboards/s60-x/config.h new file mode 100644 index 000000000..ac7951c24 --- /dev/null +++ b/keyboards/s60-x/config.h @@ -0,0 +1,164 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2016 Julien Pecqueur <julien@peclu.net> +Copyright 2016 Felix Uhl <ifreilicht@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Massdrop +#define PRODUCT S60-X +#define DESCRIPTION q.m.k. keyboard firmware for S60-X + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 } +#define UNUSED_PINS { F0 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/Makefile b/keyboards/s60-x/keymaps/ansi_qwertz/Makefile new file mode 100644 index 000000000..6a078bcc3 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/config.h b/keyboards/s60-x/keymaps/ansi_qwertz/config.h new file mode 100644 index 000000000..6c01d579f --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/config.h @@ -0,0 +1,14 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// keymap needs oneshot functionality +#undef NO_ACTION_ONESHOT + +#undef IS_COMMAND +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#endif
\ No newline at end of file diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png Binary files differnew file mode 100644 index 000000000..168780c82 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg new file mode 100644 index 000000000..f03858993 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg @@ -0,0 +1,1046 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="900" + height="300" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.91 r13725" + version="1.0" + sodipodi:docname="KB_US-International-Alternative.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path5387" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + id="path5390" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Tail" + orient="auto" + refY="0.0" + refX="0.0" + id="Tail" + style="overflow:visible"> + <g + id="g5342" + transform="scale(-1.2)"> + <path + id="path5344" + d="M -3.8048674,-3.9585227 L 0.54352094,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5346" + d="M -1.2866832,-3.9585227 L 3.0617053,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5348" + d="M 1.3053582,-3.9585227 L 5.6537466,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5350" + d="M -3.8048674,4.1775838 L 0.54352094,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5352" + d="M -1.2866832,4.1775838 L 3.0617053,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5354" + d="M 1.3053582,4.1775838 L 5.6537466,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + </g> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path5363" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path5369" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;"> + <path + id="path5375" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.2) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow2Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Send" + style="overflow:visible;"> + <path + id="path5357" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.3) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;"> + <path + id="path5381" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.4) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + id="path5372" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(-5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4142136" + inkscape:cx="435.66801" + inkscape:cy="291.15819" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:grid-points="true" + showgrid="true" + gridtolerance="15px" + showborder="false" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="1912" + inkscape:window-y="-8" + showguides="true" + inkscape:guide-bbox="true" + inkscape:grid-bbox="true" + inkscape:window-maximized="1"> + <inkscape:grid + id="GridFromPre046Settings" + type="xygrid" + originx="0px" + originy="0px" + spacingx="7.5px" + spacingy="7.5px" + color="#0000ff" + empcolor="#0000ff" + opacity="0.12156863" + empopacity="0.25098039" + empspacing="4" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,0 L 60,0 L 60,60 L 0,60 L 0,0 z " + id="rect2186" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 60,0 L 120,0 L 120,60 L 60,60 L 60,0 z " + id="rect2218" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 120,0 L 180,0 L 180,60 L 120,60 L 120,0 z " + id="rect2222" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 180,0 L 240,0 L 240,60 L 180,60 L 180,0 z " + id="rect2228" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 240,0 L 300,0 L 300,60 L 240,60 L 240,0 z " + id="rect2230" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 300,0 L 360,0 L 360,60 L 300,60 L 300,0 z " + id="rect2232" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 360,0 L 420,0 L 420,60 L 360,60 L 360,0 z " + id="rect2234" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 420,0 L 480,0 L 480,60 L 420,60 L 420,0 z " + id="rect2236" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 480,0 L 540,0 L 540,60 L 480,60 L 480,0 z " + id="rect2238" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 540,0 L 600,0 L 600,60 L 540,60 L 540,0 z " + id="rect2240" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 600,0 L 660,0 L 660,60 L 600,60 L 600,0 z " + id="rect2242" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 660,0 L 720,0 L 720,60 L 660,60 L 660,0 z " + id="rect2244" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 720,0 L 780,0 L 780,60 L 720,60 L 720,0 z " + id="rect2246" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 780,0 L 900,0 L 900,60 L 780,60 L 780,0 z " + id="rect2248" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,60 L 90,60 L 90,120 L 0,120 L 0,60 z " + id="rect2250" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 90,60 L 150,60 L 150,120 L 90,120 L 90,60 z " + id="rect2252" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 150,60 L 210,60 L 210,120 L 150,120 L 150,60 z " + id="rect2254" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 210,60 L 270,60 L 270,120 L 210,120 L 210,60 z " + id="rect2256" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 270,60 L 330,60 L 330,120 L 270,120 L 270,60 z " + id="rect2258" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 330,60 L 390,60 L 390,120 L 330,120 L 330,60 z " + id="rect2262" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 390,60 L 450,60 L 450,120 L 390,120 L 390,60 z " + id="rect2264" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 450,60 L 510,60 L 510,120 L 450,120 L 450,60 z " + id="rect2266" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 510,60 L 570,60 L 570,120 L 510,120 L 510,60 z " + id="rect2270" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 570,60 L 630,60 L 630,120 L 570,120 L 570,60 z " + id="rect2272" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 630,60 L 690,60 L 690,120 L 630,120 L 630,60 z " + id="rect2274" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 690,60 L 750,60 L 750,120 L 690,120 L 690,60 z " + id="rect2278" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 750,60 L 810,60 L 810,120 L 750,120 L 750,60 z " + id="rect2280" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 810,60 L 900,60 L 900,120 L 810,120 L 810,60 z " + id="rect2284" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,120 L 105,120 L 105,180 L 0,180 L 0,120 z " + id="rect2286" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 105,120 L 165,120 L 165,180 L 105,180 L 105,120 z " + id="rect2292" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 165,120 L 225,120 L 225,180 L 165,180 L 165,120 z " + id="rect2296" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 225,120 L 285,120 L 285,180 L 225,180 L 225,120 z " + id="rect2298" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 285,120 L 345,120 L 345,180 L 285,180 L 285,120 z " + id="rect2300" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 345,120 L 405,120 L 405,180 L 345,180 L 345,120 z " + id="rect2302" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 405,120 L 465,120 L 465,180 L 405,180 L 405,120 z " + id="rect2306" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 465,120 L 525,120 L 525,180 L 465,180 L 465,120 z " + id="rect2308" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 525,120 L 585,120 L 585,180 L 525,180 L 525,120 z " + id="rect2312" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 585,120 L 645,120 L 645,180 L 585,180 L 585,120 z " + id="rect2314" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 645,120 L 705,120 L 705,180 L 645,180 L 645,120 z " + id="rect2316" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 705,120 L 765,120 L 765,180 L 705,180 L 705,120 z " + id="rect2318" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 765,120 L 900,120 L 900,180 L 765,180 L 765,120 z " + id="rect2320" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,180 L 135,180 L 135,240 L 0,240 L 0,180 z " + id="rect2322" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 135,180 L 195,180 L 195,240 L 135,240 L 135,180 z " + id="rect2324" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 195,180 L 255,180 L 255,240 L 195,240 L 195,180 z " + id="rect2326" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 255,180 L 315,180 L 315,240 L 255,240 L 255,180 z " + id="rect2330" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 315,180 L 375,180 L 375,240 L 315,240 L 315,180 z " + id="rect2334" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 375,180 L 435,180 L 435,240 L 375,240 L 375,180 z " + id="rect2336" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 435,180 L 495,180 L 495,240 L 435,240 L 435,180 z " + id="rect2338" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 495,180 L 555,180 L 555,240 L 495,240 L 495,180 z " + id="rect2340" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 555,180 L 615,180 L 615,240 L 555,240 L 555,180 z " + id="rect2342" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 615,180 L 675,180 L 675,240 L 615,240 L 615,180 z " + id="rect2344" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 675,180 L 735,180 L 735,240 L 675,240 L 675,180 z " + id="rect2346" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 735,180 L 900,180 L 900,240 L 735,240 L 735,180 z " + id="rect2348" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,240 L 90,240 L 90,300 L 0,300 L 0,240 z " + id="rect2350" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 810,240 L 900,240 L 900,300 L 810,300 L 810,240 z " + id="rect2352" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 150,240 L 240,240 L 240,300 L 150,300 L 150,240 z " + id="rect2354" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 600,240 L 690,240 L 690,300 L 600,300 L 600,240 z " + id="rect2360" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 240,240 L 600,240 L 600,300 L 240,300 L 240,240 z " + id="rect2362" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 90,240 L 150,240 L 150,300 L 90,300 L 90,240 z " + id="rect2364" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 690,240 L 750,240 L 750,300 L 690,300 L 690,240 z " + id="rect2366" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 750,240 L 810,240 L 810,300 L 750,300 L 750,240 z " + id="rect2368" /> + <path + style="" + d="" + id="flowRoot4146" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 75.351563,18.826172 L 74.4375,11.056641 L 74.4375,6.3691406 L 78.046875,6.3691406 L 78.046875,11.056641 L 77.132813,18.826172 L 75.351563,18.826172 M 74.484375,23.630859 L 74.484375,20.173828 L 77.964844,20.173828 L 77.964844,23.630859 L 74.484375,23.630859 M 75.351563,53.630859 L 75.351563,42.158203 L 71.34375,42.158203 L 71.34375,39.802734 L 71.601563,39.802734 C 73.062496,39.802748 74.124995,39.576186 74.789063,39.123047 C 75.460931,38.669937 75.855462,37.912125 75.972656,36.849609 L 78.65625,36.849609 L 78.65625,53.630859 L 75.351563,53.630859" + id="text5091" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 23.34375,14.220703 L 23.34375,16.810547 C 22.531233,17.365241 21.761702,17.775396 21.035156,18.041016 C 20.316391,18.298833 19.605455,18.42774 18.902344,18.427734 C 18.542956,18.42774 18.183581,18.39649 17.824219,18.333984 C 17.464832,18.27149 17.105457,18.181646 16.746094,18.064453 C 16.558583,18.001959 16.281239,17.904303 15.914063,17.771484 C 14.203116,17.185553 12.902336,16.892585 12.011719,16.892578 C 11.34765,16.892585 10.652339,17.041022 9.9257813,17.337891 C 9.2070275,17.626959 8.3984345,18.091802 7.5,18.732422 L 7.5,16.142578 C 8.3359346,15.580086 9.1328088,15.162118 9.890625,14.888672 C 10.648432,14.607431 11.363275,14.466806 12.035156,14.466797 C 12.949211,14.466806 14.085929,14.693368 15.445313,15.146484 C 15.46874,15.154305 15.484365,15.158212 15.492188,15.158203 C 15.632802,15.205087 15.847646,15.279305 16.136719,15.380859 C 17.347644,15.810555 18.285143,16.025398 18.949219,16.025391 C 19.613267,16.025398 20.29686,15.880867 21,15.591797 C 21.703109,15.302743 22.484358,14.845712 23.34375,14.220703 M 11.988281,35.033203 L 15.011719,35.033203 L 17.320313,39.369141 L 15.65625,39.369141 L 11.988281,35.033203" + id="text5103" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 136.47578,20.443359 C 136.04608,21.099612 135.54999,21.583986 134.9875,21.896484 C 134.42499,22.201173 133.76093,22.353517 132.99532,22.353516 C 131.76093,22.353517 130.81953,22.01758 130.1711,21.345703 C 129.53047,20.673831 129.21015,19.681645 129.21016,18.369141 C 129.21015,16.50196 129.75312,14.935556 130.83907,13.669922 C 131.93281,12.404308 133.27656,11.771496 134.87032,11.771484 C 135.4953,11.771496 136.03827,11.900402 136.49922,12.158203 C 136.96015,12.416027 137.33905,12.798839 137.63594,13.306641 L 138.25703,12.158203 L 140.34297,12.158203 L 138.62032,19.166016 C 138.59686,19.251958 138.57733,19.341801 138.56172,19.435547 C 138.54608,19.521488 138.53827,19.591801 138.53828,19.646484 C 138.53827,19.919926 138.63202,20.126957 138.81953,20.267578 C 139.00702,20.400394 139.28436,20.4668 139.65157,20.466797 C 139.95624,20.4668 140.27264,20.388675 140.60078,20.232422 C 140.9367,20.076175 141.2492,19.857426 141.53828,19.576172 C 142.21014,18.951177 142.71795,18.220709 143.06172,17.384766 C 143.41326,16.548835 143.58904,15.630867 143.58907,14.630859 C 143.58904,12.75587 142.86248,11.216809 141.40938,10.013672 C 139.96405,8.8027492 138.09686,8.1972811 135.80782,8.1972656 C 134.70624,8.1972811 133.6789,8.3300934 132.72578,8.5957031 C 131.78046,8.8613429 130.92109,9.2558737 130.14766,9.7792969 C 128.81953,10.669935 127.79609,11.783215 127.07735,13.119141 C 126.36641,14.455087 126.01094,15.91993 126.01094,17.513672 C 126.01094,19.912113 126.81953,21.83008 128.43672,23.267578 C 130.0539,24.697265 132.21406,25.412108 134.91719,25.412109 C 136.1828,25.412108 137.41718,25.220702 138.62032,24.837891 C 139.83124,24.455077 140.95623,23.90039 141.99532,23.173828 L 142.95625,24.544922 C 141.76092,25.443358 140.49139,26.119138 139.14766,26.572266 C 137.81171,27.025387 136.41718,27.25195 134.96407,27.251953 C 133.46405,27.25195 132.08515,27.060543 130.82735,26.677734 C 129.56953,26.302732 128.45234,25.744139 127.47578,25.001953 C 126.26484,24.05664 125.35859,22.966798 124.75703,21.732422 C 124.15547,20.49805 123.85469,19.099614 123.85469,17.537109 C 123.85469,16.232429 124.05781,14.990243 124.46407,13.810547 C 124.87813,12.623058 125.48359,11.544934 126.28047,10.576172 C 127.43672,9.1621238 128.82734,8.0918124 130.45235,7.3652344 C 132.07734,6.6386889 133.88593,6.275408 135.87813,6.2753906 C 137.19843,6.275408 138.43671,6.4550953 139.59297,6.8144531 C 140.75702,7.1660321 141.76873,7.6660316 142.62813,8.3144531 C 143.68279,9.1347801 144.46795,10.072279 144.9836,11.126953 C 145.50701,12.17384 145.76873,13.357432 145.76875,14.677734 C 145.76873,15.966805 145.51092,17.15821 144.99532,18.251953 C 144.48748,19.337895 143.75311,20.267581 142.79219,21.041016 C 142.2453,21.478518 141.64764,21.814455 140.99922,22.048828 C 140.35858,22.275392 139.69061,22.388673 138.99532,22.388672 C 138.16718,22.388673 137.54218,22.224611 137.12032,21.896484 C 136.70624,21.568361 136.4914,21.083987 136.47578,20.443359 M 137.06172,15.427734 C 136.96015,14.794931 136.73358,14.314462 136.38203,13.986328 C 136.03827,13.650401 135.58124,13.482432 135.01094,13.482422 C 134.1203,13.482432 133.34687,13.966807 132.69063,14.935547 C 132.03437,15.904305 131.70624,17.068366 131.70625,18.427734 C 131.70624,19.146489 131.86249,19.693363 132.175,20.068359 C 132.49531,20.443363 132.95624,20.630862 133.55782,20.630859 C 134.20624,20.630862 134.79608,20.384769 135.32735,19.892578 C 135.8664,19.400395 136.23358,18.75977 136.42891,17.970703 L 137.06172,15.427734 M 128.56563,53.630859 C 128.58125,52.130861 128.90156,50.861331 129.52657,49.822266 C 130.15156,48.775395 131.26094,47.716803 132.85469,46.646484 C 133.09687,46.482429 133.44844,46.255867 133.90938,45.966797 C 136.01875,44.615243 137.07343,43.314463 137.07344,42.064453 C 137.07343,41.322278 136.85078,40.736341 136.40547,40.306641 C 135.96015,39.876967 135.35078,39.662123 134.57735,39.662109 C 133.73359,39.662123 133.08125,39.927748 132.62032,40.458984 C 132.16719,40.982435 131.94062,41.732434 131.94063,42.708984 L 131.94063,42.849609 L 128.84688,42.849609 C 128.84688,40.927747 129.3625,39.44728 130.39375,38.408203 C 131.425,37.369157 132.89375,36.849626 134.8,36.849609 C 136.52656,36.849626 137.90546,37.322282 138.93672,38.267578 C 139.96796,39.205093 140.48358,40.455091 140.4836,42.017578 C 140.48358,43.134776 140.21405,44.103525 139.675,44.923828 C 139.13593,45.744149 138.09296,46.677741 136.5461,47.724609 C 136.21796,47.951178 135.76484,48.248052 135.18672,48.615234 C 133.71797,49.560551 132.88984,50.2793 132.70235,50.771484 L 140.31953,50.771484 L 140.31953,53.630859 L 128.56563,53.630859" + id="text5127" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 195.28125,13.693359 L 194.25,16.552734 L 197.19141,16.552734 L 198.19922,13.693359 L 195.28125,13.693359 M 195.28125,6.4746094 L 197.87109,6.4746094 L 196.16016,11.337891 L 198.99609,11.337891 L 200.73047,6.4746094 L 203.32031,6.4746094 L 201.58594,11.337891 L 204.90234,11.337891 L 204.03516,13.693359 L 200.75391,13.693359 L 199.76953,16.529297 L 203.16797,16.529297 L 202.33594,18.873047 L 198.92578,18.873047 L 197.19141,23.748047 L 194.60156,23.748047 L 196.33594,18.873047 L 193.47656,18.873047 L 191.73047,23.748047 L 189.15234,23.748047 L 190.86328,18.873047 L 187.5,18.873047 L 188.39063,16.529297 L 191.69531,16.529297 L 192.70313,13.693359 L 189.19922,13.693359 L 190.06641,11.337891 L 193.54688,11.337891 L 195.28125,6.4746094 M 190.07813,48.521484 L 193.30078,48.521484 C 193.30859,49.458989 193.53515,50.166019 193.98047,50.642578 C 194.42578,51.111331 195.08593,51.345705 195.96094,51.345703 C 196.80468,51.345705 197.45312,51.126956 197.90625,50.689453 C 198.36718,50.244144 198.59765,49.607426 198.59766,48.779297 C 198.59765,47.951178 198.32812,47.326178 197.78906,46.904297 C 197.2578,46.474617 196.46484,46.259773 195.41016,46.259766 C 195.35546,46.259773 195.26953,46.263679 195.15234,46.271484 C 195.04296,46.279304 194.96093,46.28321 194.90625,46.283203 L 194.90625,43.962891 L 195.26953,43.962891 C 196.23827,43.9629 196.95312,43.7754 197.41406,43.400391 C 197.8828,43.017589 198.11718,42.435558 198.11719,41.654297 C 198.11718,41.005872 197.91796,40.494154 197.51953,40.119141 C 197.1289,39.736342 196.59374,39.544936 195.91406,39.544922 C 195.17187,39.544936 194.59765,39.763686 194.19141,40.201172 C 193.78515,40.638685 193.58203,41.259778 193.58203,42.064453 L 193.58203,42.205078 L 190.41797,42.205078 C 190.45703,40.486341 190.96094,39.169936 191.92969,38.255859 C 192.90625,37.334001 194.28125,36.873064 196.05469,36.873047 C 197.73437,36.873064 199.0664,37.283219 200.05078,38.103516 C 201.03514,38.923843 201.52733,40.02931 201.52734,41.419922 C 201.52733,42.154308 201.35936,42.798839 201.02344,43.353516 C 200.68749,43.908213 200.18358,44.365244 199.51172,44.724609 C 200.37108,45.099618 201.01952,45.619149 201.45703,46.283203 C 201.90233,46.93946 202.12499,47.724615 202.125,48.638672 C 202.12499,50.318363 201.57421,51.650393 200.47266,52.634766 C 199.37108,53.619141 197.86718,54.111328 195.96094,54.111328 C 194.07812,54.111328 192.625,53.634766 191.60156,52.681641 C 190.58594,51.720705 190.07812,50.357425 190.07813,48.591797 L 190.07813,48.521484" + id="text5139" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 254.46094,21.451172 C 255.10155,21.365237 255.58984,21.134768 255.92578,20.759766 C 256.26171,20.384769 256.42968,19.884769 256.42969,19.259766 C 256.42968,18.705083 256.26952,18.248052 255.94922,17.888672 C 255.63671,17.52149 255.14062,17.236335 254.46094,17.033203 L 254.46094,21.451172 M 253.06641,13.435547 L 253.06641,9.4511719 C 252.45703,9.529311 251.99218,9.7402483 251.67188,10.083984 C 251.35156,10.419935 251.1914,10.87306 251.19141,11.443359 C 251.1914,11.919934 251.33984,12.318371 251.63672,12.638672 C 251.9414,12.958995 252.41796,13.22462 253.06641,13.435547 M 253.06641,26.267578 L 253.06641,24.017578 C 251.30078,23.908203 249.98047,23.396485 249.10547,22.482422 C 248.23047,21.568361 247.79297,20.24805 247.79297,18.521484 L 250.93359,18.521484 C 250.97265,19.365239 251.16796,20.033207 251.51953,20.525391 C 251.8789,21.009768 252.39453,21.318362 253.06641,21.451172 L 253.06641,16.599609 C 251.2539,16.138679 249.96484,15.537117 249.19922,14.794922 C 248.43359,14.052744 248.05078,13.03712 248.05078,11.748047 C 248.05078,10.318373 248.5039,9.1660301 249.41016,8.2910156 C 250.32422,7.4160318 251.54296,6.959001 253.06641,6.9199219 L 253.06641,5.4199219 L 254.46094,5.4199219 L 254.46094,6.9199219 C 255.98437,6.9980635 257.17186,7.4590005 258.02344,8.3027344 C 258.87499,9.1386864 259.34374,10.318373 259.42969,11.841797 L 256.24219,11.841797 C 256.18749,11.115247 256.01171,10.56056 255.71484,10.177734 C 255.42577,9.7871232 255.0078,9.5683734 254.46094,9.5214844 L 254.46094,13.787109 C 256.39062,14.388681 257.74999,15.07618 258.53906,15.849609 C 259.32811,16.623054 259.72264,17.642584 259.72266,18.908203 C 259.72264,20.400394 259.26171,21.591799 258.33984,22.482422 C 257.42577,23.373047 256.1328,23.892578 254.46094,24.041016 L 254.46094,26.267578 L 253.06641,26.267578 M 254.64844,47.419922 L 254.64844,40.236328 L 250.08984,47.419922 L 254.64844,47.419922 M 254.57813,53.630859 L 254.57813,50.009766 L 247.5,50.009766 L 247.5,47.056641 L 253.6875,37.330078 L 257.84766,37.330078 L 257.84766,47.337891 L 259.79297,47.337891 L 259.79297,50.009766 L 257.84766,50.009766 L 257.84766,53.630859 L 254.57813,53.630859" + id="text5145" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 320.42578,19.740234 C 320.42577,20.263675 320.60155,20.705081 320.95313,21.064453 C 321.30467,21.416018 321.73827,21.591799 322.25391,21.591797 C 322.75389,21.591799 323.18358,21.412112 323.54297,21.052734 C 323.90233,20.68555 324.08201,20.24805 324.08203,19.740234 C 324.08201,19.240239 323.90233,18.814458 323.54297,18.462891 C 323.19139,18.103521 322.7617,17.923834 322.25391,17.923828 C 321.73827,17.923834 321.30467,18.099615 320.95313,18.451172 C 320.60155,18.794927 320.42577,19.224614 320.42578,19.740234 M 317.88281,19.740234 C 317.8828,18.521489 318.30468,17.494147 319.14844,16.658203 C 319.99217,15.822273 321.02733,15.404305 322.25391,15.404297 C 323.45701,15.404305 324.48045,15.830086 325.32422,16.681641 C 326.17576,17.525397 326.60154,18.544927 326.60156,19.740234 C 326.60154,20.943362 326.17576,21.974611 325.32422,22.833984 C 324.47264,23.685547 323.4492,24.111328 322.25391,24.111328 C 321.02733,24.111328 319.99217,23.689453 319.14844,22.845703 C 318.30468,22.001955 317.8828,20.9668 317.88281,19.740234 M 311.07422,24.111328 L 321.08203,6.8496094 L 322.96875,6.8496094 L 312.96094,24.111328 L 311.07422,24.111328 M 310.04297,11.220703 C 310.04297,11.73634 310.21484,12.169933 310.55859,12.521484 C 310.91015,12.873058 311.34375,13.048839 311.85938,13.048828 C 312.36718,13.048839 312.79687,12.873058 313.14844,12.521484 C 313.50781,12.162121 313.68749,11.728528 313.6875,11.220703 C 313.68749,10.720716 313.50781,10.294935 313.14844,9.9433594 C 312.79687,9.5839984 312.36718,9.4043111 311.85938,9.4042969 C 311.34375,9.4043111 310.91015,9.5800922 310.55859,9.9316406 C 310.21484,10.275404 310.04297,10.705091 310.04297,11.220703 M 307.5,11.220703 C 307.5,10.001967 307.92187,8.9707178 308.76563,8.1269531 C 309.60937,7.275407 310.64062,6.8496262 311.85938,6.8496094 C 313.06249,6.8496262 314.08593,7.2793132 314.92969,8.1386719 C 315.78124,8.990249 316.20702,10.017592 316.20703,11.220703 C 316.20702,12.423839 315.78124,13.451182 314.92969,14.302734 C 314.08593,15.146493 313.06249,15.568367 311.85938,15.568359 C 310.63281,15.568367 309.59765,15.150399 308.75391,14.314453 C 307.91797,13.478526 307.5,12.447277 307.5,11.220703 M 310.85156,49.119141 L 314.13281,49.119141 C 314.1875,49.853519 314.43359,50.423831 314.87109,50.830078 C 315.30859,51.228518 315.89453,51.427737 316.62891,51.427734 C 317.53515,51.427737 318.22655,51.162112 318.70313,50.630859 C 319.18749,50.099613 319.42968,49.337895 319.42969,48.345703 C 319.42968,47.416022 319.18358,46.685554 318.69141,46.154297 C 318.19921,45.615242 317.51952,45.345711 316.65234,45.345703 C 316.16796,45.345711 315.74218,45.443368 315.375,45.638672 C 315.00781,45.833992 314.69531,46.123054 314.4375,46.505859 L 311.41406,46.330078 L 312.50391,37.330078 L 322.14844,37.330078 L 322.14844,40.166016 L 314.87109,40.166016 L 314.4375,43.529297 C 314.80468,43.240245 315.22656,43.025401 315.70313,42.884766 C 316.17968,42.736339 316.71093,42.66212 317.29688,42.662109 C 318.96874,42.66212 320.3164,43.169932 321.33984,44.185547 C 322.37108,45.20118 322.88671,46.53321 322.88672,48.181641 C 322.88671,49.986332 322.3203,51.427737 321.1875,52.505859 C 320.05468,53.576172 318.53515,54.111328 316.62891,54.111328 C 314.89453,54.111328 313.51172,53.669922 312.48047,52.787109 C 311.45703,51.896486 310.91406,50.673831 310.85156,49.119141" + id="text5151" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 372.15234,48.298828 C 372.15234,49.25977 372.39062,50.021488 372.86719,50.583984 C 373.35156,51.146487 374.00781,51.427737 374.83594,51.427734 C 375.60937,51.427737 376.21484,51.154299 376.65234,50.607422 C 377.08983,50.06055 377.30858,49.298832 377.30859,48.322266 C 377.30858,47.423834 377.08202,46.724616 376.62891,46.224609 C 376.17577,45.724617 375.53905,45.474618 374.71875,45.474609 C 373.91406,45.474618 373.28515,45.724617 372.83203,46.224609 C 372.3789,46.724616 372.15234,47.416022 372.15234,48.298828 M 372.10547,43.916016 C 372.48828,43.525401 372.94921,43.232432 373.48828,43.037109 C 374.02734,42.833995 374.6289,42.732433 375.29297,42.732422 C 376.93358,42.732433 378.24608,43.232432 379.23047,44.232422 C 380.22264,45.23243 380.71874,46.56446 380.71875,48.228516 C 380.71874,49.994144 380.17968,51.419924 379.10156,52.505859 C 378.02343,53.591797 376.60155,54.134765 374.83594,54.134766 C 372.79687,54.134765 371.24609,53.431641 370.18359,52.025391 C 369.1289,50.619144 368.60156,48.560552 368.60156,45.849609 C 368.60156,42.935558 369.16797,40.708997 370.30078,39.169922 C 371.43359,37.623063 373.0664,36.849626 375.19922,36.849609 C 376.68358,36.849626 377.8789,37.236345 378.78516,38.009766 C 379.69921,38.783218 380.19921,39.830092 380.28516,41.150391 L 376.88672,41.150391 C 376.80858,40.611341 376.59765,40.205092 376.25391,39.931641 C 375.91015,39.658217 375.42968,39.521498 374.8125,39.521484 C 373.96874,39.521498 373.32031,39.888686 372.86719,40.623047 C 372.41406,41.349622 372.16015,42.447277 372.10547,43.916016" + id="text5157" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 432.85547,16.095703 L 431.96484,16.740234 C 431.60546,16.990241 431.33593,17.291022 431.15625,17.642578 C 430.97656,17.994146 430.88671,18.388677 430.88672,18.826172 C 430.88671,19.490239 431.11328,20.048832 431.56641,20.501953 C 432.01953,20.955081 432.58593,21.181643 433.26563,21.181641 C 433.76562,21.181643 434.24218,21.080081 434.69531,20.876953 C 435.15624,20.666019 435.58202,20.361331 435.97266,19.962891 L 432.85547,16.095703 M 433.79297,12.404297 L 434.20313,12.111328 C 434.57812,11.853527 434.85546,11.564465 435.03516,11.244141 C 435.21483,10.923841 435.30468,10.556654 435.30469,10.142578 C 435.30468,9.7441545 435.17968,9.4277486 434.92969,9.1933594 C 434.68749,8.958999 434.35546,8.8418117 433.93359,8.8417969 C 433.5039,8.8418117 433.16406,8.9629053 432.91406,9.2050781 C 432.66406,9.4394673 432.53906,9.7597795 432.53906,10.166016 C 432.53906,10.384779 432.59765,10.62306 432.71484,10.880859 C 432.83984,11.138684 433.01562,11.412122 433.24219,11.701172 L 433.79297,12.404297 M 431.15625,13.962891 L 430.47656,13.072266 C 430.125,12.603527 429.87109,12.166027 429.71484,11.759766 C 429.5664,11.345715 429.49218,10.912122 429.49219,10.458984 C 429.49218,9.2089988 429.89062,8.2168123 430.6875,7.4824219 C 431.49218,6.7402513 432.58203,6.3691579 433.95703,6.3691406 C 435.27733,6.3691579 436.3203,6.7090013 437.08594,7.3886719 C 437.85155,8.0683749 438.23436,8.9863428 438.23438,10.142578 C 438.23436,11.017591 438.0078,11.802746 437.55469,12.498047 C 437.10936,13.185557 436.40624,13.833994 435.44531,14.443359 L 437.91797,17.490234 C 438.15233,17.107428 438.33593,16.677741 438.46875,16.201172 C 438.60936,15.724617 438.70702,15.193368 438.76172,14.607422 L 441.80859,14.607422 C 441.72264,15.623055 441.5117,16.56446 441.17578,17.431641 C 440.83983,18.298833 440.37889,19.091801 439.79297,19.810547 L 442.93359,23.630859 L 438.94922,23.630859 L 437.77734,22.189453 C 437.08983,22.822266 436.33202,23.302735 435.50391,23.630859 C 434.68359,23.951172 433.82421,24.111328 432.92578,24.111328 C 431.33203,24.111328 430.02734,23.638672 429.01172,22.693359 C 428.0039,21.748049 427.5,20.541019 427.5,19.072266 C 427.5,17.978521 427.78125,17.037116 428.34375,16.248047 C 428.90625,15.458993 429.84375,14.697275 431.15625,13.962891 M 434.66016,53.630859 L 431.15625,53.630859 C 431.28125,51.341799 431.83203,49.07227 432.80859,46.822266 C 433.79296,44.572275 435.19531,42.361339 437.01563,40.189453 L 428.76563,40.189453 L 428.76563,37.330078 L 440.66016,37.330078 L 440.66016,39.849609 C 438.8164,41.880871 437.39843,44.029306 436.40625,46.294922 C 435.42187,48.560552 434.83984,51.005862 434.66016,53.630859" + id="text5163" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 493.5,13.212891 L 491.4375,16.119141 L 489.44531,14.724609 L 491.69531,11.900391 L 488.41406,10.986328 L 489.17578,8.6074219 L 492.32813,9.7324219 L 492.32813,6.3691406 L 494.64844,6.3691406 L 494.64844,9.7324219 L 497.80078,8.6308594 L 498.58594,11.009766 L 495.30469,11.900391 L 497.53125,14.701172 L 495.49219,16.166016 L 493.5,13.212891 M 490.875,48.755859 C 490.875,49.576176 491.10156,50.208988 491.55469,50.654297 C 492.01562,51.099612 492.67187,51.322268 493.52344,51.322266 C 494.33593,51.322268 494.97265,51.095706 495.43359,50.642578 C 495.90233,50.189457 496.13671,49.560551 496.13672,48.755859 C 496.13671,47.982428 495.89843,47.361334 495.42188,46.892578 C 494.9453,46.423835 494.31249,46.189461 493.52344,46.189453 C 492.73437,46.189461 492.09374,46.427742 491.60156,46.904297 C 491.11718,47.380866 490.875,47.998053 490.875,48.755859 M 491.14453,41.560547 C 491.14453,42.208996 491.34765,42.708995 491.75391,43.060547 C 492.16015,43.404307 492.74218,43.576182 493.5,43.576172 C 494.2578,43.576182 494.83984,43.400401 495.24609,43.048828 C 495.66015,42.697277 495.86718,42.201183 495.86719,41.560547 C 495.86718,40.93556 495.65624,40.443373 495.23438,40.083984 C 494.81249,39.724623 494.23437,39.544936 493.5,39.544922 C 492.78124,39.544936 492.20703,39.72853 491.77734,40.095703 C 491.35546,40.462904 491.14453,40.951185 491.14453,41.560547 M 489.9375,44.818359 C 489.23437,44.427744 488.72656,43.970713 488.41406,43.447266 C 488.10156,42.923839 487.94531,42.255871 487.94531,41.443359 C 487.94531,40.005873 488.4375,38.876968 489.42188,38.056641 C 490.40625,37.236345 491.76562,36.826189 493.5,36.826172 C 495.24999,36.826189 496.61718,37.236345 497.60156,38.056641 C 498.59374,38.869155 499.08983,39.998061 499.08984,41.443359 C 499.08983,42.216808 498.92186,42.888683 498.58594,43.458984 C 498.24999,44.021494 497.74608,44.474619 497.07422,44.818359 C 497.89452,45.20118 498.51171,45.73243 498.92578,46.412109 C 499.33983,47.083991 499.54686,47.904303 499.54688,48.873047 C 499.54686,50.505862 499.0078,51.787111 497.92969,52.716797 C 496.85936,53.646484 495.3828,54.111328 493.5,54.111328 C 491.59375,54.111328 490.11328,53.650391 489.05859,52.728516 C 488.0039,51.806642 487.47656,50.521487 487.47656,48.873047 C 487.47656,47.912115 487.67187,47.107428 488.0625,46.458984 C 488.46094,45.802742 489.08594,45.255868 489.9375,44.818359" + id="text5169" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 557.85938,6.3691406 C 556.78124,8.1347811 555.98046,9.9316543 555.45703,11.759766 C 554.93359,13.587901 554.67187,15.505868 554.67188,17.513672 C 554.67187,19.513676 554.93359,21.427737 555.45703,23.255859 C 555.98046,25.083983 556.78124,26.880856 557.85938,28.646484 L 555.38672,28.646484 C 554.01953,26.779294 552.98046,24.904296 552.26953,23.021484 C 551.5664,21.130862 551.21484,19.294926 551.21484,17.513672 C 551.21484,15.73243 551.5664,13.896494 552.26953,12.005859 C 552.98046,10.115248 554.01953,8.2363435 555.38672,6.3691406 L 557.85938,6.3691406 M 556.06641,42.685547 C 556.0664,41.724621 555.82421,40.96681 555.33984,40.412109 C 554.86327,39.849623 554.21093,39.568373 553.38281,39.568359 C 552.60156,39.568373 551.99218,39.837904 551.55469,40.376953 C 551.125,40.916028 550.91015,41.669934 550.91016,42.638672 C 550.91015,43.544932 551.13671,44.251963 551.58984,44.759766 C 552.04296,45.267586 552.67968,45.521492 553.5,45.521484 C 554.30468,45.521492 554.93359,45.271493 555.38672,44.771484 C 555.83983,44.271494 556.0664,43.576182 556.06641,42.685547 M 556.125,47.056641 C 555.73437,47.447272 555.27343,47.74024 554.74219,47.935547 C 554.21093,48.130865 553.61327,48.228521 552.94922,48.228516 C 551.30078,48.228521 549.98047,47.732428 548.98828,46.740234 C 547.99609,45.748055 547.5,44.419931 547.5,42.755859 C 547.5,40.990247 548.03906,39.564467 549.11719,38.478516 C 550.19531,37.392594 551.61718,36.849626 553.38281,36.849609 C 555.42968,36.849626 556.98436,37.556657 558.04688,38.970703 C 559.11718,40.376966 559.65233,42.431652 559.65234,45.134766 C 559.65233,48.041021 559.08202,50.267581 557.94141,51.814453 C 556.80077,53.361328 555.16015,54.134765 553.01953,54.134766 C 551.54296,54.134765 550.35156,53.751953 549.44531,52.986328 C 548.53906,52.212892 548.04297,51.162112 547.95703,49.833984 L 551.34375,49.845703 C 551.42187,50.384769 551.63281,50.787112 551.97656,51.052734 C 552.32031,51.318362 552.80468,51.451174 553.42969,51.451172 C 554.27343,51.451174 554.91796,51.083987 555.36328,50.349609 C 555.80858,49.615238 556.06249,48.517583 556.125,47.056641" + id="text5175" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 609.375,6.3691406 L 611.87109,6.3691406 C 613.23046,8.228531 614.26171,10.103529 614.96484,11.994141 C 615.66796,13.876963 616.01952,15.716805 616.01953,17.513672 C 616.01952,19.302739 615.66796,21.142581 614.96484,23.033203 C 614.26171,24.923827 613.23046,26.794919 611.87109,28.646484 L 609.375,28.646484 C 610.46094,26.873044 611.26562,25.072264 611.78906,23.244141 C 612.32031,21.408205 612.58593,19.498051 612.58594,17.513672 C 612.58593,15.521492 612.32031,13.611338 611.78906,11.783203 C 611.26562,9.9550918 610.46094,8.1504061 609.375,6.3691406 M 610.98047,45.474609 C 610.98046,47.513678 611.18359,48.994145 611.58984,49.916016 C 612.0039,50.837893 612.66015,51.29883 613.55859,51.298828 C 614.45702,51.29883 615.11327,50.833987 615.52734,49.904297 C 615.9414,48.974614 616.14843,47.498053 616.14844,45.474609 C 616.14843,43.44337 615.9414,41.966809 615.52734,41.044922 C 615.11327,40.12306 614.45702,39.662123 613.55859,39.662109 C 612.66015,39.662123 612.0039,40.12306 611.58984,41.044922 C 611.18359,41.958996 610.98046,43.435557 610.98047,45.474609 M 607.5,45.474609 C 607.5,42.591808 608,40.43556 609,39.005859 C 610.00781,37.568375 611.52734,36.849626 613.55859,36.849609 C 615.58202,36.849626 617.09765,37.572282 618.10547,39.017578 C 619.12108,40.455091 619.62889,42.615245 619.62891,45.498047 C 619.62889,48.380865 619.12499,50.533206 618.11719,51.955078 C 617.11718,53.376953 615.59765,54.08789 613.55859,54.087891 C 611.52734,54.08789 610.00781,53.373047 609,51.943359 C 608,50.513675 607.5,48.357427 607.5,45.474609" + id="text5181" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 667.5,26.900391 L 679.5,26.900391 L 679.5,29.291016 L 667.5,29.291016 L 667.5,26.900391 M 670.20703,48.849609 L 670.20703,45.638672 L 676.79297,45.638672 L 676.79297,48.849609 L 670.20703,48.849609" + id="text5187" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 733.33594,9.3222656 L 735.70313,9.3222656 L 735.70313,15.298828 L 741.53906,15.298828 L 741.53906,17.630859 L 735.70313,17.630859 L 735.70313,23.630859 L 733.33594,23.630859 L 733.33594,17.630859 L 727.5,17.630859 L 727.5,15.298828 L 733.33594,15.298828 L 733.33594,9.3222656 M 727.5,47.818359 L 741.53906,47.818359 L 741.53906,50.150391 L 727.5,50.150391 L 727.5,47.818359 M 727.5,42.779297 L 741.53906,42.779297 L 741.53906,45.111328 L 727.5,45.111328 L 727.5,42.779297" + id="text5201" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 11.070313,95.601563 L 11.070313,86.148438 L 7.65625,86.148438 L 7.65625,84.09375 L 16.828125,84.09375 L 16.828125,86.148438 L 13.4375,86.148438 L 13.4375,95.601563 L 11.070313,95.601563 M 22.859375,94.546875 C 22.572911,94.989584 22.197911,95.328125 21.734375,95.5625 C 21.270829,95.791666 20.731767,95.90625 20.117188,95.90625 C 19.294269,95.90625 18.658853,95.671875 18.210938,95.203125 C 17.768228,94.734376 17.546874,94.06771 17.546875,93.203125 C 17.546874,92.401045 17.768228,91.789066 18.210938,91.367188 C 18.658853,90.945317 19.395831,90.656255 20.421875,90.5 C 20.656246,90.463547 20.963538,90.42188 21.34375,90.375 C 22.307286,90.250005 22.789057,89.97136 22.789063,89.539063 C 22.789057,89.195319 22.682286,88.950527 22.46875,88.804688 C 22.255203,88.653653 21.898433,88.578132 21.398438,88.578125 C 20.9401,88.578132 20.588538,88.669278 20.34375,88.851563 C 20.098955,89.033861 19.97656,89.294277 19.976563,89.632813 L 19.976563,89.757813 L 17.851563,89.757813 L 17.851563,89.601563 C 17.851562,88.731778 18.158853,88.049487 18.773438,87.554688 C 19.388018,87.054696 20.236976,86.804696 21.320313,86.804688 C 22.507807,86.804696 23.41666,87.010425 24.046875,87.421875 C 24.682284,87.833341 24.999992,88.427091 25,89.203125 L 25,94.03125 C 24.999992,94.385418 25.03645,94.651043 25.109375,94.828125 C 25.182283,95.000001 25.304679,95.130209 25.476563,95.21875 L 25.476563,95.601563 L 23.109375,95.601563 C 23.031244,95.455729 22.971348,95.294271 22.929688,95.117188 C 22.888015,94.940105 22.864577,94.750001 22.859375,94.546875 M 22.820313,91.421875 C 22.450515,91.593754 22.023432,91.731775 21.539063,91.835938 C 21.059892,91.940108 20.812496,91.994795 20.796875,92 C 20.39583,92.114587 20.11458,92.257816 19.953125,92.429688 C 19.796872,92.601566 19.718747,92.838544 19.71875,93.140625 C 19.718747,93.453127 19.82031,93.703127 20.023438,93.890625 C 20.226559,94.072918 20.499997,94.164064 20.84375,94.164063 C 21.458329,94.164064 21.940099,93.992189 22.289063,93.648438 C 22.643224,93.299481 22.820307,92.825524 22.820313,92.226563 L 22.820313,91.421875 M 27.039063,84.09375 L 29.25,84.09375 L 29.25,88.164063 C 29.531246,87.721362 29.882809,87.388029 30.304688,87.164063 C 30.731766,86.934905 31.216141,86.820321 31.757813,86.820313 C 32.783847,86.820321 33.622388,87.2448 34.273438,88.09375 C 34.92447,88.937507 35.249991,90.036464 35.25,91.390625 C 35.249991,92.734378 34.92447,93.820314 34.273438,94.648438 C 33.622388,95.476563 32.773431,95.890625 31.726563,95.890625 C 31.179682,95.890625 30.70312,95.776041 30.296875,95.546875 C 29.895829,95.317709 29.531246,94.953126 29.203125,94.453125 L 29.203125,95.601563 L 27.039063,95.601563 L 27.039063,84.09375 M 32.992188,91.296875 C 32.992181,90.51563 32.828118,89.903652 32.5,89.460938 C 32.171869,89.013027 31.721348,88.789069 31.148438,88.789063 C 30.544266,88.789069 30.075517,89.007819 29.742188,89.445313 C 29.414059,89.87761 29.249997,90.494797 29.25,91.296875 C 29.249997,92.161462 29.406247,92.817711 29.71875,93.265625 C 30.036454,93.713544 30.497391,93.937502 31.101563,93.9375 C 31.71614,93.937502 32.18489,93.713544 32.507813,93.265625 C 32.830722,92.812503 32.992181,92.156253 32.992188,91.296875" + id="text5427" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 789.76563,44.369141 L 792.57031,44.369141 C 793.23176,44.369143 793.71353,44.249351 794.01563,44.009766 C 794.3177,43.770185 794.46874,43.392581 794.46875,42.876953 C 794.46874,42.340499 794.3203,41.955083 794.02344,41.720703 C 793.72656,41.481125 793.23697,41.361333 792.55469,41.361328 L 789.76563,41.361328 L 789.76563,44.369141 M 789.76563,39.392578 L 792.46875,39.392578 C 793.05208,39.392585 793.47916,39.293627 793.75,39.095703 C 794.02083,38.892586 794.15624,38.574878 794.15625,38.142578 C 794.15624,37.720712 794.02343,37.416025 793.75781,37.228516 C 793.49739,37.035817 793.06249,36.939463 792.45313,36.939453 L 789.76563,36.939453 L 789.76563,39.392578 M 787.5,46.447266 L 787.5,34.939453 L 792.92188,34.939453 C 794.09895,34.939465 794.99478,35.189464 795.60938,35.689453 C 796.22916,36.184255 796.53905,36.905609 796.53906,37.853516 C 796.53905,38.436857 796.42447,38.923836 796.19531,39.314453 C 795.96614,39.705085 795.62239,40.007168 795.16406,40.220703 C 795.7578,40.460292 796.20051,40.806646 796.49219,41.259766 C 796.78905,41.707687 796.93749,42.267582 796.9375,42.939453 C 796.93749,44.059247 796.57291,44.92383 795.84375,45.533203 C 795.11457,46.142578 794.08072,46.447266 792.74219,46.447266 L 787.5,46.447266 M 803.45313,45.392578 C 803.16666,45.835287 802.79166,46.173828 802.32813,46.408203 C 801.86458,46.63737 801.32552,46.751953 800.71094,46.751953 C 799.88802,46.751953 799.2526,46.517578 798.80469,46.048828 C 798.36198,45.580079 798.14062,44.913413 798.14063,44.048828 C 798.14062,43.246748 798.36198,42.634769 798.80469,42.212891 C 799.2526,41.79102 799.98958,41.501958 801.01563,41.345703 C 801.25,41.30925 801.55729,41.267583 801.9375,41.220703 C 802.90104,41.095708 803.38281,40.817063 803.38281,40.384766 C 803.38281,40.041022 803.27604,39.796231 803.0625,39.650391 C 802.84895,39.499356 802.49218,39.423835 801.99219,39.423828 C 801.53385,39.423835 801.18229,39.514981 800.9375,39.697266 C 800.69271,39.879564 800.57031,40.13998 800.57031,40.478516 L 800.57031,40.603516 L 798.44531,40.603516 L 798.44531,40.447266 C 798.44531,39.577481 798.7526,38.89519 799.36719,38.400391 C 799.98177,37.900399 800.83073,37.650399 801.91406,37.650391 C 803.10156,37.650399 804.01041,37.856128 804.64063,38.267578 C 805.27603,38.679044 805.59374,39.272794 805.59375,40.048828 L 805.59375,44.876953 C 805.59374,45.231121 805.6302,45.496746 805.70313,45.673828 C 805.77603,45.845704 805.89843,45.975912 806.07031,46.064453 L 806.07031,46.447266 L 803.70313,46.447266 C 803.62499,46.301432 803.5651,46.139974 803.52344,45.962891 C 803.48176,45.785808 803.45833,45.595704 803.45313,45.392578 M 803.41406,42.267578 C 803.04427,42.439457 802.61718,42.577478 802.13281,42.681641 C 801.65364,42.785811 801.40625,42.840498 801.39063,42.845703 C 800.98958,42.96029 800.70833,43.103519 800.54688,43.275391 C 800.39062,43.447269 800.3125,43.684248 800.3125,43.986328 C 800.3125,44.29883 800.41406,44.54883 800.61719,44.736328 C 800.82031,44.918621 801.09375,45.009767 801.4375,45.009766 C 802.05208,45.009767 802.53385,44.837892 802.88281,44.494141 C 803.23697,44.145185 803.41406,43.671227 803.41406,43.072266 L 803.41406,42.267578 M 812.71875,43.244141 L 814.96094,43.244141 C 814.86718,44.322268 814.47395,45.173829 813.78125,45.798828 C 813.08854,46.423828 812.19791,46.736328 811.10938,46.736328 C 809.875,46.736328 808.90625,46.335287 808.20313,45.533203 C 807.50521,44.725913 807.15625,43.611331 807.15625,42.189453 C 807.15625,40.772792 807.51302,39.663418 808.22656,38.861328 C 808.94531,38.054045 809.93229,37.650399 811.1875,37.650391 C 812.28645,37.650399 813.16666,37.942066 813.82813,38.525391 C 814.49478,39.108731 814.86718,39.92123 814.94531,40.962891 L 812.6875,40.962891 C 812.62499,40.509772 812.46614,40.163418 812.21094,39.923828 C 811.95572,39.684252 811.61979,39.56446 811.20313,39.564453 C 810.64062,39.56446 810.21875,39.785814 809.9375,40.228516 C 809.66146,40.67123 809.52343,41.335292 809.52344,42.220703 C 809.52343,43.038415 809.66666,43.668623 809.95313,44.111328 C 810.24479,44.54883 810.66145,44.76758 811.20313,44.767578 C 811.62499,44.76758 811.96354,44.639976 812.21875,44.384766 C 812.47395,44.12956 812.64062,43.749352 812.71875,43.244141 M 816.44531,46.447266 L 816.44531,34.939453 L 818.65625,34.939453 L 818.65625,40.978516 L 821.35938,37.955078 L 824.09375,37.955078 L 821.13281,41.103516 L 824.27344,46.447266 L 821.54688,46.447266 L 819.51563,42.830078 L 818.65625,43.759766 L 818.65625,46.447266 L 816.44531,46.447266 M 824.79688,43.681641 L 827.0625,43.681641 C 827.08333,44.113935 827.23958,44.436851 827.53125,44.650391 C 827.82291,44.858726 828.26041,44.962892 828.84375,44.962891 C 829.28645,44.962892 829.6276,44.889976 829.86719,44.744141 C 830.11197,44.593101 830.23437,44.382164 830.23438,44.111328 C 830.23437,43.725914 829.78124,43.436852 828.875,43.244141 C 828.5052,43.166019 828.21093,43.098311 827.99219,43.041016 C 826.88802,42.759769 826.11979,42.426436 825.6875,42.041016 C 825.26042,41.655604 825.04687,41.134771 825.04688,40.478516 C 825.04687,39.608731 825.35937,38.921231 825.98438,38.416016 C 826.61458,37.905608 827.46614,37.650399 828.53906,37.650391 C 829.67447,37.650399 830.5651,37.903003 831.21094,38.408203 C 831.86197,38.913419 832.20833,39.624356 832.25,40.541016 L 830.03906,40.541016 C 830.02343,40.181647 829.88541,39.903001 829.625,39.705078 C 829.36979,39.507168 829.01302,39.40821 828.55469,39.408203 C 828.12239,39.40821 827.79948,39.473314 827.58594,39.603516 C 827.3776,39.733731 827.27343,39.929043 827.27344,40.189453 C 827.27343,40.528001 827.83854,40.82748 828.96875,41.087891 C 829.22916,41.145188 829.43489,41.192063 829.58594,41.228516 C 830.71614,41.494146 831.48697,41.814458 831.89844,42.189453 C 832.3151,42.564457 832.52343,43.093102 832.52344,43.775391 C 832.52343,44.738934 832.18228,45.473308 831.5,45.978516 C 830.82291,46.483724 829.83593,46.736328 828.53906,46.736328 C 827.36718,46.736328 826.45052,46.473307 825.78906,45.947266 C 825.1276,45.421225 824.79687,44.697267 824.79688,43.775391 L 824.79688,43.681641 M 840.02344,42.251953 C 840.02343,41.397792 839.86197,40.74675 839.53906,40.298828 C 839.21614,39.84571 838.74739,39.619147 838.13281,39.619141 C 837.52864,39.619147 837.0677,39.843106 836.75,40.291016 C 836.4375,40.738938 836.28125,41.392583 836.28125,42.251953 C 836.28125,43.05404 836.44531,43.673831 836.77344,44.111328 C 837.10677,44.54883 837.57552,44.76758 838.17969,44.767578 C 838.7526,44.76758 839.20312,44.543622 839.53125,44.095703 C 839.85937,43.647789 840.02343,43.033207 840.02344,42.251953 M 834.07031,49.853516 L 834.07031,37.955078 L 836.23438,37.955078 L 836.23438,39.103516 C 836.5625,38.603523 836.92708,38.23894 837.32813,38.009766 C 837.73437,37.780608 838.21093,37.666024 838.75781,37.666016 C 839.80468,37.666024 840.65364,38.080086 841.30469,38.908203 C 841.95572,39.731127 842.28124,40.814459 842.28125,42.158203 C 842.28124,43.517581 841.95572,44.621747 841.30469,45.470703 C 840.65364,46.314453 839.8151,46.736328 838.78906,46.736328 C 838.24739,46.736328 837.76302,46.621745 837.33594,46.392578 C 836.91406,46.163412 836.5625,45.830079 836.28125,45.392578 L 836.28125,49.853516 L 834.07031,49.853516 M 848.70313,45.392578 C 848.41666,45.835287 848.04166,46.173828 847.57813,46.408203 C 847.11458,46.63737 846.57552,46.751953 845.96094,46.751953 C 845.13802,46.751953 844.5026,46.517578 844.05469,46.048828 C 843.61198,45.580079 843.39062,44.913413 843.39063,44.048828 C 843.39062,43.246748 843.61198,42.634769 844.05469,42.212891 C 844.5026,41.79102 845.23958,41.501958 846.26563,41.345703 C 846.5,41.30925 846.80729,41.267583 847.1875,41.220703 C 848.15104,41.095708 848.63281,40.817063 848.63281,40.384766 C 848.63281,40.041022 848.52604,39.796231 848.3125,39.650391 C 848.09895,39.499356 847.74218,39.423835 847.24219,39.423828 C 846.78385,39.423835 846.43229,39.514981 846.1875,39.697266 C 845.94271,39.879564 845.82031,40.13998 845.82031,40.478516 L 845.82031,40.603516 L 843.69531,40.603516 L 843.69531,40.447266 C 843.69531,39.577481 844.0026,38.89519 844.61719,38.400391 C 845.23177,37.900399 846.08073,37.650399 847.16406,37.650391 C 848.35156,37.650399 849.26041,37.856128 849.89063,38.267578 C 850.52603,38.679044 850.84374,39.272794 850.84375,40.048828 L 850.84375,44.876953 C 850.84374,45.231121 850.8802,45.496746 850.95313,45.673828 C 851.02603,45.845704 851.14843,45.975912 851.32031,46.064453 L 851.32031,46.447266 L 848.95313,46.447266 C 848.87499,46.301432 848.8151,46.139974 848.77344,45.962891 C 848.73176,45.785808 848.70833,45.595704 848.70313,45.392578 M 848.66406,42.267578 C 848.29427,42.439457 847.86718,42.577478 847.38281,42.681641 C 846.90364,42.785811 846.65625,42.840498 846.64063,42.845703 C 846.23958,42.96029 845.95833,43.103519 845.79688,43.275391 C 845.64062,43.447269 845.5625,43.684248 845.5625,43.986328 C 845.5625,44.29883 845.66406,44.54883 845.86719,44.736328 C 846.07031,44.918621 846.34375,45.009767 846.6875,45.009766 C 847.30208,45.009767 847.78385,44.837892 848.13281,44.494141 C 848.48697,44.145185 848.66406,43.671227 848.66406,43.072266 L 848.66406,42.267578 M 857.96875,43.244141 L 860.21094,43.244141 C 860.11718,44.322268 859.72395,45.173829 859.03125,45.798828 C 858.33854,46.423828 857.44791,46.736328 856.35938,46.736328 C 855.125,46.736328 854.15625,46.335287 853.45313,45.533203 C 852.75521,44.725913 852.40625,43.611331 852.40625,42.189453 C 852.40625,40.772792 852.76302,39.663418 853.47656,38.861328 C 854.19531,38.054045 855.18229,37.650399 856.4375,37.650391 C 857.53645,37.650399 858.41666,37.942066 859.07813,38.525391 C 859.74478,39.108731 860.11718,39.92123 860.19531,40.962891 L 857.9375,40.962891 C 857.87499,40.509772 857.71614,40.163418 857.46094,39.923828 C 857.20572,39.684252 856.86979,39.56446 856.45313,39.564453 C 855.89062,39.56446 855.46875,39.785814 855.1875,40.228516 C 854.91146,40.67123 854.77343,41.335292 854.77344,42.220703 C 854.77343,43.038415 854.91666,43.668623 855.20313,44.111328 C 855.49479,44.54883 855.91145,44.76758 856.45313,44.767578 C 856.87499,44.76758 857.21354,44.639976 857.46875,44.384766 C 857.72395,44.12956 857.89062,43.749352 857.96875,43.244141 M 866.88281,43.869141 L 869.14844,43.869141 C 868.91926,44.764976 868.45572,45.4681 867.75781,45.978516 C 867.0651,46.483724 866.21874,46.736328 865.21875,46.736328 C 863.98958,46.736328 863.01562,46.32487 862.29688,45.501953 C 861.57812,44.67383 861.21875,43.554039 861.21875,42.142578 C 861.21875,40.751959 861.57292,39.655606 862.28125,38.853516 C 862.98958,38.051441 863.95833,37.650399 865.1875,37.650391 C 866.48958,37.650399 867.49478,38.046232 868.20313,38.837891 C 868.91145,39.624356 869.26562,40.74675 869.26563,42.205078 C 869.26562,42.366541 869.26301,42.488936 869.25781,42.572266 C 869.2578,42.650394 869.2526,42.725915 869.24219,42.798828 L 863.57031,42.798828 C 863.60156,43.465498 863.76302,43.968101 864.05469,44.306641 C 864.35156,44.645184 864.77604,44.814455 865.32813,44.814453 C 865.71874,44.814455 866.03906,44.738934 866.28906,44.587891 C 866.53906,44.431643 866.73697,44.19206 866.88281,43.869141 M 863.57031,41.306641 L 866.91406,41.306641 C 866.89322,40.73373 866.73958,40.298834 866.45313,40.001953 C 866.17187,39.699877 865.76562,39.548835 865.23438,39.548828 C 864.73958,39.548835 864.34895,39.699877 864.0625,40.001953 C 863.78125,40.304043 863.61718,40.738938 863.57031,41.306641" + id="text5207" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 840,17.646484 L 797.02608,17.646484" + id="path5439" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 802.5,25.146484 L 802.5,10.146484 L 787.5,17.646484 L 802.5,25.146484 z " + id="path5441" /> + <g + id="g5459" + transform="translate(0,7.5)"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 82.50003,75 L 54.020182,75" + id="path5453" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z " + id="path5455" /> + <path + id="path5457" + d="M 45,67.5 C 45,82.5 45,82.5 45,82.5" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g5464" + transform="matrix(-1,9.581637e-17,-9.581637e-17,-1,127.5,172.5)"> + <path + id="path5466" + d="M 82.50003,75 L 54.020182,75" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path5468" + d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z " + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 45,67.5 C 45,82.5 45,82.5 45,82.5" + id="path5470" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 107.0625,80.560547 L 105.23438,78.779297 L 107.17969,76.763672 L 109.05469,78.591797 C 109.30467,78.123052 109.49608,77.587897 109.62891,76.986328 C 109.7617,76.384773 109.82811,75.728524 109.82813,75.017578 C 109.82811,73.119151 109.40233,71.646496 108.55078,70.599609 C 107.69921,69.544936 106.5078,69.017593 104.97656,69.017578 C 103.46093,69.017593 102.28124,69.54103 101.4375,70.587891 C 100.59374,71.634778 100.17187,73.111339 100.17188,75.017578 C 100.17187,76.916022 100.59374,78.392583 101.4375,79.447266 C 102.28124,80.494144 103.46093,81.017581 104.97656,81.017578 C 105.36718,81.017581 105.73436,80.978518 106.07813,80.900391 C 106.42968,80.822268 106.7578,80.708987 107.0625,80.560547 M 109.55859,82.916016 C 108.97264,83.306641 108.28905,83.603516 107.50781,83.806641 C 106.73436,84.009765 105.89061,84.111328 104.97656,84.111328 C 102.39843,84.111328 100.34765,83.291016 98.824219,81.650391 C 97.308592,80.009769 96.55078,77.798834 96.550781,75.017578 C 96.55078,72.228527 97.308592,70.017592 98.824219,68.384766 C 100.34765,66.744158 102.39843,65.923846 104.97656,65.923828 C 107.55468,65.923846 109.60545,66.744158 111.12891,68.384766 C 112.66014,70.025404 113.42576,72.23634 113.42578,75.017578 C 113.42576,76.236336 113.26951,77.353522 112.95703,78.369141 C 112.64451,79.376957 112.18358,80.259769 111.57422,81.017578 L 113.44922,82.810547 L 111.52734,84.826172 L 109.55859,82.916016" + id="text5474" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 158.94141,83.630859 L 153.99609,66.369141 L 157.67578,66.369141 L 160.62891,78.544922 L 163.125,66.369141 L 166.91016,66.369141 L 169.40625,78.544922 L 172.35938,66.369141 L 176.00391,66.369141 L 171.07031,83.630859 L 167.68359,83.630859 L 165.01172,70.412109 L 162.32813,83.630859 L 158.94141,83.630859" + id="text5482" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 218.52539,83.630859 L 218.52539,66.369141 L 231.05273,66.369141 L 231.05273,69.369141 L 222.0293,69.369141 L 222.0293,73.048828 L 230.2793,73.048828 L 230.2793,76.001953 L 222.0293,76.001953 L 222.0293,80.443359 L 231.47461,80.443359 L 231.47461,83.630859 L 218.52539,83.630859" + id="text5492" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 281.4375,73.916016 L 285.60938,73.916016 C 286.51561,73.916025 287.17968,73.732432 287.60156,73.365234 C 288.03124,72.998058 288.24608,72.419933 288.24609,71.630859 C 288.24608,70.880872 288.03905,70.314466 287.625,69.931641 C 287.21093,69.54103 286.59374,69.345717 285.77344,69.345703 L 281.4375,69.345703 L 281.4375,73.916016 M 277.88672,83.630859 L 277.88672,66.369141 L 286.25391,66.369141 C 288.13671,66.369158 289.53124,66.771501 290.4375,67.576172 C 291.34373,68.380875 291.79686,69.611342 291.79688,71.267578 C 291.79686,72.322277 291.5742,73.201182 291.12891,73.904297 C 290.69139,74.607431 290.05858,75.087899 289.23047,75.345703 C 289.98045,75.611336 290.5117,76.017586 290.82422,76.564453 C 291.14452,77.111335 291.32811,77.962896 291.375,79.119141 L 291.44531,81.158203 C 291.4453,81.173831 291.4453,81.197268 291.44531,81.228516 C 291.46873,82.259767 291.69139,82.884766 292.11328,83.103516 L 292.11328,83.630859 L 288.22266,83.630859 C 288.09764,83.388672 287.99999,83.091797 287.92969,82.740234 C 287.86718,82.380861 287.82811,81.95508 287.8125,81.462891 L 287.76563,79.646484 C 287.72655,78.576177 287.52343,77.853521 287.15625,77.478516 C 286.79686,77.103522 286.14452,76.916022 285.19922,76.916016 L 281.4375,76.916016 L 281.4375,83.630859 L 277.88672,83.630859" + id="text5500" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 343.24219,83.630859 L 343.24219,69.451172 L 338.12109,69.451172 L 338.12109,66.369141 L 351.87891,66.369141 L 351.87891,69.451172 L 346.79297,69.451172 L 346.79297,83.630859 L 343.24219,83.630859" + id="text5504" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 407.06836,83.630859 L 403.51758,83.630859 L 403.51758,77.197266 L 397.24805,66.369141 L 401.5957,66.369141 L 405.28711,73.810547 L 408.69727,66.369141 L 412.75195,66.369141 L 407.06836,77.197266 L 407.06836,83.630859" + id="text5518" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 458.08594,66.105469 L 461.67188,66.105469 L 461.67188,76.933594 C 461.67187,78.269536 461.93749,79.246098 462.46875,79.863281 C 462.99999,80.472659 463.84374,80.777346 465,80.777344 C 466.17187,80.777346 467.02343,80.472659 467.55469,79.863281 C 468.09374,79.25391 468.36327,78.277349 468.36328,76.933594 L 468.36328,66.105469 L 471.91406,66.105469 L 471.91406,77.320313 C 471.91405,79.437504 471.3203,81.062502 470.13281,82.195313 C 468.95311,83.328125 467.24999,83.894531 465.02344,83.894531 C 462.78124,83.894531 461.0625,83.332031 459.86719,82.207031 C 458.67969,81.074221 458.08594,79.445316 458.08594,77.320313 L 458.08594,66.105469" + id="text5522" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 523.22461,83.630859 L 523.22461,66.369141 L 526.77539,66.369141 L 526.77539,83.630859 L 523.22461,83.630859" + id="text5526" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 580.18359,75 C 580.18359,76.898444 580.60546,78.375005 581.44922,79.429688 C 582.29296,80.476566 583.47265,81.000003 584.98828,81 C 586.51952,81.000003 587.71093,80.476566 588.5625,79.429688 C 589.41405,78.375005 589.83983,76.898444 589.83984,75 C 589.83983,73.101573 589.41405,71.628918 588.5625,70.582031 C 587.71093,69.527358 586.51952,69.000015 584.98828,69 C 583.47265,69.000015 582.29296,69.523452 581.44922,70.570313 C 580.60546,71.617199 580.18359,73.093761 580.18359,75 M 576.5625,75 C 576.5625,72.210949 577.32031,70.000014 578.83594,68.367188 C 580.35937,66.726579 582.41015,65.906268 584.98828,65.90625 C 587.56639,65.906268 589.61717,66.726579 591.14063,68.367188 C 592.67186,70.007826 593.43748,72.218761 593.4375,75 C 593.43748,77.781256 592.67186,79.992191 591.14063,81.632813 C 589.61717,83.273438 587.56639,84.09375 584.98828,84.09375 C 582.41015,84.09375 580.35937,83.273438 578.83594,81.632813 C 577.32031,79.992191 576.5625,77.781256 576.5625,75" + id="text5530" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 641.97656,74.361328 L 645.41016,74.361328 C 646.33983,74.361337 647.01561,74.166025 647.4375,73.775391 C 647.85936,73.376963 648.0703,72.740245 648.07031,71.865234 C 648.0703,71.044934 647.86327,70.423841 647.44922,70.001953 C 647.03515,69.580092 646.41796,69.369155 645.59766,69.369141 L 641.97656,69.369141 L 641.97656,74.361328 M 641.95313,77.490234 L 641.95313,83.630859 L 638.40234,83.630859 L 638.40234,66.369141 L 646.07813,66.369141 C 647.89061,66.369158 649.26171,66.841814 650.19141,67.787109 C 651.12889,68.724624 651.59764,70.103529 651.59766,71.923828 C 651.59764,73.705088 651.14061,75.080087 650.22656,76.048828 C 649.31249,77.009772 648.0078,77.490241 646.3125,77.490234 L 641.95313,77.490234" + id="text5534" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 709.24805,63.919922 L 709.24805,66.369141 C 709.17772,66.369155 709.08007,66.365249 708.95508,66.357422 C 708.83007,66.349624 708.74413,66.345718 708.69727,66.345703 C 707.90819,66.345718 707.37304,66.498062 707.0918,66.802734 C 706.81835,67.099624 706.68163,67.732435 706.68164,68.701172 L 706.68164,71.513672 C 706.68163,72.66993 706.50585,73.490242 706.1543,73.974609 C 705.80273,74.458991 705.16992,74.806647 704.25586,75.017578 C 705.16992,75.228522 705.80273,75.572271 706.1543,76.048828 C 706.50585,76.525395 706.68163,77.341801 706.68164,78.498047 L 706.68164,81.322266 C 706.68163,82.283202 706.81835,82.912108 707.0918,83.208984 C 707.36523,83.505857 707.90038,83.654294 708.69727,83.654297 C 708.74413,83.654294 708.83007,83.650388 708.95508,83.642578 C 709.08007,83.634763 709.17772,83.630857 709.24805,83.630859 L 709.24805,86.080078 C 709.13866,86.080073 708.98632,86.08398 708.79102,86.091797 C 708.59569,86.099605 708.45116,86.103511 708.35742,86.103516 C 707.57616,86.103511 706.92382,86.056636 706.40039,85.962891 C 705.87695,85.869136 705.43163,85.724605 705.06445,85.529297 C 704.61913,85.263668 704.30273,84.904293 704.11523,84.451172 C 703.93554,84.005857 703.8457,83.228514 703.8457,82.119141 L 703.8457,79.166016 C 703.8457,78.095706 703.64648,77.337895 703.24805,76.892578 C 702.84961,76.439458 702.17773,76.212896 701.23242,76.212891 C 701.18554,76.212896 701.10742,76.216802 700.99805,76.224609 C 700.88867,76.232427 700.80664,76.236333 700.75195,76.236328 L 700.75195,73.787109 C 700.80664,73.787117 700.88867,73.791023 700.99805,73.798828 C 701.10742,73.806648 701.18554,73.810554 701.23242,73.810547 C 702.16992,73.810554 702.83789,73.583992 703.23633,73.130859 C 703.64257,72.677743 703.8457,71.912119 703.8457,70.833984 L 703.8457,67.904297 C 703.8457,66.787124 703.93554,66.001968 704.11523,65.548828 C 704.30273,65.095719 704.61913,64.736345 705.06445,64.470703 C 705.43163,64.275408 705.87695,64.130876 706.40039,64.037109 C 706.92382,63.943377 707.57616,63.896502 708.35742,63.896484 C 708.45116,63.896502 708.59569,63.900408 708.79102,63.908203 C 708.98632,63.916033 709.13866,63.919939 709.24805,63.919922 M 703.0957,93.966797 L 709.01367,93.966797 L 709.01367,96.462891 L 706.25977,96.462891 L 706.25977,113.8418 L 709.01367,113.8418 L 709.01367,116.33789 L 703.0957,116.33789 L 703.0957,93.966797" + id="text5546" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 760.75195,63.908203 L 761.54883,63.908203 C 762.4082,63.90822 763.09961,63.955095 763.62305,64.048828 C 764.14648,64.142595 764.58398,64.291033 764.93555,64.494141 C 765.38085,64.744157 765.69335,65.103532 765.87305,65.572266 C 766.06054,66.033218 766.15429,66.806655 766.1543,67.892578 L 766.1543,70.845703 C 766.15429,71.916025 766.35351,72.677743 766.75195,73.130859 C 767.15038,73.57618 767.82226,73.798836 768.76758,73.798828 C 768.81444,73.798836 768.89257,73.794929 769.00195,73.787109 C 769.11132,73.779304 769.19335,73.775398 769.24805,73.775391 L 769.24805,76.224609 L 768.81445,76.224609 C 767.83788,76.224614 767.15038,76.443364 766.75195,76.880859 C 766.35351,77.318363 766.15429,78.076175 766.1543,79.154297 L 766.1543,82.107422 C 766.15429,83.224607 766.06054,84.009763 765.87305,84.462891 C 765.69335,84.916012 765.38085,85.267574 764.93555,85.517578 C 764.56835,85.712886 764.12304,85.857417 763.59961,85.951172 C 763.07617,86.044917 762.42382,86.091792 761.64258,86.091797 C 761.54883,86.091792 761.40429,86.087886 761.20898,86.080078 C 761.01367,86.072261 760.86133,86.068355 760.75195,86.068359 L 760.75195,83.619141 C 760.82226,83.619138 760.91992,83.623044 761.04492,83.630859 C 761.16992,83.638669 761.25586,83.642576 761.30273,83.642578 C 762.09179,83.642576 762.62304,83.490232 762.89648,83.185547 C 763.17773,82.88867 763.31836,82.263671 763.31836,81.310547 L 763.31836,78.509766 C 763.31836,77.337895 763.49414,76.513677 763.8457,76.037109 C 764.19726,75.55274 764.83007,75.20899 765.74414,75.005859 C 764.83007,74.794928 764.19726,74.447272 763.8457,73.962891 C 763.49414,73.478523 763.31836,72.658212 763.31836,71.501953 L 763.31836,68.666016 C 763.31836,67.712904 763.17773,67.087905 762.89648,66.791016 C 762.62304,66.486343 762.09179,66.333999 761.30273,66.333984 C 761.25586,66.333999 761.16992,66.337906 761.04492,66.345703 C 760.91992,66.35353 760.82226,66.357437 760.75195,66.357422 L 760.75195,63.908203 M 767.00977,93.955078 L 767.00977,116.32617 L 761.08008,116.32617 L 761.08008,113.83008 L 763.8457,113.83008 L 763.8457,96.451172 L 761.08008,96.451172 L 761.08008,93.955078 L 767.00977,93.955078" + id="text5554" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 823.79883,62.977287 L 826.21289,62.977287 L 826.21289,86.977287 L 823.79883,86.977287 L 823.79883,62.977287 M 827.10352,113.54369 L 821.29102,93.6101 L 822.87305,93.6101 L 828.70898,113.54369 L 827.10352,113.54369" + id="text5564" /> + <g + id="g3597"> + <path + id="text5570" + d="M 22.996094,139.10156 C 22.907541,140.40886 22.403635,141.44792 21.484375,142.21875 C 20.565095,142.98958 19.365878,143.375 17.886719,143.375 C 16.183589,143.375 14.859372,142.84375 13.914063,141.78125 C 12.968749,140.71875 12.496093,139.22917 12.496094,137.3125 C 12.496093,135.35417 12.977863,133.85418 13.941406,132.8125 C 14.904945,131.77084 16.29036,131.25001 18.097656,131.25 C 19.566398,131.25001 20.726554,131.60808 21.578125,132.32422 C 22.429677,133.04037 22.897124,134.05209 22.980469,135.35938 L 20.644531,135.35938 C 20.545564,134.70834 20.279939,134.21225 19.847656,133.87109 C 19.415357,133.52996 18.832024,133.35938 18.097656,133.35938 C 17.055984,133.35938 16.264318,133.69532 15.722656,134.36719 C 15.180986,135.03907 14.910153,136.02084 14.910156,137.3125 C 14.910153,138.5625 15.179684,139.52865 15.71875,140.21094 C 16.257808,140.89323 17.024734,141.23438 18.019531,141.23438 C 18.738274,141.23438 19.326815,141.05078 19.785156,140.68359 C 20.243481,140.31641 20.540356,139.78907 20.675781,139.10156 L 22.996094,139.10156 z M 29.558594,142 C 29.27213,142.44271 28.89713,142.77995 28.433594,143.01172 C 27.970048,143.24349 27.430986,143.35937 26.816406,143.35938 C 25.993487,143.35937 25.359373,143.125 24.914063,142.65625 C 24.468749,142.1875 24.246093,141.52083 24.246094,140.65625 C 24.246093,139.85417 24.468749,139.24219 24.914063,138.82031 C 25.359373,138.39844 26.09505,138.10938 27.121094,137.95313 C 27.355465,137.91667 27.662756,137.87501 28.042969,137.82813 C 29.006505,137.70313 29.488275,137.42448 29.488281,136.99219 C 29.488275,136.64844 29.381505,136.40235 29.167969,136.25391 C 28.954422,136.10548 28.597651,136.03126 28.097656,136.03125 C 27.639319,136.03126 27.287757,136.1224 27.042969,136.30469 C 26.798174,136.48699 26.675778,136.7474 26.675781,137.08594 L 26.675781,137.21094 L 24.550781,137.21094 L 24.550781,137.05469 C 24.55078,136.1849 24.858072,135.50131 25.472656,135.00391 C 26.087237,134.50652 26.936195,134.25782 28.019531,134.25781 C 29.207026,134.25782 30.117181,134.46355 30.75,134.875 C 31.382805,135.28647 31.699211,135.88022 31.699219,136.65625 L 31.699219,141.48438 C 31.699211,141.83854 31.735669,142.10287 31.808594,142.27734 C 31.881502,142.45182 32.003898,142.58333 32.175781,142.67188 L 32.175781,143.05469 L 29.808594,143.05469 C 29.730463,142.90885 29.670567,142.7474 29.628906,142.57031 C 29.587234,142.39323 29.563796,142.20313 29.558594,142 L 29.558594,142 z M 29.519531,138.875 C 29.149734,139.04688 28.723953,139.1849 28.242188,139.28906 C 27.760413,139.39323 27.511715,139.44792 27.496094,139.45313 C 27.095049,139.56771 26.815101,139.71094 26.65625,139.88281 C 26.497393,140.05469 26.417966,140.29167 26.417969,140.59375 C 26.417966,140.90625 26.519528,141.15495 26.722656,141.33984 C 26.925778,141.52474 27.199215,141.61719 27.542969,141.61719 C 28.157548,141.61719 28.64062,141.44401 28.992188,141.09766 C 29.343744,140.7513 29.519525,140.27865 29.519531,139.67969 L 29.519531,138.875 z M 39.691406,138.85938 C 39.691399,138.00521 39.529941,137.35287 39.207031,136.90234 C 38.884108,136.45183 38.415359,136.22657 37.800781,136.22656 C 37.19661,136.22657 36.736975,136.45053 36.421875,136.89844 C 36.106767,137.34636 35.949216,138.00001 35.949219,138.85938 C 35.949216,139.66146 36.11458,140.28125 36.445313,140.71875 C 36.776038,141.15625 37.243485,141.375 37.847656,141.375 C 38.420567,141.375 38.871088,141.15104 39.199219,140.70313 C 39.527337,140.25521 39.691399,139.64063 39.691406,138.85938 L 39.691406,138.85938 z M 33.738281,146.46094 L 33.738281,134.5625 L 35.902344,134.5625 L 35.902344,135.71094 C 36.230465,135.21095 36.59635,134.84636 37,134.61719 C 37.403641,134.38803 37.878901,134.27345 38.425781,134.27344 C 39.472649,134.27345 40.321607,134.68621 40.972656,135.51172 C 41.623689,136.33725 41.94921,137.42188 41.949219,138.76563 C 41.94921,140.125 41.623689,141.22787 40.972656,142.07422 C 40.321607,142.92057 39.483066,143.34375 38.457031,143.34375 C 37.915359,143.34375 37.432287,143.22917 37.007813,143 C 36.583329,142.77083 36.230465,142.4375 35.949219,142 L 35.949219,146.46094 L 33.738281,146.46094 z M 43.027344,140.28906 L 45.292969,140.28906 C 45.313799,140.72136 45.470049,141.04297 45.761719,141.25391 C 46.053382,141.46485 46.490881,141.57031 47.074219,141.57031 C 47.516922,141.57031 47.85937,141.4961 48.101563,141.34766 C 48.343744,141.19922 48.464838,140.98959 48.464844,140.71875 C 48.464838,140.33334 48.011713,140.04427 47.105469,139.85156 C 46.735673,139.77344 46.441402,139.70573 46.222656,139.64844 C 45.118487,139.36719 44.351561,139.03386 43.921875,138.64844 C 43.492187,138.26303 43.277343,137.74219 43.277344,137.08594 C 43.277343,136.21615 43.591145,135.52735 44.21875,135.01953 C 44.846352,134.51173 45.696611,134.25782 46.769531,134.25781 C 47.904943,134.25782 48.796869,134.51043 49.445313,135.01563 C 50.093742,135.52084 50.438794,136.23178 50.480469,137.14844 L 48.269531,137.14844 C 48.253901,136.78907 48.117182,136.51042 47.859375,136.3125 C 47.601557,136.11459 47.243485,136.01563 46.785156,136.01563 C 46.352861,136.01563 46.031246,136.08074 45.820313,136.21094 C 45.609372,136.34115 45.503903,136.53646 45.503906,136.79688 C 45.503903,137.13542 46.069007,137.4349 47.199219,137.69531 C 47.45963,137.75261 47.665359,137.79948 47.816406,137.83594 C 48.946608,138.10157 49.718743,138.42188 50.132813,138.79688 C 50.546867,139.17188 50.753898,139.70052 50.753906,140.38281 C 50.753898,141.34636 50.414055,142.08073 49.734375,142.58594 C 49.054681,143.09115 48.066401,143.34375 46.769531,143.34375 C 45.597653,143.34375 44.680987,143.08073 44.019531,142.55469 C 43.358072,142.02865 43.027343,141.30469 43.027344,140.38281 L 43.027344,140.28906 z M 57.011719,143.05469 L 57.011719,131.54688 L 59.378906,131.54688 L 59.378906,140.92969 L 64.996094,140.92969 L 64.996094,143.05469 L 57.011719,143.05469 z M 67.972656,138.79688 C 67.972653,139.64063 68.14583,140.29167 68.492188,140.75 C 68.838538,141.20834 69.332027,141.4375 69.972656,141.4375 C 70.602859,141.4375 71.09114,141.20834 71.4375,140.75 C 71.783847,140.29167 71.957024,139.64063 71.957031,138.79688 C 71.957024,137.95834 71.78515,137.3112 71.441406,136.85547 C 71.09765,136.39975 70.608067,136.17188 69.972656,136.17188 C 69.332027,136.17188 68.838538,136.39975 68.492188,136.85547 C 68.14583,137.3112 67.972653,137.95834 67.972656,138.79688 L 67.972656,138.79688 z M 65.667969,138.79688 C 65.667968,137.38542 66.05078,136.27605 66.816406,135.46875 C 67.582029,134.66147 68.634111,134.25782 69.972656,134.25781 C 71.305983,134.25782 72.356764,134.66147 73.125,135.46875 C 73.89322,136.27605 74.277335,137.38542 74.277344,138.79688 C 74.277335,140.21354 73.89322,141.32552 73.125,142.13281 C 72.356764,142.9401 71.305983,143.34375 69.972656,143.34375 C 68.634111,143.34375 67.582029,142.9401 66.816406,142.13281 C 66.05078,141.32552 65.667968,140.21354 65.667969,138.79688 L 65.667969,138.79688 z M 80.949219,139.85156 L 83.191406,139.85156 C 83.097648,140.92969 82.704419,141.78125 82.011719,142.40625 C 81.319004,143.03125 80.42838,143.34375 79.339844,143.34375 C 78.105465,143.34375 77.138019,142.94141 76.4375,142.13672 C 75.736978,141.33203 75.386718,140.21875 75.386719,138.79688 C 75.386718,137.38021 75.744791,136.26954 76.460938,135.46484 C 77.177081,134.66016 78.162757,134.25782 79.417969,134.25781 C 80.516921,134.25782 81.398431,134.54949 82.0625,135.13281 C 82.726555,135.71615 83.097648,136.52865 83.175781,137.57031 L 80.917969,137.57031 C 80.855463,137.11719 80.696609,136.77084 80.441406,136.53125 C 80.186193,136.29167 79.850255,136.17188 79.433594,136.17188 C 78.87109,136.17188 78.450517,136.39324 78.171875,136.83594 C 77.893226,137.27865 77.753903,137.94271 77.753906,138.82813 C 77.753903,139.64584 77.898434,140.27474 78.1875,140.71484 C 78.476559,141.15495 78.891923,141.375 79.433594,141.375 C 79.855464,141.375 80.194005,141.2474 80.449219,140.99219 C 80.704421,140.73698 80.871088,140.35677 80.949219,139.85156 L 80.949219,139.85156 z M 84.675781,143.05469 L 84.675781,131.54688 L 86.886719,131.54688 L 86.886719,137.58594 L 89.589844,134.5625 L 92.324219,134.5625 L 89.363281,137.71094 L 92.503906,143.05469 L 89.777344,143.05469 L 87.746094,139.4375 L 86.886719,140.36719 L 86.886719,143.05469 L 84.675781,143.05469 z " + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" /> + <path + id="path5584" + d="M 23.746094,146.25 L 12.496094,161.25 L 19.996094,161.25 L 19.996094,168.75 L 27.496094,168.75 L 27.496094,161.25 L 34.996094,161.25 L 23.746094,146.25 z M 22.714844,150.46875 L 24.746094,150.46875 L 27.871094,159.09375 L 25.996094,159.09375 L 25.402344,157.3125 L 22.058594,157.3125 L 21.496094,159.09375 L 19.621094,159.09375 L 22.714844,150.46875 z M 23.746094,152.1875 L 22.527344,155.84375 L 24.933594,155.84375 L 23.746094,152.1875 z " + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 119.9707,129.82617 L 117.58008,137.17383 L 122.37305,137.17383 L 119.9707,129.82617 M 117.9082,126.36914 L 122.00977,126.36914 L 128.23242,143.63086 L 124.50586,143.63086 L 123.33398,140.08008 L 116.64258,140.08008 L 115.50586,143.63086 L 111.76758,143.63086 L 117.9082,126.36914" + id="text5641" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 172.98047,138.29297 L 176.48438,138.29297 C 176.61718,139.23829 177.0039,139.94141 177.64453,140.40234 C 178.28515,140.85547 179.21093,141.08203 180.42188,141.08203 C 181.45312,141.08203 182.23046,140.89844 182.75391,140.53125 C 183.27733,140.16407 183.53905,139.6211 183.53906,138.90234 C 183.53905,137.85547 182.03515,136.98829 179.02734,136.30078 C 178.98827,136.29298 178.95312,136.28516 178.92188,136.27734 C 178.84374,136.26173 178.72265,136.23438 178.55859,136.19531 C 176.94921,135.84376 175.80078,135.44923 175.11328,135.01172 C 174.5039,134.6211 174.03906,134.09767 173.71875,133.44141 C 173.39844,132.77735 173.23828,131.99611 173.23828,131.09766 C 173.23828,129.41798 173.80859,128.13283 174.94922,127.24219 C 176.08984,126.34377 177.73828,125.89455 179.89453,125.89453 C 181.91015,125.89455 183.48436,126.37111 184.61719,127.32422 C 185.7578,128.27736 186.35936,129.62111 186.42188,131.35547 L 183.01172,131.35547 C 182.94921,130.51954 182.6289,129.88283 182.05078,129.44531 C 181.47265,129.00783 180.64843,128.78908 179.57813,128.78906 C 178.64843,128.78908 177.92968,128.97267 177.42188,129.33984 C 176.92187,129.69923 176.67187,130.21486 176.67188,130.88672 C 176.67187,131.80079 177.65234,132.48439 179.61328,132.9375 C 180.14452,133.06251 180.55859,133.16017 180.85547,133.23047 C 182.11327,133.55079 183.0039,133.80079 183.52734,133.98047 C 184.05858,134.16017 184.51952,134.35938 184.91016,134.57813 C 185.61327,134.96876 186.14061,135.48829 186.49219,136.13672 C 186.84374,136.77735 187.01952,137.54688 187.01953,138.44531 C 187.01952,140.24219 186.41405,141.63672 185.20313,142.62891 C 183.99218,143.61328 182.28515,144.10547 180.08203,144.10547 C 177.91015,144.10547 176.20703,143.60156 174.97266,142.59375 C 173.73828,141.58594 173.07422,140.15235 172.98047,138.29297" + id="text5645" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 236.16211,140.51367 L 239.00977,140.51367 C 240.65819,140.51367 241.8496,140.08399 242.58398,139.22461 C 243.32616,138.35743 243.69725,136.95508 243.69727,135.01758 C 243.69725,133.0879 243.3535,131.66993 242.66602,130.76367 C 241.9785,129.85744 240.90429,129.40431 239.44336,129.4043 L 236.16211,129.4043 L 236.16211,140.51367 M 232.68164,143.63086 L 232.68164,126.36914 L 239.44336,126.36914 C 242.09179,126.36916 244.06444,127.084 245.36133,128.51367 C 246.666,129.94337 247.31834,132.11134 247.31836,135.01758 C 247.31834,136.59571 247.07616,137.98633 246.5918,139.18945 C 246.11522,140.39258 245.41991,141.36133 244.50586,142.0957 C 243.81835,142.64258 243.0371,143.03711 242.16211,143.2793 C 241.2871,143.51367 240.06054,143.63086 238.48242,143.63086 L 232.68164,143.63086" + id="text5649" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 293.97656,143.63086 L 293.97656,126.36914 L 306.02344,126.36914 L 306.02344,129.36914 L 297.48047,129.36914 L 297.48047,133.2832 L 304.96875,133.2832 L 304.96875,136.2832 L 297.48047,136.2832 L 297.48047,143.63086 L 293.97656,143.63086" + id="text5653" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 365.17969,141.57422 C 364.53905,142.44141 363.80858,143.07813 362.98828,143.48438 C 362.17577,143.89062 361.21874,144.09375 360.11719,144.09375 C 357.70312,144.09375 355.74609,143.25781 354.24609,141.58594 C 352.7539,139.90625 352.00781,137.70313 352.00781,134.97656 C 352.00781,132.22657 352.7539,130.02736 354.24609,128.37891 C 355.73828,126.73049 357.72656,125.90627 360.21094,125.90625 C 362.37499,125.90627 364.14061,126.4258 365.50781,127.46484 C 366.87498,128.49611 367.68748,129.91798 367.94531,131.73047 L 364.32422,131.73047 C 364.10546,130.83204 363.65624,130.14845 362.97656,129.67969 C 362.30468,129.21095 361.42577,128.97658 360.33984,128.97656 C 358.89452,128.97658 357.75781,129.50783 356.92969,130.57031 C 356.10937,131.62501 355.69921,133.08595 355.69922,134.95313 C 355.69921,136.82813 356.1289,138.29688 356.98828,139.35938 C 357.84765,140.42188 359.02734,140.95313 360.52734,140.95313 C 361.65233,140.95313 362.59374,140.6211 363.35156,139.95703 C 364.10936,139.29297 364.57811,138.38282 364.75781,137.22656 L 360.84375,137.22656 L 360.84375,134.27344 L 367.99219,134.27344 L 367.99219,143.61328 L 365.61328,143.61328 L 365.17969,141.57422" + id="text5657" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 412.86328,143.63086 L 412.86328,126.36914 L 416.4375,126.36914 L 416.4375,132.80273 L 423.5625,132.80273 L 423.5625,126.36914 L 427.13672,126.36914 L 427.13672,143.63086 L 423.5625,143.63086 L 423.5625,135.97852 L 416.4375,135.97852 L 416.4375,143.63086 L 412.86328,143.63086" + id="text5661" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 474.48047,136.95703 L 477.91406,136.95703 L 477.91406,139.04297 C 477.91406,139.64453 478.09375,140.10547 478.45313,140.42578 C 478.8125,140.73828 479.32812,140.89453 480,140.89453 C 480.73437,140.89453 481.24609,140.70313 481.53516,140.32031 C 481.82421,139.9375 481.96874,139.21875 481.96875,138.16406 L 481.96875,126.12891 L 485.51953,126.12891 L 485.51953,138.32813 C 485.51952,139.42188 485.45311,140.22657 485.32031,140.74219 C 485.1953,141.25 484.98436,141.69922 484.6875,142.08984 C 484.23436,142.66797 483.61327,143.10938 482.82422,143.41406 C 482.03515,143.71875 481.10937,143.87109 480.04688,143.87109 C 479.07031,143.87109 478.20703,143.73828 477.45703,143.47266 C 476.70703,143.20703 476.08203,142.8125 475.58203,142.28906 C 475.18359,141.86719 474.89844,141.39844 474.72656,140.88281 C 474.5625,140.35938 474.48047,139.5 474.48047,138.30469 L 474.48047,136.95703" + id="text5665" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 532.32422,143.63086 L 532.32422,126.36914 L 535.875,126.36914 L 535.875,133.45898 L 542.61328,126.36914 L 547.05469,126.36914 L 540.16406,133.35352 L 547.67578,143.63086 L 543.33984,143.63086 L 537.71484,135.73242 L 535.875,137.56055 L 535.875,143.63086 L 532.32422,143.63086" + id="text5669" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 594.01172,143.63086 L 594.01172,126.36914 L 597.5625,126.36914 L 597.5625,140.44336 L 605.98828,140.44336 L 605.98828,143.63086 L 594.01172,143.63086" + id="text5673" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 143.15039,203.63086 L 143.15039,200.63086 L 152.53711,189.49805 L 143.33789,189.49805 L 143.33789,186.36914 L 156.84961,186.36914 L 156.84961,189.36914 L 147.43945,200.51367 L 156.63867,200.51367 L 156.63867,203.63086 L 143.15039,203.63086" + id="text5679" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 202.37109,203.63086 L 207.79688,194.81836 L 202.37109,186.36914 L 206.47266,186.36914 L 210,192.4043 L 213.50391,186.36914 L 217.62891,186.36914 L 212.20313,194.79492 L 217.62891,203.63086 L 213.52734,203.63086 L 210,197.6543 L 206.47266,203.63086 L 202.37109,203.63086" + id="text5683" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 277.875,197.68359 C 277.74217,199.64454 276.98436,201.20313 275.60156,202.35938 C 274.22655,203.51563 272.42968,204.09375 270.21094,204.09375 C 267.65624,204.09375 265.66796,203.29688 264.24609,201.70313 C 262.83203,200.10938 262.125,197.87501 262.125,195 C 262.125,192.06251 262.84765,189.81251 264.29297,188.25 C 265.73828,186.68752 267.8164,185.90627 270.52734,185.90625 C 272.73046,185.90627 274.46874,186.44533 275.74219,187.52344 C 277.02342,188.59377 277.72655,190.10939 277.85156,192.07031 L 274.34766,192.07031 C 274.19921,191.09376 273.80077,190.35158 273.15234,189.84375 C 272.50389,189.32814 271.6289,189.07033 270.52734,189.07031 C 268.96484,189.07033 267.77734,189.57423 266.96484,190.58203 C 266.15234,191.58986 265.74609,193.06251 265.74609,195 C 265.74609,196.87501 266.14843,198.32422 266.95313,199.34766 C 267.76562,200.3711 268.91796,200.88282 270.41016,200.88281 C 271.48827,200.88282 272.37108,200.60938 273.05859,200.0625 C 273.74608,199.50782 274.19139,198.71485 274.39453,197.68359 L 277.875,197.68359" + id="text5687" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 328.33594,203.63086 L 322.38281,186.36914 L 326.32031,186.36914 L 329.98828,199.2832 L 333.72656,186.36914 L 337.61719,186.36914 L 331.73438,203.63086 L 328.33594,203.63086" + id="text5691" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 386.32031,200.51367 L 390.52734,200.51367 C 391.51952,200.51367 392.24218,200.33399 392.69531,199.97461 C 393.14843,199.61524 393.37499,199.04883 393.375,198.27539 C 393.37499,197.47071 393.15233,196.89258 392.70703,196.54102 C 392.26171,196.18165 391.52733,196.00196 390.50391,196.00195 L 386.32031,196.00195 L 386.32031,200.51367 M 386.32031,193.04883 L 390.375,193.04883 C 391.24999,193.04884 391.89061,192.9004 392.29688,192.60352 C 392.70311,192.29884 392.90624,191.82228 392.90625,191.17383 C 392.90624,190.54103 392.70702,190.084 392.30859,189.80273 C 391.91796,189.51369 391.26561,189.36915 390.35156,189.36914 L 386.32031,189.36914 L 386.32031,193.04883 M 382.92188,203.63086 L 382.92188,186.36914 L 391.05469,186.36914 C 392.8203,186.36916 394.16405,186.74416 395.08594,187.49414 C 396.01561,188.23634 396.48045,189.31837 396.48047,190.74023 C 396.48045,191.61525 396.30858,192.34571 395.96484,192.93164 C 395.62108,193.51759 395.10545,193.97071 394.41797,194.29102 C 395.30858,194.6504 395.97264,195.16993 396.41016,195.84961 C 396.85545,196.52149 397.07811,197.36133 397.07813,198.36914 C 397.07811,200.04883 396.53123,201.34571 395.4375,202.25977 C 394.34374,203.17383 392.79296,203.63086 390.78516,203.63086 L 382.92188,203.63086" + id="text5695" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 442.88672,203.63086 L 442.88672,186.36914 L 446.60156,186.36914 L 453.60938,198.22852 L 453.60938,186.36914 L 457.11328,186.36914 L 457.11328,203.63086 L 453.44531,203.63086 L 446.39063,191.77148 L 446.39063,203.63086 L 442.88672,203.63086" + id="text5699" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 501.32813,203.63086 L 501.32813,186.36914 L 506.57813,186.36914 L 510.01172,199.50586 L 513.39844,186.36914 L 518.67188,186.36914 L 518.67188,203.63086 L 515.34375,203.63086 L 515.34375,189.70898 L 511.83984,203.63086 L 508.20703,203.63086 L 504.65625,189.70898 L 504.65625,203.63086 L 501.32813,203.63086" + id="text5703" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 658.22461,134.6543 L 658.22461,131.10352 L 661.77539,131.10352 L 661.77539,134.6543 L 658.22461,134.6543 M 658.22461,143.63086 L 658.22461,140.10352 L 661.77539,140.10352 L 661.77539,143.63086 L 658.22461,143.63086 M 658.24805,164.6543 L 658.24805,161.10352 L 661.77539,161.10352 L 661.77539,164.6543 L 658.24805,164.6543 M 658.24805,177.68555 L 658.24805,176.31445 C 658.90429,176.12695 659.38867,175.83789 659.70117,175.44727 C 660.01367,175.05664 660.16992,174.54883 660.16992,173.92383 L 660.16992,173.63086 L 658.22461,173.63086 L 658.22461,170.10352 L 661.77539,170.10352 L 661.77539,173.49023 C 661.77539,174.66211 661.47851,175.59961 660.88477,176.30273 C 660.29101,177.01367 659.41211,177.47461 658.24805,177.68555" + id="text5725" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 720.78516,126.7793 L 723.03516,126.7793 L 723.03516,133.33008 L 720.78516,133.33008 L 720.78516,126.7793 M 716.96484,126.7793 L 719.21484,126.7793 L 719.21484,133.33008 L 716.96484,133.33008 L 716.96484,126.7793 M 718.88672,156.7793 L 721.13672,156.7793 L 721.13672,163.33008 L 718.88672,163.33008 L 718.88672,156.7793" + id="text5731" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 772.5,140.60938 L 772.5,129.10156 L 780.85156,129.10156 L 780.85156,131.10156 L 774.83594,131.10156 L 774.83594,133.55469 L 780.33594,133.55469 L 780.33594,135.52344 L 774.83594,135.52344 L 774.83594,138.48438 L 781.13281,138.48438 L 781.13281,140.60938 L 772.5,140.60938 M 782.74219,140.60938 L 782.74219,132.11719 L 784.96875,132.11719 L 784.96875,133.125 C 785.28645,132.71355 785.66145,132.40626 786.09375,132.20313 C 786.52604,131.9948 787.00781,131.89063 787.53906,131.89063 C 788.47656,131.89063 789.17708,132.13543 789.64063,132.625 C 790.10937,133.10938 790.34374,133.84115 790.34375,134.82031 L 790.34375,140.60938 L 788.07031,140.60938 L 788.07031,135.47656 C 788.07031,134.86719 787.96614,134.4323 787.75781,134.17188 C 787.55468,133.91147 787.22135,133.78126 786.75781,133.78125 C 786.22135,133.78126 785.79687,133.94271 785.48438,134.26563 C 785.17187,134.58334 785.01562,135.01823 785.01563,135.57031 L 785.01563,140.60938 L 782.74219,140.60938 M 796.07813,140.67188 C 795.86979,140.67708 795.61979,140.6849 795.32813,140.69531 C 795.04166,140.71094 794.85937,140.71875 794.78125,140.71875 C 793.91146,140.71875 793.3151,140.55729 792.99219,140.23438 C 792.67448,139.90625 792.51562,139.26302 792.51563,138.30469 L 792.51563,133.71094 L 791.39063,133.71094 L 791.39063,132.11719 L 792.51563,132.11719 L 792.51563,129.79688 L 794.76563,129.79688 L 794.76563,132.11719 L 796.07813,132.11719 L 796.07813,133.71094 L 794.76563,133.71094 L 794.76563,138.41406 C 794.76562,138.63802 794.8151,138.78646 794.91406,138.85938 C 795.01302,138.92709 795.21614,138.96094 795.52344,138.96094 L 796.07813,138.96094 L 796.07813,140.67188 M 802.63281,138.03125 L 804.89844,138.03125 C 804.66926,138.92709 804.20572,139.63021 803.50781,140.14063 C 802.8151,140.64583 801.96874,140.89844 800.96875,140.89844 C 799.73958,140.89844 798.76562,140.48698 798.04688,139.66406 C 797.32812,138.83594 796.96875,137.71615 796.96875,136.30469 C 796.96875,134.91407 797.32292,133.81772 798.03125,133.01563 C 798.73958,132.21355 799.70833,131.81251 800.9375,131.8125 C 802.23958,131.81251 803.24478,132.20834 803.95313,133 C 804.66145,133.78647 805.01562,134.90886 805.01563,136.36719 C 805.01562,136.52865 805.01301,136.65105 805.00781,136.73438 C 805.0078,136.8125 805.0026,136.88802 804.99219,136.96094 L 799.32031,136.96094 C 799.35156,137.62761 799.51302,138.13021 799.80469,138.46875 C 800.10156,138.80729 800.52604,138.97656 801.07813,138.97656 C 801.46874,138.97656 801.78906,138.90104 802.03906,138.75 C 802.28906,138.59375 802.48697,138.35417 802.63281,138.03125 M 799.32031,135.46875 L 802.66406,135.46875 C 802.64322,134.89584 802.48958,134.46094 802.20313,134.16406 C 801.92187,133.86199 801.51562,133.71094 800.98438,133.71094 C 800.48958,133.71094 800.09895,133.86199 799.8125,134.16406 C 799.53125,134.46615 799.36718,134.90105 799.32031,135.46875 M 806.52344,140.60938 L 806.52344,132.11719 L 808.63281,132.11719 L 808.63281,133.57031 C 808.92968,132.98699 809.27604,132.5599 809.67188,132.28906 C 810.0677,132.01303 810.53906,131.87501 811.08594,131.875 C 811.17447,131.87501 811.24218,131.87761 811.28906,131.88281 C 811.34114,131.88282 811.38281,131.88543 811.41406,131.89063 L 811.42188,134.19531 L 810.66406,134.19531 C 810.04427,134.19532 809.57812,134.35678 809.26563,134.67969 C 808.95312,135.00261 808.79687,135.48178 808.79688,136.11719 L 808.79688,140.60938 L 806.52344,140.60938" + id="text5737" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 787.5,172.5 L 787.5,157.5 L 772.5,165 L 787.5,172.5 z " + id="path5745" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 810,150 L 810,165 L 780,165" + id="path5747" /> + <g + id="g3601"> + <path + id="text5753" + d="M 12.496094,197.64063 L 14.832032,197.64063 C 14.92057,198.27084 15.178382,198.73828 15.605469,199.04297 C 16.032548,199.34766 16.649735,199.5 17.457032,199.5 C 18.144525,199.5 18.662754,199.37761 19.011719,199.13281 C 19.36067,198.88802 19.535149,198.52604 19.535157,198.04688 C 19.535149,197.34896 18.532546,196.77084 16.527344,196.3125 C 16.501298,196.3073 16.47786,196.30209 16.457032,196.29688 C 16.404944,196.28646 16.324215,196.26823 16.214844,196.24219 C 15.141924,196.00782 14.3763,195.7448 13.917969,195.45313 C 13.511717,195.19271 13.201822,194.84245 12.988282,194.40234 C 12.774739,193.96225 12.667968,193.44272 12.667969,192.84375 C 12.667968,191.72397 13.048176,190.8659 13.808594,190.26953 C 14.569008,189.67319 15.667965,189.37501 17.105469,189.375 C 18.449212,189.37501 19.499993,189.69272 20.257813,190.32813 C 21.015616,190.96355 21.415355,191.85938 21.457032,193.01563 L 19.183594,193.01563 C 19.14192,192.45834 18.928379,192.03386 18.542969,191.74219 C 18.157546,191.45053 17.608067,191.3047 16.894532,191.30469 C 16.274735,191.3047 15.796871,191.42579 15.460938,191.66797 C 15.124997,191.91017 14.957028,192.25522 14.957032,192.70313 C 14.957028,193.31251 15.610674,193.76824 16.917969,194.07031 C 17.27213,194.15365 17.548172,194.21876 17.746094,194.26563 C 18.584629,194.47917 19.17968,194.64584 19.53125,194.76563 C 19.882805,194.88542 20.188794,195.01824 20.449219,195.16406 C 20.91796,195.42448 21.269522,195.76954 21.503907,196.19922 C 21.738272,196.62891 21.855459,197.14323 21.855469,197.74219 C 21.855459,198.94011 21.451814,199.86849 20.644532,200.52734 C 19.837232,201.1862 18.699212,201.51562 17.230469,201.51563 C 15.782548,201.51562 14.647133,201.17969 13.824219,200.50781 C 13.001301,199.83594 12.558593,198.88021 12.496094,197.64063 L 12.496094,197.64063 z M 23.566407,201.19531 L 23.566407,189.6875 L 25.824219,189.6875 L 25.824219,193.64063 C 26.131507,193.25522 26.497392,192.96485 26.921875,192.76953 C 27.34635,192.57423 27.82161,192.47657 28.347657,192.47656 C 28.84765,192.47657 29.299473,192.56251 29.703125,192.73438 C 30.106764,192.90626 30.433586,193.15105 30.683594,193.46875 C 30.855461,193.6823 30.976554,193.92709 31.046875,194.20313 C 31.117179,194.47917 31.152335,194.92188 31.152344,195.53125 L 31.152344,195.6875 L 31.152344,201.19531 L 28.894532,201.19531 L 28.894532,196.75 C 28.894525,195.69792 28.798171,195.03777 28.605469,194.76953 C 28.412755,194.50131 28.066401,194.36719 27.566407,194.36719 C 27.029944,194.36719 26.605465,194.52735 26.292969,194.84766 C 25.980466,195.16797 25.824216,195.60417 25.824219,196.15625 L 25.824219,201.19531 L 23.566407,201.19531 z M 33.191407,191.75781 L 33.191407,189.6875 L 35.464844,189.6875 L 35.464844,191.75781 L 33.191407,191.75781 z M 33.191407,201.19531 L 33.191407,192.70313 L 35.464844,192.70313 L 35.464844,201.19531 L 33.191407,201.19531 z M 37.886719,201.19531 L 37.886719,194.29688 L 36.675782,194.29688 L 36.675782,192.70313 L 37.886719,192.70313 L 37.886719,191.91406 C 37.886718,191.12241 38.091144,190.54038 38.5,190.16797 C 38.908852,189.79558 39.553383,189.60939 40.433594,189.60938 C 40.595048,189.60939 40.765621,189.61329 40.945313,189.62109 C 41.124996,189.62892 41.316402,189.64324 41.519532,189.66406 L 41.519532,191.46875 L 40.925782,191.46875 C 40.587236,191.46876 40.36458,191.51303 40.257813,191.60156 C 40.151038,191.69011 40.097653,191.85938 40.097657,192.10938 L 40.097657,192.70313 L 41.519532,192.70313 L 41.519532,194.29688 L 40.113282,194.29688 L 40.113282,201.19531 L 37.886719,201.19531 z M 46.449219,201.25781 C 46.240881,201.26302 45.992183,201.27214 45.703125,201.28516 C 45.414059,201.29818 45.230465,201.30469 45.152344,201.30469 C 44.28255,201.30469 43.687498,201.14193 43.367188,200.81641 C 43.046874,200.49089 42.886718,199.84896 42.886719,198.89063 L 42.886719,194.29688 L 41.761719,194.29688 L 41.761719,192.70313 L 42.886719,192.70313 L 42.886719,190.38281 L 45.136719,190.38281 L 45.136719,192.70313 L 46.449219,192.70313 L 46.449219,194.29688 L 45.136719,194.29688 L 45.136719,199 C 45.136716,199.22396 45.186195,199.3711 45.285157,199.44141 C 45.384111,199.51172 45.587236,199.54688 45.894532,199.54688 L 46.449219,199.54688 L 46.449219,201.25781 z " + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" /> + <path + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 24.746094,207.125 L 13.496094,222.125 L 20.996094,222.125 L 20.996094,229.625 L 28.496094,229.625 L 28.496094,222.125 L 35.996094,222.125 L 24.746094,207.125 z " + id="path5757" /> + </g> + <g + id="g5795" + transform="translate(727.5,0)"> + <text + sodipodi:linespacing="125%" + id="text5797" + y="201.19531" + x="31.8125" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + xml:space="preserve"><tspan + y="201.19531" + x="31.8125" + id="tspan5799" + sodipodi:role="line">Shift</tspan></text> + <path + id="path5801" + d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z " + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 576.90234,189.63867 L 576.90234,192.20508 L 566.4375,196.48242 L 576.90234,200.74805 L 576.90234,203.31445 L 563.09766,197.63086 L 563.09766,195.29883 L 576.90234,189.63867 M 568.21875,237.68555 L 568.21875,236.31445 C 568.875,236.12695 569.35937,235.83789 569.67188,235.44727 C 569.98437,235.05664 570.14062,234.54883 570.14063,233.92383 L 570.14063,233.63086 L 568.21875,233.63086 L 568.21875,230.10352 L 571.76953,230.10352 L 571.76953,233.49023 C 571.76953,234.6543 571.46875,235.59179 570.86719,236.30273 C 570.27343,237.01367 569.39062,237.47461 568.21875,237.68555" + id="text5803" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 623.09766,189.63867 L 636.90234,195.29883 L 636.90234,197.63086 L 623.09766,203.31445 L 623.09766,200.74805 L 633.58594,196.48242 L 623.09766,192.20508 L 623.09766,189.63867 M 628.21875,233.63086 L 628.21875,230.10352 L 631.74609,230.10352 L 631.74609,233.63086 L 628.21875,233.63086" + id="text5813" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 688.44727,198.61523 C 688.44726,198.5293 688.44335,198.41602 688.43555,198.27539 C 688.42773,198.12696 688.42382,198.01758 688.42383,197.94727 C 688.42382,197.25977 688.49804,196.68946 688.64648,196.23633 C 688.79492,195.7754 689.0332,195.34571 689.36133,194.94727 C 689.61132,194.6504 689.98242,194.31056 690.47461,193.92773 C 690.9746,193.54493 691.29882,193.26759 691.44727,193.0957 C 691.75976,192.74415 691.9746,192.42775 692.0918,192.14648 C 692.20898,191.86525 692.26757,191.55665 692.26758,191.2207 C 692.26757,190.47853 692.06054,189.9004 691.64648,189.48633 C 691.23241,189.07228 690.65429,188.86525 689.91211,188.86523 C 689.16992,188.86525 688.58398,189.11525 688.1543,189.61523 C 687.73242,190.10744 687.50195,190.80275 687.46289,191.70117 L 684.1582,191.70117 L 684.1582,191.33789 C 684.1582,189.68947 684.67773,188.37697 685.7168,187.40039 C 686.76367,186.41603 688.16992,185.92385 689.93555,185.92383 C 691.74023,185.92385 693.17382,186.38869 694.23633,187.31836 C 695.30663,188.24025 695.84178,189.47853 695.8418,191.0332 C 695.84178,191.58009 695.77928,192.07228 695.6543,192.50977 C 695.5371,192.93946 695.3535,193.33399 695.10352,193.69336 C 694.78319,194.14649 694.2871,194.63868 693.61523,195.16992 C 692.95116,195.69337 692.54882,196.01759 692.4082,196.14258 C 692.11132,196.43165 691.89648,196.73634 691.76367,197.05664 C 691.63866,197.37696 691.57616,197.75977 691.57617,198.20508 C 691.57616,198.24415 691.58007,198.31055 691.58789,198.4043 C 691.59569,198.49805 691.5996,198.56836 691.59961,198.61523 L 688.44727,198.61523 M 688.2832,203.63086 L 688.2832,200.19727 L 691.74023,200.19727 L 691.74023,203.63086 L 688.2832,203.63086 M 686.31445,235.85742 L 692.12695,215.92383 L 693.73242,215.92383 L 687.89648,235.85742 L 686.31445,235.85742" + id="text5819" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 18,271.78906 C 17.911447,273.09636 17.406239,274.13542 16.484375,274.90625 C 15.5677,275.67708 14.369784,276.0625 12.890625,276.0625 C 11.187496,276.0625 9.8619761,275.53125 8.9140625,274.46875 C 7.971353,273.40625 7.4999993,271.91667 7.5,270 C 7.4999993,268.04167 7.9817696,266.54168 8.9453125,265.5 C 9.9088511,264.45834 11.294266,263.93751 13.101563,263.9375 C 14.570305,263.93751 15.729158,264.29689 16.578125,265.01563 C 17.432281,265.72918 17.901031,266.73959 17.984375,268.04688 L 15.648438,268.04688 C 15.54947,267.39584 15.283846,266.90105 14.851563,266.5625 C 14.419263,266.21876 13.83593,266.04688 13.101563,266.04688 C 12.059891,266.04688 11.268225,266.38282 10.726563,267.05469 C 10.184892,267.72657 9.9140594,268.70834 9.9140625,270 C 9.9140594,271.25 10.182288,272.21615 10.71875,272.89844 C 11.260412,273.58073 12.028641,273.92188 13.023438,273.92188 C 13.742181,273.92188 14.330722,273.73959 14.789063,273.375 C 15.247387,273.00521 15.544262,272.47657 15.679688,271.78906 L 18,271.78906 M 23.46875,275.80469 C 23.260412,275.8099 23.010412,275.81771 22.71875,275.82813 C 22.432288,275.84375 22.249996,275.85156 22.171875,275.85156 C 21.302081,275.85156 20.705727,275.6901 20.382813,275.36719 C 20.065103,275.03906 19.906249,274.39583 19.90625,273.4375 L 19.90625,268.84375 L 18.78125,268.84375 L 18.78125,267.25 L 19.90625,267.25 L 19.90625,264.92969 L 22.15625,264.92969 L 22.15625,267.25 L 23.46875,267.25 L 23.46875,268.84375 L 22.15625,268.84375 L 22.15625,273.54688 C 22.156247,273.77084 22.205726,273.91927 22.304688,273.99219 C 22.403642,274.0599 22.606767,274.09375 22.914063,274.09375 L 23.46875,274.09375 L 23.46875,275.80469 M 24.789063,275.74219 L 24.789063,267.25 L 26.898438,267.25 L 26.898438,268.70313 C 27.195309,268.1198 27.541663,267.69272 27.9375,267.42188 C 28.333329,267.14584 28.804682,267.00782 29.351563,267.00781 C 29.440099,267.00782 29.507807,267.01043 29.554688,267.01563 C 29.606765,267.01563 29.648432,267.01824 29.679688,267.02344 L 29.6875,269.32813 L 28.929688,269.32813 C 28.309891,269.32813 27.843746,269.48959 27.53125,269.8125 C 27.218747,270.13542 27.062497,270.61459 27.0625,271.25 L 27.0625,275.74219 L 24.789063,275.74219 M 31.023438,275.74219 L 31.023438,264.23438 L 33.296875,264.23438 L 33.296875,275.74219 L 31.023438,275.74219" + id="text5827" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 162.96875,266.49609 L 161.375,271.39453 L 164.57031,271.39453 L 162.96875,266.49609 M 161.59375,264.19141 L 164.32813,264.19141 L 168.47656,275.69922 L 165.99219,275.69922 L 165.21094,273.33203 L 160.75,273.33203 L 159.99219,275.69922 L 157.5,275.69922 L 161.59375,264.19141 M 169.53906,275.69922 L 169.53906,264.19141 L 171.8125,264.19141 L 171.8125,275.69922 L 169.53906,275.69922 M 177.64063,275.76172 C 177.43229,275.76693 177.18229,275.77474 176.89063,275.78516 C 176.60416,275.80078 176.42187,275.80859 176.34375,275.80859 C 175.47396,275.80859 174.8776,275.64714 174.55469,275.32422 C 174.23698,274.99609 174.07812,274.35287 174.07813,273.39453 L 174.07813,268.80078 L 172.95313,268.80078 L 172.95313,267.20703 L 174.07813,267.20703 L 174.07813,264.88672 L 176.32813,264.88672 L 176.32813,267.20703 L 177.64063,267.20703 L 177.64063,268.80078 L 176.32813,268.80078 L 176.32813,273.50391 C 176.32812,273.72787 176.3776,273.8763 176.47656,273.94922 C 176.57552,274.01693 176.77864,274.05078 177.08594,274.05078 L 177.64063,274.05078 L 177.64063,275.76172" + id="text5831" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 612.96875,266.53906 L 611.375,271.4375 L 614.57031,271.4375 L 612.96875,266.53906 M 611.59375,264.23438 L 614.32813,264.23438 L 618.47656,275.74219 L 615.99219,275.74219 L 615.21094,273.375 L 610.75,273.375 L 609.99219,275.74219 L 607.5,275.74219 L 611.59375,264.23438 M 619.53906,275.74219 L 619.53906,264.23438 L 621.8125,264.23438 L 621.8125,275.74219 L 619.53906,275.74219 M 627.64063,275.80469 C 627.43229,275.8099 627.18229,275.81771 626.89063,275.82813 C 626.60416,275.84375 626.42187,275.85156 626.34375,275.85156 C 625.47396,275.85156 624.8776,275.6901 624.55469,275.36719 C 624.23698,275.03906 624.07812,274.39583 624.07813,273.4375 L 624.07813,268.84375 L 622.95313,268.84375 L 622.95313,267.25 L 624.07813,267.25 L 624.07813,264.92969 L 626.32813,264.92969 L 626.32813,267.25 L 627.64063,267.25 L 627.64063,268.84375 L 626.32813,268.84375 L 626.32813,273.54688 C 626.32812,273.77084 626.3776,273.91927 626.47656,273.99219 C 626.57552,274.0599 626.77864,274.09375 627.08594,274.09375 L 627.64063,274.09375 L 627.64063,275.80469 M 642,274.38281 C 641.57291,274.96094 641.08593,275.38542 640.53906,275.65625 C 639.99739,275.92708 639.35937,276.0625 638.625,276.0625 C 637.01562,276.0625 635.71093,275.50521 634.71094,274.39063 C 633.71614,273.27084 633.21875,271.80209 633.21875,269.98438 C 633.21875,268.15105 633.71614,266.6849 634.71094,265.58594 C 635.70573,264.48699 637.03125,263.93751 638.6875,263.9375 C 640.1302,263.93751 641.30728,264.28387 642.21875,264.97656 C 643.1302,265.66407 643.67186,266.61199 643.84375,267.82031 L 641.42969,267.82031 C 641.28385,267.22136 640.98437,266.76563 640.53125,266.45313 C 640.08333,266.14063 639.49739,265.98438 638.77344,265.98438 C 637.80989,265.98438 637.05208,266.33855 636.5,267.04688 C 635.95312,267.75001 635.67968,268.72397 635.67969,269.96875 C 635.67968,271.21875 635.96614,272.19792 636.53906,272.90625 C 637.11197,273.61459 637.89843,273.96875 638.89844,273.96875 C 639.64843,273.96875 640.27603,273.7474 640.78125,273.30469 C 641.28645,272.86198 641.59895,272.25521 641.71875,271.48438 L 639.10938,271.48438 L 639.10938,269.51563 L 643.875,269.51563 L 643.875,275.74219 L 642.28906,275.74219 L 642,274.38281 M 645.96094,275.74219 L 645.96094,267.25 L 648.07031,267.25 L 648.07031,268.70313 C 648.36718,268.1198 648.71354,267.69272 649.10938,267.42188 C 649.5052,267.14584 649.97656,267.00782 650.52344,267.00781 C 650.61197,267.00782 650.67968,267.01043 650.72656,267.01563 C 650.77864,267.01563 650.82031,267.01824 650.85156,267.02344 L 650.85938,269.32813 L 650.10156,269.32813 C 649.48177,269.32813 649.01562,269.48959 648.70313,269.8125 C 648.39062,270.13542 648.23437,270.61459 648.23438,271.25 L 648.23438,275.74219 L 645.96094,275.74219" + id="text5835" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 828,271.78906 C 827.91145,273.09636 827.40624,274.13542 826.48438,274.90625 C 825.5677,275.67708 824.36978,276.0625 822.89063,276.0625 C 821.1875,276.0625 819.86198,275.53125 818.91406,274.46875 C 817.97135,273.40625 817.5,271.91667 817.5,270 C 817.5,268.04167 817.98177,266.54168 818.94531,265.5 C 819.90885,264.45834 821.29427,263.93751 823.10156,263.9375 C 824.5703,263.93751 825.72916,264.29689 826.57813,265.01563 C 827.43228,265.72918 827.90103,266.73959 827.98438,268.04688 L 825.64844,268.04688 C 825.54947,267.39584 825.28385,266.90105 824.85156,266.5625 C 824.41926,266.21876 823.83593,266.04688 823.10156,266.04688 C 822.05989,266.04688 821.26822,266.38282 820.72656,267.05469 C 820.18489,267.72657 819.91406,268.70834 819.91406,270 C 819.91406,271.25 820.18229,272.21615 820.71875,272.89844 C 821.26041,273.58073 822.02864,273.92188 823.02344,273.92188 C 823.74218,273.92188 824.33072,273.73959 824.78906,273.375 C 825.24739,273.00521 825.54426,272.47657 825.67969,271.78906 L 828,271.78906 M 833.46875,275.80469 C 833.26041,275.8099 833.01041,275.81771 832.71875,275.82813 C 832.43229,275.84375 832.25,275.85156 832.17188,275.85156 C 831.30208,275.85156 830.70573,275.6901 830.38281,275.36719 C 830.0651,275.03906 829.90625,274.39583 829.90625,273.4375 L 829.90625,268.84375 L 828.78125,268.84375 L 828.78125,267.25 L 829.90625,267.25 L 829.90625,264.92969 L 832.15625,264.92969 L 832.15625,267.25 L 833.46875,267.25 L 833.46875,268.84375 L 832.15625,268.84375 L 832.15625,273.54688 C 832.15625,273.77084 832.20573,273.91927 832.30469,273.99219 C 832.40364,274.0599 832.60677,274.09375 832.91406,274.09375 L 833.46875,274.09375 L 833.46875,275.80469 M 834.78906,275.74219 L 834.78906,267.25 L 836.89844,267.25 L 836.89844,268.70313 C 837.19531,268.1198 837.54166,267.69272 837.9375,267.42188 C 838.33333,267.14584 838.80468,267.00782 839.35156,267.00781 C 839.4401,267.00782 839.50781,267.01043 839.55469,267.01563 C 839.60677,267.01563 839.64843,267.01824 839.67969,267.02344 L 839.6875,269.32813 L 838.92969,269.32813 C 838.30989,269.32813 837.84375,269.48959 837.53125,269.8125 C 837.21875,270.13542 837.0625,270.61459 837.0625,271.25 L 837.0625,275.74219 L 834.78906,275.74219 M 841.02344,275.74219 L 841.02344,264.23438 L 843.29688,264.23438 L 843.29688,275.74219 L 841.02344,275.74219" + id="text5839" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 108.94531,264.01953 L 105.64844,252.51172 L 108.10156,252.51172 L 110.07031,260.62891 L 111.73438,252.51172 L 114.25781,252.51172 L 115.92188,260.62891 L 117.89063,252.51172 L 120.32031,252.51172 L 117.03125,264.01953 L 114.77344,264.01953 L 112.99219,255.20703 L 111.20313,264.01953 L 108.94531,264.01953 M 121.5,254.58203 L 121.5,252.51172 L 123.77344,252.51172 L 123.77344,254.58203 L 121.5,254.58203 M 121.5,264.01953 L 121.5,255.52734 L 123.77344,255.52734 L 123.77344,264.01953 L 121.5,264.01953 M 125.79688,264.01953 L 125.79688,255.52734 L 128.02344,255.52734 L 128.02344,256.53516 C 128.34114,256.12371 128.71614,255.81641 129.14844,255.61328 C 129.58072,255.40496 130.06249,255.30079 130.59375,255.30078 C 131.53124,255.30079 132.23176,255.54558 132.69531,256.03516 C 133.16405,256.51954 133.39843,257.25131 133.39844,258.23047 L 133.39844,264.01953 L 131.125,264.01953 L 131.125,258.88672 C 131.12499,258.27735 131.02083,257.84245 130.8125,257.58203 C 130.60937,257.32162 130.27604,257.19141 129.8125,257.19141 C 129.27604,257.19141 128.85156,257.35287 128.53906,257.67578 C 128.22656,257.9935 128.07031,258.42839 128.07031,258.98047 L 128.07031,264.01953 L 125.79688,264.01953 M 106.64844,284.01953 L 106.64844,272.51172 L 109.01563,272.51172 L 109.01563,277.23828 L 113.50781,272.51172 L 116.46875,272.51172 L 111.875,277.16797 L 116.88281,284.01953 L 113.99219,284.01953 L 110.24219,278.75391 L 109.01563,279.97266 L 109.01563,284.01953 L 106.64844,284.01953 M 122.9375,281.44141 L 125.20313,281.44141 C 124.97395,282.33724 124.51041,283.04037 123.8125,283.55078 C 123.11979,284.05599 122.27343,284.30859 121.27344,284.30859 C 120.04427,284.30859 119.07031,283.89714 118.35156,283.07422 C 117.63281,282.2461 117.27344,281.1263 117.27344,279.71484 C 117.27344,278.32422 117.6276,277.22787 118.33594,276.42578 C 119.04427,275.62371 120.01302,275.22267 121.24219,275.22266 C 122.54427,275.22267 123.54947,275.6185 124.25781,276.41016 C 124.96614,277.19662 125.3203,278.31902 125.32031,279.77734 C 125.3203,279.93881 125.3177,280.0612 125.3125,280.14453 C 125.31249,280.22266 125.30728,280.29818 125.29688,280.37109 L 119.625,280.37109 C 119.65625,281.03776 119.81771,281.54037 120.10938,281.87891 C 120.40625,282.21745 120.83073,282.38672 121.38281,282.38672 C 121.77343,282.38672 122.09374,282.3112 122.34375,282.16016 C 122.59374,282.00391 122.79166,281.76433 122.9375,281.44141 M 119.625,278.87891 L 122.96875,278.87891 C 122.94791,278.306 122.79426,277.8711 122.50781,277.57422 C 122.22656,277.27214 121.82031,277.1211 121.28906,277.12109 C 120.79427,277.1211 120.40364,277.27214 120.11719,277.57422 C 119.83593,277.87631 119.67187,278.3112 119.625,278.87891 M 127.16406,287.42578 L 127.16406,285.58984 C 127.23698,285.60026 127.3125,285.60807 127.39063,285.61328 C 127.46875,285.61849 127.57031,285.62109 127.69531,285.62109 C 128.14323,285.62109 128.47916,285.51432 128.70313,285.30078 C 128.92708,285.09245 129.03906,284.77734 129.03906,284.35547 C 129.03906,284.32422 129.03385,284.28516 129.02344,284.23828 C 129.01302,284.19141 129.0026,284.15234 128.99219,284.12109 L 125.92969,275.52734 L 128.42969,275.52734 L 130.21875,281.65234 L 131.96094,275.52734 L 134.35156,275.52734 L 130.85938,285.54297 C 130.59895,286.29297 130.27343,286.80338 129.88281,287.07422 C 129.49218,287.35026 128.90625,287.48828 128.125,287.48828 C 127.98437,287.48828 127.83333,287.48307 127.67188,287.47266 C 127.51041,287.46224 127.34114,287.44661 127.16406,287.42578" + id="text5872" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 708.94531,264.01953 L 705.64844,252.51172 L 708.10156,252.51172 L 710.07031,260.62891 L 711.73438,252.51172 L 714.25781,252.51172 L 715.92188,260.62891 L 717.89063,252.51172 L 720.32031,252.51172 L 717.03125,264.01953 L 714.77344,264.01953 L 712.99219,255.20703 L 711.20313,264.01953 L 708.94531,264.01953 M 721.5,254.58203 L 721.5,252.51172 L 723.77344,252.51172 L 723.77344,254.58203 L 721.5,254.58203 M 721.5,264.01953 L 721.5,255.52734 L 723.77344,255.52734 L 723.77344,264.01953 L 721.5,264.01953 M 725.79688,264.01953 L 725.79688,255.52734 L 728.02344,255.52734 L 728.02344,256.53516 C 728.34114,256.12371 728.71614,255.81641 729.14844,255.61328 C 729.58072,255.40496 730.06249,255.30079 730.59375,255.30078 C 731.53124,255.30079 732.23176,255.54558 732.69531,256.03516 C 733.16405,256.51954 733.39843,257.25131 733.39844,258.23047 L 733.39844,264.01953 L 731.125,264.01953 L 731.125,258.88672 C 731.12499,258.27735 731.02083,257.84245 730.8125,257.58203 C 730.60937,257.32162 730.27604,257.19141 729.8125,257.19141 C 729.27604,257.19141 728.85156,257.35287 728.53906,257.67578 C 728.22656,257.9935 728.07031,258.42839 728.07031,258.98047 L 728.07031,264.01953 L 725.79688,264.01953 M 706.64844,284.01953 L 706.64844,272.51172 L 709.01563,272.51172 L 709.01563,277.23828 L 713.50781,272.51172 L 716.46875,272.51172 L 711.875,277.16797 L 716.88281,284.01953 L 713.99219,284.01953 L 710.24219,278.75391 L 709.01563,279.97266 L 709.01563,284.01953 L 706.64844,284.01953 M 722.9375,281.44141 L 725.20313,281.44141 C 724.97395,282.33724 724.51041,283.04037 723.8125,283.55078 C 723.11979,284.05599 722.27343,284.30859 721.27344,284.30859 C 720.04427,284.30859 719.07031,283.89714 718.35156,283.07422 C 717.63281,282.2461 717.27344,281.1263 717.27344,279.71484 C 717.27344,278.32422 717.6276,277.22787 718.33594,276.42578 C 719.04427,275.62371 720.01302,275.22267 721.24219,275.22266 C 722.54427,275.22267 723.54947,275.6185 724.25781,276.41016 C 724.96614,277.19662 725.3203,278.31902 725.32031,279.77734 C 725.3203,279.93881 725.3177,280.0612 725.3125,280.14453 C 725.31249,280.22266 725.30728,280.29818 725.29688,280.37109 L 719.625,280.37109 C 719.65625,281.03776 719.81771,281.54037 720.10938,281.87891 C 720.40625,282.21745 720.83073,282.38672 721.38281,282.38672 C 721.77343,282.38672 722.09374,282.3112 722.34375,282.16016 C 722.59374,282.00391 722.79166,281.76433 722.9375,281.44141 M 719.625,278.87891 L 722.96875,278.87891 C 722.94791,278.306 722.79426,277.8711 722.50781,277.57422 C 722.22656,277.27214 721.82031,277.1211 721.28906,277.12109 C 720.79427,277.1211 720.40364,277.27214 720.11719,277.57422 C 719.83593,277.87631 719.67187,278.3112 719.625,278.87891 M 727.16406,287.42578 L 727.16406,285.58984 C 727.23698,285.60026 727.3125,285.60807 727.39063,285.61328 C 727.46875,285.61849 727.57031,285.62109 727.69531,285.62109 C 728.14323,285.62109 728.47916,285.51432 728.70313,285.30078 C 728.92708,285.09245 729.03906,284.77734 729.03906,284.35547 C 729.03906,284.32422 729.03385,284.28516 729.02344,284.23828 C 729.01302,284.19141 729.0026,284.15234 728.99219,284.12109 L 725.92969,275.52734 L 728.42969,275.52734 L 730.21875,281.65234 L 731.96094,275.52734 L 734.35156,275.52734 L 730.85938,285.54297 C 730.59895,286.29297 730.27343,286.80338 729.88281,287.07422 C 729.49218,287.35026 728.90625,287.48828 728.125,287.48828 C 727.98437,287.48828 727.83333,287.48307 727.67188,287.47266 C 727.51041,287.46224 727.34114,287.44661 727.16406,287.42578" + id="text5878" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 759.98438,275.60938 L 759.98438,264.10156 L 763.48438,264.10156 L 765.77344,272.85938 L 768.03125,264.10156 L 771.54688,264.10156 L 771.54688,275.60938 L 769.32813,275.60938 L 769.32813,266.32813 L 766.99219,275.60938 L 764.57031,275.60938 L 762.20313,266.32813 L 762.20313,275.60938 L 759.98438,275.60938 M 778.99219,273.03125 L 781.25781,273.03125 C 781.02864,273.92709 780.5651,274.63021 779.86719,275.14063 C 779.17447,275.64583 778.32812,275.89844 777.32813,275.89844 C 776.09896,275.89844 775.125,275.48698 774.40625,274.66406 C 773.6875,273.83594 773.32812,272.71615 773.32813,271.30469 C 773.32812,269.91407 773.68229,268.81772 774.39063,268.01563 C 775.09896,267.21355 776.06771,266.81251 777.29688,266.8125 C 778.59895,266.81251 779.60416,267.20834 780.3125,268 C 781.02083,268.78647 781.37499,269.90886 781.375,271.36719 C 781.37499,271.52865 781.37239,271.65105 781.36719,271.73438 C 781.36718,271.8125 781.36197,271.88802 781.35156,271.96094 L 775.67969,271.96094 C 775.71093,272.62761 775.87239,273.13021 776.16406,273.46875 C 776.46093,273.80729 776.88541,273.97656 777.4375,273.97656 C 777.82812,273.97656 778.14843,273.90104 778.39844,273.75 C 778.64843,273.59375 778.84635,273.35417 778.99219,273.03125 M 775.67969,270.46875 L 779.02344,270.46875 C 779.0026,269.89584 778.84895,269.46094 778.5625,269.16406 C 778.28124,268.86199 777.87499,268.71094 777.34375,268.71094 C 776.84895,268.71094 776.45833,268.86199 776.17188,269.16406 C 775.89062,269.46615 775.72656,269.90105 775.67969,270.46875 M 782.88281,275.60938 L 782.88281,267.11719 L 785.10938,267.11719 L 785.10938,268.125 C 785.42708,267.71355 785.80208,267.40626 786.23438,267.20313 C 786.66666,266.9948 787.14843,266.89063 787.67969,266.89063 C 788.61718,266.89063 789.3177,267.13543 789.78125,267.625 C 790.24999,268.10938 790.48437,268.84115 790.48438,269.82031 L 790.48438,275.60938 L 788.21094,275.60938 L 788.21094,270.47656 C 788.21093,269.86719 788.10676,269.4323 787.89844,269.17188 C 787.69531,268.91147 787.36197,268.78126 786.89844,268.78125 C 786.36197,268.78126 785.9375,268.94272 785.625,269.26563 C 785.3125,269.58334 785.15625,270.01823 785.15625,270.57031 L 785.15625,275.60938 L 782.88281,275.60938 M 800.01563,267.11719 L 800.01563,275.60938 L 797.78906,275.60938 L 797.78906,274.60156 C 797.46614,275.01302 797.08854,275.32292 796.65625,275.53125 C 796.22916,275.73437 795.74739,275.83594 795.21094,275.83594 C 794.27864,275.83594 793.57812,275.59115 793.10938,275.10156 C 792.64583,274.61198 792.41406,273.88021 792.41406,272.90625 L 792.41406,267.11719 L 794.6875,267.11719 L 794.6875,272.25 C 794.6875,272.85417 794.78906,273.28646 794.99219,273.54688 C 795.19531,273.80209 795.53125,273.92969 796,273.92969 C 796.53124,273.92969 796.95312,273.77084 797.26563,273.45313 C 797.58333,273.13021 797.74218,272.69271 797.74219,272.14063 L 797.74219,267.11719 L 800.01563,267.11719" + id="text5884" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 104.41406,17.103516 L 104.41406,10.212891 L 101.74219,10.212891 L 101.74219,8.7949219 L 101.94141,8.7949219 C 102.89453,8.7949367 103.58984,8.6621243 104.02734,8.3964844 C 104.47265,8.1308749 104.73828,7.6894691 104.82422,7.0722656 L 106.59375,7.0722656 L 106.59375,17.103516 L 104.41406,17.103516 M 106.72266,36.369141 L 106.72266,39.826172 L 103.24219,39.826172 L 103.24219,36.369141 L 106.72266,36.369141 M 105.89063,41.173828 L 106.80469,48.978516 L 106.80469,53.630859 L 103.19531,53.630859 L 103.19531,48.978516 L 104.10938,41.173828 L 105.89063,41.173828" + id="text5890" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 160.85156,47.103516 C 160.875,46.197273 161.08984,45.431649 161.49609,44.806641 C 161.91015,44.18165 162.63672,43.548838 163.67578,42.908203 C 163.82422,42.822276 164.03125,42.701183 164.29688,42.544922 C 165.74218,41.724621 166.46484,40.931653 166.46484,40.166016 C 166.46484,39.720717 166.32031,39.369155 166.03125,39.111328 C 165.74218,38.85353 165.34375,38.724624 164.83594,38.724609 C 164.27343,38.724624 163.83984,38.88478 163.53516,39.205078 C 163.23047,39.517592 163.07812,39.966811 163.07813,40.552734 L 163.07813,40.646484 L 161.03906,40.646484 C 161.03906,39.498061 161.37891,38.615249 162.05859,37.998047 C 162.73828,37.380876 163.71093,37.072282 164.97656,37.072266 C 166.11718,37.072282 167.02343,37.353532 167.69531,37.916016 C 168.37499,38.470718 168.71484,39.212905 168.71484,40.142578 C 168.71484,40.814466 168.53905,41.39259 168.1875,41.876953 C 167.83593,42.361339 167.14843,42.919933 166.125,43.552734 C 165.89843,43.701182 165.57812,43.896494 165.16406,44.138672 C 164.22656,44.685556 163.69922,45.115243 163.58203,45.427734 L 168.62109,45.427734 L 168.62109,47.103516 L 160.85156,47.103516" + id="text5910" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 220.92188,44.033203 L 223.05469,44.033203 C 223.07031,44.603525 223.22265,45.029305 223.51172,45.310547 C 223.80078,45.591805 224.23437,45.73243 224.8125,45.732422 C 225.36718,45.73243 225.79687,45.599617 226.10156,45.333984 C 226.40624,45.068368 226.55859,44.689462 226.55859,44.197266 C 226.55859,43.697276 226.38281,43.322276 226.03125,43.072266 C 225.67968,42.814464 225.15234,42.685558 224.44922,42.685547 L 224.10938,42.685547 L 224.10938,41.291016 L 224.35547,41.291016 C 225.0039,41.291028 225.48046,41.181653 225.78516,40.962891 C 226.09765,40.736341 226.2539,40.392591 226.25391,39.931641 C 226.2539,39.54103 226.12109,39.232436 225.85547,39.005859 C 225.58984,38.771499 225.23437,38.654312 224.78906,38.654297 C 224.29687,38.654312 223.91797,38.787124 223.65234,39.052734 C 223.38672,39.310561 223.2539,39.681655 223.25391,40.166016 L 223.25391,40.236328 L 221.16797,40.236328 C 221.19141,39.212905 221.51953,38.431656 222.15234,37.892578 C 222.79297,37.345719 223.70312,37.072282 224.88281,37.072266 C 225.99218,37.072282 226.86718,37.314469 227.50781,37.798828 C 228.15624,38.283218 228.48046,38.943374 228.48047,39.779297 C 228.48046,40.21681 228.36718,40.603529 228.14063,40.939453 C 227.92187,41.26759 227.59374,41.537121 227.15625,41.748047 C 227.72656,41.974621 228.15624,42.291027 228.44531,42.697266 C 228.74218,43.095714 228.89062,43.564463 228.89063,44.103516 C 228.89062,45.119149 228.52343,45.923836 227.78906,46.517578 C 227.06249,47.103522 226.07031,47.396491 224.8125,47.396484 C 223.57031,47.396491 222.60937,47.107428 221.92969,46.529297 C 221.25781,45.95118 220.92187,45.134774 220.92188,44.080078 L 220.92188,44.033203" + id="text5922" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 278.92969,21.685547 C 279.86719,21.037112 280.53125,20.439456 280.92188,19.892578 C 281.32031,19.345707 281.51953,18.75977 281.51953,18.134766 C 281.51953,17.837896 281.47265,17.525397 281.37891,17.197266 C 281.28515,16.861335 281.14843,16.509773 280.96875,16.142578 L 278.90625,16.142578 L 278.90625,14.841797 L 280.17188,14.841797 C 279.82812,14.162119 279.57812,13.556651 279.42188,13.025391 C 279.26562,12.494152 279.1875,11.998059 279.1875,11.537109 C 279.1875,10.146498 279.69531,9.021499 280.71094,8.1621094 C 281.73437,7.3027507 283.08203,6.8730636 284.75391,6.8730469 C 286.5664,6.8730636 287.98827,7.3379069 289.01953,8.2675781 C 290.05077,9.1972801 290.61327,10.517591 290.70703,12.228516 L 287.47266,12.228516 C 287.41015,11.345715 287.15624,10.669935 286.71094,10.201172 C 286.26562,9.7324358 285.65624,9.498061 284.88281,9.4980469 C 284.14843,9.498061 283.58203,9.6894671 283.18359,10.072266 C 282.79296,10.455091 282.59765,11.005872 282.59766,11.724609 C 282.59765,12.138683 282.84375,12.888683 283.33594,13.974609 C 283.50781,14.349619 283.63671,14.638681 283.72266,14.841797 L 287.0625,14.841797 L 287.0625,16.142578 L 284.20313,16.142578 C 284.27343,16.43946 284.32421,16.712898 284.35547,16.962891 C 284.38671,17.212897 284.40234,17.443366 284.40234,17.654297 C 284.40234,18.216802 284.22656,18.779302 283.875,19.341797 C 283.53124,19.896488 282.94531,20.548831 282.11719,21.298828 C 282.625,21.064456 283.08203,20.892581 283.48828,20.783203 C 283.90234,20.666019 284.27734,20.607425 284.61328,20.607422 C 285.01952,20.607425 285.57421,20.701175 286.27734,20.888672 C 286.98046,21.068362 287.48046,21.158206 287.77734,21.158203 C 288.16796,21.158206 288.55077,21.095706 288.92578,20.970703 C 289.30858,20.845706 289.68749,20.6543 290.0625,20.396484 L 291.09375,22.939453 C 290.4453,23.322266 289.82421,23.611328 289.23047,23.806641 C 288.63671,24.009765 288.08202,24.111328 287.56641,24.111328 C 286.97265,24.111328 286.16796,23.955078 285.15234,23.642578 C 284.14453,23.330078 283.41406,23.173829 282.96094,23.173828 C 282.48437,23.173829 282.01953,23.251954 281.56641,23.408203 C 281.12109,23.564453 280.6875,23.798828 280.26563,24.111328 L 278.92969,21.685547 M 284.94141,40.025391 C 284.05859,40.025404 283.29687,40.345716 282.65625,40.986328 C 282.01562,41.626965 281.69531,42.384777 281.69531,43.259766 C 281.69531,44.1504 282.01171,44.912118 282.64453,45.544922 C 283.27734,46.169929 284.04296,46.482429 284.94141,46.482422 C 285.82421,46.482429 286.58202,46.169929 287.21484,45.544922 C 287.85546,44.912118 288.17577,44.1504 288.17578,43.259766 C 288.17577,42.384777 287.85546,41.626965 287.21484,40.986328 C 286.58202,40.345716 285.82421,40.025404 284.94141,40.025391 M 279.65625,36.779297 L 282.05859,39.158203 C 282.48046,38.85353 282.92578,38.626968 283.39453,38.478516 C 283.86328,38.322281 284.37109,38.244156 284.91797,38.244141 C 285.46484,38.244156 285.97655,38.322281 286.45313,38.478516 C 286.93749,38.626968 287.39062,38.85353 287.8125,39.158203 L 290.19141,36.779297 L 291.42188,38.033203 L 289.04297,40.435547 C 289.33983,40.849622 289.56249,41.294934 289.71094,41.771484 C 289.85936,42.240246 289.93358,42.736339 289.93359,43.259766 C 289.93358,43.783213 289.85936,44.279306 289.71094,44.748047 C 289.56249,45.216805 289.33983,45.666024 289.04297,46.095703 L 291.42188,48.498047 L 290.19141,49.716797 L 287.8125,47.337891 C 287.39062,47.650397 286.9414,47.880865 286.46484,48.029297 C 285.98827,48.17774 285.48046,48.251959 284.94141,48.251953 C 284.3789,48.251959 283.85937,48.17774 283.38281,48.029297 C 282.91406,47.880865 282.47265,47.650397 282.05859,47.337891 L 279.65625,49.716797 L 278.4375,48.498047 L 280.80469,46.095703 C 280.50781,45.673836 280.28515,45.23243 280.13672,44.771484 C 279.99609,44.302744 279.92578,43.798838 279.92578,43.259766 C 279.92578,42.736339 279.99609,42.240246 280.13672,41.771484 C 280.28515,41.294934 280.50781,40.849622 280.80469,40.435547 L 278.4375,38.033203 L 279.65625,36.779297" + id="text5928" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 352.875,47.701172 C 352.74217,49.662113 351.98436,51.220706 350.60156,52.376953 C 349.22655,53.533203 347.42968,54.111328 345.21094,54.111328 C 342.65624,54.111328 340.66796,53.314453 339.24609,51.720703 C 337.83203,50.126957 337.125,47.892584 337.125,45.017578 C 337.125,42.08009 337.84765,39.830092 339.29297,38.267578 C 340.73828,36.705095 342.8164,35.923846 345.52734,35.923828 C 347.73046,35.923846 349.46874,36.462908 350.74219,37.541016 C 352.02342,38.611343 352.72655,40.126967 352.85156,42.087891 L 349.34766,42.087891 C 349.19921,41.111341 348.80077,40.369154 348.15234,39.861328 C 347.50389,39.345717 346.6289,39.087905 345.52734,39.087891 C 343.96484,39.087905 342.77734,39.591811 341.96484,40.599609 C 341.15234,41.607434 340.74609,43.080089 340.74609,45.017578 C 340.74609,46.892585 341.14843,48.341802 341.95313,49.365234 C 342.76562,50.388675 343.91796,50.900393 345.41016,50.900391 C 346.48827,50.900393 347.37108,50.626956 348.05859,50.080078 C 348.74608,49.525395 349.19139,48.732427 349.39453,47.701172 L 352.875,47.701172" + id="text5946" /> + <path + transform="matrix(1.16233,0,-0.444745,0.860341,0,0)" + style="font-size:16.72912407px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 307.52845,53.268758 L 317.31434,53.268758 L 317.31434,54.894293 L 307.52845,54.894293 L 307.52845,53.268758 M 307.52845,49.756296 L 317.31434,49.756296 L 317.31434,51.381831 L 307.52845,51.381831 L 307.52845,49.756296" + id="text5956" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 411.45117,50.150391 L 411.45117,46.142578 L 408.63867,50.150391 L 411.45117,50.150391 M 411.45117,53.630859 L 411.45117,51.591797 L 406.98633,51.591797 L 406.98633,49.962891 L 410.90039,44.513672 L 413.51367,44.513672 L 413.51367,50.103516 L 414.73242,50.103516 L 414.73242,51.591797 L 413.51367,51.591797 L 413.51367,53.630859 L 411.45117,53.630859 M 398.58398,54.111328 L 408.7793,36.615234 L 410.70117,36.615234 L 400.48242,54.111328 L 398.58398,54.111328 M 397.78711,46.458984 L 397.78711,40.025391 L 395.26758,40.025391 L 395.26758,38.701172 L 395.44336,38.701172 C 396.36523,38.701187 397.0332,38.576187 397.44727,38.326172 C 397.86914,38.076187 398.11914,37.658219 398.19727,37.072266 L 399.88477,37.072266 L 399.88477,46.458984 L 397.78711,46.458984" + id="text5960" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 467.0918,53.630859 C 467.11522,52.779298 467.32225,52.064455 467.71289,51.486328 C 468.11131,50.900393 468.80663,50.31055 469.79883,49.716797 C 469.95506,49.630863 470.16991,49.50977 470.44336,49.353516 C 471.7949,48.595708 472.47068,47.861334 472.4707,47.150391 C 472.47068,46.736335 472.33006,46.40821 472.04883,46.166016 C 471.76756,45.923836 471.38475,45.802742 470.90039,45.802734 C 470.36912,45.802742 469.95506,45.95118 469.6582,46.248047 C 469.36913,46.544929 469.22459,46.966804 469.22461,47.513672 L 469.22461,47.607422 L 467.2793,47.607422 C 467.27928,46.529304 467.6035,45.70118 468.25195,45.123047 C 468.90038,44.537118 469.82616,44.24415 471.0293,44.244141 C 472.12303,44.24415 472.99412,44.505868 473.64258,45.029297 C 474.29881,45.552742 474.62693,46.251961 474.62695,47.126953 C 474.62693,47.751959 474.45506,48.294927 474.11133,48.755859 C 473.77537,49.208989 473.11522,49.72852 472.13086,50.314453 C 471.9199,50.439456 471.63084,50.607425 471.26367,50.818359 C 470.34959,51.341799 469.83397,51.744143 469.7168,52.025391 L 474.50977,52.025391 L 474.50977,53.630859 L 467.0918,53.630859 M 458.68945,54.111328 L 468.88477,36.615234 L 470.80664,36.615234 L 460.58789,54.111328 L 458.68945,54.111328 M 457.89258,46.458984 L 457.89258,40.025391 L 455.37305,40.025391 L 455.37305,38.701172 L 455.54883,38.701172 C 456.4707,38.701187 457.13867,38.576187 457.55273,38.326172 C 457.97461,38.076187 458.22461,37.658219 458.30273,37.072266 L 459.99023,37.072266 L 459.99023,46.458984 L 457.89258,46.458984" + id="text5967" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 531.83203,50.150391 L 531.83203,46.142578 L 529.01953,50.150391 L 531.83203,50.150391 M 531.83203,53.630859 L 531.83203,51.591797 L 527.36719,51.591797 L 527.36719,49.962891 L 531.28125,44.513672 L 533.89453,44.513672 L 533.89453,50.103516 L 535.11328,50.103516 L 535.11328,51.591797 L 533.89453,51.591797 L 533.89453,53.630859 L 531.83203,53.630859 M 518.96484,54.111328 L 529.16016,36.615234 L 531.08203,36.615234 L 520.86328,54.111328 L 518.96484,54.111328 M 514.88672,43.599609 L 516.89063,43.599609 C 516.91406,44.130869 517.0625,44.529306 517.33594,44.794922 C 517.61718,45.052743 518.03125,45.181649 518.57813,45.181641 C 519.10937,45.181649 519.51953,45.060555 519.80859,44.818359 C 520.09765,44.568368 520.24218,44.208994 520.24219,43.740234 C 520.24218,43.271495 520.07421,42.919933 519.73828,42.685547 C 519.40234,42.443371 518.90625,42.322277 518.25,42.322266 C 518.20312,42.322277 518.14453,42.326183 518.07422,42.333984 C 518.0039,42.341808 517.94922,42.345714 517.91016,42.345703 L 517.91016,41.033203 L 518.14453,41.033203 C 518.76171,41.033216 519.21484,40.931653 519.50391,40.728516 C 519.80078,40.517591 519.94921,40.193373 519.94922,39.755859 C 519.94921,39.388686 519.82421,39.099624 519.57422,38.888672 C 519.32421,38.669937 518.98437,38.560562 518.55469,38.560547 C 518.08593,38.560562 517.72265,38.685562 517.46484,38.935547 C 517.21484,39.177749 517.08984,39.525405 517.08984,39.978516 L 517.08984,40.048828 L 515.08594,40.048828 C 515.10156,39.087905 515.41797,38.353531 516.03516,37.845703 C 516.65234,37.330094 517.52343,37.072282 518.64844,37.072266 C 519.70312,37.072282 520.53906,37.302751 521.15625,37.763672 C 521.77343,38.216812 522.08202,38.833999 522.08203,39.615234 C 522.08202,40.02931 521.97655,40.392591 521.76563,40.705078 C 521.55468,41.009778 521.23827,41.263684 520.81641,41.466797 C 521.36327,41.677746 521.77343,41.970715 522.04688,42.345703 C 522.32812,42.712902 522.46874,43.154307 522.46875,43.669922 C 522.46874,44.607431 522.11718,45.349618 521.41406,45.896484 C 520.71874,46.443367 519.77343,46.716804 518.57813,46.716797 C 517.39062,46.716804 516.47656,46.451179 515.83594,45.919922 C 515.20312,45.380868 514.88672,44.615243 514.88672,43.623047 L 514.88672,43.599609" + id="text5973" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 586.63477,39.404297 L 586.63477,42.498047 L 583.36523,42.498047 L 583.36523,39.474609 C 583.36523,38.482437 583.66992,37.654313 584.2793,36.990234 C 584.88867,36.326189 585.67382,35.970721 586.63477,35.923828 L 586.63477,37.119141 C 586.04101,37.259782 585.59961,37.509782 585.31055,37.869141 C 585.02148,38.220719 584.87695,38.681656 584.87695,39.251953 L 584.87695,39.404297 L 586.63477,39.404297" + id="text5979" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 643.36523,39.474609 L 643.36523,36.369141 L 646.63477,36.369141 L 646.63477,39.427734 C 646.63476,40.412123 646.33007,41.240247 645.7207,41.912109 C 645.11132,42.576183 644.32617,42.931651 643.36523,42.978516 L 643.36523,41.771484 C 643.95898,41.630871 644.39648,41.384778 644.67773,41.033203 C 644.96679,40.673841 645.11132,40.201185 645.11133,39.615234 L 645.11133,39.474609 L 643.36523,39.474609" + id="text5985" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 706.89258,53.630859 L 703.50586,53.630859 L 703.50586,47.560547 L 703.27148,47.150391 L 698.00977,47.150391 L 698.00977,45.826172 L 702.49805,45.826172 L 701.64258,44.337891 L 698.00977,44.337891 L 698.00977,43.025391 L 700.86914,43.025391 L 697.61133,37.330078 L 701.41992,37.330078 L 705.19336,44.724609 L 708.69727,37.330078 L 712.27148,37.330078 L 709.27148,43.025391 L 712.00195,43.025391 L 712.00195,44.337891 L 708.58008,44.337891 L 707.7832,45.826172 L 712.00195,45.826172 L 712.00195,47.150391 L 707.0918,47.150391 L 706.89258,47.560547 L 706.89258,53.630859" + id="text5991" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 764.97656,19.306641 C 765.46093,19.306645 765.8789,19.482426 766.23047,19.833984 C 766.58202,20.18555 766.7578,20.603519 766.75781,21.087891 C 766.7578,21.564455 766.58202,21.974611 766.23047,22.318359 C 765.8789,22.66211 765.46093,22.833985 764.97656,22.833984 C 764.48437,22.833985 764.06249,22.666017 763.71094,22.330078 C 763.36718,21.994142 763.1953,21.58008 763.19531,21.087891 C 763.1953,20.595706 763.36718,20.177738 763.71094,19.833984 C 764.06249,19.482426 764.48437,19.306645 764.97656,19.306641 M 757.94531,15.298828 L 771.98438,15.298828 L 771.98438,17.630859 L 757.94531,17.630859 L 757.94531,15.298828 M 764.97656,10.095703 C 765.46093,10.095717 765.8789,10.271498 766.23047,10.623047 C 766.58202,10.96681 766.7578,11.380872 766.75781,11.865234 C 766.7578,12.357433 766.58202,12.779308 766.23047,13.130859 C 765.88671,13.47462 765.46874,13.646494 764.97656,13.646484 C 764.48437,13.646494 764.06249,13.47462 763.71094,13.130859 C 763.36718,12.779308 763.1953,12.357433 763.19531,11.865234 C 763.1953,11.373059 763.36718,10.955091 763.71094,10.611328 C 764.06249,10.267591 764.48437,10.095717 764.97656,10.095703 M 759.84375,39.544922 L 765.11719,44.818359 L 770.40234,39.544922 L 772.05469,41.173828 L 766.78125,46.482422 L 772.05469,51.755859 L 770.40234,53.396484 L 765.11719,48.111328 L 759.84375,53.396484 L 758.20313,51.755859 L 763.48828,46.482422 L 758.20313,41.173828 L 759.84375,39.544922" + id="text5997" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 134.9707,69.826172 L 132.58008,77.173828 L 137.37305,77.173828 L 134.9707,69.826172 M 132.9082,66.369141 L 137.00977,66.369141 L 143.23242,83.630859 L 139.50586,83.630859 L 138.33398,80.080078 L 131.64258,80.080078 L 130.50586,83.630859 L 126.76758,83.630859 L 132.9082,66.369141 M 135.70898,64.166016 L 135.70898,61.283203 L 138.35742,61.283203 L 138.35742,64.166016 L 135.70898,64.166016 M 131.63086,64.166016 L 131.63086,61.283203 L 134.2793,61.283203 L 134.2793,64.166016 L 131.63086,64.166016" + id="text6003" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 194.9707,62.126953 C 194.5957,62.126975 194.27538,62.267599 194.00977,62.548828 C 193.74413,62.822286 193.61132,63.154317 193.61133,63.544922 C 193.61132,63.927754 193.74023,64.251973 193.99805,64.517578 C 194.26366,64.783222 194.58788,64.916034 194.9707,64.916016 C 195.36132,64.916034 195.69335,64.783222 195.9668,64.517578 C 196.24804,64.24416 196.38866,63.919942 196.38867,63.544922 C 196.38866,63.16213 196.24804,62.830099 195.9668,62.548828 C 195.69335,62.267599 195.36132,62.126975 194.9707,62.126953 M 194.9707,60.521484 C 195.81444,60.521507 196.52929,60.814476 197.11523,61.400391 C 197.70116,61.978537 197.99413,62.685568 197.99414,63.521484 C 197.99413,64.357441 197.70116,65.068378 197.11523,65.654297 C 196.52929,66.232439 195.81444,66.521501 194.9707,66.521484 C 194.13476,66.521501 193.42773,66.232439 192.84961,65.654297 C 192.27929,65.07619 191.99414,64.365254 191.99414,63.521484 C 191.99414,62.677755 192.27929,61.966819 192.84961,61.388672 C 193.42773,60.81057 194.13476,60.521507 194.9707,60.521484 M 192.7207,67.072266 L 197.23242,67.072266 L 203.23242,83.630859 L 199.50586,83.630859 L 198.33398,80.080078 L 191.64258,80.080078 L 190.50586,83.630859 L 186.76758,83.630859 L 192.7207,67.072266 M 194.9707,69.826172 L 192.58008,77.173828 L 197.37305,77.173828 L 194.9707,69.826172" + id="text6007" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 248.52539,83.630859 L 248.52539,66.369141 L 261.05273,66.369141 L 261.05273,69.369141 L 252.0293,69.369141 L 252.0293,73.048828 L 260.2793,73.048828 L 260.2793,76.001953 L 252.0293,76.001953 L 252.0293,80.443359 L 261.47461,80.443359 L 261.47461,83.630859 L 248.52539,83.630859 M 258.24023,60.521484 L 254.57227,64.857422 L 252.9082,64.857422 L 255.2168,60.521484 L 258.24023,60.521484" + id="text6011" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 313.72266,101.49056 L 313.72266,104.29134 L 314.88281,104.29134 C 315.5703,104.29135 316.07421,104.18198 316.39453,103.96322 C 316.71483,103.74448 316.87499,103.40073 316.875,102.93197 C 316.87499,102.43979 316.70311,102.07651 316.35938,101.84212 C 316.01561,101.60776 315.48436,101.49057 314.76563,101.49056 L 313.72266,101.49056 M 311.37891,100.00228 L 315.16406,100.00228 C 316.53905,100.00229 317.5703,100.23667 318.25781,100.70541 C 318.95311,101.16636 319.30077,101.85776 319.30078,102.77962 C 319.30077,103.42026 319.11327,103.96713 318.73828,104.42025 C 318.36327,104.87338 317.84374,105.18198 317.17969,105.34603 L 319.34766,109.67025 L 316.72266,109.67025 L 314.88281,105.70931 L 313.72266,105.70931 L 313.72266,109.67025 L 311.37891,109.67025 L 311.37891,100.00228 M 315,97.717125 C 314.0078,97.717141 313.08593,97.892922 312.23438,98.244469 C 311.38281,98.588234 310.61718,99.099952 309.9375,99.779625 C 309.22656,100.49058 308.67968,101.29917 308.29688,102.20541 C 307.91406,103.10385 307.72265,104.03354 307.72266,104.99447 C 307.72265,105.96323 307.90234,106.8851 308.26172,107.76009 C 308.62109,108.62729 309.14062,109.40072 309.82031,110.08041 C 310.51562,110.79135 311.30859,111.33822 312.19922,111.72103 C 313.08984,112.09603 314.01562,112.28353 314.97656,112.28353 C 315.91405,112.28353 316.82421,112.09994 317.70703,111.73275 C 318.59764,111.36556 319.40624,110.83822 320.13281,110.15072 C 320.81248,109.49447 321.33983,108.72885 321.71484,107.85384 C 322.08983,106.97885 322.27733,106.0726 322.27734,105.13509 C 322.27733,104.09604 322.10155,103.13901 321.75,102.264 C 321.40623,101.38901 320.89061,100.60386 320.20313,99.908531 C 319.49999,99.181983 318.70702,98.635109 317.82422,98.267906 C 316.94921,97.900734 316.0078,97.717141 315,97.717125 M 314.97656,96.275719 C 316.17968,96.275736 317.31249,96.502298 318.375,96.955406 C 319.4453,97.400735 320.39842,98.049172 321.23438,98.900719 C 322.03905,99.713233 322.65233,100.64292 323.07422,101.68978 C 323.49608,102.73667 323.70701,103.84604 323.70703,105.01791 C 323.70701,106.20541 323.48826,107.33041 323.05078,108.39291 C 322.61326,109.4476 321.97655,110.37728 321.14063,111.18197 C 320.30467,112.00228 319.35155,112.63119 318.28125,113.06869 C 317.21874,113.50619 316.11718,113.72494 314.97656,113.72494 C 313.81249,113.72494 312.69921,113.49838 311.63672,113.04525 C 310.57421,112.59213 309.625,111.93978 308.78906,111.08822 C 307.97656,110.26791 307.35547,109.33822 306.92578,108.29916 C 306.5039,107.25229 306.29297,106.15854 306.29297,105.01791 C 306.29297,104.22104 306.39844,103.4476 306.60938,102.69759 C 306.82031,101.93979 307.13672,101.20151 307.55859,100.48275 C 308.34765,99.154639 309.39062,98.12339 310.6875,97.389 C 311.98437,96.646829 313.41405,96.275736 314.97656,96.275719" + id="text6015" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 372.0293,69.064453 L 376.06055,69.064453 C 377.84179,69.064468 379.18944,69.505874 380.10352,70.388672 C 381.01756,71.263684 381.47459,72.556652 381.47461,74.267578 C 381.47459,75.939461 381.02538,77.228522 380.12695,78.134766 C 379.23632,79.033208 377.95897,79.482426 376.29492,79.482422 L 372.0293,79.482422 L 372.0293,83.630859 L 368.52539,83.630859 L 368.52539,66.369141 L 372.0293,66.369141 L 372.0293,69.064453 M 372.05273,76.599609 L 375.47461,76.599609 C 376.4121,76.599616 377.09179,76.416023 377.51367,76.048828 C 377.93554,75.673836 378.14647,75.080087 378.14648,74.267578 C 378.14647,73.509776 377.93554,72.939464 377.51367,72.556641 C 377.09179,72.166027 376.47069,71.970715 375.65039,71.970703 L 372.05273,71.970703 L 372.05273,76.599609" + id="text6019" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 428.08594,66.322266 L 431.67188,66.322266 L 431.67188,77.150391 C 431.67187,78.486333 431.93749,79.462895 432.46875,80.080078 C 432.99999,80.689456 433.84374,80.994143 435,80.994141 C 436.17187,80.994143 437.02343,80.689456 437.55469,80.080078 C 438.09374,79.470707 438.36327,78.494146 438.36328,77.150391 L 438.36328,66.322266 L 441.91406,66.322266 L 441.91406,77.537109 C 441.91405,79.654301 441.3203,81.279299 440.13281,82.412109 C 438.95311,83.544922 437.24999,84.111328 435.02344,84.111328 C 432.78124,84.111328 431.0625,83.548828 429.86719,82.423828 C 428.67969,81.291018 428.08594,79.662113 428.08594,77.537109 L 428.08594,66.322266 M 435.73828,64.166016 L 435.73828,61.283203 L 438.38672,61.283203 L 438.38672,64.166016 L 435.73828,64.166016 M 431.66016,64.166016 L 431.66016,61.283203 L 434.30859,61.283203 L 434.30859,64.166016 L 431.66016,64.166016" + id="text6023" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 488.08594,66.105469 L 491.67188,66.105469 L 491.67188,76.933594 C 491.67187,78.269536 491.93749,79.246098 492.46875,79.863281 C 492.99999,80.472659 493.84374,80.777346 495,80.777344 C 496.17187,80.777346 497.02343,80.472659 497.55469,79.863281 C 498.09374,79.25391 498.36327,78.277349 498.36328,76.933594 L 498.36328,66.105469 L 501.91406,66.105469 L 501.91406,77.320313 C 501.91405,79.437504 501.3203,81.062502 500.13281,82.195313 C 498.95311,83.328125 497.24999,83.894531 495.02344,83.894531 C 492.78124,83.894531 491.0625,83.332031 489.86719,82.207031 C 488.67969,81.074221 488.08594,79.445316 488.08594,77.320313 L 488.08594,66.105469 M 498.45703,60.304688 L 494.78906,64.640625 L 493.125,64.640625 L 495.43359,60.304688 L 498.45703,60.304688" + id="text6029" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 552.43945,83.630859 L 552.43945,66.369141 L 555.99023,66.369141 L 555.99023,83.630859 L 552.43945,83.630859 M 557.66602,60.521484 L 553.99805,64.857422 L 552.33398,64.857422 L 554.64258,60.521484 L 557.66602,60.521484" + id="text6033" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 610.18359,75 C 610.18359,76.898444 610.60546,78.375005 611.44922,79.429688 C 612.29296,80.476566 613.47265,81.000003 614.98828,81 C 616.51952,81.000003 617.71093,80.476566 618.5625,79.429688 C 619.41405,78.375005 619.83983,76.898444 619.83984,75 C 619.83983,73.101573 619.41405,71.628918 618.5625,70.582031 C 617.71093,69.527358 616.51952,69.000015 614.98828,69 C 613.47265,69.000015 612.29296,69.523452 611.44922,70.570313 C 610.60546,71.617199 610.18359,73.093761 610.18359,75 M 606.5625,75 C 606.5625,72.210949 607.32031,70.000014 608.83594,68.367188 C 610.35937,66.726579 612.41015,65.906268 614.98828,65.90625 C 617.56639,65.906268 619.61717,66.726579 621.14063,68.367188 C 622.67186,70.007826 623.43748,72.218761 623.4375,75 C 623.43748,77.781256 622.67186,79.992191 621.14063,81.632813 C 619.61717,83.273438 617.56639,84.09375 614.98828,84.09375 C 612.41015,84.09375 610.35937,83.273438 608.83594,81.632813 C 607.32031,79.992191 606.5625,77.781256 606.5625,75 M 618.44531,60.503906 L 614.77734,64.839844 L 613.11328,64.839844 L 615.42188,60.503906 L 618.44531,60.503906" + id="text6037" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 670.18359,75.017578 C 670.18359,76.916022 670.60546,78.392583 671.44922,79.447266 C 672.29296,80.494144 673.47265,81.017581 674.98828,81.017578 C 676.51952,81.017581 677.71093,80.494144 678.5625,79.447266 C 679.41405,78.392583 679.83983,76.916022 679.83984,75.017578 C 679.83983,73.119151 679.41405,71.646496 678.5625,70.599609 C 677.71093,69.544936 676.51952,69.017593 674.98828,69.017578 C 673.47265,69.017593 672.29296,69.54103 671.44922,70.587891 C 670.60546,71.634778 670.18359,73.111339 670.18359,75.017578 M 666.5625,75.017578 C 666.5625,72.228527 667.32031,70.017592 668.83594,68.384766 C 670.35937,66.744158 672.41015,65.923846 674.98828,65.923828 C 677.56639,65.923846 679.61717,66.744158 681.14063,68.384766 C 682.67186,70.025404 683.43748,72.23634 683.4375,75.017578 C 683.43748,77.798834 682.67186,80.009769 681.14063,81.650391 C 679.61717,83.291016 677.56639,84.111328 674.98828,84.111328 C 672.41015,84.111328 670.35937,83.291016 668.83594,81.650391 C 667.32031,80.009769 666.5625,77.798834 666.5625,75.017578 M 675.72656,64.166016 L 675.72656,61.283203 L 678.375,61.283203 L 678.375,64.166016 L 675.72656,64.166016 M 671.64844,64.166016 L 671.64844,61.283203 L 674.29688,61.283203 L 674.29688,64.166016 L 671.64844,64.166016" + id="text6041" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 735.5332,106.35352 L 735.5332,103.35352 L 739.44727,99.966797 L 739.44727,102.75586 L 737.04492,104.8418 L 739.44727,106.92773 L 739.44727,109.74023 L 735.5332,106.35352 M 730.4707,106.35352 L 730.4707,103.35352 L 734.4082,99.966797 L 734.4082,102.75586 L 732.00586,104.8418 L 734.4082,106.92773 L 734.4082,109.74023 L 730.4707,106.35352" + id="text6045" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 799.44727,103.3418 L 799.44727,106.3418 L 795.5332,109.72852 L 795.5332,106.93945 L 797.93555,104.83008 L 795.5332,102.76758 L 795.5332,99.955078 L 799.44727,103.3418 M 794.4082,103.3418 L 794.4082,106.3418 L 790.4707,109.72852 L 790.4707,106.93945 L 792.86133,104.83008 L 790.4707,102.76758 L 790.4707,99.955078 L 794.4082,103.3418" + id="text6051" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 883.81641,76.535881 L 886.23047,76.535881 L 886.23047,85.418694 L 883.81641,85.418694 L 883.81641,76.535881 M 883.81641,64.535881 L 886.23047,64.535881 L 886.23047,73.418694 L 883.81641,73.418694 L 883.81641,64.535881 M 877.98047,101.19213 L 892.01953,101.19213 L 892.01953,107.07494 L 889.6875,107.07494 L 889.6875,103.48901 L 877.98047,103.48901 L 877.98047,101.19213" + id="text6057" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 149.9707,129.82617 L 147.58008,137.17383 L 152.37305,137.17383 L 149.9707,129.82617 M 147.9082,126.36914 L 152.00977,126.36914 L 158.23242,143.63086 L 154.50586,143.63086 L 153.33398,140.08008 L 146.64258,140.08008 L 145.50586,143.63086 L 141.76758,143.63086 L 147.9082,126.36914 M 153.42773,120.52148 L 149.75977,124.85742 L 148.0957,124.85742 L 150.4043,120.52148 L 153.42773,120.52148" + id="text6065" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 211.40625,137.91797 C 211.71874,137.73829 211.95312,137.53907 212.10938,137.32031 C 212.26562,137.10157 212.34374,136.86719 212.34375,136.61719 C 212.34374,136.31251 212.2539,136.0547 212.07422,135.84375 C 211.89452,135.62501 211.52343,135.3711 210.96094,135.08203 L 207.85547,133.47656 C 207.55078,133.65626 207.3164,133.85938 207.15234,134.08594 C 206.99609,134.31251 206.91797,134.5547 206.91797,134.8125 C 206.91797,135.1172 207.03125,135.38673 207.25781,135.62109 C 207.49218,135.84766 208.0039,136.16407 208.79297,136.57031 L 211.40625,137.91797 M 205.03125,141.75 L 207.92578,141.75 C 207.98828,142.35938 208.16796,142.8125 208.46484,143.10938 C 208.76953,143.40625 209.19921,143.55469 209.75391,143.55469 C 210.26952,143.55469 210.67968,143.43359 210.98438,143.19141 C 211.28905,142.94141 211.4414,142.60547 211.44141,142.18359 C 211.4414,141.83985 211.32812,141.54297 211.10156,141.29297 C 210.87499,141.03516 210.42577,140.74219 209.75391,140.41406 L 206.95313,138.99609 C 206.0625,138.55079 205.39844,138.03907 204.96094,137.46094 C 204.52344,136.88282 204.30469,136.23438 204.30469,135.51563 C 204.30469,134.82032 204.47266,134.21095 204.80859,133.6875 C 205.15234,133.15626 205.65625,132.71485 206.32031,132.36328 C 205.92969,132.01173 205.64062,131.62892 205.45313,131.21484 C 205.26562,130.79298 205.17187,130.32814 205.17188,129.82031 C 205.17187,128.64845 205.57422,127.70705 206.37891,126.99609 C 207.18359,126.27736 208.2539,125.91799 209.58984,125.91797 C 210.96484,125.91799 212.04296,126.26955 212.82422,126.97266 C 213.60546,127.6758 214.0078,128.64845 214.03125,129.89063 L 211.26563,129.89063 C 211.24999,129.3672 211.09374,128.96876 210.79688,128.69531 C 210.50781,128.42189 210.08984,128.28517 209.54297,128.28516 C 209.05859,128.28517 208.68359,128.39064 208.41797,128.60156 C 208.16015,128.81251 208.03125,129.10939 208.03125,129.49219 C 208.03125,129.8047 208.18359,130.09767 208.48828,130.37109 C 208.80078,130.63673 209.35937,130.95704 210.16406,131.33203 L 212.13281,132.24609 C 213.1328,132.72267 213.87108,133.25392 214.34766,133.83984 C 214.82421,134.41798 215.06249,135.08595 215.0625,135.84375 C 215.06249,136.55469 214.8828,137.17579 214.52344,137.70703 C 214.17186,138.23047 213.66405,138.63672 213,138.92578 C 213.45312,139.32422 213.79296,139.76563 214.01953,140.25 C 214.24608,140.73438 214.35936,141.26563 214.35938,141.84375 C 214.35936,143.04688 213.92968,144.03906 213.07031,144.82031 C 212.21093,145.60937 211.10546,146.0039 209.75391,146.00391 C 208.26953,146.0039 207.1289,145.64453 206.33203,144.92578 C 205.53515,144.20703 205.10156,143.14844 205.03125,141.75 M 203.97656,173.625 L 203.97656,160.59375 C 203.97656,159.29689 204.48047,158.25002 205.48828,157.45313 C 206.49609,156.64845 207.83984,156.24611 209.51953,156.24609 C 211.23046,156.24611 212.5703,156.63674 213.53906,157.41797 C 214.5078,158.19923 214.99217,159.27345 214.99219,160.64063 C 214.99217,161.48439 214.84764,162.17579 214.55859,162.71484 C 214.27733,163.25392 213.83983,163.66798 213.24609,163.95703 C 214.16796,164.32423 214.85936,164.86329 215.32031,165.57422 C 215.78905,166.28516 216.02342,167.16016 216.02344,168.19922 C 216.02342,169.94922 215.51952,171.36328 214.51172,172.44141 C 213.5039,173.51953 212.18358,174.05859 210.55078,174.05859 C 210.32421,174.05859 210.0703,174.04687 209.78906,174.02344 C 209.51562,174 209.21874,173.96484 208.89844,173.91797 L 208.89844,171.17578 C 208.99999,171.19141 209.10156,171.20313 209.20313,171.21094 C 209.31249,171.21875 209.47265,171.22266 209.68359,171.22266 C 210.60546,171.22266 211.3164,170.96875 211.81641,170.46094 C 212.3164,169.94532 212.5664,169.21485 212.56641,168.26953 C 212.5664,167.35548 212.29296,166.66016 211.74609,166.18359 C 211.20702,165.70704 210.41796,165.46876 209.37891,165.46875 L 209.0625,165.46875 L 209.07422,163.06641 C 209.12109,163.07423 209.17187,163.08204 209.22656,163.08984 C 209.28124,163.08985 209.36327,163.08985 209.47266,163.08984 C 210.16796,163.08985 210.6953,162.91798 211.05469,162.57422 C 211.42187,162.22267 211.60546,161.71486 211.60547,161.05078 C 211.60546,160.38673 211.41405,159.88283 211.03125,159.53906 C 210.65624,159.18751 210.10546,159.01173 209.37891,159.01172 C 208.70703,159.01173 208.19531,159.20705 207.84375,159.59766 C 207.49218,159.98048 207.3164,160.54298 207.31641,161.28516 L 207.31641,173.625 L 203.97656,173.625" + id="text6073" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 267.09961,140.51367 L 269.94727,140.51367 C 271.60351,140.51367 272.80272,140.08008 273.54492,139.21289 C 274.2871,138.34571 274.65819,136.94727 274.6582,135.01758 C 274.65819,133.09571 274.31053,131.68165 273.61523,130.77539 C 272.92772,129.86134 271.8496,129.40431 270.38086,129.4043 L 267.09961,129.4043 L 267.09961,133.23633 L 270.88477,133.23633 L 270.88477,135.47461 L 267.09961,135.47461 L 267.09961,140.51367 M 263.61914,143.63086 L 263.61914,135.47461 L 261.74414,135.47461 L 261.74414,133.23633 L 263.61914,133.23633 L 263.61914,126.36914 L 270.4043,126.36914 C 273.04491,126.36916 275.01366,127.084 276.31055,128.51367 C 277.60741,129.93556 278.25584,132.10353 278.25586,135.01758 C 278.25584,136.60352 278.01756,137.99805 277.54102,139.20117 C 277.07225,140.4043 276.38084,141.36914 275.4668,142.0957 C 274.77928,142.64258 273.99413,143.03711 273.11133,143.2793 C 272.23632,143.51367 271.00585,143.63086 269.41992,143.63086 L 263.61914,143.63086" + id="text6077" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 626.72461,139.55273 C 627.17773,140.04493 627.68945,140.41211 628.25977,140.6543 C 628.83007,140.89649 629.47069,141.01758 630.18164,141.01758 C 631.71288,141.01758 632.90428,140.49414 633.75586,139.44727 C 634.60741,138.39258 635.03319,136.91602 635.0332,135.01758 C 635.03319,134.24415 634.96288,133.54493 634.82227,132.91992 C 634.68163,132.28712 634.4785,131.73634 634.21289,131.26758 L 626.72461,139.55273 M 625.98633,138.36914 L 633.39258,130.21289 C 632.9785,129.81447 632.50585,129.51759 631.97461,129.32227 C 631.44335,129.11916 630.84569,129.01759 630.18164,129.01758 C 628.66601,129.01759 627.48632,129.54103 626.64258,130.58789 C 625.79882,131.63478 625.37695,133.11134 625.37695,135.01758 C 625.37695,135.72071 625.42382,136.34571 625.51758,136.89258 C 625.61914,137.43946 625.77539,137.93165 625.98633,138.36914 M 621.36914,143.36133 L 623.51367,140.9707 C 622.91992,140.16602 622.47851,139.27149 622.18945,138.28711 C 621.90039,137.29493 621.75586,136.20509 621.75586,135.01758 C 621.75586,132.22853 622.51367,130.01759 624.0293,128.38477 C 625.55273,126.74416 627.60351,125.92385 630.18164,125.92383 C 631.28319,125.92385 632.27147,126.06447 633.14648,126.3457 C 634.02928,126.62697 634.84178,127.06056 635.58398,127.64648 L 637.30664,125.70117 L 638.45508,126.73242 L 636.63867,128.70117 C 637.30272,129.5215 637.79881,130.45509 638.12695,131.50195 C 638.46287,132.54884 638.63084,133.72071 638.63086,135.01758 C 638.63084,137.79883 637.86912,140.00977 636.3457,141.65039 C 634.82225,143.29102 632.76757,144.11133 630.18164,144.11133 C 629.01757,144.11133 627.96679,143.94727 627.0293,143.61914 C 626.0996,143.29102 625.26367,142.79102 624.52148,142.11914 L 622.50586,144.4043 L 621.36914,143.36133" + id="text6081" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 690,127.98633 C 689.42968,127.98634 688.9414,128.18556 688.53516,128.58398 C 688.13672,128.98244 687.9375,129.4629 687.9375,130.02539 C 687.9375,130.60353 688.13672,131.09181 688.53516,131.49023 C 688.93359,131.88868 689.42187,132.0879 690,132.08789 C 690.5625,132.0879 691.04296,131.88478 691.44141,131.47852 C 691.83984,131.07228 692.03906,130.5879 692.03906,130.02539 C 692.03906,129.4629 691.83984,128.98244 691.44141,128.58398 C 691.04296,128.18556 690.5625,127.98634 690,127.98633 M 690,126.47461 C 690.98437,126.47463 691.82031,126.82619 692.50781,127.5293 C 693.20312,128.22462 693.55077,129.06447 693.55078,130.04883 C 693.55077,131.0254 693.20312,131.86134 692.50781,132.55664 C 691.81249,133.25196 690.96875,133.59962 689.97656,133.59961 C 688.99218,133.59962 688.15625,133.25587 687.46875,132.56836 C 686.78906,131.88087 686.44922,131.04103 686.44922,130.04883 C 686.44922,129.05666 686.79297,128.21291 687.48047,127.51758 C 688.17578,126.82228 689.01562,126.47463 690,126.47461 M 695.51953,156.29883 L 695.51953,157.59961 L 694.19531,157.59961 L 694.19531,173.63086 L 692.42578,173.63086 L 692.42578,157.59961 L 690.57422,157.59961 L 690.57422,173.63086 L 688.78125,173.63086 L 688.78125,164.44336 C 687.47656,164.39649 686.43359,164.00196 685.65234,163.25977 C 684.87109,162.51759 684.48047,161.56056 684.48047,160.38867 C 684.48047,159.15431 684.89844,158.16603 685.73438,157.42383 C 686.57031,156.67385 687.67968,156.29885 689.0625,156.29883 L 695.51953,156.29883" + id="text6085" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 373.13672,6.5214844 L 376.08984,6.5214844 L 381.72656,13.095703 L 378.97266,13.095703 L 374.625,8.7480469 L 370.25391,13.095703 L 367.5,13.095703 L 373.13672,6.5214844" + id="text6091" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 750.67969,128.67773 L 750.67969,125.79492 L 753.32813,125.79492 L 753.32813,128.67773 L 750.67969,128.67773 M 746.60156,128.67773 L 746.60156,125.79492 L 749.25,125.79492 L 749.25,128.67773 L 746.60156,128.67773 M 753.39844,155.0332 L 749.73047,159.36914 L 748.06641,159.36914 L 750.375,155.0332 L 753.39844,155.0332" + id="text6099" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 171.07031,197.29102 L 175.92188,197.29102 L 175.92188,189.29883 L 173.97656,189.29883 L 171.07031,197.29102 M 165,203.63086 L 171.80859,186.36914 L 187.81641,186.36914 L 187.81641,189.36914 L 179.34375,189.36914 L 179.34375,193.04883 L 187.05469,193.04883 L 187.05469,196.00195 L 179.34375,196.00195 L 179.34375,200.44336 L 188.25,200.44336 L 188.25,203.63086 L 175.92188,203.63086 L 175.92188,200.08008 L 170.0625,200.08008 L 168.76172,203.63086 L 165,203.63086" + id="text6105" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 300.46875,193.23633 C 300.32031,193.22071 300.20312,193.20899 300.11719,193.20117 C 300.03906,193.19337 299.96484,193.18946 299.89453,193.18945 C 299.05859,193.18946 298.42578,193.53321 297.99609,194.2207 C 297.5664,194.90821 297.35156,195.92384 297.35156,197.26758 C 297.35156,198.04102 297.4375,198.70899 297.60938,199.27148 C 297.78906,199.83399 298.04687,200.28711 298.38281,200.63086 L 300.46875,193.23633 M 296.68359,206.49023 L 297.48047,203.63086 C 296.30859,203.13867 295.42187,202.35352 294.82031,201.27539 C 294.21875,200.19727 293.91797,198.85352 293.91797,197.24414 C 293.91797,195.11134 294.45312,193.43946 295.52344,192.22852 C 296.60156,191.01759 298.07421,190.41212 299.94141,190.41211 C 300.15234,190.41212 300.35937,190.41994 300.5625,190.43555 C 300.76562,190.45119 300.96874,190.47462 301.17188,190.50586 L 301.69922,188.56055 L 302.97656,188.56055 L 302.34375,190.78711 C 303.32811,191.09181 304.09765,191.63478 304.65234,192.41602 C 305.20702,193.18946 305.52733,194.17774 305.61328,195.38086 L 302.32031,195.36914 C 302.28124,194.98634 302.1914,194.65821 302.05078,194.38477 C 301.91796,194.10353 301.72265,193.85743 301.46484,193.64648 L 299.36719,201.13477 C 299.38281,201.13477 299.40624,201.13867 299.4375,201.14648 C 299.67187,201.16992 299.85156,201.18164 299.97656,201.18164 C 300.66406,201.18164 301.19921,200.99024 301.58203,200.60742 C 301.97265,200.22461 302.23437,199.62305 302.36719,198.80273 L 305.66016,198.80273 C 305.54296,200.41993 304.96874,201.70117 303.9375,202.64648 C 302.91405,203.5918 301.59374,204.06445 299.97656,204.06445 C 299.76562,204.06445 299.55077,204.05664 299.33203,204.04102 C 299.11328,204.02539 298.88671,204.00195 298.65234,203.9707 L 297.96094,206.49023 L 296.68359,206.49023 M 304.19531,223.0957 L 301.99219,223.0957 C 301.92968,222.54884 301.72264,222.12696 301.37109,221.83008 C 301.01952,221.5254 300.55468,221.37306 299.97656,221.37305 C 299.26562,221.37306 298.70702,221.69337 298.30078,222.33398 C 297.89452,222.96681 297.6914,223.85353 297.69141,224.99414 C 297.6914,226.14259 297.89452,227.01758 298.30078,227.61914 C 298.70702,228.22071 299.29687,228.52149 300.07031,228.52148 C 300.64061,228.52149 301.09765,228.35743 301.44141,228.0293 C 301.78514,227.70118 301.99218,227.23633 302.0625,226.63477 L 304.32422,226.62305 C 304.2617,227.70899 303.83592,228.58008 303.04688,229.23633 C 302.2578,229.89258 301.24218,230.22071 300,230.2207 C 298.54687,230.22071 297.39843,229.75977 296.55469,228.83789 C 295.71874,227.91602 295.30078,226.65821 295.30078,225.06445 C 295.30078,223.45509 295.72656,222.17384 296.57813,221.2207 C 297.43749,220.25978 298.58593,219.77931 300.02344,219.7793 C 301.21093,219.77931 302.18749,220.084 302.95313,220.69336 C 303.72655,221.30275 304.14061,222.10353 304.19531,223.0957 M 300,217.7168 C 298.99999,217.71681 298.06249,217.8965 297.1875,218.25586 C 296.32031,218.61525 295.54687,219.13869 294.86719,219.82617 C 294.17187,220.52931 293.64062,221.32618 293.27344,222.2168 C 292.90625,223.09962 292.72265,224.0254 292.72266,224.99414 C 292.72265,225.97071 292.90625,226.89649 293.27344,227.77148 C 293.64062,228.64649 294.17187,229.43164 294.86719,230.12695 C 295.55468,230.81446 296.33984,231.3418 297.22266,231.70898 C 298.10546,232.07617 299.03124,232.25977 300,232.25977 C 300.96874,232.25977 301.89452,232.07617 302.77734,231.70898 C 303.66796,231.3418 304.46874,230.80664 305.17969,230.10352 C 305.86717,229.43164 306.3867,228.66211 306.73828,227.79492 C 307.09764,226.92774 307.27733,225.99415 307.27734,224.99414 C 307.27733,224.00978 307.09373,223.08009 306.72656,222.20508 C 306.36717,221.32228 305.84373,220.53712 305.15625,219.84961 C 304.46092,219.15431 303.67577,218.62697 302.80078,218.26758 C 301.92577,217.90041 300.99218,217.71681 300,217.7168 M 299.97656,216.27539 C 301.16405,216.27541 302.28514,216.49416 303.33984,216.93164 C 304.40233,217.36916 305.35155,218.00587 306.1875,218.8418 C 307.0078,219.66212 307.63279,220.60353 308.0625,221.66602 C 308.49217,222.72071 308.70701,223.8379 308.70703,225.01758 C 308.70701,226.20509 308.49217,227.31446 308.0625,228.3457 C 307.64061,229.37696 307.01561,230.29883 306.1875,231.11133 C 305.3203,231.95508 304.35155,232.60352 303.28125,233.05664 C 302.21093,233.50195 301.10936,233.72461 299.97656,233.72461 C 298.82812,233.72461 297.73046,233.50586 296.68359,233.06836 C 295.64453,232.62305 294.70312,231.97852 293.85938,231.13477 C 293.02343,230.30664 292.38672,229.36914 291.94922,228.32227 C 291.51172,227.26758 291.29297,226.16602 291.29297,225.01758 C 291.29297,223.85353 291.51172,222.74415 291.94922,221.68945 C 292.38672,220.62697 293.02343,219.66994 293.85938,218.81836 C 294.67968,217.99025 295.60937,217.36134 296.64844,216.93164 C 297.68749,216.49416 298.79687,216.27541 299.97656,216.27539" + id="text6109" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 472.88672,203.63086 L 472.88672,186.36914 L 476.60156,186.36914 L 483.60938,198.22852 L 483.60938,186.36914 L 487.11328,186.36914 L 487.11328,203.63086 L 483.44531,203.63086 L 476.39063,191.77148 L 476.39063,203.63086 L 472.88672,203.63086 M 483.82031,181.0957 C 483.61717,182.07229 483.31639,182.79494 482.91797,183.26367 C 482.51952,183.72463 482.0078,183.9551 481.38281,183.95508 C 481.21874,183.9551 481.0664,183.94729 480.92578,183.93164 C 480.78515,183.90822 480.64452,183.87307 480.50391,183.82617 L 479.48438,183.52148 C 479.33593,183.48244 479.19921,183.4551 479.07422,183.43945 C 478.94921,183.41604 478.82812,183.40432 478.71094,183.4043 C 478.44531,183.40432 478.23046,183.47463 478.06641,183.61523 C 477.90234,183.75588 477.77343,183.98635 477.67969,184.30664 L 476.39063,184.30664 C 476.57812,183.36135 476.86718,182.66604 477.25781,182.2207 C 477.64843,181.77541 478.15624,181.55276 478.78125,181.55273 C 478.9453,181.55276 479.10937,181.56838 479.27344,181.59961 C 479.43749,181.62307 479.60937,181.66213 479.78906,181.7168 L 480.87891,182.00977 C 480.97265,182.04104 481.0703,182.06447 481.17188,182.08008 C 481.28124,182.09572 481.39843,182.10354 481.52344,182.10352 C 481.77343,182.10354 481.98046,182.02151 482.14453,181.85742 C 482.3164,181.68557 482.4453,181.43166 482.53125,181.0957 L 483.82031,181.0957" + id="text6113" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 535.83398,220.83432 L 539.2207,220.83432 L 538.33008,225.93198 C 538.21289,226.55698 538.12304,227.15073 538.06055,227.71323 C 537.99804,228.26792 537.96679,228.72104 537.9668,229.0726 C 537.96679,229.79917 538.13085,230.34214 538.45898,230.70151 C 538.7871,231.05307 539.2871,231.22885 539.95898,231.22885 C 540.74023,231.22885 541.3457,230.90854 541.77539,230.26791 C 542.21288,229.62729 542.57616,228.49058 542.86523,226.85776 L 543.91992,220.83432 L 547.30664,220.83432 L 545.04492,233.6312 L 541.9043,233.6312 L 542.11523,232.2601 C 541.7871,232.86948 541.41991,233.31479 541.01367,233.59604 C 540.61523,233.87729 540.14257,234.01791 539.5957,234.01791 C 539.07226,234.01791 538.60742,233.90073 538.20117,233.66635 C 537.79492,233.43979 537.42773,233.08432 537.09961,232.59995 L 536.04492,238.76401 L 532.69336,238.76401 L 535.83398,220.83432" + id="text6117" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 607.875,197.70117 C 607.74217,199.66211 606.98436,201.22071 605.60156,202.37695 C 604.22655,203.5332 602.42968,204.11133 600.21094,204.11133 C 597.65624,204.11133 595.66796,203.31445 594.24609,201.7207 C 592.83203,200.12696 592.125,197.89258 592.125,195.01758 C 592.125,192.08009 592.84765,189.83009 594.29297,188.26758 C 595.73828,186.7051 597.8164,185.92385 600.52734,185.92383 C 602.73046,185.92385 604.46874,186.46291 605.74219,187.54102 C 607.02342,188.61134 607.72655,190.12697 607.85156,192.08789 L 604.34766,192.08789 C 604.19921,191.11134 603.80077,190.36915 603.15234,189.86133 C 602.50389,189.34572 601.6289,189.08791 600.52734,189.08789 C 598.96484,189.08791 597.77734,189.59181 596.96484,190.59961 C 596.15234,191.60743 595.74609,193.08009 595.74609,195.01758 C 595.74609,196.89258 596.14843,198.3418 596.95313,199.36523 C 597.76562,200.38868 598.91796,200.90039 600.41016,200.90039 C 601.48827,200.90039 602.37108,200.62696 603.05859,200.08008 C 603.74608,199.52539 604.19139,198.73243 604.39453,197.70117 L 607.875,197.70117 M 597.62109,208.76367 L 597.62109,207.25195 C 598.24609,207.41601 598.81249,207.54101 599.32031,207.62695 C 599.82812,207.71289 600.26171,207.75586 600.62109,207.75586 C 601.02733,207.75586 601.32421,207.68554 601.51172,207.54492 C 601.69921,207.41211 601.79296,207.19726 601.79297,206.90039 C 601.79296,206.60351 601.68358,206.39258 601.46484,206.26758 C 601.24608,206.14258 600.8828,206.08008 600.375,206.08008 C 600.1953,206.08008 600.05858,206.08008 599.96484,206.08008 C 599.87108,206.08789 599.78515,206.0957 599.70703,206.10352 L 599.70703,203.63086 L 600.90234,203.63086 L 600.90234,204.68555 L 601.07813,204.68555 C 601.99218,204.68555 602.67968,204.87305 603.14063,205.24805 C 603.60155,205.62304 603.83202,206.18164 603.83203,206.92383 C 603.83202,207.70507 603.57421,208.29101 603.05859,208.68164 C 602.54296,209.07226 601.76952,209.26757 600.73828,209.26758 C 600.33983,209.26757 599.87108,209.2246 599.33203,209.13867 C 598.80077,209.05273 598.23046,208.92773 597.62109,208.76367" + id="text6121" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 721.7168,216.36914 L 721.7168,219.82617 L 718.23633,219.82617 L 718.23633,216.36914 L 721.7168,216.36914 M 721.55273,221.39648 C 721.55273,221.47462 721.55663,221.5879 721.56445,221.73633 C 721.57226,221.88478 721.57616,221.99415 721.57617,222.06445 C 721.57616,222.74415 721.50194,223.31446 721.35352,223.77539 C 721.20507,224.23634 720.96679,224.66602 720.63867,225.06445 C 720.38085,225.36134 720.00195,225.70118 719.50195,226.08398 C 719.00976,226.4668 718.69335,226.74415 718.55273,226.91602 C 718.24804,227.25977 718.0332,227.57618 717.9082,227.86523 C 717.79101,228.1543 717.73242,228.4668 717.73242,228.80273 C 717.73242,229.55274 717.93554,230.13477 718.3418,230.54883 C 718.74804,230.95508 719.32226,231.15821 720.06445,231.1582 C 720.79882,231.15821 721.38085,230.91211 721.81055,230.41992 C 722.24023,229.91993 722.4746,229.22071 722.51367,228.32227 L 725.8418,228.32227 L 725.8418,228.68555 C 725.84178,230.3418 725.31835,231.66211 724.27148,232.64648 C 723.23241,233.62305 721.83007,234.11133 720.06445,234.11133 C 718.25976,234.11133 716.82226,233.64648 715.75195,232.7168 C 714.68945,231.7793 714.1582,230.53321 714.1582,228.97852 C 714.1582,228.40821 714.2168,227.90821 714.33398,227.47852 C 714.45117,227.04883 714.63086,226.65821 714.87305,226.30664 C 715.18554,225.86915 715.67773,225.39259 716.34961,224.87695 C 717.02148,224.36134 717.43554,224.03321 717.5918,223.89258 C 717.88867,223.60353 718.0996,223.29884 718.22461,222.97852 C 718.35742,222.6504 718.42382,222.25587 718.42383,221.79492 C 718.42382,221.75587 718.41992,221.69337 718.41211,221.60742 C 718.40429,221.51368 718.40039,221.44337 718.40039,221.39648 L 721.55273,221.39648" + id="text6131" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Matrix Unicode" + d="" + id="text6955" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="137.05411" + y="23.149496" + id="text4346" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348" + x="137.05411" + y="23.149496" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> Ë </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="186.05411" + y="27.3995" + id="text4346-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-1" + x="186.05411" + y="27.3995" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> ¯ </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="482.80411" + y="24.6495" + id="text4346-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-7" + x="482.80411" + y="24.6495" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> Ë› </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="558.30408" + y="24.399498" + id="text4346-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-0" + x="558.30408" + y="24.399498" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> ˘ </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="626.55408" + y="11.1495" + id="text4346-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-09" + x="626.55408" + y="11.1495" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"><tspan + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" + id="tspan4483"> o</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="667.80408" + y="28.899498" + id="text4346-31" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-15" + x="667.80408" + y="28.899498" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> . </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="619.55408" + y="203.14951" + id="text4346-38" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-8" + x="619.55408" + y="203.14951" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> ˇ </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="620.30408" + y="232.14951" + id="text4346-9" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-6" + x="620.30408" + y="232.14951" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> Ë™ </tspan></text> + <path + inkscape:connector-curvature="0" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:24px;line-height:125%;font-family:'Swis721 BT';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 402.88672,6.52148 2.95312,0 5.63672,6.574219 -2.7539,0 -4.34766,-4.3476565 -4.37109,4.3476565 -2.75391,0 5.63672,-6.574219" + id="text6091-3" /> + </g> +</svg> diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg new file mode 100644 index 000000000..2304b2a4c --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg @@ -0,0 +1,1049 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="900" + height="300" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.91 r13725" + version="1.0" + sodipodi:docname="KB_US-International-Alternative.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="D:\Users\Felix\Source\Repos\qmk_firmware\keyboards\s60-x\keymaps\ansi_qwertz\docs\KB_US-International-Alternative.png" + inkscape:export-xdpi="79.910004" + inkscape:export-ydpi="79.910004"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path5387" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + id="path5390" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Tail" + orient="auto" + refY="0.0" + refX="0.0" + id="Tail" + style="overflow:visible"> + <g + id="g5342" + transform="scale(-1.2)"> + <path + id="path5344" + d="M -3.8048674,-3.9585227 L 0.54352094,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5346" + d="M -1.2866832,-3.9585227 L 3.0617053,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5348" + d="M 1.3053582,-3.9585227 L 5.6537466,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5350" + d="M -3.8048674,4.1775838 L 0.54352094,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5352" + d="M -1.2866832,4.1775838 L 3.0617053,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5354" + d="M 1.3053582,4.1775838 L 5.6537466,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + </g> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path5363" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path5369" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;"> + <path + id="path5375" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.2) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow2Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Send" + style="overflow:visible;"> + <path + id="path5357" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.3) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;"> + <path + id="path5381" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.4) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + id="path5372" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(-5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4142136" + inkscape:cx="435.66801" + inkscape:cy="291.15819" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:grid-points="true" + showgrid="true" + gridtolerance="15px" + showborder="false" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="1912" + inkscape:window-y="-8" + showguides="true" + inkscape:guide-bbox="true" + inkscape:grid-bbox="true" + inkscape:window-maximized="1"> + <inkscape:grid + id="GridFromPre046Settings" + type="xygrid" + originx="0px" + originy="0px" + spacingx="7.5px" + spacingy="7.5px" + color="#0000ff" + empcolor="#0000ff" + opacity="0.12156863" + empopacity="0.25098039" + empspacing="4" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,0 L 60,0 L 60,60 L 0,60 L 0,0 z " + id="rect2186" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 60,0 L 120,0 L 120,60 L 60,60 L 60,0 z " + id="rect2218" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 120,0 L 180,0 L 180,60 L 120,60 L 120,0 z " + id="rect2222" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 180,0 L 240,0 L 240,60 L 180,60 L 180,0 z " + id="rect2228" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 240,0 L 300,0 L 300,60 L 240,60 L 240,0 z " + id="rect2230" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 300,0 L 360,0 L 360,60 L 300,60 L 300,0 z " + id="rect2232" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 360,0 L 420,0 L 420,60 L 360,60 L 360,0 z " + id="rect2234" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 420,0 L 480,0 L 480,60 L 420,60 L 420,0 z " + id="rect2236" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 480,0 L 540,0 L 540,60 L 480,60 L 480,0 z " + id="rect2238" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 540,0 L 600,0 L 600,60 L 540,60 L 540,0 z " + id="rect2240" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 600,0 L 660,0 L 660,60 L 600,60 L 600,0 z " + id="rect2242" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 660,0 L 720,0 L 720,60 L 660,60 L 660,0 z " + id="rect2244" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 720,0 L 780,0 L 780,60 L 720,60 L 720,0 z " + id="rect2246" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 780,0 L 900,0 L 900,60 L 780,60 L 780,0 z " + id="rect2248" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,60 L 90,60 L 90,120 L 0,120 L 0,60 z " + id="rect2250" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 90,60 L 150,60 L 150,120 L 90,120 L 90,60 z " + id="rect2252" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 150,60 L 210,60 L 210,120 L 150,120 L 150,60 z " + id="rect2254" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 210,60 L 270,60 L 270,120 L 210,120 L 210,60 z " + id="rect2256" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 270,60 L 330,60 L 330,120 L 270,120 L 270,60 z " + id="rect2258" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 330,60 L 390,60 L 390,120 L 330,120 L 330,60 z " + id="rect2262" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 390,60 L 450,60 L 450,120 L 390,120 L 390,60 z " + id="rect2264" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 450,60 L 510,60 L 510,120 L 450,120 L 450,60 z " + id="rect2266" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 510,60 L 570,60 L 570,120 L 510,120 L 510,60 z " + id="rect2270" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 570,60 L 630,60 L 630,120 L 570,120 L 570,60 z " + id="rect2272" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 630,60 L 690,60 L 690,120 L 630,120 L 630,60 z " + id="rect2274" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 690,60 L 750,60 L 750,120 L 690,120 L 690,60 z " + id="rect2278" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 750,60 L 810,60 L 810,120 L 750,120 L 750,60 z " + id="rect2280" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 810,60 L 900,60 L 900,120 L 810,120 L 810,60 z " + id="rect2284" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,120 L 105,120 L 105,180 L 0,180 L 0,120 z " + id="rect2286" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 105,120 L 165,120 L 165,180 L 105,180 L 105,120 z " + id="rect2292" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 165,120 L 225,120 L 225,180 L 165,180 L 165,120 z " + id="rect2296" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 225,120 L 285,120 L 285,180 L 225,180 L 225,120 z " + id="rect2298" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 285,120 L 345,120 L 345,180 L 285,180 L 285,120 z " + id="rect2300" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 345,120 L 405,120 L 405,180 L 345,180 L 345,120 z " + id="rect2302" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 405,120 L 465,120 L 465,180 L 405,180 L 405,120 z " + id="rect2306" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 465,120 L 525,120 L 525,180 L 465,180 L 465,120 z " + id="rect2308" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 525,120 L 585,120 L 585,180 L 525,180 L 525,120 z " + id="rect2312" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 585,120 L 645,120 L 645,180 L 585,180 L 585,120 z " + id="rect2314" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 645,120 L 705,120 L 705,180 L 645,180 L 645,120 z " + id="rect2316" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 705,120 L 765,120 L 765,180 L 705,180 L 705,120 z " + id="rect2318" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 765,120 L 900,120 L 900,180 L 765,180 L 765,120 z " + id="rect2320" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,180 L 135,180 L 135,240 L 0,240 L 0,180 z " + id="rect2322" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 135,180 L 195,180 L 195,240 L 135,240 L 135,180 z " + id="rect2324" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 195,180 L 255,180 L 255,240 L 195,240 L 195,180 z " + id="rect2326" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 255,180 L 315,180 L 315,240 L 255,240 L 255,180 z " + id="rect2330" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 315,180 L 375,180 L 375,240 L 315,240 L 315,180 z " + id="rect2334" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 375,180 L 435,180 L 435,240 L 375,240 L 375,180 z " + id="rect2336" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 435,180 L 495,180 L 495,240 L 435,240 L 435,180 z " + id="rect2338" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 495,180 L 555,180 L 555,240 L 495,240 L 495,180 z " + id="rect2340" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 555,180 L 615,180 L 615,240 L 555,240 L 555,180 z " + id="rect2342" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 615,180 L 675,180 L 675,240 L 615,240 L 615,180 z " + id="rect2344" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 675,180 L 735,180 L 735,240 L 675,240 L 675,180 z " + id="rect2346" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 735,180 L 900,180 L 900,240 L 735,240 L 735,180 z " + id="rect2348" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,240 L 90,240 L 90,300 L 0,300 L 0,240 z " + id="rect2350" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 810,240 L 900,240 L 900,300 L 810,300 L 810,240 z " + id="rect2352" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 150,240 L 240,240 L 240,300 L 150,300 L 150,240 z " + id="rect2354" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 600,240 L 690,240 L 690,300 L 600,300 L 600,240 z " + id="rect2360" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 240,240 L 600,240 L 600,300 L 240,300 L 240,240 z " + id="rect2362" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 90,240 L 150,240 L 150,300 L 90,300 L 90,240 z " + id="rect2364" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 690,240 L 750,240 L 750,300 L 690,300 L 690,240 z " + id="rect2366" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 750,240 L 810,240 L 810,300 L 750,300 L 750,240 z " + id="rect2368" /> + <path + style="" + d="" + id="flowRoot4146" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 75.351563,18.826172 L 74.4375,11.056641 L 74.4375,6.3691406 L 78.046875,6.3691406 L 78.046875,11.056641 L 77.132813,18.826172 L 75.351563,18.826172 M 74.484375,23.630859 L 74.484375,20.173828 L 77.964844,20.173828 L 77.964844,23.630859 L 74.484375,23.630859 M 75.351563,53.630859 L 75.351563,42.158203 L 71.34375,42.158203 L 71.34375,39.802734 L 71.601563,39.802734 C 73.062496,39.802748 74.124995,39.576186 74.789063,39.123047 C 75.460931,38.669937 75.855462,37.912125 75.972656,36.849609 L 78.65625,36.849609 L 78.65625,53.630859 L 75.351563,53.630859" + id="text5091" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 23.34375,14.220703 L 23.34375,16.810547 C 22.531233,17.365241 21.761702,17.775396 21.035156,18.041016 C 20.316391,18.298833 19.605455,18.42774 18.902344,18.427734 C 18.542956,18.42774 18.183581,18.39649 17.824219,18.333984 C 17.464832,18.27149 17.105457,18.181646 16.746094,18.064453 C 16.558583,18.001959 16.281239,17.904303 15.914063,17.771484 C 14.203116,17.185553 12.902336,16.892585 12.011719,16.892578 C 11.34765,16.892585 10.652339,17.041022 9.9257813,17.337891 C 9.2070275,17.626959 8.3984345,18.091802 7.5,18.732422 L 7.5,16.142578 C 8.3359346,15.580086 9.1328088,15.162118 9.890625,14.888672 C 10.648432,14.607431 11.363275,14.466806 12.035156,14.466797 C 12.949211,14.466806 14.085929,14.693368 15.445313,15.146484 C 15.46874,15.154305 15.484365,15.158212 15.492188,15.158203 C 15.632802,15.205087 15.847646,15.279305 16.136719,15.380859 C 17.347644,15.810555 18.285143,16.025398 18.949219,16.025391 C 19.613267,16.025398 20.29686,15.880867 21,15.591797 C 21.703109,15.302743 22.484358,14.845712 23.34375,14.220703 M 11.988281,35.033203 L 15.011719,35.033203 L 17.320313,39.369141 L 15.65625,39.369141 L 11.988281,35.033203" + id="text5103" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 136.47578,20.443359 C 136.04608,21.099612 135.54999,21.583986 134.9875,21.896484 C 134.42499,22.201173 133.76093,22.353517 132.99532,22.353516 C 131.76093,22.353517 130.81953,22.01758 130.1711,21.345703 C 129.53047,20.673831 129.21015,19.681645 129.21016,18.369141 C 129.21015,16.50196 129.75312,14.935556 130.83907,13.669922 C 131.93281,12.404308 133.27656,11.771496 134.87032,11.771484 C 135.4953,11.771496 136.03827,11.900402 136.49922,12.158203 C 136.96015,12.416027 137.33905,12.798839 137.63594,13.306641 L 138.25703,12.158203 L 140.34297,12.158203 L 138.62032,19.166016 C 138.59686,19.251958 138.57733,19.341801 138.56172,19.435547 C 138.54608,19.521488 138.53827,19.591801 138.53828,19.646484 C 138.53827,19.919926 138.63202,20.126957 138.81953,20.267578 C 139.00702,20.400394 139.28436,20.4668 139.65157,20.466797 C 139.95624,20.4668 140.27264,20.388675 140.60078,20.232422 C 140.9367,20.076175 141.2492,19.857426 141.53828,19.576172 C 142.21014,18.951177 142.71795,18.220709 143.06172,17.384766 C 143.41326,16.548835 143.58904,15.630867 143.58907,14.630859 C 143.58904,12.75587 142.86248,11.216809 141.40938,10.013672 C 139.96405,8.8027492 138.09686,8.1972811 135.80782,8.1972656 C 134.70624,8.1972811 133.6789,8.3300934 132.72578,8.5957031 C 131.78046,8.8613429 130.92109,9.2558737 130.14766,9.7792969 C 128.81953,10.669935 127.79609,11.783215 127.07735,13.119141 C 126.36641,14.455087 126.01094,15.91993 126.01094,17.513672 C 126.01094,19.912113 126.81953,21.83008 128.43672,23.267578 C 130.0539,24.697265 132.21406,25.412108 134.91719,25.412109 C 136.1828,25.412108 137.41718,25.220702 138.62032,24.837891 C 139.83124,24.455077 140.95623,23.90039 141.99532,23.173828 L 142.95625,24.544922 C 141.76092,25.443358 140.49139,26.119138 139.14766,26.572266 C 137.81171,27.025387 136.41718,27.25195 134.96407,27.251953 C 133.46405,27.25195 132.08515,27.060543 130.82735,26.677734 C 129.56953,26.302732 128.45234,25.744139 127.47578,25.001953 C 126.26484,24.05664 125.35859,22.966798 124.75703,21.732422 C 124.15547,20.49805 123.85469,19.099614 123.85469,17.537109 C 123.85469,16.232429 124.05781,14.990243 124.46407,13.810547 C 124.87813,12.623058 125.48359,11.544934 126.28047,10.576172 C 127.43672,9.1621238 128.82734,8.0918124 130.45235,7.3652344 C 132.07734,6.6386889 133.88593,6.275408 135.87813,6.2753906 C 137.19843,6.275408 138.43671,6.4550953 139.59297,6.8144531 C 140.75702,7.1660321 141.76873,7.6660316 142.62813,8.3144531 C 143.68279,9.1347801 144.46795,10.072279 144.9836,11.126953 C 145.50701,12.17384 145.76873,13.357432 145.76875,14.677734 C 145.76873,15.966805 145.51092,17.15821 144.99532,18.251953 C 144.48748,19.337895 143.75311,20.267581 142.79219,21.041016 C 142.2453,21.478518 141.64764,21.814455 140.99922,22.048828 C 140.35858,22.275392 139.69061,22.388673 138.99532,22.388672 C 138.16718,22.388673 137.54218,22.224611 137.12032,21.896484 C 136.70624,21.568361 136.4914,21.083987 136.47578,20.443359 M 137.06172,15.427734 C 136.96015,14.794931 136.73358,14.314462 136.38203,13.986328 C 136.03827,13.650401 135.58124,13.482432 135.01094,13.482422 C 134.1203,13.482432 133.34687,13.966807 132.69063,14.935547 C 132.03437,15.904305 131.70624,17.068366 131.70625,18.427734 C 131.70624,19.146489 131.86249,19.693363 132.175,20.068359 C 132.49531,20.443363 132.95624,20.630862 133.55782,20.630859 C 134.20624,20.630862 134.79608,20.384769 135.32735,19.892578 C 135.8664,19.400395 136.23358,18.75977 136.42891,17.970703 L 137.06172,15.427734 M 128.56563,53.630859 C 128.58125,52.130861 128.90156,50.861331 129.52657,49.822266 C 130.15156,48.775395 131.26094,47.716803 132.85469,46.646484 C 133.09687,46.482429 133.44844,46.255867 133.90938,45.966797 C 136.01875,44.615243 137.07343,43.314463 137.07344,42.064453 C 137.07343,41.322278 136.85078,40.736341 136.40547,40.306641 C 135.96015,39.876967 135.35078,39.662123 134.57735,39.662109 C 133.73359,39.662123 133.08125,39.927748 132.62032,40.458984 C 132.16719,40.982435 131.94062,41.732434 131.94063,42.708984 L 131.94063,42.849609 L 128.84688,42.849609 C 128.84688,40.927747 129.3625,39.44728 130.39375,38.408203 C 131.425,37.369157 132.89375,36.849626 134.8,36.849609 C 136.52656,36.849626 137.90546,37.322282 138.93672,38.267578 C 139.96796,39.205093 140.48358,40.455091 140.4836,42.017578 C 140.48358,43.134776 140.21405,44.103525 139.675,44.923828 C 139.13593,45.744149 138.09296,46.677741 136.5461,47.724609 C 136.21796,47.951178 135.76484,48.248052 135.18672,48.615234 C 133.71797,49.560551 132.88984,50.2793 132.70235,50.771484 L 140.31953,50.771484 L 140.31953,53.630859 L 128.56563,53.630859" + id="text5127" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 195.28125,13.693359 L 194.25,16.552734 L 197.19141,16.552734 L 198.19922,13.693359 L 195.28125,13.693359 M 195.28125,6.4746094 L 197.87109,6.4746094 L 196.16016,11.337891 L 198.99609,11.337891 L 200.73047,6.4746094 L 203.32031,6.4746094 L 201.58594,11.337891 L 204.90234,11.337891 L 204.03516,13.693359 L 200.75391,13.693359 L 199.76953,16.529297 L 203.16797,16.529297 L 202.33594,18.873047 L 198.92578,18.873047 L 197.19141,23.748047 L 194.60156,23.748047 L 196.33594,18.873047 L 193.47656,18.873047 L 191.73047,23.748047 L 189.15234,23.748047 L 190.86328,18.873047 L 187.5,18.873047 L 188.39063,16.529297 L 191.69531,16.529297 L 192.70313,13.693359 L 189.19922,13.693359 L 190.06641,11.337891 L 193.54688,11.337891 L 195.28125,6.4746094 M 190.07813,48.521484 L 193.30078,48.521484 C 193.30859,49.458989 193.53515,50.166019 193.98047,50.642578 C 194.42578,51.111331 195.08593,51.345705 195.96094,51.345703 C 196.80468,51.345705 197.45312,51.126956 197.90625,50.689453 C 198.36718,50.244144 198.59765,49.607426 198.59766,48.779297 C 198.59765,47.951178 198.32812,47.326178 197.78906,46.904297 C 197.2578,46.474617 196.46484,46.259773 195.41016,46.259766 C 195.35546,46.259773 195.26953,46.263679 195.15234,46.271484 C 195.04296,46.279304 194.96093,46.28321 194.90625,46.283203 L 194.90625,43.962891 L 195.26953,43.962891 C 196.23827,43.9629 196.95312,43.7754 197.41406,43.400391 C 197.8828,43.017589 198.11718,42.435558 198.11719,41.654297 C 198.11718,41.005872 197.91796,40.494154 197.51953,40.119141 C 197.1289,39.736342 196.59374,39.544936 195.91406,39.544922 C 195.17187,39.544936 194.59765,39.763686 194.19141,40.201172 C 193.78515,40.638685 193.58203,41.259778 193.58203,42.064453 L 193.58203,42.205078 L 190.41797,42.205078 C 190.45703,40.486341 190.96094,39.169936 191.92969,38.255859 C 192.90625,37.334001 194.28125,36.873064 196.05469,36.873047 C 197.73437,36.873064 199.0664,37.283219 200.05078,38.103516 C 201.03514,38.923843 201.52733,40.02931 201.52734,41.419922 C 201.52733,42.154308 201.35936,42.798839 201.02344,43.353516 C 200.68749,43.908213 200.18358,44.365244 199.51172,44.724609 C 200.37108,45.099618 201.01952,45.619149 201.45703,46.283203 C 201.90233,46.93946 202.12499,47.724615 202.125,48.638672 C 202.12499,50.318363 201.57421,51.650393 200.47266,52.634766 C 199.37108,53.619141 197.86718,54.111328 195.96094,54.111328 C 194.07812,54.111328 192.625,53.634766 191.60156,52.681641 C 190.58594,51.720705 190.07812,50.357425 190.07813,48.591797 L 190.07813,48.521484" + id="text5139" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 254.46094,21.451172 C 255.10155,21.365237 255.58984,21.134768 255.92578,20.759766 C 256.26171,20.384769 256.42968,19.884769 256.42969,19.259766 C 256.42968,18.705083 256.26952,18.248052 255.94922,17.888672 C 255.63671,17.52149 255.14062,17.236335 254.46094,17.033203 L 254.46094,21.451172 M 253.06641,13.435547 L 253.06641,9.4511719 C 252.45703,9.529311 251.99218,9.7402483 251.67188,10.083984 C 251.35156,10.419935 251.1914,10.87306 251.19141,11.443359 C 251.1914,11.919934 251.33984,12.318371 251.63672,12.638672 C 251.9414,12.958995 252.41796,13.22462 253.06641,13.435547 M 253.06641,26.267578 L 253.06641,24.017578 C 251.30078,23.908203 249.98047,23.396485 249.10547,22.482422 C 248.23047,21.568361 247.79297,20.24805 247.79297,18.521484 L 250.93359,18.521484 C 250.97265,19.365239 251.16796,20.033207 251.51953,20.525391 C 251.8789,21.009768 252.39453,21.318362 253.06641,21.451172 L 253.06641,16.599609 C 251.2539,16.138679 249.96484,15.537117 249.19922,14.794922 C 248.43359,14.052744 248.05078,13.03712 248.05078,11.748047 C 248.05078,10.318373 248.5039,9.1660301 249.41016,8.2910156 C 250.32422,7.4160318 251.54296,6.959001 253.06641,6.9199219 L 253.06641,5.4199219 L 254.46094,5.4199219 L 254.46094,6.9199219 C 255.98437,6.9980635 257.17186,7.4590005 258.02344,8.3027344 C 258.87499,9.1386864 259.34374,10.318373 259.42969,11.841797 L 256.24219,11.841797 C 256.18749,11.115247 256.01171,10.56056 255.71484,10.177734 C 255.42577,9.7871232 255.0078,9.5683734 254.46094,9.5214844 L 254.46094,13.787109 C 256.39062,14.388681 257.74999,15.07618 258.53906,15.849609 C 259.32811,16.623054 259.72264,17.642584 259.72266,18.908203 C 259.72264,20.400394 259.26171,21.591799 258.33984,22.482422 C 257.42577,23.373047 256.1328,23.892578 254.46094,24.041016 L 254.46094,26.267578 L 253.06641,26.267578 M 254.64844,47.419922 L 254.64844,40.236328 L 250.08984,47.419922 L 254.64844,47.419922 M 254.57813,53.630859 L 254.57813,50.009766 L 247.5,50.009766 L 247.5,47.056641 L 253.6875,37.330078 L 257.84766,37.330078 L 257.84766,47.337891 L 259.79297,47.337891 L 259.79297,50.009766 L 257.84766,50.009766 L 257.84766,53.630859 L 254.57813,53.630859" + id="text5145" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 320.42578,19.740234 C 320.42577,20.263675 320.60155,20.705081 320.95313,21.064453 C 321.30467,21.416018 321.73827,21.591799 322.25391,21.591797 C 322.75389,21.591799 323.18358,21.412112 323.54297,21.052734 C 323.90233,20.68555 324.08201,20.24805 324.08203,19.740234 C 324.08201,19.240239 323.90233,18.814458 323.54297,18.462891 C 323.19139,18.103521 322.7617,17.923834 322.25391,17.923828 C 321.73827,17.923834 321.30467,18.099615 320.95313,18.451172 C 320.60155,18.794927 320.42577,19.224614 320.42578,19.740234 M 317.88281,19.740234 C 317.8828,18.521489 318.30468,17.494147 319.14844,16.658203 C 319.99217,15.822273 321.02733,15.404305 322.25391,15.404297 C 323.45701,15.404305 324.48045,15.830086 325.32422,16.681641 C 326.17576,17.525397 326.60154,18.544927 326.60156,19.740234 C 326.60154,20.943362 326.17576,21.974611 325.32422,22.833984 C 324.47264,23.685547 323.4492,24.111328 322.25391,24.111328 C 321.02733,24.111328 319.99217,23.689453 319.14844,22.845703 C 318.30468,22.001955 317.8828,20.9668 317.88281,19.740234 M 311.07422,24.111328 L 321.08203,6.8496094 L 322.96875,6.8496094 L 312.96094,24.111328 L 311.07422,24.111328 M 310.04297,11.220703 C 310.04297,11.73634 310.21484,12.169933 310.55859,12.521484 C 310.91015,12.873058 311.34375,13.048839 311.85938,13.048828 C 312.36718,13.048839 312.79687,12.873058 313.14844,12.521484 C 313.50781,12.162121 313.68749,11.728528 313.6875,11.220703 C 313.68749,10.720716 313.50781,10.294935 313.14844,9.9433594 C 312.79687,9.5839984 312.36718,9.4043111 311.85938,9.4042969 C 311.34375,9.4043111 310.91015,9.5800922 310.55859,9.9316406 C 310.21484,10.275404 310.04297,10.705091 310.04297,11.220703 M 307.5,11.220703 C 307.5,10.001967 307.92187,8.9707178 308.76563,8.1269531 C 309.60937,7.275407 310.64062,6.8496262 311.85938,6.8496094 C 313.06249,6.8496262 314.08593,7.2793132 314.92969,8.1386719 C 315.78124,8.990249 316.20702,10.017592 316.20703,11.220703 C 316.20702,12.423839 315.78124,13.451182 314.92969,14.302734 C 314.08593,15.146493 313.06249,15.568367 311.85938,15.568359 C 310.63281,15.568367 309.59765,15.150399 308.75391,14.314453 C 307.91797,13.478526 307.5,12.447277 307.5,11.220703 M 310.85156,49.119141 L 314.13281,49.119141 C 314.1875,49.853519 314.43359,50.423831 314.87109,50.830078 C 315.30859,51.228518 315.89453,51.427737 316.62891,51.427734 C 317.53515,51.427737 318.22655,51.162112 318.70313,50.630859 C 319.18749,50.099613 319.42968,49.337895 319.42969,48.345703 C 319.42968,47.416022 319.18358,46.685554 318.69141,46.154297 C 318.19921,45.615242 317.51952,45.345711 316.65234,45.345703 C 316.16796,45.345711 315.74218,45.443368 315.375,45.638672 C 315.00781,45.833992 314.69531,46.123054 314.4375,46.505859 L 311.41406,46.330078 L 312.50391,37.330078 L 322.14844,37.330078 L 322.14844,40.166016 L 314.87109,40.166016 L 314.4375,43.529297 C 314.80468,43.240245 315.22656,43.025401 315.70313,42.884766 C 316.17968,42.736339 316.71093,42.66212 317.29688,42.662109 C 318.96874,42.66212 320.3164,43.169932 321.33984,44.185547 C 322.37108,45.20118 322.88671,46.53321 322.88672,48.181641 C 322.88671,49.986332 322.3203,51.427737 321.1875,52.505859 C 320.05468,53.576172 318.53515,54.111328 316.62891,54.111328 C 314.89453,54.111328 313.51172,53.669922 312.48047,52.787109 C 311.45703,51.896486 310.91406,50.673831 310.85156,49.119141" + id="text5151" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 372.15234,48.298828 C 372.15234,49.25977 372.39062,50.021488 372.86719,50.583984 C 373.35156,51.146487 374.00781,51.427737 374.83594,51.427734 C 375.60937,51.427737 376.21484,51.154299 376.65234,50.607422 C 377.08983,50.06055 377.30858,49.298832 377.30859,48.322266 C 377.30858,47.423834 377.08202,46.724616 376.62891,46.224609 C 376.17577,45.724617 375.53905,45.474618 374.71875,45.474609 C 373.91406,45.474618 373.28515,45.724617 372.83203,46.224609 C 372.3789,46.724616 372.15234,47.416022 372.15234,48.298828 M 372.10547,43.916016 C 372.48828,43.525401 372.94921,43.232432 373.48828,43.037109 C 374.02734,42.833995 374.6289,42.732433 375.29297,42.732422 C 376.93358,42.732433 378.24608,43.232432 379.23047,44.232422 C 380.22264,45.23243 380.71874,46.56446 380.71875,48.228516 C 380.71874,49.994144 380.17968,51.419924 379.10156,52.505859 C 378.02343,53.591797 376.60155,54.134765 374.83594,54.134766 C 372.79687,54.134765 371.24609,53.431641 370.18359,52.025391 C 369.1289,50.619144 368.60156,48.560552 368.60156,45.849609 C 368.60156,42.935558 369.16797,40.708997 370.30078,39.169922 C 371.43359,37.623063 373.0664,36.849626 375.19922,36.849609 C 376.68358,36.849626 377.8789,37.236345 378.78516,38.009766 C 379.69921,38.783218 380.19921,39.830092 380.28516,41.150391 L 376.88672,41.150391 C 376.80858,40.611341 376.59765,40.205092 376.25391,39.931641 C 375.91015,39.658217 375.42968,39.521498 374.8125,39.521484 C 373.96874,39.521498 373.32031,39.888686 372.86719,40.623047 C 372.41406,41.349622 372.16015,42.447277 372.10547,43.916016" + id="text5157" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 432.85547,16.095703 L 431.96484,16.740234 C 431.60546,16.990241 431.33593,17.291022 431.15625,17.642578 C 430.97656,17.994146 430.88671,18.388677 430.88672,18.826172 C 430.88671,19.490239 431.11328,20.048832 431.56641,20.501953 C 432.01953,20.955081 432.58593,21.181643 433.26563,21.181641 C 433.76562,21.181643 434.24218,21.080081 434.69531,20.876953 C 435.15624,20.666019 435.58202,20.361331 435.97266,19.962891 L 432.85547,16.095703 M 433.79297,12.404297 L 434.20313,12.111328 C 434.57812,11.853527 434.85546,11.564465 435.03516,11.244141 C 435.21483,10.923841 435.30468,10.556654 435.30469,10.142578 C 435.30468,9.7441545 435.17968,9.4277486 434.92969,9.1933594 C 434.68749,8.958999 434.35546,8.8418117 433.93359,8.8417969 C 433.5039,8.8418117 433.16406,8.9629053 432.91406,9.2050781 C 432.66406,9.4394673 432.53906,9.7597795 432.53906,10.166016 C 432.53906,10.384779 432.59765,10.62306 432.71484,10.880859 C 432.83984,11.138684 433.01562,11.412122 433.24219,11.701172 L 433.79297,12.404297 M 431.15625,13.962891 L 430.47656,13.072266 C 430.125,12.603527 429.87109,12.166027 429.71484,11.759766 C 429.5664,11.345715 429.49218,10.912122 429.49219,10.458984 C 429.49218,9.2089988 429.89062,8.2168123 430.6875,7.4824219 C 431.49218,6.7402513 432.58203,6.3691579 433.95703,6.3691406 C 435.27733,6.3691579 436.3203,6.7090013 437.08594,7.3886719 C 437.85155,8.0683749 438.23436,8.9863428 438.23438,10.142578 C 438.23436,11.017591 438.0078,11.802746 437.55469,12.498047 C 437.10936,13.185557 436.40624,13.833994 435.44531,14.443359 L 437.91797,17.490234 C 438.15233,17.107428 438.33593,16.677741 438.46875,16.201172 C 438.60936,15.724617 438.70702,15.193368 438.76172,14.607422 L 441.80859,14.607422 C 441.72264,15.623055 441.5117,16.56446 441.17578,17.431641 C 440.83983,18.298833 440.37889,19.091801 439.79297,19.810547 L 442.93359,23.630859 L 438.94922,23.630859 L 437.77734,22.189453 C 437.08983,22.822266 436.33202,23.302735 435.50391,23.630859 C 434.68359,23.951172 433.82421,24.111328 432.92578,24.111328 C 431.33203,24.111328 430.02734,23.638672 429.01172,22.693359 C 428.0039,21.748049 427.5,20.541019 427.5,19.072266 C 427.5,17.978521 427.78125,17.037116 428.34375,16.248047 C 428.90625,15.458993 429.84375,14.697275 431.15625,13.962891 M 434.66016,53.630859 L 431.15625,53.630859 C 431.28125,51.341799 431.83203,49.07227 432.80859,46.822266 C 433.79296,44.572275 435.19531,42.361339 437.01563,40.189453 L 428.76563,40.189453 L 428.76563,37.330078 L 440.66016,37.330078 L 440.66016,39.849609 C 438.8164,41.880871 437.39843,44.029306 436.40625,46.294922 C 435.42187,48.560552 434.83984,51.005862 434.66016,53.630859" + id="text5163" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 493.5,13.212891 L 491.4375,16.119141 L 489.44531,14.724609 L 491.69531,11.900391 L 488.41406,10.986328 L 489.17578,8.6074219 L 492.32813,9.7324219 L 492.32813,6.3691406 L 494.64844,6.3691406 L 494.64844,9.7324219 L 497.80078,8.6308594 L 498.58594,11.009766 L 495.30469,11.900391 L 497.53125,14.701172 L 495.49219,16.166016 L 493.5,13.212891 M 490.875,48.755859 C 490.875,49.576176 491.10156,50.208988 491.55469,50.654297 C 492.01562,51.099612 492.67187,51.322268 493.52344,51.322266 C 494.33593,51.322268 494.97265,51.095706 495.43359,50.642578 C 495.90233,50.189457 496.13671,49.560551 496.13672,48.755859 C 496.13671,47.982428 495.89843,47.361334 495.42188,46.892578 C 494.9453,46.423835 494.31249,46.189461 493.52344,46.189453 C 492.73437,46.189461 492.09374,46.427742 491.60156,46.904297 C 491.11718,47.380866 490.875,47.998053 490.875,48.755859 M 491.14453,41.560547 C 491.14453,42.208996 491.34765,42.708995 491.75391,43.060547 C 492.16015,43.404307 492.74218,43.576182 493.5,43.576172 C 494.2578,43.576182 494.83984,43.400401 495.24609,43.048828 C 495.66015,42.697277 495.86718,42.201183 495.86719,41.560547 C 495.86718,40.93556 495.65624,40.443373 495.23438,40.083984 C 494.81249,39.724623 494.23437,39.544936 493.5,39.544922 C 492.78124,39.544936 492.20703,39.72853 491.77734,40.095703 C 491.35546,40.462904 491.14453,40.951185 491.14453,41.560547 M 489.9375,44.818359 C 489.23437,44.427744 488.72656,43.970713 488.41406,43.447266 C 488.10156,42.923839 487.94531,42.255871 487.94531,41.443359 C 487.94531,40.005873 488.4375,38.876968 489.42188,38.056641 C 490.40625,37.236345 491.76562,36.826189 493.5,36.826172 C 495.24999,36.826189 496.61718,37.236345 497.60156,38.056641 C 498.59374,38.869155 499.08983,39.998061 499.08984,41.443359 C 499.08983,42.216808 498.92186,42.888683 498.58594,43.458984 C 498.24999,44.021494 497.74608,44.474619 497.07422,44.818359 C 497.89452,45.20118 498.51171,45.73243 498.92578,46.412109 C 499.33983,47.083991 499.54686,47.904303 499.54688,48.873047 C 499.54686,50.505862 499.0078,51.787111 497.92969,52.716797 C 496.85936,53.646484 495.3828,54.111328 493.5,54.111328 C 491.59375,54.111328 490.11328,53.650391 489.05859,52.728516 C 488.0039,51.806642 487.47656,50.521487 487.47656,48.873047 C 487.47656,47.912115 487.67187,47.107428 488.0625,46.458984 C 488.46094,45.802742 489.08594,45.255868 489.9375,44.818359" + id="text5169" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 557.85938,6.3691406 C 556.78124,8.1347811 555.98046,9.9316543 555.45703,11.759766 C 554.93359,13.587901 554.67187,15.505868 554.67188,17.513672 C 554.67187,19.513676 554.93359,21.427737 555.45703,23.255859 C 555.98046,25.083983 556.78124,26.880856 557.85938,28.646484 L 555.38672,28.646484 C 554.01953,26.779294 552.98046,24.904296 552.26953,23.021484 C 551.5664,21.130862 551.21484,19.294926 551.21484,17.513672 C 551.21484,15.73243 551.5664,13.896494 552.26953,12.005859 C 552.98046,10.115248 554.01953,8.2363435 555.38672,6.3691406 L 557.85938,6.3691406 M 556.06641,42.685547 C 556.0664,41.724621 555.82421,40.96681 555.33984,40.412109 C 554.86327,39.849623 554.21093,39.568373 553.38281,39.568359 C 552.60156,39.568373 551.99218,39.837904 551.55469,40.376953 C 551.125,40.916028 550.91015,41.669934 550.91016,42.638672 C 550.91015,43.544932 551.13671,44.251963 551.58984,44.759766 C 552.04296,45.267586 552.67968,45.521492 553.5,45.521484 C 554.30468,45.521492 554.93359,45.271493 555.38672,44.771484 C 555.83983,44.271494 556.0664,43.576182 556.06641,42.685547 M 556.125,47.056641 C 555.73437,47.447272 555.27343,47.74024 554.74219,47.935547 C 554.21093,48.130865 553.61327,48.228521 552.94922,48.228516 C 551.30078,48.228521 549.98047,47.732428 548.98828,46.740234 C 547.99609,45.748055 547.5,44.419931 547.5,42.755859 C 547.5,40.990247 548.03906,39.564467 549.11719,38.478516 C 550.19531,37.392594 551.61718,36.849626 553.38281,36.849609 C 555.42968,36.849626 556.98436,37.556657 558.04688,38.970703 C 559.11718,40.376966 559.65233,42.431652 559.65234,45.134766 C 559.65233,48.041021 559.08202,50.267581 557.94141,51.814453 C 556.80077,53.361328 555.16015,54.134765 553.01953,54.134766 C 551.54296,54.134765 550.35156,53.751953 549.44531,52.986328 C 548.53906,52.212892 548.04297,51.162112 547.95703,49.833984 L 551.34375,49.845703 C 551.42187,50.384769 551.63281,50.787112 551.97656,51.052734 C 552.32031,51.318362 552.80468,51.451174 553.42969,51.451172 C 554.27343,51.451174 554.91796,51.083987 555.36328,50.349609 C 555.80858,49.615238 556.06249,48.517583 556.125,47.056641" + id="text5175" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 609.375,6.3691406 L 611.87109,6.3691406 C 613.23046,8.228531 614.26171,10.103529 614.96484,11.994141 C 615.66796,13.876963 616.01952,15.716805 616.01953,17.513672 C 616.01952,19.302739 615.66796,21.142581 614.96484,23.033203 C 614.26171,24.923827 613.23046,26.794919 611.87109,28.646484 L 609.375,28.646484 C 610.46094,26.873044 611.26562,25.072264 611.78906,23.244141 C 612.32031,21.408205 612.58593,19.498051 612.58594,17.513672 C 612.58593,15.521492 612.32031,13.611338 611.78906,11.783203 C 611.26562,9.9550918 610.46094,8.1504061 609.375,6.3691406 M 610.98047,45.474609 C 610.98046,47.513678 611.18359,48.994145 611.58984,49.916016 C 612.0039,50.837893 612.66015,51.29883 613.55859,51.298828 C 614.45702,51.29883 615.11327,50.833987 615.52734,49.904297 C 615.9414,48.974614 616.14843,47.498053 616.14844,45.474609 C 616.14843,43.44337 615.9414,41.966809 615.52734,41.044922 C 615.11327,40.12306 614.45702,39.662123 613.55859,39.662109 C 612.66015,39.662123 612.0039,40.12306 611.58984,41.044922 C 611.18359,41.958996 610.98046,43.435557 610.98047,45.474609 M 607.5,45.474609 C 607.5,42.591808 608,40.43556 609,39.005859 C 610.00781,37.568375 611.52734,36.849626 613.55859,36.849609 C 615.58202,36.849626 617.09765,37.572282 618.10547,39.017578 C 619.12108,40.455091 619.62889,42.615245 619.62891,45.498047 C 619.62889,48.380865 619.12499,50.533206 618.11719,51.955078 C 617.11718,53.376953 615.59765,54.08789 613.55859,54.087891 C 611.52734,54.08789 610.00781,53.373047 609,51.943359 C 608,50.513675 607.5,48.357427 607.5,45.474609" + id="text5181" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 667.5,26.900391 L 679.5,26.900391 L 679.5,29.291016 L 667.5,29.291016 L 667.5,26.900391 M 670.20703,48.849609 L 670.20703,45.638672 L 676.79297,45.638672 L 676.79297,48.849609 L 670.20703,48.849609" + id="text5187" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 733.33594,9.3222656 L 735.70313,9.3222656 L 735.70313,15.298828 L 741.53906,15.298828 L 741.53906,17.630859 L 735.70313,17.630859 L 735.70313,23.630859 L 733.33594,23.630859 L 733.33594,17.630859 L 727.5,17.630859 L 727.5,15.298828 L 733.33594,15.298828 L 733.33594,9.3222656 M 727.5,47.818359 L 741.53906,47.818359 L 741.53906,50.150391 L 727.5,50.150391 L 727.5,47.818359 M 727.5,42.779297 L 741.53906,42.779297 L 741.53906,45.111328 L 727.5,45.111328 L 727.5,42.779297" + id="text5201" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 11.070313,95.601563 L 11.070313,86.148438 L 7.65625,86.148438 L 7.65625,84.09375 L 16.828125,84.09375 L 16.828125,86.148438 L 13.4375,86.148438 L 13.4375,95.601563 L 11.070313,95.601563 M 22.859375,94.546875 C 22.572911,94.989584 22.197911,95.328125 21.734375,95.5625 C 21.270829,95.791666 20.731767,95.90625 20.117188,95.90625 C 19.294269,95.90625 18.658853,95.671875 18.210938,95.203125 C 17.768228,94.734376 17.546874,94.06771 17.546875,93.203125 C 17.546874,92.401045 17.768228,91.789066 18.210938,91.367188 C 18.658853,90.945317 19.395831,90.656255 20.421875,90.5 C 20.656246,90.463547 20.963538,90.42188 21.34375,90.375 C 22.307286,90.250005 22.789057,89.97136 22.789063,89.539063 C 22.789057,89.195319 22.682286,88.950527 22.46875,88.804688 C 22.255203,88.653653 21.898433,88.578132 21.398438,88.578125 C 20.9401,88.578132 20.588538,88.669278 20.34375,88.851563 C 20.098955,89.033861 19.97656,89.294277 19.976563,89.632813 L 19.976563,89.757813 L 17.851563,89.757813 L 17.851563,89.601563 C 17.851562,88.731778 18.158853,88.049487 18.773438,87.554688 C 19.388018,87.054696 20.236976,86.804696 21.320313,86.804688 C 22.507807,86.804696 23.41666,87.010425 24.046875,87.421875 C 24.682284,87.833341 24.999992,88.427091 25,89.203125 L 25,94.03125 C 24.999992,94.385418 25.03645,94.651043 25.109375,94.828125 C 25.182283,95.000001 25.304679,95.130209 25.476563,95.21875 L 25.476563,95.601563 L 23.109375,95.601563 C 23.031244,95.455729 22.971348,95.294271 22.929688,95.117188 C 22.888015,94.940105 22.864577,94.750001 22.859375,94.546875 M 22.820313,91.421875 C 22.450515,91.593754 22.023432,91.731775 21.539063,91.835938 C 21.059892,91.940108 20.812496,91.994795 20.796875,92 C 20.39583,92.114587 20.11458,92.257816 19.953125,92.429688 C 19.796872,92.601566 19.718747,92.838544 19.71875,93.140625 C 19.718747,93.453127 19.82031,93.703127 20.023438,93.890625 C 20.226559,94.072918 20.499997,94.164064 20.84375,94.164063 C 21.458329,94.164064 21.940099,93.992189 22.289063,93.648438 C 22.643224,93.299481 22.820307,92.825524 22.820313,92.226563 L 22.820313,91.421875 M 27.039063,84.09375 L 29.25,84.09375 L 29.25,88.164063 C 29.531246,87.721362 29.882809,87.388029 30.304688,87.164063 C 30.731766,86.934905 31.216141,86.820321 31.757813,86.820313 C 32.783847,86.820321 33.622388,87.2448 34.273438,88.09375 C 34.92447,88.937507 35.249991,90.036464 35.25,91.390625 C 35.249991,92.734378 34.92447,93.820314 34.273438,94.648438 C 33.622388,95.476563 32.773431,95.890625 31.726563,95.890625 C 31.179682,95.890625 30.70312,95.776041 30.296875,95.546875 C 29.895829,95.317709 29.531246,94.953126 29.203125,94.453125 L 29.203125,95.601563 L 27.039063,95.601563 L 27.039063,84.09375 M 32.992188,91.296875 C 32.992181,90.51563 32.828118,89.903652 32.5,89.460938 C 32.171869,89.013027 31.721348,88.789069 31.148438,88.789063 C 30.544266,88.789069 30.075517,89.007819 29.742188,89.445313 C 29.414059,89.87761 29.249997,90.494797 29.25,91.296875 C 29.249997,92.161462 29.406247,92.817711 29.71875,93.265625 C 30.036454,93.713544 30.497391,93.937502 31.101563,93.9375 C 31.71614,93.937502 32.18489,93.713544 32.507813,93.265625 C 32.830722,92.812503 32.992181,92.156253 32.992188,91.296875" + id="text5427" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 789.76563,44.369141 L 792.57031,44.369141 C 793.23176,44.369143 793.71353,44.249351 794.01563,44.009766 C 794.3177,43.770185 794.46874,43.392581 794.46875,42.876953 C 794.46874,42.340499 794.3203,41.955083 794.02344,41.720703 C 793.72656,41.481125 793.23697,41.361333 792.55469,41.361328 L 789.76563,41.361328 L 789.76563,44.369141 M 789.76563,39.392578 L 792.46875,39.392578 C 793.05208,39.392585 793.47916,39.293627 793.75,39.095703 C 794.02083,38.892586 794.15624,38.574878 794.15625,38.142578 C 794.15624,37.720712 794.02343,37.416025 793.75781,37.228516 C 793.49739,37.035817 793.06249,36.939463 792.45313,36.939453 L 789.76563,36.939453 L 789.76563,39.392578 M 787.5,46.447266 L 787.5,34.939453 L 792.92188,34.939453 C 794.09895,34.939465 794.99478,35.189464 795.60938,35.689453 C 796.22916,36.184255 796.53905,36.905609 796.53906,37.853516 C 796.53905,38.436857 796.42447,38.923836 796.19531,39.314453 C 795.96614,39.705085 795.62239,40.007168 795.16406,40.220703 C 795.7578,40.460292 796.20051,40.806646 796.49219,41.259766 C 796.78905,41.707687 796.93749,42.267582 796.9375,42.939453 C 796.93749,44.059247 796.57291,44.92383 795.84375,45.533203 C 795.11457,46.142578 794.08072,46.447266 792.74219,46.447266 L 787.5,46.447266 M 803.45313,45.392578 C 803.16666,45.835287 802.79166,46.173828 802.32813,46.408203 C 801.86458,46.63737 801.32552,46.751953 800.71094,46.751953 C 799.88802,46.751953 799.2526,46.517578 798.80469,46.048828 C 798.36198,45.580079 798.14062,44.913413 798.14063,44.048828 C 798.14062,43.246748 798.36198,42.634769 798.80469,42.212891 C 799.2526,41.79102 799.98958,41.501958 801.01563,41.345703 C 801.25,41.30925 801.55729,41.267583 801.9375,41.220703 C 802.90104,41.095708 803.38281,40.817063 803.38281,40.384766 C 803.38281,40.041022 803.27604,39.796231 803.0625,39.650391 C 802.84895,39.499356 802.49218,39.423835 801.99219,39.423828 C 801.53385,39.423835 801.18229,39.514981 800.9375,39.697266 C 800.69271,39.879564 800.57031,40.13998 800.57031,40.478516 L 800.57031,40.603516 L 798.44531,40.603516 L 798.44531,40.447266 C 798.44531,39.577481 798.7526,38.89519 799.36719,38.400391 C 799.98177,37.900399 800.83073,37.650399 801.91406,37.650391 C 803.10156,37.650399 804.01041,37.856128 804.64063,38.267578 C 805.27603,38.679044 805.59374,39.272794 805.59375,40.048828 L 805.59375,44.876953 C 805.59374,45.231121 805.6302,45.496746 805.70313,45.673828 C 805.77603,45.845704 805.89843,45.975912 806.07031,46.064453 L 806.07031,46.447266 L 803.70313,46.447266 C 803.62499,46.301432 803.5651,46.139974 803.52344,45.962891 C 803.48176,45.785808 803.45833,45.595704 803.45313,45.392578 M 803.41406,42.267578 C 803.04427,42.439457 802.61718,42.577478 802.13281,42.681641 C 801.65364,42.785811 801.40625,42.840498 801.39063,42.845703 C 800.98958,42.96029 800.70833,43.103519 800.54688,43.275391 C 800.39062,43.447269 800.3125,43.684248 800.3125,43.986328 C 800.3125,44.29883 800.41406,44.54883 800.61719,44.736328 C 800.82031,44.918621 801.09375,45.009767 801.4375,45.009766 C 802.05208,45.009767 802.53385,44.837892 802.88281,44.494141 C 803.23697,44.145185 803.41406,43.671227 803.41406,43.072266 L 803.41406,42.267578 M 812.71875,43.244141 L 814.96094,43.244141 C 814.86718,44.322268 814.47395,45.173829 813.78125,45.798828 C 813.08854,46.423828 812.19791,46.736328 811.10938,46.736328 C 809.875,46.736328 808.90625,46.335287 808.20313,45.533203 C 807.50521,44.725913 807.15625,43.611331 807.15625,42.189453 C 807.15625,40.772792 807.51302,39.663418 808.22656,38.861328 C 808.94531,38.054045 809.93229,37.650399 811.1875,37.650391 C 812.28645,37.650399 813.16666,37.942066 813.82813,38.525391 C 814.49478,39.108731 814.86718,39.92123 814.94531,40.962891 L 812.6875,40.962891 C 812.62499,40.509772 812.46614,40.163418 812.21094,39.923828 C 811.95572,39.684252 811.61979,39.56446 811.20313,39.564453 C 810.64062,39.56446 810.21875,39.785814 809.9375,40.228516 C 809.66146,40.67123 809.52343,41.335292 809.52344,42.220703 C 809.52343,43.038415 809.66666,43.668623 809.95313,44.111328 C 810.24479,44.54883 810.66145,44.76758 811.20313,44.767578 C 811.62499,44.76758 811.96354,44.639976 812.21875,44.384766 C 812.47395,44.12956 812.64062,43.749352 812.71875,43.244141 M 816.44531,46.447266 L 816.44531,34.939453 L 818.65625,34.939453 L 818.65625,40.978516 L 821.35938,37.955078 L 824.09375,37.955078 L 821.13281,41.103516 L 824.27344,46.447266 L 821.54688,46.447266 L 819.51563,42.830078 L 818.65625,43.759766 L 818.65625,46.447266 L 816.44531,46.447266 M 824.79688,43.681641 L 827.0625,43.681641 C 827.08333,44.113935 827.23958,44.436851 827.53125,44.650391 C 827.82291,44.858726 828.26041,44.962892 828.84375,44.962891 C 829.28645,44.962892 829.6276,44.889976 829.86719,44.744141 C 830.11197,44.593101 830.23437,44.382164 830.23438,44.111328 C 830.23437,43.725914 829.78124,43.436852 828.875,43.244141 C 828.5052,43.166019 828.21093,43.098311 827.99219,43.041016 C 826.88802,42.759769 826.11979,42.426436 825.6875,42.041016 C 825.26042,41.655604 825.04687,41.134771 825.04688,40.478516 C 825.04687,39.608731 825.35937,38.921231 825.98438,38.416016 C 826.61458,37.905608 827.46614,37.650399 828.53906,37.650391 C 829.67447,37.650399 830.5651,37.903003 831.21094,38.408203 C 831.86197,38.913419 832.20833,39.624356 832.25,40.541016 L 830.03906,40.541016 C 830.02343,40.181647 829.88541,39.903001 829.625,39.705078 C 829.36979,39.507168 829.01302,39.40821 828.55469,39.408203 C 828.12239,39.40821 827.79948,39.473314 827.58594,39.603516 C 827.3776,39.733731 827.27343,39.929043 827.27344,40.189453 C 827.27343,40.528001 827.83854,40.82748 828.96875,41.087891 C 829.22916,41.145188 829.43489,41.192063 829.58594,41.228516 C 830.71614,41.494146 831.48697,41.814458 831.89844,42.189453 C 832.3151,42.564457 832.52343,43.093102 832.52344,43.775391 C 832.52343,44.738934 832.18228,45.473308 831.5,45.978516 C 830.82291,46.483724 829.83593,46.736328 828.53906,46.736328 C 827.36718,46.736328 826.45052,46.473307 825.78906,45.947266 C 825.1276,45.421225 824.79687,44.697267 824.79688,43.775391 L 824.79688,43.681641 M 840.02344,42.251953 C 840.02343,41.397792 839.86197,40.74675 839.53906,40.298828 C 839.21614,39.84571 838.74739,39.619147 838.13281,39.619141 C 837.52864,39.619147 837.0677,39.843106 836.75,40.291016 C 836.4375,40.738938 836.28125,41.392583 836.28125,42.251953 C 836.28125,43.05404 836.44531,43.673831 836.77344,44.111328 C 837.10677,44.54883 837.57552,44.76758 838.17969,44.767578 C 838.7526,44.76758 839.20312,44.543622 839.53125,44.095703 C 839.85937,43.647789 840.02343,43.033207 840.02344,42.251953 M 834.07031,49.853516 L 834.07031,37.955078 L 836.23438,37.955078 L 836.23438,39.103516 C 836.5625,38.603523 836.92708,38.23894 837.32813,38.009766 C 837.73437,37.780608 838.21093,37.666024 838.75781,37.666016 C 839.80468,37.666024 840.65364,38.080086 841.30469,38.908203 C 841.95572,39.731127 842.28124,40.814459 842.28125,42.158203 C 842.28124,43.517581 841.95572,44.621747 841.30469,45.470703 C 840.65364,46.314453 839.8151,46.736328 838.78906,46.736328 C 838.24739,46.736328 837.76302,46.621745 837.33594,46.392578 C 836.91406,46.163412 836.5625,45.830079 836.28125,45.392578 L 836.28125,49.853516 L 834.07031,49.853516 M 848.70313,45.392578 C 848.41666,45.835287 848.04166,46.173828 847.57813,46.408203 C 847.11458,46.63737 846.57552,46.751953 845.96094,46.751953 C 845.13802,46.751953 844.5026,46.517578 844.05469,46.048828 C 843.61198,45.580079 843.39062,44.913413 843.39063,44.048828 C 843.39062,43.246748 843.61198,42.634769 844.05469,42.212891 C 844.5026,41.79102 845.23958,41.501958 846.26563,41.345703 C 846.5,41.30925 846.80729,41.267583 847.1875,41.220703 C 848.15104,41.095708 848.63281,40.817063 848.63281,40.384766 C 848.63281,40.041022 848.52604,39.796231 848.3125,39.650391 C 848.09895,39.499356 847.74218,39.423835 847.24219,39.423828 C 846.78385,39.423835 846.43229,39.514981 846.1875,39.697266 C 845.94271,39.879564 845.82031,40.13998 845.82031,40.478516 L 845.82031,40.603516 L 843.69531,40.603516 L 843.69531,40.447266 C 843.69531,39.577481 844.0026,38.89519 844.61719,38.400391 C 845.23177,37.900399 846.08073,37.650399 847.16406,37.650391 C 848.35156,37.650399 849.26041,37.856128 849.89063,38.267578 C 850.52603,38.679044 850.84374,39.272794 850.84375,40.048828 L 850.84375,44.876953 C 850.84374,45.231121 850.8802,45.496746 850.95313,45.673828 C 851.02603,45.845704 851.14843,45.975912 851.32031,46.064453 L 851.32031,46.447266 L 848.95313,46.447266 C 848.87499,46.301432 848.8151,46.139974 848.77344,45.962891 C 848.73176,45.785808 848.70833,45.595704 848.70313,45.392578 M 848.66406,42.267578 C 848.29427,42.439457 847.86718,42.577478 847.38281,42.681641 C 846.90364,42.785811 846.65625,42.840498 846.64063,42.845703 C 846.23958,42.96029 845.95833,43.103519 845.79688,43.275391 C 845.64062,43.447269 845.5625,43.684248 845.5625,43.986328 C 845.5625,44.29883 845.66406,44.54883 845.86719,44.736328 C 846.07031,44.918621 846.34375,45.009767 846.6875,45.009766 C 847.30208,45.009767 847.78385,44.837892 848.13281,44.494141 C 848.48697,44.145185 848.66406,43.671227 848.66406,43.072266 L 848.66406,42.267578 M 857.96875,43.244141 L 860.21094,43.244141 C 860.11718,44.322268 859.72395,45.173829 859.03125,45.798828 C 858.33854,46.423828 857.44791,46.736328 856.35938,46.736328 C 855.125,46.736328 854.15625,46.335287 853.45313,45.533203 C 852.75521,44.725913 852.40625,43.611331 852.40625,42.189453 C 852.40625,40.772792 852.76302,39.663418 853.47656,38.861328 C 854.19531,38.054045 855.18229,37.650399 856.4375,37.650391 C 857.53645,37.650399 858.41666,37.942066 859.07813,38.525391 C 859.74478,39.108731 860.11718,39.92123 860.19531,40.962891 L 857.9375,40.962891 C 857.87499,40.509772 857.71614,40.163418 857.46094,39.923828 C 857.20572,39.684252 856.86979,39.56446 856.45313,39.564453 C 855.89062,39.56446 855.46875,39.785814 855.1875,40.228516 C 854.91146,40.67123 854.77343,41.335292 854.77344,42.220703 C 854.77343,43.038415 854.91666,43.668623 855.20313,44.111328 C 855.49479,44.54883 855.91145,44.76758 856.45313,44.767578 C 856.87499,44.76758 857.21354,44.639976 857.46875,44.384766 C 857.72395,44.12956 857.89062,43.749352 857.96875,43.244141 M 866.88281,43.869141 L 869.14844,43.869141 C 868.91926,44.764976 868.45572,45.4681 867.75781,45.978516 C 867.0651,46.483724 866.21874,46.736328 865.21875,46.736328 C 863.98958,46.736328 863.01562,46.32487 862.29688,45.501953 C 861.57812,44.67383 861.21875,43.554039 861.21875,42.142578 C 861.21875,40.751959 861.57292,39.655606 862.28125,38.853516 C 862.98958,38.051441 863.95833,37.650399 865.1875,37.650391 C 866.48958,37.650399 867.49478,38.046232 868.20313,38.837891 C 868.91145,39.624356 869.26562,40.74675 869.26563,42.205078 C 869.26562,42.366541 869.26301,42.488936 869.25781,42.572266 C 869.2578,42.650394 869.2526,42.725915 869.24219,42.798828 L 863.57031,42.798828 C 863.60156,43.465498 863.76302,43.968101 864.05469,44.306641 C 864.35156,44.645184 864.77604,44.814455 865.32813,44.814453 C 865.71874,44.814455 866.03906,44.738934 866.28906,44.587891 C 866.53906,44.431643 866.73697,44.19206 866.88281,43.869141 M 863.57031,41.306641 L 866.91406,41.306641 C 866.89322,40.73373 866.73958,40.298834 866.45313,40.001953 C 866.17187,39.699877 865.76562,39.548835 865.23438,39.548828 C 864.73958,39.548835 864.34895,39.699877 864.0625,40.001953 C 863.78125,40.304043 863.61718,40.738938 863.57031,41.306641" + id="text5207" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 840,17.646484 L 797.02608,17.646484" + id="path5439" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 802.5,25.146484 L 802.5,10.146484 L 787.5,17.646484 L 802.5,25.146484 z " + id="path5441" /> + <g + id="g5459" + transform="translate(0,7.5)"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 82.50003,75 L 54.020182,75" + id="path5453" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z " + id="path5455" /> + <path + id="path5457" + d="M 45,67.5 C 45,82.5 45,82.5 45,82.5" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g5464" + transform="matrix(-1,9.581637e-17,-9.581637e-17,-1,127.5,172.5)"> + <path + id="path5466" + d="M 82.50003,75 L 54.020182,75" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path5468" + d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z " + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 45,67.5 C 45,82.5 45,82.5 45,82.5" + id="path5470" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 107.0625,80.560547 L 105.23438,78.779297 L 107.17969,76.763672 L 109.05469,78.591797 C 109.30467,78.123052 109.49608,77.587897 109.62891,76.986328 C 109.7617,76.384773 109.82811,75.728524 109.82813,75.017578 C 109.82811,73.119151 109.40233,71.646496 108.55078,70.599609 C 107.69921,69.544936 106.5078,69.017593 104.97656,69.017578 C 103.46093,69.017593 102.28124,69.54103 101.4375,70.587891 C 100.59374,71.634778 100.17187,73.111339 100.17188,75.017578 C 100.17187,76.916022 100.59374,78.392583 101.4375,79.447266 C 102.28124,80.494144 103.46093,81.017581 104.97656,81.017578 C 105.36718,81.017581 105.73436,80.978518 106.07813,80.900391 C 106.42968,80.822268 106.7578,80.708987 107.0625,80.560547 M 109.55859,82.916016 C 108.97264,83.306641 108.28905,83.603516 107.50781,83.806641 C 106.73436,84.009765 105.89061,84.111328 104.97656,84.111328 C 102.39843,84.111328 100.34765,83.291016 98.824219,81.650391 C 97.308592,80.009769 96.55078,77.798834 96.550781,75.017578 C 96.55078,72.228527 97.308592,70.017592 98.824219,68.384766 C 100.34765,66.744158 102.39843,65.923846 104.97656,65.923828 C 107.55468,65.923846 109.60545,66.744158 111.12891,68.384766 C 112.66014,70.025404 113.42576,72.23634 113.42578,75.017578 C 113.42576,76.236336 113.26951,77.353522 112.95703,78.369141 C 112.64451,79.376957 112.18358,80.259769 111.57422,81.017578 L 113.44922,82.810547 L 111.52734,84.826172 L 109.55859,82.916016" + id="text5474" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 158.94141,83.630859 L 153.99609,66.369141 L 157.67578,66.369141 L 160.62891,78.544922 L 163.125,66.369141 L 166.91016,66.369141 L 169.40625,78.544922 L 172.35938,66.369141 L 176.00391,66.369141 L 171.07031,83.630859 L 167.68359,83.630859 L 165.01172,70.412109 L 162.32813,83.630859 L 158.94141,83.630859" + id="text5482" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 218.52539,83.630859 L 218.52539,66.369141 L 231.05273,66.369141 L 231.05273,69.369141 L 222.0293,69.369141 L 222.0293,73.048828 L 230.2793,73.048828 L 230.2793,76.001953 L 222.0293,76.001953 L 222.0293,80.443359 L 231.47461,80.443359 L 231.47461,83.630859 L 218.52539,83.630859" + id="text5492" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 281.4375,73.916016 L 285.60938,73.916016 C 286.51561,73.916025 287.17968,73.732432 287.60156,73.365234 C 288.03124,72.998058 288.24608,72.419933 288.24609,71.630859 C 288.24608,70.880872 288.03905,70.314466 287.625,69.931641 C 287.21093,69.54103 286.59374,69.345717 285.77344,69.345703 L 281.4375,69.345703 L 281.4375,73.916016 M 277.88672,83.630859 L 277.88672,66.369141 L 286.25391,66.369141 C 288.13671,66.369158 289.53124,66.771501 290.4375,67.576172 C 291.34373,68.380875 291.79686,69.611342 291.79688,71.267578 C 291.79686,72.322277 291.5742,73.201182 291.12891,73.904297 C 290.69139,74.607431 290.05858,75.087899 289.23047,75.345703 C 289.98045,75.611336 290.5117,76.017586 290.82422,76.564453 C 291.14452,77.111335 291.32811,77.962896 291.375,79.119141 L 291.44531,81.158203 C 291.4453,81.173831 291.4453,81.197268 291.44531,81.228516 C 291.46873,82.259767 291.69139,82.884766 292.11328,83.103516 L 292.11328,83.630859 L 288.22266,83.630859 C 288.09764,83.388672 287.99999,83.091797 287.92969,82.740234 C 287.86718,82.380861 287.82811,81.95508 287.8125,81.462891 L 287.76563,79.646484 C 287.72655,78.576177 287.52343,77.853521 287.15625,77.478516 C 286.79686,77.103522 286.14452,76.916022 285.19922,76.916016 L 281.4375,76.916016 L 281.4375,83.630859 L 277.88672,83.630859" + id="text5500" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 343.24219,83.630859 L 343.24219,69.451172 L 338.12109,69.451172 L 338.12109,66.369141 L 351.87891,66.369141 L 351.87891,69.451172 L 346.79297,69.451172 L 346.79297,83.630859 L 343.24219,83.630859" + id="text5504" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 407.06836,83.630859 L 403.51758,83.630859 L 403.51758,77.197266 L 397.24805,66.369141 L 401.5957,66.369141 L 405.28711,73.810547 L 408.69727,66.369141 L 412.75195,66.369141 L 407.06836,77.197266 L 407.06836,83.630859" + id="text5518" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 458.08594,66.105469 L 461.67188,66.105469 L 461.67188,76.933594 C 461.67187,78.269536 461.93749,79.246098 462.46875,79.863281 C 462.99999,80.472659 463.84374,80.777346 465,80.777344 C 466.17187,80.777346 467.02343,80.472659 467.55469,79.863281 C 468.09374,79.25391 468.36327,78.277349 468.36328,76.933594 L 468.36328,66.105469 L 471.91406,66.105469 L 471.91406,77.320313 C 471.91405,79.437504 471.3203,81.062502 470.13281,82.195313 C 468.95311,83.328125 467.24999,83.894531 465.02344,83.894531 C 462.78124,83.894531 461.0625,83.332031 459.86719,82.207031 C 458.67969,81.074221 458.08594,79.445316 458.08594,77.320313 L 458.08594,66.105469" + id="text5522" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 523.22461,83.630859 L 523.22461,66.369141 L 526.77539,66.369141 L 526.77539,83.630859 L 523.22461,83.630859" + id="text5526" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 580.18359,75 C 580.18359,76.898444 580.60546,78.375005 581.44922,79.429688 C 582.29296,80.476566 583.47265,81.000003 584.98828,81 C 586.51952,81.000003 587.71093,80.476566 588.5625,79.429688 C 589.41405,78.375005 589.83983,76.898444 589.83984,75 C 589.83983,73.101573 589.41405,71.628918 588.5625,70.582031 C 587.71093,69.527358 586.51952,69.000015 584.98828,69 C 583.47265,69.000015 582.29296,69.523452 581.44922,70.570313 C 580.60546,71.617199 580.18359,73.093761 580.18359,75 M 576.5625,75 C 576.5625,72.210949 577.32031,70.000014 578.83594,68.367188 C 580.35937,66.726579 582.41015,65.906268 584.98828,65.90625 C 587.56639,65.906268 589.61717,66.726579 591.14063,68.367188 C 592.67186,70.007826 593.43748,72.218761 593.4375,75 C 593.43748,77.781256 592.67186,79.992191 591.14063,81.632813 C 589.61717,83.273438 587.56639,84.09375 584.98828,84.09375 C 582.41015,84.09375 580.35937,83.273438 578.83594,81.632813 C 577.32031,79.992191 576.5625,77.781256 576.5625,75" + id="text5530" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 641.97656,74.361328 L 645.41016,74.361328 C 646.33983,74.361337 647.01561,74.166025 647.4375,73.775391 C 647.85936,73.376963 648.0703,72.740245 648.07031,71.865234 C 648.0703,71.044934 647.86327,70.423841 647.44922,70.001953 C 647.03515,69.580092 646.41796,69.369155 645.59766,69.369141 L 641.97656,69.369141 L 641.97656,74.361328 M 641.95313,77.490234 L 641.95313,83.630859 L 638.40234,83.630859 L 638.40234,66.369141 L 646.07813,66.369141 C 647.89061,66.369158 649.26171,66.841814 650.19141,67.787109 C 651.12889,68.724624 651.59764,70.103529 651.59766,71.923828 C 651.59764,73.705088 651.14061,75.080087 650.22656,76.048828 C 649.31249,77.009772 648.0078,77.490241 646.3125,77.490234 L 641.95313,77.490234" + id="text5534" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 709.24805,63.919922 L 709.24805,66.369141 C 709.17772,66.369155 709.08007,66.365249 708.95508,66.357422 C 708.83007,66.349624 708.74413,66.345718 708.69727,66.345703 C 707.90819,66.345718 707.37304,66.498062 707.0918,66.802734 C 706.81835,67.099624 706.68163,67.732435 706.68164,68.701172 L 706.68164,71.513672 C 706.68163,72.66993 706.50585,73.490242 706.1543,73.974609 C 705.80273,74.458991 705.16992,74.806647 704.25586,75.017578 C 705.16992,75.228522 705.80273,75.572271 706.1543,76.048828 C 706.50585,76.525395 706.68163,77.341801 706.68164,78.498047 L 706.68164,81.322266 C 706.68163,82.283202 706.81835,82.912108 707.0918,83.208984 C 707.36523,83.505857 707.90038,83.654294 708.69727,83.654297 C 708.74413,83.654294 708.83007,83.650388 708.95508,83.642578 C 709.08007,83.634763 709.17772,83.630857 709.24805,83.630859 L 709.24805,86.080078 C 709.13866,86.080073 708.98632,86.08398 708.79102,86.091797 C 708.59569,86.099605 708.45116,86.103511 708.35742,86.103516 C 707.57616,86.103511 706.92382,86.056636 706.40039,85.962891 C 705.87695,85.869136 705.43163,85.724605 705.06445,85.529297 C 704.61913,85.263668 704.30273,84.904293 704.11523,84.451172 C 703.93554,84.005857 703.8457,83.228514 703.8457,82.119141 L 703.8457,79.166016 C 703.8457,78.095706 703.64648,77.337895 703.24805,76.892578 C 702.84961,76.439458 702.17773,76.212896 701.23242,76.212891 C 701.18554,76.212896 701.10742,76.216802 700.99805,76.224609 C 700.88867,76.232427 700.80664,76.236333 700.75195,76.236328 L 700.75195,73.787109 C 700.80664,73.787117 700.88867,73.791023 700.99805,73.798828 C 701.10742,73.806648 701.18554,73.810554 701.23242,73.810547 C 702.16992,73.810554 702.83789,73.583992 703.23633,73.130859 C 703.64257,72.677743 703.8457,71.912119 703.8457,70.833984 L 703.8457,67.904297 C 703.8457,66.787124 703.93554,66.001968 704.11523,65.548828 C 704.30273,65.095719 704.61913,64.736345 705.06445,64.470703 C 705.43163,64.275408 705.87695,64.130876 706.40039,64.037109 C 706.92382,63.943377 707.57616,63.896502 708.35742,63.896484 C 708.45116,63.896502 708.59569,63.900408 708.79102,63.908203 C 708.98632,63.916033 709.13866,63.919939 709.24805,63.919922 M 703.0957,93.966797 L 709.01367,93.966797 L 709.01367,96.462891 L 706.25977,96.462891 L 706.25977,113.8418 L 709.01367,113.8418 L 709.01367,116.33789 L 703.0957,116.33789 L 703.0957,93.966797" + id="text5546" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 760.75195,63.908203 L 761.54883,63.908203 C 762.4082,63.90822 763.09961,63.955095 763.62305,64.048828 C 764.14648,64.142595 764.58398,64.291033 764.93555,64.494141 C 765.38085,64.744157 765.69335,65.103532 765.87305,65.572266 C 766.06054,66.033218 766.15429,66.806655 766.1543,67.892578 L 766.1543,70.845703 C 766.15429,71.916025 766.35351,72.677743 766.75195,73.130859 C 767.15038,73.57618 767.82226,73.798836 768.76758,73.798828 C 768.81444,73.798836 768.89257,73.794929 769.00195,73.787109 C 769.11132,73.779304 769.19335,73.775398 769.24805,73.775391 L 769.24805,76.224609 L 768.81445,76.224609 C 767.83788,76.224614 767.15038,76.443364 766.75195,76.880859 C 766.35351,77.318363 766.15429,78.076175 766.1543,79.154297 L 766.1543,82.107422 C 766.15429,83.224607 766.06054,84.009763 765.87305,84.462891 C 765.69335,84.916012 765.38085,85.267574 764.93555,85.517578 C 764.56835,85.712886 764.12304,85.857417 763.59961,85.951172 C 763.07617,86.044917 762.42382,86.091792 761.64258,86.091797 C 761.54883,86.091792 761.40429,86.087886 761.20898,86.080078 C 761.01367,86.072261 760.86133,86.068355 760.75195,86.068359 L 760.75195,83.619141 C 760.82226,83.619138 760.91992,83.623044 761.04492,83.630859 C 761.16992,83.638669 761.25586,83.642576 761.30273,83.642578 C 762.09179,83.642576 762.62304,83.490232 762.89648,83.185547 C 763.17773,82.88867 763.31836,82.263671 763.31836,81.310547 L 763.31836,78.509766 C 763.31836,77.337895 763.49414,76.513677 763.8457,76.037109 C 764.19726,75.55274 764.83007,75.20899 765.74414,75.005859 C 764.83007,74.794928 764.19726,74.447272 763.8457,73.962891 C 763.49414,73.478523 763.31836,72.658212 763.31836,71.501953 L 763.31836,68.666016 C 763.31836,67.712904 763.17773,67.087905 762.89648,66.791016 C 762.62304,66.486343 762.09179,66.333999 761.30273,66.333984 C 761.25586,66.333999 761.16992,66.337906 761.04492,66.345703 C 760.91992,66.35353 760.82226,66.357437 760.75195,66.357422 L 760.75195,63.908203 M 767.00977,93.955078 L 767.00977,116.32617 L 761.08008,116.32617 L 761.08008,113.83008 L 763.8457,113.83008 L 763.8457,96.451172 L 761.08008,96.451172 L 761.08008,93.955078 L 767.00977,93.955078" + id="text5554" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 823.79883,62.977287 L 826.21289,62.977287 L 826.21289,86.977287 L 823.79883,86.977287 L 823.79883,62.977287 M 827.10352,113.54369 L 821.29102,93.6101 L 822.87305,93.6101 L 828.70898,113.54369 L 827.10352,113.54369" + id="text5564" /> + <g + id="g3597"> + <path + id="text5570" + d="M 22.996094,139.10156 C 22.907541,140.40886 22.403635,141.44792 21.484375,142.21875 C 20.565095,142.98958 19.365878,143.375 17.886719,143.375 C 16.183589,143.375 14.859372,142.84375 13.914063,141.78125 C 12.968749,140.71875 12.496093,139.22917 12.496094,137.3125 C 12.496093,135.35417 12.977863,133.85418 13.941406,132.8125 C 14.904945,131.77084 16.29036,131.25001 18.097656,131.25 C 19.566398,131.25001 20.726554,131.60808 21.578125,132.32422 C 22.429677,133.04037 22.897124,134.05209 22.980469,135.35938 L 20.644531,135.35938 C 20.545564,134.70834 20.279939,134.21225 19.847656,133.87109 C 19.415357,133.52996 18.832024,133.35938 18.097656,133.35938 C 17.055984,133.35938 16.264318,133.69532 15.722656,134.36719 C 15.180986,135.03907 14.910153,136.02084 14.910156,137.3125 C 14.910153,138.5625 15.179684,139.52865 15.71875,140.21094 C 16.257808,140.89323 17.024734,141.23438 18.019531,141.23438 C 18.738274,141.23438 19.326815,141.05078 19.785156,140.68359 C 20.243481,140.31641 20.540356,139.78907 20.675781,139.10156 L 22.996094,139.10156 z M 29.558594,142 C 29.27213,142.44271 28.89713,142.77995 28.433594,143.01172 C 27.970048,143.24349 27.430986,143.35937 26.816406,143.35938 C 25.993487,143.35937 25.359373,143.125 24.914063,142.65625 C 24.468749,142.1875 24.246093,141.52083 24.246094,140.65625 C 24.246093,139.85417 24.468749,139.24219 24.914063,138.82031 C 25.359373,138.39844 26.09505,138.10938 27.121094,137.95313 C 27.355465,137.91667 27.662756,137.87501 28.042969,137.82813 C 29.006505,137.70313 29.488275,137.42448 29.488281,136.99219 C 29.488275,136.64844 29.381505,136.40235 29.167969,136.25391 C 28.954422,136.10548 28.597651,136.03126 28.097656,136.03125 C 27.639319,136.03126 27.287757,136.1224 27.042969,136.30469 C 26.798174,136.48699 26.675778,136.7474 26.675781,137.08594 L 26.675781,137.21094 L 24.550781,137.21094 L 24.550781,137.05469 C 24.55078,136.1849 24.858072,135.50131 25.472656,135.00391 C 26.087237,134.50652 26.936195,134.25782 28.019531,134.25781 C 29.207026,134.25782 30.117181,134.46355 30.75,134.875 C 31.382805,135.28647 31.699211,135.88022 31.699219,136.65625 L 31.699219,141.48438 C 31.699211,141.83854 31.735669,142.10287 31.808594,142.27734 C 31.881502,142.45182 32.003898,142.58333 32.175781,142.67188 L 32.175781,143.05469 L 29.808594,143.05469 C 29.730463,142.90885 29.670567,142.7474 29.628906,142.57031 C 29.587234,142.39323 29.563796,142.20313 29.558594,142 L 29.558594,142 z M 29.519531,138.875 C 29.149734,139.04688 28.723953,139.1849 28.242188,139.28906 C 27.760413,139.39323 27.511715,139.44792 27.496094,139.45313 C 27.095049,139.56771 26.815101,139.71094 26.65625,139.88281 C 26.497393,140.05469 26.417966,140.29167 26.417969,140.59375 C 26.417966,140.90625 26.519528,141.15495 26.722656,141.33984 C 26.925778,141.52474 27.199215,141.61719 27.542969,141.61719 C 28.157548,141.61719 28.64062,141.44401 28.992188,141.09766 C 29.343744,140.7513 29.519525,140.27865 29.519531,139.67969 L 29.519531,138.875 z M 39.691406,138.85938 C 39.691399,138.00521 39.529941,137.35287 39.207031,136.90234 C 38.884108,136.45183 38.415359,136.22657 37.800781,136.22656 C 37.19661,136.22657 36.736975,136.45053 36.421875,136.89844 C 36.106767,137.34636 35.949216,138.00001 35.949219,138.85938 C 35.949216,139.66146 36.11458,140.28125 36.445313,140.71875 C 36.776038,141.15625 37.243485,141.375 37.847656,141.375 C 38.420567,141.375 38.871088,141.15104 39.199219,140.70313 C 39.527337,140.25521 39.691399,139.64063 39.691406,138.85938 L 39.691406,138.85938 z M 33.738281,146.46094 L 33.738281,134.5625 L 35.902344,134.5625 L 35.902344,135.71094 C 36.230465,135.21095 36.59635,134.84636 37,134.61719 C 37.403641,134.38803 37.878901,134.27345 38.425781,134.27344 C 39.472649,134.27345 40.321607,134.68621 40.972656,135.51172 C 41.623689,136.33725 41.94921,137.42188 41.949219,138.76563 C 41.94921,140.125 41.623689,141.22787 40.972656,142.07422 C 40.321607,142.92057 39.483066,143.34375 38.457031,143.34375 C 37.915359,143.34375 37.432287,143.22917 37.007813,143 C 36.583329,142.77083 36.230465,142.4375 35.949219,142 L 35.949219,146.46094 L 33.738281,146.46094 z M 43.027344,140.28906 L 45.292969,140.28906 C 45.313799,140.72136 45.470049,141.04297 45.761719,141.25391 C 46.053382,141.46485 46.490881,141.57031 47.074219,141.57031 C 47.516922,141.57031 47.85937,141.4961 48.101563,141.34766 C 48.343744,141.19922 48.464838,140.98959 48.464844,140.71875 C 48.464838,140.33334 48.011713,140.04427 47.105469,139.85156 C 46.735673,139.77344 46.441402,139.70573 46.222656,139.64844 C 45.118487,139.36719 44.351561,139.03386 43.921875,138.64844 C 43.492187,138.26303 43.277343,137.74219 43.277344,137.08594 C 43.277343,136.21615 43.591145,135.52735 44.21875,135.01953 C 44.846352,134.51173 45.696611,134.25782 46.769531,134.25781 C 47.904943,134.25782 48.796869,134.51043 49.445313,135.01563 C 50.093742,135.52084 50.438794,136.23178 50.480469,137.14844 L 48.269531,137.14844 C 48.253901,136.78907 48.117182,136.51042 47.859375,136.3125 C 47.601557,136.11459 47.243485,136.01563 46.785156,136.01563 C 46.352861,136.01563 46.031246,136.08074 45.820313,136.21094 C 45.609372,136.34115 45.503903,136.53646 45.503906,136.79688 C 45.503903,137.13542 46.069007,137.4349 47.199219,137.69531 C 47.45963,137.75261 47.665359,137.79948 47.816406,137.83594 C 48.946608,138.10157 49.718743,138.42188 50.132813,138.79688 C 50.546867,139.17188 50.753898,139.70052 50.753906,140.38281 C 50.753898,141.34636 50.414055,142.08073 49.734375,142.58594 C 49.054681,143.09115 48.066401,143.34375 46.769531,143.34375 C 45.597653,143.34375 44.680987,143.08073 44.019531,142.55469 C 43.358072,142.02865 43.027343,141.30469 43.027344,140.38281 L 43.027344,140.28906 z M 57.011719,143.05469 L 57.011719,131.54688 L 59.378906,131.54688 L 59.378906,140.92969 L 64.996094,140.92969 L 64.996094,143.05469 L 57.011719,143.05469 z M 67.972656,138.79688 C 67.972653,139.64063 68.14583,140.29167 68.492188,140.75 C 68.838538,141.20834 69.332027,141.4375 69.972656,141.4375 C 70.602859,141.4375 71.09114,141.20834 71.4375,140.75 C 71.783847,140.29167 71.957024,139.64063 71.957031,138.79688 C 71.957024,137.95834 71.78515,137.3112 71.441406,136.85547 C 71.09765,136.39975 70.608067,136.17188 69.972656,136.17188 C 69.332027,136.17188 68.838538,136.39975 68.492188,136.85547 C 68.14583,137.3112 67.972653,137.95834 67.972656,138.79688 L 67.972656,138.79688 z M 65.667969,138.79688 C 65.667968,137.38542 66.05078,136.27605 66.816406,135.46875 C 67.582029,134.66147 68.634111,134.25782 69.972656,134.25781 C 71.305983,134.25782 72.356764,134.66147 73.125,135.46875 C 73.89322,136.27605 74.277335,137.38542 74.277344,138.79688 C 74.277335,140.21354 73.89322,141.32552 73.125,142.13281 C 72.356764,142.9401 71.305983,143.34375 69.972656,143.34375 C 68.634111,143.34375 67.582029,142.9401 66.816406,142.13281 C 66.05078,141.32552 65.667968,140.21354 65.667969,138.79688 L 65.667969,138.79688 z M 80.949219,139.85156 L 83.191406,139.85156 C 83.097648,140.92969 82.704419,141.78125 82.011719,142.40625 C 81.319004,143.03125 80.42838,143.34375 79.339844,143.34375 C 78.105465,143.34375 77.138019,142.94141 76.4375,142.13672 C 75.736978,141.33203 75.386718,140.21875 75.386719,138.79688 C 75.386718,137.38021 75.744791,136.26954 76.460938,135.46484 C 77.177081,134.66016 78.162757,134.25782 79.417969,134.25781 C 80.516921,134.25782 81.398431,134.54949 82.0625,135.13281 C 82.726555,135.71615 83.097648,136.52865 83.175781,137.57031 L 80.917969,137.57031 C 80.855463,137.11719 80.696609,136.77084 80.441406,136.53125 C 80.186193,136.29167 79.850255,136.17188 79.433594,136.17188 C 78.87109,136.17188 78.450517,136.39324 78.171875,136.83594 C 77.893226,137.27865 77.753903,137.94271 77.753906,138.82813 C 77.753903,139.64584 77.898434,140.27474 78.1875,140.71484 C 78.476559,141.15495 78.891923,141.375 79.433594,141.375 C 79.855464,141.375 80.194005,141.2474 80.449219,140.99219 C 80.704421,140.73698 80.871088,140.35677 80.949219,139.85156 L 80.949219,139.85156 z M 84.675781,143.05469 L 84.675781,131.54688 L 86.886719,131.54688 L 86.886719,137.58594 L 89.589844,134.5625 L 92.324219,134.5625 L 89.363281,137.71094 L 92.503906,143.05469 L 89.777344,143.05469 L 87.746094,139.4375 L 86.886719,140.36719 L 86.886719,143.05469 L 84.675781,143.05469 z " + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" /> + <path + id="path5584" + d="M 23.746094,146.25 L 12.496094,161.25 L 19.996094,161.25 L 19.996094,168.75 L 27.496094,168.75 L 27.496094,161.25 L 34.996094,161.25 L 23.746094,146.25 z M 22.714844,150.46875 L 24.746094,150.46875 L 27.871094,159.09375 L 25.996094,159.09375 L 25.402344,157.3125 L 22.058594,157.3125 L 21.496094,159.09375 L 19.621094,159.09375 L 22.714844,150.46875 z M 23.746094,152.1875 L 22.527344,155.84375 L 24.933594,155.84375 L 23.746094,152.1875 z " + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 119.9707,129.82617 L 117.58008,137.17383 L 122.37305,137.17383 L 119.9707,129.82617 M 117.9082,126.36914 L 122.00977,126.36914 L 128.23242,143.63086 L 124.50586,143.63086 L 123.33398,140.08008 L 116.64258,140.08008 L 115.50586,143.63086 L 111.76758,143.63086 L 117.9082,126.36914" + id="text5641" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 172.98047,138.29297 L 176.48438,138.29297 C 176.61718,139.23829 177.0039,139.94141 177.64453,140.40234 C 178.28515,140.85547 179.21093,141.08203 180.42188,141.08203 C 181.45312,141.08203 182.23046,140.89844 182.75391,140.53125 C 183.27733,140.16407 183.53905,139.6211 183.53906,138.90234 C 183.53905,137.85547 182.03515,136.98829 179.02734,136.30078 C 178.98827,136.29298 178.95312,136.28516 178.92188,136.27734 C 178.84374,136.26173 178.72265,136.23438 178.55859,136.19531 C 176.94921,135.84376 175.80078,135.44923 175.11328,135.01172 C 174.5039,134.6211 174.03906,134.09767 173.71875,133.44141 C 173.39844,132.77735 173.23828,131.99611 173.23828,131.09766 C 173.23828,129.41798 173.80859,128.13283 174.94922,127.24219 C 176.08984,126.34377 177.73828,125.89455 179.89453,125.89453 C 181.91015,125.89455 183.48436,126.37111 184.61719,127.32422 C 185.7578,128.27736 186.35936,129.62111 186.42188,131.35547 L 183.01172,131.35547 C 182.94921,130.51954 182.6289,129.88283 182.05078,129.44531 C 181.47265,129.00783 180.64843,128.78908 179.57813,128.78906 C 178.64843,128.78908 177.92968,128.97267 177.42188,129.33984 C 176.92187,129.69923 176.67187,130.21486 176.67188,130.88672 C 176.67187,131.80079 177.65234,132.48439 179.61328,132.9375 C 180.14452,133.06251 180.55859,133.16017 180.85547,133.23047 C 182.11327,133.55079 183.0039,133.80079 183.52734,133.98047 C 184.05858,134.16017 184.51952,134.35938 184.91016,134.57813 C 185.61327,134.96876 186.14061,135.48829 186.49219,136.13672 C 186.84374,136.77735 187.01952,137.54688 187.01953,138.44531 C 187.01952,140.24219 186.41405,141.63672 185.20313,142.62891 C 183.99218,143.61328 182.28515,144.10547 180.08203,144.10547 C 177.91015,144.10547 176.20703,143.60156 174.97266,142.59375 C 173.73828,141.58594 173.07422,140.15235 172.98047,138.29297" + id="text5645" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 236.16211,140.51367 L 239.00977,140.51367 C 240.65819,140.51367 241.8496,140.08399 242.58398,139.22461 C 243.32616,138.35743 243.69725,136.95508 243.69727,135.01758 C 243.69725,133.0879 243.3535,131.66993 242.66602,130.76367 C 241.9785,129.85744 240.90429,129.40431 239.44336,129.4043 L 236.16211,129.4043 L 236.16211,140.51367 M 232.68164,143.63086 L 232.68164,126.36914 L 239.44336,126.36914 C 242.09179,126.36916 244.06444,127.084 245.36133,128.51367 C 246.666,129.94337 247.31834,132.11134 247.31836,135.01758 C 247.31834,136.59571 247.07616,137.98633 246.5918,139.18945 C 246.11522,140.39258 245.41991,141.36133 244.50586,142.0957 C 243.81835,142.64258 243.0371,143.03711 242.16211,143.2793 C 241.2871,143.51367 240.06054,143.63086 238.48242,143.63086 L 232.68164,143.63086" + id="text5649" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 293.97656,143.63086 L 293.97656,126.36914 L 306.02344,126.36914 L 306.02344,129.36914 L 297.48047,129.36914 L 297.48047,133.2832 L 304.96875,133.2832 L 304.96875,136.2832 L 297.48047,136.2832 L 297.48047,143.63086 L 293.97656,143.63086" + id="text5653" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 365.17969,141.57422 C 364.53905,142.44141 363.80858,143.07813 362.98828,143.48438 C 362.17577,143.89062 361.21874,144.09375 360.11719,144.09375 C 357.70312,144.09375 355.74609,143.25781 354.24609,141.58594 C 352.7539,139.90625 352.00781,137.70313 352.00781,134.97656 C 352.00781,132.22657 352.7539,130.02736 354.24609,128.37891 C 355.73828,126.73049 357.72656,125.90627 360.21094,125.90625 C 362.37499,125.90627 364.14061,126.4258 365.50781,127.46484 C 366.87498,128.49611 367.68748,129.91798 367.94531,131.73047 L 364.32422,131.73047 C 364.10546,130.83204 363.65624,130.14845 362.97656,129.67969 C 362.30468,129.21095 361.42577,128.97658 360.33984,128.97656 C 358.89452,128.97658 357.75781,129.50783 356.92969,130.57031 C 356.10937,131.62501 355.69921,133.08595 355.69922,134.95313 C 355.69921,136.82813 356.1289,138.29688 356.98828,139.35938 C 357.84765,140.42188 359.02734,140.95313 360.52734,140.95313 C 361.65233,140.95313 362.59374,140.6211 363.35156,139.95703 C 364.10936,139.29297 364.57811,138.38282 364.75781,137.22656 L 360.84375,137.22656 L 360.84375,134.27344 L 367.99219,134.27344 L 367.99219,143.61328 L 365.61328,143.61328 L 365.17969,141.57422" + id="text5657" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 412.86328,143.63086 L 412.86328,126.36914 L 416.4375,126.36914 L 416.4375,132.80273 L 423.5625,132.80273 L 423.5625,126.36914 L 427.13672,126.36914 L 427.13672,143.63086 L 423.5625,143.63086 L 423.5625,135.97852 L 416.4375,135.97852 L 416.4375,143.63086 L 412.86328,143.63086" + id="text5661" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 474.48047,136.95703 L 477.91406,136.95703 L 477.91406,139.04297 C 477.91406,139.64453 478.09375,140.10547 478.45313,140.42578 C 478.8125,140.73828 479.32812,140.89453 480,140.89453 C 480.73437,140.89453 481.24609,140.70313 481.53516,140.32031 C 481.82421,139.9375 481.96874,139.21875 481.96875,138.16406 L 481.96875,126.12891 L 485.51953,126.12891 L 485.51953,138.32813 C 485.51952,139.42188 485.45311,140.22657 485.32031,140.74219 C 485.1953,141.25 484.98436,141.69922 484.6875,142.08984 C 484.23436,142.66797 483.61327,143.10938 482.82422,143.41406 C 482.03515,143.71875 481.10937,143.87109 480.04688,143.87109 C 479.07031,143.87109 478.20703,143.73828 477.45703,143.47266 C 476.70703,143.20703 476.08203,142.8125 475.58203,142.28906 C 475.18359,141.86719 474.89844,141.39844 474.72656,140.88281 C 474.5625,140.35938 474.48047,139.5 474.48047,138.30469 L 474.48047,136.95703" + id="text5665" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 532.32422,143.63086 L 532.32422,126.36914 L 535.875,126.36914 L 535.875,133.45898 L 542.61328,126.36914 L 547.05469,126.36914 L 540.16406,133.35352 L 547.67578,143.63086 L 543.33984,143.63086 L 537.71484,135.73242 L 535.875,137.56055 L 535.875,143.63086 L 532.32422,143.63086" + id="text5669" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 594.01172,143.63086 L 594.01172,126.36914 L 597.5625,126.36914 L 597.5625,140.44336 L 605.98828,140.44336 L 605.98828,143.63086 L 594.01172,143.63086" + id="text5673" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 143.15039,203.63086 L 143.15039,200.63086 L 152.53711,189.49805 L 143.33789,189.49805 L 143.33789,186.36914 L 156.84961,186.36914 L 156.84961,189.36914 L 147.43945,200.51367 L 156.63867,200.51367 L 156.63867,203.63086 L 143.15039,203.63086" + id="text5679" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 202.37109,203.63086 L 207.79688,194.81836 L 202.37109,186.36914 L 206.47266,186.36914 L 210,192.4043 L 213.50391,186.36914 L 217.62891,186.36914 L 212.20313,194.79492 L 217.62891,203.63086 L 213.52734,203.63086 L 210,197.6543 L 206.47266,203.63086 L 202.37109,203.63086" + id="text5683" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 277.875,197.68359 C 277.74217,199.64454 276.98436,201.20313 275.60156,202.35938 C 274.22655,203.51563 272.42968,204.09375 270.21094,204.09375 C 267.65624,204.09375 265.66796,203.29688 264.24609,201.70313 C 262.83203,200.10938 262.125,197.87501 262.125,195 C 262.125,192.06251 262.84765,189.81251 264.29297,188.25 C 265.73828,186.68752 267.8164,185.90627 270.52734,185.90625 C 272.73046,185.90627 274.46874,186.44533 275.74219,187.52344 C 277.02342,188.59377 277.72655,190.10939 277.85156,192.07031 L 274.34766,192.07031 C 274.19921,191.09376 273.80077,190.35158 273.15234,189.84375 C 272.50389,189.32814 271.6289,189.07033 270.52734,189.07031 C 268.96484,189.07033 267.77734,189.57423 266.96484,190.58203 C 266.15234,191.58986 265.74609,193.06251 265.74609,195 C 265.74609,196.87501 266.14843,198.32422 266.95313,199.34766 C 267.76562,200.3711 268.91796,200.88282 270.41016,200.88281 C 271.48827,200.88282 272.37108,200.60938 273.05859,200.0625 C 273.74608,199.50782 274.19139,198.71485 274.39453,197.68359 L 277.875,197.68359" + id="text5687" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 328.33594,203.63086 L 322.38281,186.36914 L 326.32031,186.36914 L 329.98828,199.2832 L 333.72656,186.36914 L 337.61719,186.36914 L 331.73438,203.63086 L 328.33594,203.63086" + id="text5691" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 386.32031,200.51367 L 390.52734,200.51367 C 391.51952,200.51367 392.24218,200.33399 392.69531,199.97461 C 393.14843,199.61524 393.37499,199.04883 393.375,198.27539 C 393.37499,197.47071 393.15233,196.89258 392.70703,196.54102 C 392.26171,196.18165 391.52733,196.00196 390.50391,196.00195 L 386.32031,196.00195 L 386.32031,200.51367 M 386.32031,193.04883 L 390.375,193.04883 C 391.24999,193.04884 391.89061,192.9004 392.29688,192.60352 C 392.70311,192.29884 392.90624,191.82228 392.90625,191.17383 C 392.90624,190.54103 392.70702,190.084 392.30859,189.80273 C 391.91796,189.51369 391.26561,189.36915 390.35156,189.36914 L 386.32031,189.36914 L 386.32031,193.04883 M 382.92188,203.63086 L 382.92188,186.36914 L 391.05469,186.36914 C 392.8203,186.36916 394.16405,186.74416 395.08594,187.49414 C 396.01561,188.23634 396.48045,189.31837 396.48047,190.74023 C 396.48045,191.61525 396.30858,192.34571 395.96484,192.93164 C 395.62108,193.51759 395.10545,193.97071 394.41797,194.29102 C 395.30858,194.6504 395.97264,195.16993 396.41016,195.84961 C 396.85545,196.52149 397.07811,197.36133 397.07813,198.36914 C 397.07811,200.04883 396.53123,201.34571 395.4375,202.25977 C 394.34374,203.17383 392.79296,203.63086 390.78516,203.63086 L 382.92188,203.63086" + id="text5695" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 442.88672,203.63086 L 442.88672,186.36914 L 446.60156,186.36914 L 453.60938,198.22852 L 453.60938,186.36914 L 457.11328,186.36914 L 457.11328,203.63086 L 453.44531,203.63086 L 446.39063,191.77148 L 446.39063,203.63086 L 442.88672,203.63086" + id="text5699" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 501.32813,203.63086 L 501.32813,186.36914 L 506.57813,186.36914 L 510.01172,199.50586 L 513.39844,186.36914 L 518.67188,186.36914 L 518.67188,203.63086 L 515.34375,203.63086 L 515.34375,189.70898 L 511.83984,203.63086 L 508.20703,203.63086 L 504.65625,189.70898 L 504.65625,203.63086 L 501.32813,203.63086" + id="text5703" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 658.22461,134.6543 L 658.22461,131.10352 L 661.77539,131.10352 L 661.77539,134.6543 L 658.22461,134.6543 M 658.22461,143.63086 L 658.22461,140.10352 L 661.77539,140.10352 L 661.77539,143.63086 L 658.22461,143.63086 M 658.24805,164.6543 L 658.24805,161.10352 L 661.77539,161.10352 L 661.77539,164.6543 L 658.24805,164.6543 M 658.24805,177.68555 L 658.24805,176.31445 C 658.90429,176.12695 659.38867,175.83789 659.70117,175.44727 C 660.01367,175.05664 660.16992,174.54883 660.16992,173.92383 L 660.16992,173.63086 L 658.22461,173.63086 L 658.22461,170.10352 L 661.77539,170.10352 L 661.77539,173.49023 C 661.77539,174.66211 661.47851,175.59961 660.88477,176.30273 C 660.29101,177.01367 659.41211,177.47461 658.24805,177.68555" + id="text5725" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 720.78516,126.7793 L 723.03516,126.7793 L 723.03516,133.33008 L 720.78516,133.33008 L 720.78516,126.7793 M 716.96484,126.7793 L 719.21484,126.7793 L 719.21484,133.33008 L 716.96484,133.33008 L 716.96484,126.7793 M 718.88672,156.7793 L 721.13672,156.7793 L 721.13672,163.33008 L 718.88672,163.33008 L 718.88672,156.7793" + id="text5731" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 772.5,140.60938 L 772.5,129.10156 L 780.85156,129.10156 L 780.85156,131.10156 L 774.83594,131.10156 L 774.83594,133.55469 L 780.33594,133.55469 L 780.33594,135.52344 L 774.83594,135.52344 L 774.83594,138.48438 L 781.13281,138.48438 L 781.13281,140.60938 L 772.5,140.60938 M 782.74219,140.60938 L 782.74219,132.11719 L 784.96875,132.11719 L 784.96875,133.125 C 785.28645,132.71355 785.66145,132.40626 786.09375,132.20313 C 786.52604,131.9948 787.00781,131.89063 787.53906,131.89063 C 788.47656,131.89063 789.17708,132.13543 789.64063,132.625 C 790.10937,133.10938 790.34374,133.84115 790.34375,134.82031 L 790.34375,140.60938 L 788.07031,140.60938 L 788.07031,135.47656 C 788.07031,134.86719 787.96614,134.4323 787.75781,134.17188 C 787.55468,133.91147 787.22135,133.78126 786.75781,133.78125 C 786.22135,133.78126 785.79687,133.94271 785.48438,134.26563 C 785.17187,134.58334 785.01562,135.01823 785.01563,135.57031 L 785.01563,140.60938 L 782.74219,140.60938 M 796.07813,140.67188 C 795.86979,140.67708 795.61979,140.6849 795.32813,140.69531 C 795.04166,140.71094 794.85937,140.71875 794.78125,140.71875 C 793.91146,140.71875 793.3151,140.55729 792.99219,140.23438 C 792.67448,139.90625 792.51562,139.26302 792.51563,138.30469 L 792.51563,133.71094 L 791.39063,133.71094 L 791.39063,132.11719 L 792.51563,132.11719 L 792.51563,129.79688 L 794.76563,129.79688 L 794.76563,132.11719 L 796.07813,132.11719 L 796.07813,133.71094 L 794.76563,133.71094 L 794.76563,138.41406 C 794.76562,138.63802 794.8151,138.78646 794.91406,138.85938 C 795.01302,138.92709 795.21614,138.96094 795.52344,138.96094 L 796.07813,138.96094 L 796.07813,140.67188 M 802.63281,138.03125 L 804.89844,138.03125 C 804.66926,138.92709 804.20572,139.63021 803.50781,140.14063 C 802.8151,140.64583 801.96874,140.89844 800.96875,140.89844 C 799.73958,140.89844 798.76562,140.48698 798.04688,139.66406 C 797.32812,138.83594 796.96875,137.71615 796.96875,136.30469 C 796.96875,134.91407 797.32292,133.81772 798.03125,133.01563 C 798.73958,132.21355 799.70833,131.81251 800.9375,131.8125 C 802.23958,131.81251 803.24478,132.20834 803.95313,133 C 804.66145,133.78647 805.01562,134.90886 805.01563,136.36719 C 805.01562,136.52865 805.01301,136.65105 805.00781,136.73438 C 805.0078,136.8125 805.0026,136.88802 804.99219,136.96094 L 799.32031,136.96094 C 799.35156,137.62761 799.51302,138.13021 799.80469,138.46875 C 800.10156,138.80729 800.52604,138.97656 801.07813,138.97656 C 801.46874,138.97656 801.78906,138.90104 802.03906,138.75 C 802.28906,138.59375 802.48697,138.35417 802.63281,138.03125 M 799.32031,135.46875 L 802.66406,135.46875 C 802.64322,134.89584 802.48958,134.46094 802.20313,134.16406 C 801.92187,133.86199 801.51562,133.71094 800.98438,133.71094 C 800.48958,133.71094 800.09895,133.86199 799.8125,134.16406 C 799.53125,134.46615 799.36718,134.90105 799.32031,135.46875 M 806.52344,140.60938 L 806.52344,132.11719 L 808.63281,132.11719 L 808.63281,133.57031 C 808.92968,132.98699 809.27604,132.5599 809.67188,132.28906 C 810.0677,132.01303 810.53906,131.87501 811.08594,131.875 C 811.17447,131.87501 811.24218,131.87761 811.28906,131.88281 C 811.34114,131.88282 811.38281,131.88543 811.41406,131.89063 L 811.42188,134.19531 L 810.66406,134.19531 C 810.04427,134.19532 809.57812,134.35678 809.26563,134.67969 C 808.95312,135.00261 808.79687,135.48178 808.79688,136.11719 L 808.79688,140.60938 L 806.52344,140.60938" + id="text5737" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 787.5,172.5 L 787.5,157.5 L 772.5,165 L 787.5,172.5 z " + id="path5745" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 810,150 L 810,165 L 780,165" + id="path5747" /> + <g + id="g3601"> + <path + id="text5753" + d="M 12.496094,197.64063 L 14.832032,197.64063 C 14.92057,198.27084 15.178382,198.73828 15.605469,199.04297 C 16.032548,199.34766 16.649735,199.5 17.457032,199.5 C 18.144525,199.5 18.662754,199.37761 19.011719,199.13281 C 19.36067,198.88802 19.535149,198.52604 19.535157,198.04688 C 19.535149,197.34896 18.532546,196.77084 16.527344,196.3125 C 16.501298,196.3073 16.47786,196.30209 16.457032,196.29688 C 16.404944,196.28646 16.324215,196.26823 16.214844,196.24219 C 15.141924,196.00782 14.3763,195.7448 13.917969,195.45313 C 13.511717,195.19271 13.201822,194.84245 12.988282,194.40234 C 12.774739,193.96225 12.667968,193.44272 12.667969,192.84375 C 12.667968,191.72397 13.048176,190.8659 13.808594,190.26953 C 14.569008,189.67319 15.667965,189.37501 17.105469,189.375 C 18.449212,189.37501 19.499993,189.69272 20.257813,190.32813 C 21.015616,190.96355 21.415355,191.85938 21.457032,193.01563 L 19.183594,193.01563 C 19.14192,192.45834 18.928379,192.03386 18.542969,191.74219 C 18.157546,191.45053 17.608067,191.3047 16.894532,191.30469 C 16.274735,191.3047 15.796871,191.42579 15.460938,191.66797 C 15.124997,191.91017 14.957028,192.25522 14.957032,192.70313 C 14.957028,193.31251 15.610674,193.76824 16.917969,194.07031 C 17.27213,194.15365 17.548172,194.21876 17.746094,194.26563 C 18.584629,194.47917 19.17968,194.64584 19.53125,194.76563 C 19.882805,194.88542 20.188794,195.01824 20.449219,195.16406 C 20.91796,195.42448 21.269522,195.76954 21.503907,196.19922 C 21.738272,196.62891 21.855459,197.14323 21.855469,197.74219 C 21.855459,198.94011 21.451814,199.86849 20.644532,200.52734 C 19.837232,201.1862 18.699212,201.51562 17.230469,201.51563 C 15.782548,201.51562 14.647133,201.17969 13.824219,200.50781 C 13.001301,199.83594 12.558593,198.88021 12.496094,197.64063 L 12.496094,197.64063 z M 23.566407,201.19531 L 23.566407,189.6875 L 25.824219,189.6875 L 25.824219,193.64063 C 26.131507,193.25522 26.497392,192.96485 26.921875,192.76953 C 27.34635,192.57423 27.82161,192.47657 28.347657,192.47656 C 28.84765,192.47657 29.299473,192.56251 29.703125,192.73438 C 30.106764,192.90626 30.433586,193.15105 30.683594,193.46875 C 30.855461,193.6823 30.976554,193.92709 31.046875,194.20313 C 31.117179,194.47917 31.152335,194.92188 31.152344,195.53125 L 31.152344,195.6875 L 31.152344,201.19531 L 28.894532,201.19531 L 28.894532,196.75 C 28.894525,195.69792 28.798171,195.03777 28.605469,194.76953 C 28.412755,194.50131 28.066401,194.36719 27.566407,194.36719 C 27.029944,194.36719 26.605465,194.52735 26.292969,194.84766 C 25.980466,195.16797 25.824216,195.60417 25.824219,196.15625 L 25.824219,201.19531 L 23.566407,201.19531 z M 33.191407,191.75781 L 33.191407,189.6875 L 35.464844,189.6875 L 35.464844,191.75781 L 33.191407,191.75781 z M 33.191407,201.19531 L 33.191407,192.70313 L 35.464844,192.70313 L 35.464844,201.19531 L 33.191407,201.19531 z M 37.886719,201.19531 L 37.886719,194.29688 L 36.675782,194.29688 L 36.675782,192.70313 L 37.886719,192.70313 L 37.886719,191.91406 C 37.886718,191.12241 38.091144,190.54038 38.5,190.16797 C 38.908852,189.79558 39.553383,189.60939 40.433594,189.60938 C 40.595048,189.60939 40.765621,189.61329 40.945313,189.62109 C 41.124996,189.62892 41.316402,189.64324 41.519532,189.66406 L 41.519532,191.46875 L 40.925782,191.46875 C 40.587236,191.46876 40.36458,191.51303 40.257813,191.60156 C 40.151038,191.69011 40.097653,191.85938 40.097657,192.10938 L 40.097657,192.70313 L 41.519532,192.70313 L 41.519532,194.29688 L 40.113282,194.29688 L 40.113282,201.19531 L 37.886719,201.19531 z M 46.449219,201.25781 C 46.240881,201.26302 45.992183,201.27214 45.703125,201.28516 C 45.414059,201.29818 45.230465,201.30469 45.152344,201.30469 C 44.28255,201.30469 43.687498,201.14193 43.367188,200.81641 C 43.046874,200.49089 42.886718,199.84896 42.886719,198.89063 L 42.886719,194.29688 L 41.761719,194.29688 L 41.761719,192.70313 L 42.886719,192.70313 L 42.886719,190.38281 L 45.136719,190.38281 L 45.136719,192.70313 L 46.449219,192.70313 L 46.449219,194.29688 L 45.136719,194.29688 L 45.136719,199 C 45.136716,199.22396 45.186195,199.3711 45.285157,199.44141 C 45.384111,199.51172 45.587236,199.54688 45.894532,199.54688 L 46.449219,199.54688 L 46.449219,201.25781 z " + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" /> + <path + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 24.746094,207.125 L 13.496094,222.125 L 20.996094,222.125 L 20.996094,229.625 L 28.496094,229.625 L 28.496094,222.125 L 35.996094,222.125 L 24.746094,207.125 z " + id="path5757" /> + </g> + <g + id="g5795" + transform="translate(727.5,0)"> + <text + sodipodi:linespacing="125%" + id="text5797" + y="201.19531" + x="31.8125" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + xml:space="preserve"><tspan + y="201.19531" + x="31.8125" + id="tspan5799" + sodipodi:role="line">Shift</tspan></text> + <path + id="path5801" + d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z " + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 576.90234,189.63867 L 576.90234,192.20508 L 566.4375,196.48242 L 576.90234,200.74805 L 576.90234,203.31445 L 563.09766,197.63086 L 563.09766,195.29883 L 576.90234,189.63867 M 568.21875,237.68555 L 568.21875,236.31445 C 568.875,236.12695 569.35937,235.83789 569.67188,235.44727 C 569.98437,235.05664 570.14062,234.54883 570.14063,233.92383 L 570.14063,233.63086 L 568.21875,233.63086 L 568.21875,230.10352 L 571.76953,230.10352 L 571.76953,233.49023 C 571.76953,234.6543 571.46875,235.59179 570.86719,236.30273 C 570.27343,237.01367 569.39062,237.47461 568.21875,237.68555" + id="text5803" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 623.09766,189.63867 L 636.90234,195.29883 L 636.90234,197.63086 L 623.09766,203.31445 L 623.09766,200.74805 L 633.58594,196.48242 L 623.09766,192.20508 L 623.09766,189.63867 M 628.21875,233.63086 L 628.21875,230.10352 L 631.74609,230.10352 L 631.74609,233.63086 L 628.21875,233.63086" + id="text5813" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 688.44727,198.61523 C 688.44726,198.5293 688.44335,198.41602 688.43555,198.27539 C 688.42773,198.12696 688.42382,198.01758 688.42383,197.94727 C 688.42382,197.25977 688.49804,196.68946 688.64648,196.23633 C 688.79492,195.7754 689.0332,195.34571 689.36133,194.94727 C 689.61132,194.6504 689.98242,194.31056 690.47461,193.92773 C 690.9746,193.54493 691.29882,193.26759 691.44727,193.0957 C 691.75976,192.74415 691.9746,192.42775 692.0918,192.14648 C 692.20898,191.86525 692.26757,191.55665 692.26758,191.2207 C 692.26757,190.47853 692.06054,189.9004 691.64648,189.48633 C 691.23241,189.07228 690.65429,188.86525 689.91211,188.86523 C 689.16992,188.86525 688.58398,189.11525 688.1543,189.61523 C 687.73242,190.10744 687.50195,190.80275 687.46289,191.70117 L 684.1582,191.70117 L 684.1582,191.33789 C 684.1582,189.68947 684.67773,188.37697 685.7168,187.40039 C 686.76367,186.41603 688.16992,185.92385 689.93555,185.92383 C 691.74023,185.92385 693.17382,186.38869 694.23633,187.31836 C 695.30663,188.24025 695.84178,189.47853 695.8418,191.0332 C 695.84178,191.58009 695.77928,192.07228 695.6543,192.50977 C 695.5371,192.93946 695.3535,193.33399 695.10352,193.69336 C 694.78319,194.14649 694.2871,194.63868 693.61523,195.16992 C 692.95116,195.69337 692.54882,196.01759 692.4082,196.14258 C 692.11132,196.43165 691.89648,196.73634 691.76367,197.05664 C 691.63866,197.37696 691.57616,197.75977 691.57617,198.20508 C 691.57616,198.24415 691.58007,198.31055 691.58789,198.4043 C 691.59569,198.49805 691.5996,198.56836 691.59961,198.61523 L 688.44727,198.61523 M 688.2832,203.63086 L 688.2832,200.19727 L 691.74023,200.19727 L 691.74023,203.63086 L 688.2832,203.63086 M 686.31445,235.85742 L 692.12695,215.92383 L 693.73242,215.92383 L 687.89648,235.85742 L 686.31445,235.85742" + id="text5819" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 18,271.78906 C 17.911447,273.09636 17.406239,274.13542 16.484375,274.90625 C 15.5677,275.67708 14.369784,276.0625 12.890625,276.0625 C 11.187496,276.0625 9.8619761,275.53125 8.9140625,274.46875 C 7.971353,273.40625 7.4999993,271.91667 7.5,270 C 7.4999993,268.04167 7.9817696,266.54168 8.9453125,265.5 C 9.9088511,264.45834 11.294266,263.93751 13.101563,263.9375 C 14.570305,263.93751 15.729158,264.29689 16.578125,265.01563 C 17.432281,265.72918 17.901031,266.73959 17.984375,268.04688 L 15.648438,268.04688 C 15.54947,267.39584 15.283846,266.90105 14.851563,266.5625 C 14.419263,266.21876 13.83593,266.04688 13.101563,266.04688 C 12.059891,266.04688 11.268225,266.38282 10.726563,267.05469 C 10.184892,267.72657 9.9140594,268.70834 9.9140625,270 C 9.9140594,271.25 10.182288,272.21615 10.71875,272.89844 C 11.260412,273.58073 12.028641,273.92188 13.023438,273.92188 C 13.742181,273.92188 14.330722,273.73959 14.789063,273.375 C 15.247387,273.00521 15.544262,272.47657 15.679688,271.78906 L 18,271.78906 M 23.46875,275.80469 C 23.260412,275.8099 23.010412,275.81771 22.71875,275.82813 C 22.432288,275.84375 22.249996,275.85156 22.171875,275.85156 C 21.302081,275.85156 20.705727,275.6901 20.382813,275.36719 C 20.065103,275.03906 19.906249,274.39583 19.90625,273.4375 L 19.90625,268.84375 L 18.78125,268.84375 L 18.78125,267.25 L 19.90625,267.25 L 19.90625,264.92969 L 22.15625,264.92969 L 22.15625,267.25 L 23.46875,267.25 L 23.46875,268.84375 L 22.15625,268.84375 L 22.15625,273.54688 C 22.156247,273.77084 22.205726,273.91927 22.304688,273.99219 C 22.403642,274.0599 22.606767,274.09375 22.914063,274.09375 L 23.46875,274.09375 L 23.46875,275.80469 M 24.789063,275.74219 L 24.789063,267.25 L 26.898438,267.25 L 26.898438,268.70313 C 27.195309,268.1198 27.541663,267.69272 27.9375,267.42188 C 28.333329,267.14584 28.804682,267.00782 29.351563,267.00781 C 29.440099,267.00782 29.507807,267.01043 29.554688,267.01563 C 29.606765,267.01563 29.648432,267.01824 29.679688,267.02344 L 29.6875,269.32813 L 28.929688,269.32813 C 28.309891,269.32813 27.843746,269.48959 27.53125,269.8125 C 27.218747,270.13542 27.062497,270.61459 27.0625,271.25 L 27.0625,275.74219 L 24.789063,275.74219 M 31.023438,275.74219 L 31.023438,264.23438 L 33.296875,264.23438 L 33.296875,275.74219 L 31.023438,275.74219" + id="text5827" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 162.96875,266.49609 L 161.375,271.39453 L 164.57031,271.39453 L 162.96875,266.49609 M 161.59375,264.19141 L 164.32813,264.19141 L 168.47656,275.69922 L 165.99219,275.69922 L 165.21094,273.33203 L 160.75,273.33203 L 159.99219,275.69922 L 157.5,275.69922 L 161.59375,264.19141 M 169.53906,275.69922 L 169.53906,264.19141 L 171.8125,264.19141 L 171.8125,275.69922 L 169.53906,275.69922 M 177.64063,275.76172 C 177.43229,275.76693 177.18229,275.77474 176.89063,275.78516 C 176.60416,275.80078 176.42187,275.80859 176.34375,275.80859 C 175.47396,275.80859 174.8776,275.64714 174.55469,275.32422 C 174.23698,274.99609 174.07812,274.35287 174.07813,273.39453 L 174.07813,268.80078 L 172.95313,268.80078 L 172.95313,267.20703 L 174.07813,267.20703 L 174.07813,264.88672 L 176.32813,264.88672 L 176.32813,267.20703 L 177.64063,267.20703 L 177.64063,268.80078 L 176.32813,268.80078 L 176.32813,273.50391 C 176.32812,273.72787 176.3776,273.8763 176.47656,273.94922 C 176.57552,274.01693 176.77864,274.05078 177.08594,274.05078 L 177.64063,274.05078 L 177.64063,275.76172" + id="text5831" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 612.96875,266.53906 L 611.375,271.4375 L 614.57031,271.4375 L 612.96875,266.53906 M 611.59375,264.23438 L 614.32813,264.23438 L 618.47656,275.74219 L 615.99219,275.74219 L 615.21094,273.375 L 610.75,273.375 L 609.99219,275.74219 L 607.5,275.74219 L 611.59375,264.23438 M 619.53906,275.74219 L 619.53906,264.23438 L 621.8125,264.23438 L 621.8125,275.74219 L 619.53906,275.74219 M 627.64063,275.80469 C 627.43229,275.8099 627.18229,275.81771 626.89063,275.82813 C 626.60416,275.84375 626.42187,275.85156 626.34375,275.85156 C 625.47396,275.85156 624.8776,275.6901 624.55469,275.36719 C 624.23698,275.03906 624.07812,274.39583 624.07813,273.4375 L 624.07813,268.84375 L 622.95313,268.84375 L 622.95313,267.25 L 624.07813,267.25 L 624.07813,264.92969 L 626.32813,264.92969 L 626.32813,267.25 L 627.64063,267.25 L 627.64063,268.84375 L 626.32813,268.84375 L 626.32813,273.54688 C 626.32812,273.77084 626.3776,273.91927 626.47656,273.99219 C 626.57552,274.0599 626.77864,274.09375 627.08594,274.09375 L 627.64063,274.09375 L 627.64063,275.80469 M 642,274.38281 C 641.57291,274.96094 641.08593,275.38542 640.53906,275.65625 C 639.99739,275.92708 639.35937,276.0625 638.625,276.0625 C 637.01562,276.0625 635.71093,275.50521 634.71094,274.39063 C 633.71614,273.27084 633.21875,271.80209 633.21875,269.98438 C 633.21875,268.15105 633.71614,266.6849 634.71094,265.58594 C 635.70573,264.48699 637.03125,263.93751 638.6875,263.9375 C 640.1302,263.93751 641.30728,264.28387 642.21875,264.97656 C 643.1302,265.66407 643.67186,266.61199 643.84375,267.82031 L 641.42969,267.82031 C 641.28385,267.22136 640.98437,266.76563 640.53125,266.45313 C 640.08333,266.14063 639.49739,265.98438 638.77344,265.98438 C 637.80989,265.98438 637.05208,266.33855 636.5,267.04688 C 635.95312,267.75001 635.67968,268.72397 635.67969,269.96875 C 635.67968,271.21875 635.96614,272.19792 636.53906,272.90625 C 637.11197,273.61459 637.89843,273.96875 638.89844,273.96875 C 639.64843,273.96875 640.27603,273.7474 640.78125,273.30469 C 641.28645,272.86198 641.59895,272.25521 641.71875,271.48438 L 639.10938,271.48438 L 639.10938,269.51563 L 643.875,269.51563 L 643.875,275.74219 L 642.28906,275.74219 L 642,274.38281 M 645.96094,275.74219 L 645.96094,267.25 L 648.07031,267.25 L 648.07031,268.70313 C 648.36718,268.1198 648.71354,267.69272 649.10938,267.42188 C 649.5052,267.14584 649.97656,267.00782 650.52344,267.00781 C 650.61197,267.00782 650.67968,267.01043 650.72656,267.01563 C 650.77864,267.01563 650.82031,267.01824 650.85156,267.02344 L 650.85938,269.32813 L 650.10156,269.32813 C 649.48177,269.32813 649.01562,269.48959 648.70313,269.8125 C 648.39062,270.13542 648.23437,270.61459 648.23438,271.25 L 648.23438,275.74219 L 645.96094,275.74219" + id="text5835" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 828,271.78906 C 827.91145,273.09636 827.40624,274.13542 826.48438,274.90625 C 825.5677,275.67708 824.36978,276.0625 822.89063,276.0625 C 821.1875,276.0625 819.86198,275.53125 818.91406,274.46875 C 817.97135,273.40625 817.5,271.91667 817.5,270 C 817.5,268.04167 817.98177,266.54168 818.94531,265.5 C 819.90885,264.45834 821.29427,263.93751 823.10156,263.9375 C 824.5703,263.93751 825.72916,264.29689 826.57813,265.01563 C 827.43228,265.72918 827.90103,266.73959 827.98438,268.04688 L 825.64844,268.04688 C 825.54947,267.39584 825.28385,266.90105 824.85156,266.5625 C 824.41926,266.21876 823.83593,266.04688 823.10156,266.04688 C 822.05989,266.04688 821.26822,266.38282 820.72656,267.05469 C 820.18489,267.72657 819.91406,268.70834 819.91406,270 C 819.91406,271.25 820.18229,272.21615 820.71875,272.89844 C 821.26041,273.58073 822.02864,273.92188 823.02344,273.92188 C 823.74218,273.92188 824.33072,273.73959 824.78906,273.375 C 825.24739,273.00521 825.54426,272.47657 825.67969,271.78906 L 828,271.78906 M 833.46875,275.80469 C 833.26041,275.8099 833.01041,275.81771 832.71875,275.82813 C 832.43229,275.84375 832.25,275.85156 832.17188,275.85156 C 831.30208,275.85156 830.70573,275.6901 830.38281,275.36719 C 830.0651,275.03906 829.90625,274.39583 829.90625,273.4375 L 829.90625,268.84375 L 828.78125,268.84375 L 828.78125,267.25 L 829.90625,267.25 L 829.90625,264.92969 L 832.15625,264.92969 L 832.15625,267.25 L 833.46875,267.25 L 833.46875,268.84375 L 832.15625,268.84375 L 832.15625,273.54688 C 832.15625,273.77084 832.20573,273.91927 832.30469,273.99219 C 832.40364,274.0599 832.60677,274.09375 832.91406,274.09375 L 833.46875,274.09375 L 833.46875,275.80469 M 834.78906,275.74219 L 834.78906,267.25 L 836.89844,267.25 L 836.89844,268.70313 C 837.19531,268.1198 837.54166,267.69272 837.9375,267.42188 C 838.33333,267.14584 838.80468,267.00782 839.35156,267.00781 C 839.4401,267.00782 839.50781,267.01043 839.55469,267.01563 C 839.60677,267.01563 839.64843,267.01824 839.67969,267.02344 L 839.6875,269.32813 L 838.92969,269.32813 C 838.30989,269.32813 837.84375,269.48959 837.53125,269.8125 C 837.21875,270.13542 837.0625,270.61459 837.0625,271.25 L 837.0625,275.74219 L 834.78906,275.74219 M 841.02344,275.74219 L 841.02344,264.23438 L 843.29688,264.23438 L 843.29688,275.74219 L 841.02344,275.74219" + id="text5839" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 108.94531,264.01953 L 105.64844,252.51172 L 108.10156,252.51172 L 110.07031,260.62891 L 111.73438,252.51172 L 114.25781,252.51172 L 115.92188,260.62891 L 117.89063,252.51172 L 120.32031,252.51172 L 117.03125,264.01953 L 114.77344,264.01953 L 112.99219,255.20703 L 111.20313,264.01953 L 108.94531,264.01953 M 121.5,254.58203 L 121.5,252.51172 L 123.77344,252.51172 L 123.77344,254.58203 L 121.5,254.58203 M 121.5,264.01953 L 121.5,255.52734 L 123.77344,255.52734 L 123.77344,264.01953 L 121.5,264.01953 M 125.79688,264.01953 L 125.79688,255.52734 L 128.02344,255.52734 L 128.02344,256.53516 C 128.34114,256.12371 128.71614,255.81641 129.14844,255.61328 C 129.58072,255.40496 130.06249,255.30079 130.59375,255.30078 C 131.53124,255.30079 132.23176,255.54558 132.69531,256.03516 C 133.16405,256.51954 133.39843,257.25131 133.39844,258.23047 L 133.39844,264.01953 L 131.125,264.01953 L 131.125,258.88672 C 131.12499,258.27735 131.02083,257.84245 130.8125,257.58203 C 130.60937,257.32162 130.27604,257.19141 129.8125,257.19141 C 129.27604,257.19141 128.85156,257.35287 128.53906,257.67578 C 128.22656,257.9935 128.07031,258.42839 128.07031,258.98047 L 128.07031,264.01953 L 125.79688,264.01953 M 106.64844,284.01953 L 106.64844,272.51172 L 109.01563,272.51172 L 109.01563,277.23828 L 113.50781,272.51172 L 116.46875,272.51172 L 111.875,277.16797 L 116.88281,284.01953 L 113.99219,284.01953 L 110.24219,278.75391 L 109.01563,279.97266 L 109.01563,284.01953 L 106.64844,284.01953 M 122.9375,281.44141 L 125.20313,281.44141 C 124.97395,282.33724 124.51041,283.04037 123.8125,283.55078 C 123.11979,284.05599 122.27343,284.30859 121.27344,284.30859 C 120.04427,284.30859 119.07031,283.89714 118.35156,283.07422 C 117.63281,282.2461 117.27344,281.1263 117.27344,279.71484 C 117.27344,278.32422 117.6276,277.22787 118.33594,276.42578 C 119.04427,275.62371 120.01302,275.22267 121.24219,275.22266 C 122.54427,275.22267 123.54947,275.6185 124.25781,276.41016 C 124.96614,277.19662 125.3203,278.31902 125.32031,279.77734 C 125.3203,279.93881 125.3177,280.0612 125.3125,280.14453 C 125.31249,280.22266 125.30728,280.29818 125.29688,280.37109 L 119.625,280.37109 C 119.65625,281.03776 119.81771,281.54037 120.10938,281.87891 C 120.40625,282.21745 120.83073,282.38672 121.38281,282.38672 C 121.77343,282.38672 122.09374,282.3112 122.34375,282.16016 C 122.59374,282.00391 122.79166,281.76433 122.9375,281.44141 M 119.625,278.87891 L 122.96875,278.87891 C 122.94791,278.306 122.79426,277.8711 122.50781,277.57422 C 122.22656,277.27214 121.82031,277.1211 121.28906,277.12109 C 120.79427,277.1211 120.40364,277.27214 120.11719,277.57422 C 119.83593,277.87631 119.67187,278.3112 119.625,278.87891 M 127.16406,287.42578 L 127.16406,285.58984 C 127.23698,285.60026 127.3125,285.60807 127.39063,285.61328 C 127.46875,285.61849 127.57031,285.62109 127.69531,285.62109 C 128.14323,285.62109 128.47916,285.51432 128.70313,285.30078 C 128.92708,285.09245 129.03906,284.77734 129.03906,284.35547 C 129.03906,284.32422 129.03385,284.28516 129.02344,284.23828 C 129.01302,284.19141 129.0026,284.15234 128.99219,284.12109 L 125.92969,275.52734 L 128.42969,275.52734 L 130.21875,281.65234 L 131.96094,275.52734 L 134.35156,275.52734 L 130.85938,285.54297 C 130.59895,286.29297 130.27343,286.80338 129.88281,287.07422 C 129.49218,287.35026 128.90625,287.48828 128.125,287.48828 C 127.98437,287.48828 127.83333,287.48307 127.67188,287.47266 C 127.51041,287.46224 127.34114,287.44661 127.16406,287.42578" + id="text5872" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 708.94531,264.01953 L 705.64844,252.51172 L 708.10156,252.51172 L 710.07031,260.62891 L 711.73438,252.51172 L 714.25781,252.51172 L 715.92188,260.62891 L 717.89063,252.51172 L 720.32031,252.51172 L 717.03125,264.01953 L 714.77344,264.01953 L 712.99219,255.20703 L 711.20313,264.01953 L 708.94531,264.01953 M 721.5,254.58203 L 721.5,252.51172 L 723.77344,252.51172 L 723.77344,254.58203 L 721.5,254.58203 M 721.5,264.01953 L 721.5,255.52734 L 723.77344,255.52734 L 723.77344,264.01953 L 721.5,264.01953 M 725.79688,264.01953 L 725.79688,255.52734 L 728.02344,255.52734 L 728.02344,256.53516 C 728.34114,256.12371 728.71614,255.81641 729.14844,255.61328 C 729.58072,255.40496 730.06249,255.30079 730.59375,255.30078 C 731.53124,255.30079 732.23176,255.54558 732.69531,256.03516 C 733.16405,256.51954 733.39843,257.25131 733.39844,258.23047 L 733.39844,264.01953 L 731.125,264.01953 L 731.125,258.88672 C 731.12499,258.27735 731.02083,257.84245 730.8125,257.58203 C 730.60937,257.32162 730.27604,257.19141 729.8125,257.19141 C 729.27604,257.19141 728.85156,257.35287 728.53906,257.67578 C 728.22656,257.9935 728.07031,258.42839 728.07031,258.98047 L 728.07031,264.01953 L 725.79688,264.01953 M 706.64844,284.01953 L 706.64844,272.51172 L 709.01563,272.51172 L 709.01563,277.23828 L 713.50781,272.51172 L 716.46875,272.51172 L 711.875,277.16797 L 716.88281,284.01953 L 713.99219,284.01953 L 710.24219,278.75391 L 709.01563,279.97266 L 709.01563,284.01953 L 706.64844,284.01953 M 722.9375,281.44141 L 725.20313,281.44141 C 724.97395,282.33724 724.51041,283.04037 723.8125,283.55078 C 723.11979,284.05599 722.27343,284.30859 721.27344,284.30859 C 720.04427,284.30859 719.07031,283.89714 718.35156,283.07422 C 717.63281,282.2461 717.27344,281.1263 717.27344,279.71484 C 717.27344,278.32422 717.6276,277.22787 718.33594,276.42578 C 719.04427,275.62371 720.01302,275.22267 721.24219,275.22266 C 722.54427,275.22267 723.54947,275.6185 724.25781,276.41016 C 724.96614,277.19662 725.3203,278.31902 725.32031,279.77734 C 725.3203,279.93881 725.3177,280.0612 725.3125,280.14453 C 725.31249,280.22266 725.30728,280.29818 725.29688,280.37109 L 719.625,280.37109 C 719.65625,281.03776 719.81771,281.54037 720.10938,281.87891 C 720.40625,282.21745 720.83073,282.38672 721.38281,282.38672 C 721.77343,282.38672 722.09374,282.3112 722.34375,282.16016 C 722.59374,282.00391 722.79166,281.76433 722.9375,281.44141 M 719.625,278.87891 L 722.96875,278.87891 C 722.94791,278.306 722.79426,277.8711 722.50781,277.57422 C 722.22656,277.27214 721.82031,277.1211 721.28906,277.12109 C 720.79427,277.1211 720.40364,277.27214 720.11719,277.57422 C 719.83593,277.87631 719.67187,278.3112 719.625,278.87891 M 727.16406,287.42578 L 727.16406,285.58984 C 727.23698,285.60026 727.3125,285.60807 727.39063,285.61328 C 727.46875,285.61849 727.57031,285.62109 727.69531,285.62109 C 728.14323,285.62109 728.47916,285.51432 728.70313,285.30078 C 728.92708,285.09245 729.03906,284.77734 729.03906,284.35547 C 729.03906,284.32422 729.03385,284.28516 729.02344,284.23828 C 729.01302,284.19141 729.0026,284.15234 728.99219,284.12109 L 725.92969,275.52734 L 728.42969,275.52734 L 730.21875,281.65234 L 731.96094,275.52734 L 734.35156,275.52734 L 730.85938,285.54297 C 730.59895,286.29297 730.27343,286.80338 729.88281,287.07422 C 729.49218,287.35026 728.90625,287.48828 728.125,287.48828 C 727.98437,287.48828 727.83333,287.48307 727.67188,287.47266 C 727.51041,287.46224 727.34114,287.44661 727.16406,287.42578" + id="text5878" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 759.98438,275.60938 L 759.98438,264.10156 L 763.48438,264.10156 L 765.77344,272.85938 L 768.03125,264.10156 L 771.54688,264.10156 L 771.54688,275.60938 L 769.32813,275.60938 L 769.32813,266.32813 L 766.99219,275.60938 L 764.57031,275.60938 L 762.20313,266.32813 L 762.20313,275.60938 L 759.98438,275.60938 M 778.99219,273.03125 L 781.25781,273.03125 C 781.02864,273.92709 780.5651,274.63021 779.86719,275.14063 C 779.17447,275.64583 778.32812,275.89844 777.32813,275.89844 C 776.09896,275.89844 775.125,275.48698 774.40625,274.66406 C 773.6875,273.83594 773.32812,272.71615 773.32813,271.30469 C 773.32812,269.91407 773.68229,268.81772 774.39063,268.01563 C 775.09896,267.21355 776.06771,266.81251 777.29688,266.8125 C 778.59895,266.81251 779.60416,267.20834 780.3125,268 C 781.02083,268.78647 781.37499,269.90886 781.375,271.36719 C 781.37499,271.52865 781.37239,271.65105 781.36719,271.73438 C 781.36718,271.8125 781.36197,271.88802 781.35156,271.96094 L 775.67969,271.96094 C 775.71093,272.62761 775.87239,273.13021 776.16406,273.46875 C 776.46093,273.80729 776.88541,273.97656 777.4375,273.97656 C 777.82812,273.97656 778.14843,273.90104 778.39844,273.75 C 778.64843,273.59375 778.84635,273.35417 778.99219,273.03125 M 775.67969,270.46875 L 779.02344,270.46875 C 779.0026,269.89584 778.84895,269.46094 778.5625,269.16406 C 778.28124,268.86199 777.87499,268.71094 777.34375,268.71094 C 776.84895,268.71094 776.45833,268.86199 776.17188,269.16406 C 775.89062,269.46615 775.72656,269.90105 775.67969,270.46875 M 782.88281,275.60938 L 782.88281,267.11719 L 785.10938,267.11719 L 785.10938,268.125 C 785.42708,267.71355 785.80208,267.40626 786.23438,267.20313 C 786.66666,266.9948 787.14843,266.89063 787.67969,266.89063 C 788.61718,266.89063 789.3177,267.13543 789.78125,267.625 C 790.24999,268.10938 790.48437,268.84115 790.48438,269.82031 L 790.48438,275.60938 L 788.21094,275.60938 L 788.21094,270.47656 C 788.21093,269.86719 788.10676,269.4323 787.89844,269.17188 C 787.69531,268.91147 787.36197,268.78126 786.89844,268.78125 C 786.36197,268.78126 785.9375,268.94272 785.625,269.26563 C 785.3125,269.58334 785.15625,270.01823 785.15625,270.57031 L 785.15625,275.60938 L 782.88281,275.60938 M 800.01563,267.11719 L 800.01563,275.60938 L 797.78906,275.60938 L 797.78906,274.60156 C 797.46614,275.01302 797.08854,275.32292 796.65625,275.53125 C 796.22916,275.73437 795.74739,275.83594 795.21094,275.83594 C 794.27864,275.83594 793.57812,275.59115 793.10938,275.10156 C 792.64583,274.61198 792.41406,273.88021 792.41406,272.90625 L 792.41406,267.11719 L 794.6875,267.11719 L 794.6875,272.25 C 794.6875,272.85417 794.78906,273.28646 794.99219,273.54688 C 795.19531,273.80209 795.53125,273.92969 796,273.92969 C 796.53124,273.92969 796.95312,273.77084 797.26563,273.45313 C 797.58333,273.13021 797.74218,272.69271 797.74219,272.14063 L 797.74219,267.11719 L 800.01563,267.11719" + id="text5884" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 104.41406,17.103516 L 104.41406,10.212891 L 101.74219,10.212891 L 101.74219,8.7949219 L 101.94141,8.7949219 C 102.89453,8.7949367 103.58984,8.6621243 104.02734,8.3964844 C 104.47265,8.1308749 104.73828,7.6894691 104.82422,7.0722656 L 106.59375,7.0722656 L 106.59375,17.103516 L 104.41406,17.103516 M 106.72266,36.369141 L 106.72266,39.826172 L 103.24219,39.826172 L 103.24219,36.369141 L 106.72266,36.369141 M 105.89063,41.173828 L 106.80469,48.978516 L 106.80469,53.630859 L 103.19531,53.630859 L 103.19531,48.978516 L 104.10938,41.173828 L 105.89063,41.173828" + id="text5890" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 160.85156,47.103516 C 160.875,46.197273 161.08984,45.431649 161.49609,44.806641 C 161.91015,44.18165 162.63672,43.548838 163.67578,42.908203 C 163.82422,42.822276 164.03125,42.701183 164.29688,42.544922 C 165.74218,41.724621 166.46484,40.931653 166.46484,40.166016 C 166.46484,39.720717 166.32031,39.369155 166.03125,39.111328 C 165.74218,38.85353 165.34375,38.724624 164.83594,38.724609 C 164.27343,38.724624 163.83984,38.88478 163.53516,39.205078 C 163.23047,39.517592 163.07812,39.966811 163.07813,40.552734 L 163.07813,40.646484 L 161.03906,40.646484 C 161.03906,39.498061 161.37891,38.615249 162.05859,37.998047 C 162.73828,37.380876 163.71093,37.072282 164.97656,37.072266 C 166.11718,37.072282 167.02343,37.353532 167.69531,37.916016 C 168.37499,38.470718 168.71484,39.212905 168.71484,40.142578 C 168.71484,40.814466 168.53905,41.39259 168.1875,41.876953 C 167.83593,42.361339 167.14843,42.919933 166.125,43.552734 C 165.89843,43.701182 165.57812,43.896494 165.16406,44.138672 C 164.22656,44.685556 163.69922,45.115243 163.58203,45.427734 L 168.62109,45.427734 L 168.62109,47.103516 L 160.85156,47.103516" + id="text5910" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 220.92188,44.033203 L 223.05469,44.033203 C 223.07031,44.603525 223.22265,45.029305 223.51172,45.310547 C 223.80078,45.591805 224.23437,45.73243 224.8125,45.732422 C 225.36718,45.73243 225.79687,45.599617 226.10156,45.333984 C 226.40624,45.068368 226.55859,44.689462 226.55859,44.197266 C 226.55859,43.697276 226.38281,43.322276 226.03125,43.072266 C 225.67968,42.814464 225.15234,42.685558 224.44922,42.685547 L 224.10938,42.685547 L 224.10938,41.291016 L 224.35547,41.291016 C 225.0039,41.291028 225.48046,41.181653 225.78516,40.962891 C 226.09765,40.736341 226.2539,40.392591 226.25391,39.931641 C 226.2539,39.54103 226.12109,39.232436 225.85547,39.005859 C 225.58984,38.771499 225.23437,38.654312 224.78906,38.654297 C 224.29687,38.654312 223.91797,38.787124 223.65234,39.052734 C 223.38672,39.310561 223.2539,39.681655 223.25391,40.166016 L 223.25391,40.236328 L 221.16797,40.236328 C 221.19141,39.212905 221.51953,38.431656 222.15234,37.892578 C 222.79297,37.345719 223.70312,37.072282 224.88281,37.072266 C 225.99218,37.072282 226.86718,37.314469 227.50781,37.798828 C 228.15624,38.283218 228.48046,38.943374 228.48047,39.779297 C 228.48046,40.21681 228.36718,40.603529 228.14063,40.939453 C 227.92187,41.26759 227.59374,41.537121 227.15625,41.748047 C 227.72656,41.974621 228.15624,42.291027 228.44531,42.697266 C 228.74218,43.095714 228.89062,43.564463 228.89063,44.103516 C 228.89062,45.119149 228.52343,45.923836 227.78906,46.517578 C 227.06249,47.103522 226.07031,47.396491 224.8125,47.396484 C 223.57031,47.396491 222.60937,47.107428 221.92969,46.529297 C 221.25781,45.95118 220.92187,45.134774 220.92188,44.080078 L 220.92188,44.033203" + id="text5922" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 278.92969,21.685547 C 279.86719,21.037112 280.53125,20.439456 280.92188,19.892578 C 281.32031,19.345707 281.51953,18.75977 281.51953,18.134766 C 281.51953,17.837896 281.47265,17.525397 281.37891,17.197266 C 281.28515,16.861335 281.14843,16.509773 280.96875,16.142578 L 278.90625,16.142578 L 278.90625,14.841797 L 280.17188,14.841797 C 279.82812,14.162119 279.57812,13.556651 279.42188,13.025391 C 279.26562,12.494152 279.1875,11.998059 279.1875,11.537109 C 279.1875,10.146498 279.69531,9.021499 280.71094,8.1621094 C 281.73437,7.3027507 283.08203,6.8730636 284.75391,6.8730469 C 286.5664,6.8730636 287.98827,7.3379069 289.01953,8.2675781 C 290.05077,9.1972801 290.61327,10.517591 290.70703,12.228516 L 287.47266,12.228516 C 287.41015,11.345715 287.15624,10.669935 286.71094,10.201172 C 286.26562,9.7324358 285.65624,9.498061 284.88281,9.4980469 C 284.14843,9.498061 283.58203,9.6894671 283.18359,10.072266 C 282.79296,10.455091 282.59765,11.005872 282.59766,11.724609 C 282.59765,12.138683 282.84375,12.888683 283.33594,13.974609 C 283.50781,14.349619 283.63671,14.638681 283.72266,14.841797 L 287.0625,14.841797 L 287.0625,16.142578 L 284.20313,16.142578 C 284.27343,16.43946 284.32421,16.712898 284.35547,16.962891 C 284.38671,17.212897 284.40234,17.443366 284.40234,17.654297 C 284.40234,18.216802 284.22656,18.779302 283.875,19.341797 C 283.53124,19.896488 282.94531,20.548831 282.11719,21.298828 C 282.625,21.064456 283.08203,20.892581 283.48828,20.783203 C 283.90234,20.666019 284.27734,20.607425 284.61328,20.607422 C 285.01952,20.607425 285.57421,20.701175 286.27734,20.888672 C 286.98046,21.068362 287.48046,21.158206 287.77734,21.158203 C 288.16796,21.158206 288.55077,21.095706 288.92578,20.970703 C 289.30858,20.845706 289.68749,20.6543 290.0625,20.396484 L 291.09375,22.939453 C 290.4453,23.322266 289.82421,23.611328 289.23047,23.806641 C 288.63671,24.009765 288.08202,24.111328 287.56641,24.111328 C 286.97265,24.111328 286.16796,23.955078 285.15234,23.642578 C 284.14453,23.330078 283.41406,23.173829 282.96094,23.173828 C 282.48437,23.173829 282.01953,23.251954 281.56641,23.408203 C 281.12109,23.564453 280.6875,23.798828 280.26563,24.111328 L 278.92969,21.685547 M 284.94141,40.025391 C 284.05859,40.025404 283.29687,40.345716 282.65625,40.986328 C 282.01562,41.626965 281.69531,42.384777 281.69531,43.259766 C 281.69531,44.1504 282.01171,44.912118 282.64453,45.544922 C 283.27734,46.169929 284.04296,46.482429 284.94141,46.482422 C 285.82421,46.482429 286.58202,46.169929 287.21484,45.544922 C 287.85546,44.912118 288.17577,44.1504 288.17578,43.259766 C 288.17577,42.384777 287.85546,41.626965 287.21484,40.986328 C 286.58202,40.345716 285.82421,40.025404 284.94141,40.025391 M 279.65625,36.779297 L 282.05859,39.158203 C 282.48046,38.85353 282.92578,38.626968 283.39453,38.478516 C 283.86328,38.322281 284.37109,38.244156 284.91797,38.244141 C 285.46484,38.244156 285.97655,38.322281 286.45313,38.478516 C 286.93749,38.626968 287.39062,38.85353 287.8125,39.158203 L 290.19141,36.779297 L 291.42188,38.033203 L 289.04297,40.435547 C 289.33983,40.849622 289.56249,41.294934 289.71094,41.771484 C 289.85936,42.240246 289.93358,42.736339 289.93359,43.259766 C 289.93358,43.783213 289.85936,44.279306 289.71094,44.748047 C 289.56249,45.216805 289.33983,45.666024 289.04297,46.095703 L 291.42188,48.498047 L 290.19141,49.716797 L 287.8125,47.337891 C 287.39062,47.650397 286.9414,47.880865 286.46484,48.029297 C 285.98827,48.17774 285.48046,48.251959 284.94141,48.251953 C 284.3789,48.251959 283.85937,48.17774 283.38281,48.029297 C 282.91406,47.880865 282.47265,47.650397 282.05859,47.337891 L 279.65625,49.716797 L 278.4375,48.498047 L 280.80469,46.095703 C 280.50781,45.673836 280.28515,45.23243 280.13672,44.771484 C 279.99609,44.302744 279.92578,43.798838 279.92578,43.259766 C 279.92578,42.736339 279.99609,42.240246 280.13672,41.771484 C 280.28515,41.294934 280.50781,40.849622 280.80469,40.435547 L 278.4375,38.033203 L 279.65625,36.779297" + id="text5928" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 352.875,47.701172 C 352.74217,49.662113 351.98436,51.220706 350.60156,52.376953 C 349.22655,53.533203 347.42968,54.111328 345.21094,54.111328 C 342.65624,54.111328 340.66796,53.314453 339.24609,51.720703 C 337.83203,50.126957 337.125,47.892584 337.125,45.017578 C 337.125,42.08009 337.84765,39.830092 339.29297,38.267578 C 340.73828,36.705095 342.8164,35.923846 345.52734,35.923828 C 347.73046,35.923846 349.46874,36.462908 350.74219,37.541016 C 352.02342,38.611343 352.72655,40.126967 352.85156,42.087891 L 349.34766,42.087891 C 349.19921,41.111341 348.80077,40.369154 348.15234,39.861328 C 347.50389,39.345717 346.6289,39.087905 345.52734,39.087891 C 343.96484,39.087905 342.77734,39.591811 341.96484,40.599609 C 341.15234,41.607434 340.74609,43.080089 340.74609,45.017578 C 340.74609,46.892585 341.14843,48.341802 341.95313,49.365234 C 342.76562,50.388675 343.91796,50.900393 345.41016,50.900391 C 346.48827,50.900393 347.37108,50.626956 348.05859,50.080078 C 348.74608,49.525395 349.19139,48.732427 349.39453,47.701172 L 352.875,47.701172" + id="text5946" /> + <path + transform="matrix(1.16233,0,-0.444745,0.860341,0,0)" + style="font-size:16.72912407px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 307.52845,53.268758 L 317.31434,53.268758 L 317.31434,54.894293 L 307.52845,54.894293 L 307.52845,53.268758 M 307.52845,49.756296 L 317.31434,49.756296 L 317.31434,51.381831 L 307.52845,51.381831 L 307.52845,49.756296" + id="text5956" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 411.45117,50.150391 L 411.45117,46.142578 L 408.63867,50.150391 L 411.45117,50.150391 M 411.45117,53.630859 L 411.45117,51.591797 L 406.98633,51.591797 L 406.98633,49.962891 L 410.90039,44.513672 L 413.51367,44.513672 L 413.51367,50.103516 L 414.73242,50.103516 L 414.73242,51.591797 L 413.51367,51.591797 L 413.51367,53.630859 L 411.45117,53.630859 M 398.58398,54.111328 L 408.7793,36.615234 L 410.70117,36.615234 L 400.48242,54.111328 L 398.58398,54.111328 M 397.78711,46.458984 L 397.78711,40.025391 L 395.26758,40.025391 L 395.26758,38.701172 L 395.44336,38.701172 C 396.36523,38.701187 397.0332,38.576187 397.44727,38.326172 C 397.86914,38.076187 398.11914,37.658219 398.19727,37.072266 L 399.88477,37.072266 L 399.88477,46.458984 L 397.78711,46.458984" + id="text5960" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 467.0918,53.630859 C 467.11522,52.779298 467.32225,52.064455 467.71289,51.486328 C 468.11131,50.900393 468.80663,50.31055 469.79883,49.716797 C 469.95506,49.630863 470.16991,49.50977 470.44336,49.353516 C 471.7949,48.595708 472.47068,47.861334 472.4707,47.150391 C 472.47068,46.736335 472.33006,46.40821 472.04883,46.166016 C 471.76756,45.923836 471.38475,45.802742 470.90039,45.802734 C 470.36912,45.802742 469.95506,45.95118 469.6582,46.248047 C 469.36913,46.544929 469.22459,46.966804 469.22461,47.513672 L 469.22461,47.607422 L 467.2793,47.607422 C 467.27928,46.529304 467.6035,45.70118 468.25195,45.123047 C 468.90038,44.537118 469.82616,44.24415 471.0293,44.244141 C 472.12303,44.24415 472.99412,44.505868 473.64258,45.029297 C 474.29881,45.552742 474.62693,46.251961 474.62695,47.126953 C 474.62693,47.751959 474.45506,48.294927 474.11133,48.755859 C 473.77537,49.208989 473.11522,49.72852 472.13086,50.314453 C 471.9199,50.439456 471.63084,50.607425 471.26367,50.818359 C 470.34959,51.341799 469.83397,51.744143 469.7168,52.025391 L 474.50977,52.025391 L 474.50977,53.630859 L 467.0918,53.630859 M 458.68945,54.111328 L 468.88477,36.615234 L 470.80664,36.615234 L 460.58789,54.111328 L 458.68945,54.111328 M 457.89258,46.458984 L 457.89258,40.025391 L 455.37305,40.025391 L 455.37305,38.701172 L 455.54883,38.701172 C 456.4707,38.701187 457.13867,38.576187 457.55273,38.326172 C 457.97461,38.076187 458.22461,37.658219 458.30273,37.072266 L 459.99023,37.072266 L 459.99023,46.458984 L 457.89258,46.458984" + id="text5967" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 531.83203,50.150391 L 531.83203,46.142578 L 529.01953,50.150391 L 531.83203,50.150391 M 531.83203,53.630859 L 531.83203,51.591797 L 527.36719,51.591797 L 527.36719,49.962891 L 531.28125,44.513672 L 533.89453,44.513672 L 533.89453,50.103516 L 535.11328,50.103516 L 535.11328,51.591797 L 533.89453,51.591797 L 533.89453,53.630859 L 531.83203,53.630859 M 518.96484,54.111328 L 529.16016,36.615234 L 531.08203,36.615234 L 520.86328,54.111328 L 518.96484,54.111328 M 514.88672,43.599609 L 516.89063,43.599609 C 516.91406,44.130869 517.0625,44.529306 517.33594,44.794922 C 517.61718,45.052743 518.03125,45.181649 518.57813,45.181641 C 519.10937,45.181649 519.51953,45.060555 519.80859,44.818359 C 520.09765,44.568368 520.24218,44.208994 520.24219,43.740234 C 520.24218,43.271495 520.07421,42.919933 519.73828,42.685547 C 519.40234,42.443371 518.90625,42.322277 518.25,42.322266 C 518.20312,42.322277 518.14453,42.326183 518.07422,42.333984 C 518.0039,42.341808 517.94922,42.345714 517.91016,42.345703 L 517.91016,41.033203 L 518.14453,41.033203 C 518.76171,41.033216 519.21484,40.931653 519.50391,40.728516 C 519.80078,40.517591 519.94921,40.193373 519.94922,39.755859 C 519.94921,39.388686 519.82421,39.099624 519.57422,38.888672 C 519.32421,38.669937 518.98437,38.560562 518.55469,38.560547 C 518.08593,38.560562 517.72265,38.685562 517.46484,38.935547 C 517.21484,39.177749 517.08984,39.525405 517.08984,39.978516 L 517.08984,40.048828 L 515.08594,40.048828 C 515.10156,39.087905 515.41797,38.353531 516.03516,37.845703 C 516.65234,37.330094 517.52343,37.072282 518.64844,37.072266 C 519.70312,37.072282 520.53906,37.302751 521.15625,37.763672 C 521.77343,38.216812 522.08202,38.833999 522.08203,39.615234 C 522.08202,40.02931 521.97655,40.392591 521.76563,40.705078 C 521.55468,41.009778 521.23827,41.263684 520.81641,41.466797 C 521.36327,41.677746 521.77343,41.970715 522.04688,42.345703 C 522.32812,42.712902 522.46874,43.154307 522.46875,43.669922 C 522.46874,44.607431 522.11718,45.349618 521.41406,45.896484 C 520.71874,46.443367 519.77343,46.716804 518.57813,46.716797 C 517.39062,46.716804 516.47656,46.451179 515.83594,45.919922 C 515.20312,45.380868 514.88672,44.615243 514.88672,43.623047 L 514.88672,43.599609" + id="text5973" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 586.63477,39.404297 L 586.63477,42.498047 L 583.36523,42.498047 L 583.36523,39.474609 C 583.36523,38.482437 583.66992,37.654313 584.2793,36.990234 C 584.88867,36.326189 585.67382,35.970721 586.63477,35.923828 L 586.63477,37.119141 C 586.04101,37.259782 585.59961,37.509782 585.31055,37.869141 C 585.02148,38.220719 584.87695,38.681656 584.87695,39.251953 L 584.87695,39.404297 L 586.63477,39.404297" + id="text5979" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 643.36523,39.474609 L 643.36523,36.369141 L 646.63477,36.369141 L 646.63477,39.427734 C 646.63476,40.412123 646.33007,41.240247 645.7207,41.912109 C 645.11132,42.576183 644.32617,42.931651 643.36523,42.978516 L 643.36523,41.771484 C 643.95898,41.630871 644.39648,41.384778 644.67773,41.033203 C 644.96679,40.673841 645.11132,40.201185 645.11133,39.615234 L 645.11133,39.474609 L 643.36523,39.474609" + id="text5985" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 706.89258,53.630859 L 703.50586,53.630859 L 703.50586,47.560547 L 703.27148,47.150391 L 698.00977,47.150391 L 698.00977,45.826172 L 702.49805,45.826172 L 701.64258,44.337891 L 698.00977,44.337891 L 698.00977,43.025391 L 700.86914,43.025391 L 697.61133,37.330078 L 701.41992,37.330078 L 705.19336,44.724609 L 708.69727,37.330078 L 712.27148,37.330078 L 709.27148,43.025391 L 712.00195,43.025391 L 712.00195,44.337891 L 708.58008,44.337891 L 707.7832,45.826172 L 712.00195,45.826172 L 712.00195,47.150391 L 707.0918,47.150391 L 706.89258,47.560547 L 706.89258,53.630859" + id="text5991" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 764.97656,19.306641 C 765.46093,19.306645 765.8789,19.482426 766.23047,19.833984 C 766.58202,20.18555 766.7578,20.603519 766.75781,21.087891 C 766.7578,21.564455 766.58202,21.974611 766.23047,22.318359 C 765.8789,22.66211 765.46093,22.833985 764.97656,22.833984 C 764.48437,22.833985 764.06249,22.666017 763.71094,22.330078 C 763.36718,21.994142 763.1953,21.58008 763.19531,21.087891 C 763.1953,20.595706 763.36718,20.177738 763.71094,19.833984 C 764.06249,19.482426 764.48437,19.306645 764.97656,19.306641 M 757.94531,15.298828 L 771.98438,15.298828 L 771.98438,17.630859 L 757.94531,17.630859 L 757.94531,15.298828 M 764.97656,10.095703 C 765.46093,10.095717 765.8789,10.271498 766.23047,10.623047 C 766.58202,10.96681 766.7578,11.380872 766.75781,11.865234 C 766.7578,12.357433 766.58202,12.779308 766.23047,13.130859 C 765.88671,13.47462 765.46874,13.646494 764.97656,13.646484 C 764.48437,13.646494 764.06249,13.47462 763.71094,13.130859 C 763.36718,12.779308 763.1953,12.357433 763.19531,11.865234 C 763.1953,11.373059 763.36718,10.955091 763.71094,10.611328 C 764.06249,10.267591 764.48437,10.095717 764.97656,10.095703 M 759.84375,39.544922 L 765.11719,44.818359 L 770.40234,39.544922 L 772.05469,41.173828 L 766.78125,46.482422 L 772.05469,51.755859 L 770.40234,53.396484 L 765.11719,48.111328 L 759.84375,53.396484 L 758.20313,51.755859 L 763.48828,46.482422 L 758.20313,41.173828 L 759.84375,39.544922" + id="text5997" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 134.9707,69.826172 L 132.58008,77.173828 L 137.37305,77.173828 L 134.9707,69.826172 M 132.9082,66.369141 L 137.00977,66.369141 L 143.23242,83.630859 L 139.50586,83.630859 L 138.33398,80.080078 L 131.64258,80.080078 L 130.50586,83.630859 L 126.76758,83.630859 L 132.9082,66.369141 M 135.70898,64.166016 L 135.70898,61.283203 L 138.35742,61.283203 L 138.35742,64.166016 L 135.70898,64.166016 M 131.63086,64.166016 L 131.63086,61.283203 L 134.2793,61.283203 L 134.2793,64.166016 L 131.63086,64.166016" + id="text6003" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 194.9707,62.126953 C 194.5957,62.126975 194.27538,62.267599 194.00977,62.548828 C 193.74413,62.822286 193.61132,63.154317 193.61133,63.544922 C 193.61132,63.927754 193.74023,64.251973 193.99805,64.517578 C 194.26366,64.783222 194.58788,64.916034 194.9707,64.916016 C 195.36132,64.916034 195.69335,64.783222 195.9668,64.517578 C 196.24804,64.24416 196.38866,63.919942 196.38867,63.544922 C 196.38866,63.16213 196.24804,62.830099 195.9668,62.548828 C 195.69335,62.267599 195.36132,62.126975 194.9707,62.126953 M 194.9707,60.521484 C 195.81444,60.521507 196.52929,60.814476 197.11523,61.400391 C 197.70116,61.978537 197.99413,62.685568 197.99414,63.521484 C 197.99413,64.357441 197.70116,65.068378 197.11523,65.654297 C 196.52929,66.232439 195.81444,66.521501 194.9707,66.521484 C 194.13476,66.521501 193.42773,66.232439 192.84961,65.654297 C 192.27929,65.07619 191.99414,64.365254 191.99414,63.521484 C 191.99414,62.677755 192.27929,61.966819 192.84961,61.388672 C 193.42773,60.81057 194.13476,60.521507 194.9707,60.521484 M 192.7207,67.072266 L 197.23242,67.072266 L 203.23242,83.630859 L 199.50586,83.630859 L 198.33398,80.080078 L 191.64258,80.080078 L 190.50586,83.630859 L 186.76758,83.630859 L 192.7207,67.072266 M 194.9707,69.826172 L 192.58008,77.173828 L 197.37305,77.173828 L 194.9707,69.826172" + id="text6007" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 248.52539,83.630859 L 248.52539,66.369141 L 261.05273,66.369141 L 261.05273,69.369141 L 252.0293,69.369141 L 252.0293,73.048828 L 260.2793,73.048828 L 260.2793,76.001953 L 252.0293,76.001953 L 252.0293,80.443359 L 261.47461,80.443359 L 261.47461,83.630859 L 248.52539,83.630859 M 258.24023,60.521484 L 254.57227,64.857422 L 252.9082,64.857422 L 255.2168,60.521484 L 258.24023,60.521484" + id="text6011" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 313.72266,101.49056 L 313.72266,104.29134 L 314.88281,104.29134 C 315.5703,104.29135 316.07421,104.18198 316.39453,103.96322 C 316.71483,103.74448 316.87499,103.40073 316.875,102.93197 C 316.87499,102.43979 316.70311,102.07651 316.35938,101.84212 C 316.01561,101.60776 315.48436,101.49057 314.76563,101.49056 L 313.72266,101.49056 M 311.37891,100.00228 L 315.16406,100.00228 C 316.53905,100.00229 317.5703,100.23667 318.25781,100.70541 C 318.95311,101.16636 319.30077,101.85776 319.30078,102.77962 C 319.30077,103.42026 319.11327,103.96713 318.73828,104.42025 C 318.36327,104.87338 317.84374,105.18198 317.17969,105.34603 L 319.34766,109.67025 L 316.72266,109.67025 L 314.88281,105.70931 L 313.72266,105.70931 L 313.72266,109.67025 L 311.37891,109.67025 L 311.37891,100.00228 M 315,97.717125 C 314.0078,97.717141 313.08593,97.892922 312.23438,98.244469 C 311.38281,98.588234 310.61718,99.099952 309.9375,99.779625 C 309.22656,100.49058 308.67968,101.29917 308.29688,102.20541 C 307.91406,103.10385 307.72265,104.03354 307.72266,104.99447 C 307.72265,105.96323 307.90234,106.8851 308.26172,107.76009 C 308.62109,108.62729 309.14062,109.40072 309.82031,110.08041 C 310.51562,110.79135 311.30859,111.33822 312.19922,111.72103 C 313.08984,112.09603 314.01562,112.28353 314.97656,112.28353 C 315.91405,112.28353 316.82421,112.09994 317.70703,111.73275 C 318.59764,111.36556 319.40624,110.83822 320.13281,110.15072 C 320.81248,109.49447 321.33983,108.72885 321.71484,107.85384 C 322.08983,106.97885 322.27733,106.0726 322.27734,105.13509 C 322.27733,104.09604 322.10155,103.13901 321.75,102.264 C 321.40623,101.38901 320.89061,100.60386 320.20313,99.908531 C 319.49999,99.181983 318.70702,98.635109 317.82422,98.267906 C 316.94921,97.900734 316.0078,97.717141 315,97.717125 M 314.97656,96.275719 C 316.17968,96.275736 317.31249,96.502298 318.375,96.955406 C 319.4453,97.400735 320.39842,98.049172 321.23438,98.900719 C 322.03905,99.713233 322.65233,100.64292 323.07422,101.68978 C 323.49608,102.73667 323.70701,103.84604 323.70703,105.01791 C 323.70701,106.20541 323.48826,107.33041 323.05078,108.39291 C 322.61326,109.4476 321.97655,110.37728 321.14063,111.18197 C 320.30467,112.00228 319.35155,112.63119 318.28125,113.06869 C 317.21874,113.50619 316.11718,113.72494 314.97656,113.72494 C 313.81249,113.72494 312.69921,113.49838 311.63672,113.04525 C 310.57421,112.59213 309.625,111.93978 308.78906,111.08822 C 307.97656,110.26791 307.35547,109.33822 306.92578,108.29916 C 306.5039,107.25229 306.29297,106.15854 306.29297,105.01791 C 306.29297,104.22104 306.39844,103.4476 306.60938,102.69759 C 306.82031,101.93979 307.13672,101.20151 307.55859,100.48275 C 308.34765,99.154639 309.39062,98.12339 310.6875,97.389 C 311.98437,96.646829 313.41405,96.275736 314.97656,96.275719" + id="text6015" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 372.0293,69.064453 L 376.06055,69.064453 C 377.84179,69.064468 379.18944,69.505874 380.10352,70.388672 C 381.01756,71.263684 381.47459,72.556652 381.47461,74.267578 C 381.47459,75.939461 381.02538,77.228522 380.12695,78.134766 C 379.23632,79.033208 377.95897,79.482426 376.29492,79.482422 L 372.0293,79.482422 L 372.0293,83.630859 L 368.52539,83.630859 L 368.52539,66.369141 L 372.0293,66.369141 L 372.0293,69.064453 M 372.05273,76.599609 L 375.47461,76.599609 C 376.4121,76.599616 377.09179,76.416023 377.51367,76.048828 C 377.93554,75.673836 378.14647,75.080087 378.14648,74.267578 C 378.14647,73.509776 377.93554,72.939464 377.51367,72.556641 C 377.09179,72.166027 376.47069,71.970715 375.65039,71.970703 L 372.05273,71.970703 L 372.05273,76.599609" + id="text6019" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 428.08594,66.322266 L 431.67188,66.322266 L 431.67188,77.150391 C 431.67187,78.486333 431.93749,79.462895 432.46875,80.080078 C 432.99999,80.689456 433.84374,80.994143 435,80.994141 C 436.17187,80.994143 437.02343,80.689456 437.55469,80.080078 C 438.09374,79.470707 438.36327,78.494146 438.36328,77.150391 L 438.36328,66.322266 L 441.91406,66.322266 L 441.91406,77.537109 C 441.91405,79.654301 441.3203,81.279299 440.13281,82.412109 C 438.95311,83.544922 437.24999,84.111328 435.02344,84.111328 C 432.78124,84.111328 431.0625,83.548828 429.86719,82.423828 C 428.67969,81.291018 428.08594,79.662113 428.08594,77.537109 L 428.08594,66.322266 M 435.73828,64.166016 L 435.73828,61.283203 L 438.38672,61.283203 L 438.38672,64.166016 L 435.73828,64.166016 M 431.66016,64.166016 L 431.66016,61.283203 L 434.30859,61.283203 L 434.30859,64.166016 L 431.66016,64.166016" + id="text6023" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 488.08594,66.105469 L 491.67188,66.105469 L 491.67188,76.933594 C 491.67187,78.269536 491.93749,79.246098 492.46875,79.863281 C 492.99999,80.472659 493.84374,80.777346 495,80.777344 C 496.17187,80.777346 497.02343,80.472659 497.55469,79.863281 C 498.09374,79.25391 498.36327,78.277349 498.36328,76.933594 L 498.36328,66.105469 L 501.91406,66.105469 L 501.91406,77.320313 C 501.91405,79.437504 501.3203,81.062502 500.13281,82.195313 C 498.95311,83.328125 497.24999,83.894531 495.02344,83.894531 C 492.78124,83.894531 491.0625,83.332031 489.86719,82.207031 C 488.67969,81.074221 488.08594,79.445316 488.08594,77.320313 L 488.08594,66.105469 M 498.45703,60.304688 L 494.78906,64.640625 L 493.125,64.640625 L 495.43359,60.304688 L 498.45703,60.304688" + id="text6029" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 552.43945,83.630859 L 552.43945,66.369141 L 555.99023,66.369141 L 555.99023,83.630859 L 552.43945,83.630859 M 557.66602,60.521484 L 553.99805,64.857422 L 552.33398,64.857422 L 554.64258,60.521484 L 557.66602,60.521484" + id="text6033" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 610.18359,75 C 610.18359,76.898444 610.60546,78.375005 611.44922,79.429688 C 612.29296,80.476566 613.47265,81.000003 614.98828,81 C 616.51952,81.000003 617.71093,80.476566 618.5625,79.429688 C 619.41405,78.375005 619.83983,76.898444 619.83984,75 C 619.83983,73.101573 619.41405,71.628918 618.5625,70.582031 C 617.71093,69.527358 616.51952,69.000015 614.98828,69 C 613.47265,69.000015 612.29296,69.523452 611.44922,70.570313 C 610.60546,71.617199 610.18359,73.093761 610.18359,75 M 606.5625,75 C 606.5625,72.210949 607.32031,70.000014 608.83594,68.367188 C 610.35937,66.726579 612.41015,65.906268 614.98828,65.90625 C 617.56639,65.906268 619.61717,66.726579 621.14063,68.367188 C 622.67186,70.007826 623.43748,72.218761 623.4375,75 C 623.43748,77.781256 622.67186,79.992191 621.14063,81.632813 C 619.61717,83.273438 617.56639,84.09375 614.98828,84.09375 C 612.41015,84.09375 610.35937,83.273438 608.83594,81.632813 C 607.32031,79.992191 606.5625,77.781256 606.5625,75 M 618.44531,60.503906 L 614.77734,64.839844 L 613.11328,64.839844 L 615.42188,60.503906 L 618.44531,60.503906" + id="text6037" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 670.18359,75.017578 C 670.18359,76.916022 670.60546,78.392583 671.44922,79.447266 C 672.29296,80.494144 673.47265,81.017581 674.98828,81.017578 C 676.51952,81.017581 677.71093,80.494144 678.5625,79.447266 C 679.41405,78.392583 679.83983,76.916022 679.83984,75.017578 C 679.83983,73.119151 679.41405,71.646496 678.5625,70.599609 C 677.71093,69.544936 676.51952,69.017593 674.98828,69.017578 C 673.47265,69.017593 672.29296,69.54103 671.44922,70.587891 C 670.60546,71.634778 670.18359,73.111339 670.18359,75.017578 M 666.5625,75.017578 C 666.5625,72.228527 667.32031,70.017592 668.83594,68.384766 C 670.35937,66.744158 672.41015,65.923846 674.98828,65.923828 C 677.56639,65.923846 679.61717,66.744158 681.14063,68.384766 C 682.67186,70.025404 683.43748,72.23634 683.4375,75.017578 C 683.43748,77.798834 682.67186,80.009769 681.14063,81.650391 C 679.61717,83.291016 677.56639,84.111328 674.98828,84.111328 C 672.41015,84.111328 670.35937,83.291016 668.83594,81.650391 C 667.32031,80.009769 666.5625,77.798834 666.5625,75.017578 M 675.72656,64.166016 L 675.72656,61.283203 L 678.375,61.283203 L 678.375,64.166016 L 675.72656,64.166016 M 671.64844,64.166016 L 671.64844,61.283203 L 674.29688,61.283203 L 674.29688,64.166016 L 671.64844,64.166016" + id="text6041" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 735.5332,106.35352 L 735.5332,103.35352 L 739.44727,99.966797 L 739.44727,102.75586 L 737.04492,104.8418 L 739.44727,106.92773 L 739.44727,109.74023 L 735.5332,106.35352 M 730.4707,106.35352 L 730.4707,103.35352 L 734.4082,99.966797 L 734.4082,102.75586 L 732.00586,104.8418 L 734.4082,106.92773 L 734.4082,109.74023 L 730.4707,106.35352" + id="text6045" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 799.44727,103.3418 L 799.44727,106.3418 L 795.5332,109.72852 L 795.5332,106.93945 L 797.93555,104.83008 L 795.5332,102.76758 L 795.5332,99.955078 L 799.44727,103.3418 M 794.4082,103.3418 L 794.4082,106.3418 L 790.4707,109.72852 L 790.4707,106.93945 L 792.86133,104.83008 L 790.4707,102.76758 L 790.4707,99.955078 L 794.4082,103.3418" + id="text6051" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 883.81641,76.535881 L 886.23047,76.535881 L 886.23047,85.418694 L 883.81641,85.418694 L 883.81641,76.535881 M 883.81641,64.535881 L 886.23047,64.535881 L 886.23047,73.418694 L 883.81641,73.418694 L 883.81641,64.535881 M 877.98047,101.19213 L 892.01953,101.19213 L 892.01953,107.07494 L 889.6875,107.07494 L 889.6875,103.48901 L 877.98047,103.48901 L 877.98047,101.19213" + id="text6057" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 149.9707,129.82617 L 147.58008,137.17383 L 152.37305,137.17383 L 149.9707,129.82617 M 147.9082,126.36914 L 152.00977,126.36914 L 158.23242,143.63086 L 154.50586,143.63086 L 153.33398,140.08008 L 146.64258,140.08008 L 145.50586,143.63086 L 141.76758,143.63086 L 147.9082,126.36914 M 153.42773,120.52148 L 149.75977,124.85742 L 148.0957,124.85742 L 150.4043,120.52148 L 153.42773,120.52148" + id="text6065" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 211.40625,137.91797 C 211.71874,137.73829 211.95312,137.53907 212.10938,137.32031 C 212.26562,137.10157 212.34374,136.86719 212.34375,136.61719 C 212.34374,136.31251 212.2539,136.0547 212.07422,135.84375 C 211.89452,135.62501 211.52343,135.3711 210.96094,135.08203 L 207.85547,133.47656 C 207.55078,133.65626 207.3164,133.85938 207.15234,134.08594 C 206.99609,134.31251 206.91797,134.5547 206.91797,134.8125 C 206.91797,135.1172 207.03125,135.38673 207.25781,135.62109 C 207.49218,135.84766 208.0039,136.16407 208.79297,136.57031 L 211.40625,137.91797 M 205.03125,141.75 L 207.92578,141.75 C 207.98828,142.35938 208.16796,142.8125 208.46484,143.10938 C 208.76953,143.40625 209.19921,143.55469 209.75391,143.55469 C 210.26952,143.55469 210.67968,143.43359 210.98438,143.19141 C 211.28905,142.94141 211.4414,142.60547 211.44141,142.18359 C 211.4414,141.83985 211.32812,141.54297 211.10156,141.29297 C 210.87499,141.03516 210.42577,140.74219 209.75391,140.41406 L 206.95313,138.99609 C 206.0625,138.55079 205.39844,138.03907 204.96094,137.46094 C 204.52344,136.88282 204.30469,136.23438 204.30469,135.51563 C 204.30469,134.82032 204.47266,134.21095 204.80859,133.6875 C 205.15234,133.15626 205.65625,132.71485 206.32031,132.36328 C 205.92969,132.01173 205.64062,131.62892 205.45313,131.21484 C 205.26562,130.79298 205.17187,130.32814 205.17188,129.82031 C 205.17187,128.64845 205.57422,127.70705 206.37891,126.99609 C 207.18359,126.27736 208.2539,125.91799 209.58984,125.91797 C 210.96484,125.91799 212.04296,126.26955 212.82422,126.97266 C 213.60546,127.6758 214.0078,128.64845 214.03125,129.89063 L 211.26563,129.89063 C 211.24999,129.3672 211.09374,128.96876 210.79688,128.69531 C 210.50781,128.42189 210.08984,128.28517 209.54297,128.28516 C 209.05859,128.28517 208.68359,128.39064 208.41797,128.60156 C 208.16015,128.81251 208.03125,129.10939 208.03125,129.49219 C 208.03125,129.8047 208.18359,130.09767 208.48828,130.37109 C 208.80078,130.63673 209.35937,130.95704 210.16406,131.33203 L 212.13281,132.24609 C 213.1328,132.72267 213.87108,133.25392 214.34766,133.83984 C 214.82421,134.41798 215.06249,135.08595 215.0625,135.84375 C 215.06249,136.55469 214.8828,137.17579 214.52344,137.70703 C 214.17186,138.23047 213.66405,138.63672 213,138.92578 C 213.45312,139.32422 213.79296,139.76563 214.01953,140.25 C 214.24608,140.73438 214.35936,141.26563 214.35938,141.84375 C 214.35936,143.04688 213.92968,144.03906 213.07031,144.82031 C 212.21093,145.60937 211.10546,146.0039 209.75391,146.00391 C 208.26953,146.0039 207.1289,145.64453 206.33203,144.92578 C 205.53515,144.20703 205.10156,143.14844 205.03125,141.75 M 203.97656,173.625 L 203.97656,160.59375 C 203.97656,159.29689 204.48047,158.25002 205.48828,157.45313 C 206.49609,156.64845 207.83984,156.24611 209.51953,156.24609 C 211.23046,156.24611 212.5703,156.63674 213.53906,157.41797 C 214.5078,158.19923 214.99217,159.27345 214.99219,160.64063 C 214.99217,161.48439 214.84764,162.17579 214.55859,162.71484 C 214.27733,163.25392 213.83983,163.66798 213.24609,163.95703 C 214.16796,164.32423 214.85936,164.86329 215.32031,165.57422 C 215.78905,166.28516 216.02342,167.16016 216.02344,168.19922 C 216.02342,169.94922 215.51952,171.36328 214.51172,172.44141 C 213.5039,173.51953 212.18358,174.05859 210.55078,174.05859 C 210.32421,174.05859 210.0703,174.04687 209.78906,174.02344 C 209.51562,174 209.21874,173.96484 208.89844,173.91797 L 208.89844,171.17578 C 208.99999,171.19141 209.10156,171.20313 209.20313,171.21094 C 209.31249,171.21875 209.47265,171.22266 209.68359,171.22266 C 210.60546,171.22266 211.3164,170.96875 211.81641,170.46094 C 212.3164,169.94532 212.5664,169.21485 212.56641,168.26953 C 212.5664,167.35548 212.29296,166.66016 211.74609,166.18359 C 211.20702,165.70704 210.41796,165.46876 209.37891,165.46875 L 209.0625,165.46875 L 209.07422,163.06641 C 209.12109,163.07423 209.17187,163.08204 209.22656,163.08984 C 209.28124,163.08985 209.36327,163.08985 209.47266,163.08984 C 210.16796,163.08985 210.6953,162.91798 211.05469,162.57422 C 211.42187,162.22267 211.60546,161.71486 211.60547,161.05078 C 211.60546,160.38673 211.41405,159.88283 211.03125,159.53906 C 210.65624,159.18751 210.10546,159.01173 209.37891,159.01172 C 208.70703,159.01173 208.19531,159.20705 207.84375,159.59766 C 207.49218,159.98048 207.3164,160.54298 207.31641,161.28516 L 207.31641,173.625 L 203.97656,173.625" + id="text6073" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 267.09961,140.51367 L 269.94727,140.51367 C 271.60351,140.51367 272.80272,140.08008 273.54492,139.21289 C 274.2871,138.34571 274.65819,136.94727 274.6582,135.01758 C 274.65819,133.09571 274.31053,131.68165 273.61523,130.77539 C 272.92772,129.86134 271.8496,129.40431 270.38086,129.4043 L 267.09961,129.4043 L 267.09961,133.23633 L 270.88477,133.23633 L 270.88477,135.47461 L 267.09961,135.47461 L 267.09961,140.51367 M 263.61914,143.63086 L 263.61914,135.47461 L 261.74414,135.47461 L 261.74414,133.23633 L 263.61914,133.23633 L 263.61914,126.36914 L 270.4043,126.36914 C 273.04491,126.36916 275.01366,127.084 276.31055,128.51367 C 277.60741,129.93556 278.25584,132.10353 278.25586,135.01758 C 278.25584,136.60352 278.01756,137.99805 277.54102,139.20117 C 277.07225,140.4043 276.38084,141.36914 275.4668,142.0957 C 274.77928,142.64258 273.99413,143.03711 273.11133,143.2793 C 272.23632,143.51367 271.00585,143.63086 269.41992,143.63086 L 263.61914,143.63086" + id="text6077" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 626.72461,139.55273 C 627.17773,140.04493 627.68945,140.41211 628.25977,140.6543 C 628.83007,140.89649 629.47069,141.01758 630.18164,141.01758 C 631.71288,141.01758 632.90428,140.49414 633.75586,139.44727 C 634.60741,138.39258 635.03319,136.91602 635.0332,135.01758 C 635.03319,134.24415 634.96288,133.54493 634.82227,132.91992 C 634.68163,132.28712 634.4785,131.73634 634.21289,131.26758 L 626.72461,139.55273 M 625.98633,138.36914 L 633.39258,130.21289 C 632.9785,129.81447 632.50585,129.51759 631.97461,129.32227 C 631.44335,129.11916 630.84569,129.01759 630.18164,129.01758 C 628.66601,129.01759 627.48632,129.54103 626.64258,130.58789 C 625.79882,131.63478 625.37695,133.11134 625.37695,135.01758 C 625.37695,135.72071 625.42382,136.34571 625.51758,136.89258 C 625.61914,137.43946 625.77539,137.93165 625.98633,138.36914 M 621.36914,143.36133 L 623.51367,140.9707 C 622.91992,140.16602 622.47851,139.27149 622.18945,138.28711 C 621.90039,137.29493 621.75586,136.20509 621.75586,135.01758 C 621.75586,132.22853 622.51367,130.01759 624.0293,128.38477 C 625.55273,126.74416 627.60351,125.92385 630.18164,125.92383 C 631.28319,125.92385 632.27147,126.06447 633.14648,126.3457 C 634.02928,126.62697 634.84178,127.06056 635.58398,127.64648 L 637.30664,125.70117 L 638.45508,126.73242 L 636.63867,128.70117 C 637.30272,129.5215 637.79881,130.45509 638.12695,131.50195 C 638.46287,132.54884 638.63084,133.72071 638.63086,135.01758 C 638.63084,137.79883 637.86912,140.00977 636.3457,141.65039 C 634.82225,143.29102 632.76757,144.11133 630.18164,144.11133 C 629.01757,144.11133 627.96679,143.94727 627.0293,143.61914 C 626.0996,143.29102 625.26367,142.79102 624.52148,142.11914 L 622.50586,144.4043 L 621.36914,143.36133" + id="text6081" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 690,127.98633 C 689.42968,127.98634 688.9414,128.18556 688.53516,128.58398 C 688.13672,128.98244 687.9375,129.4629 687.9375,130.02539 C 687.9375,130.60353 688.13672,131.09181 688.53516,131.49023 C 688.93359,131.88868 689.42187,132.0879 690,132.08789 C 690.5625,132.0879 691.04296,131.88478 691.44141,131.47852 C 691.83984,131.07228 692.03906,130.5879 692.03906,130.02539 C 692.03906,129.4629 691.83984,128.98244 691.44141,128.58398 C 691.04296,128.18556 690.5625,127.98634 690,127.98633 M 690,126.47461 C 690.98437,126.47463 691.82031,126.82619 692.50781,127.5293 C 693.20312,128.22462 693.55077,129.06447 693.55078,130.04883 C 693.55077,131.0254 693.20312,131.86134 692.50781,132.55664 C 691.81249,133.25196 690.96875,133.59962 689.97656,133.59961 C 688.99218,133.59962 688.15625,133.25587 687.46875,132.56836 C 686.78906,131.88087 686.44922,131.04103 686.44922,130.04883 C 686.44922,129.05666 686.79297,128.21291 687.48047,127.51758 C 688.17578,126.82228 689.01562,126.47463 690,126.47461 M 695.51953,156.29883 L 695.51953,157.59961 L 694.19531,157.59961 L 694.19531,173.63086 L 692.42578,173.63086 L 692.42578,157.59961 L 690.57422,157.59961 L 690.57422,173.63086 L 688.78125,173.63086 L 688.78125,164.44336 C 687.47656,164.39649 686.43359,164.00196 685.65234,163.25977 C 684.87109,162.51759 684.48047,161.56056 684.48047,160.38867 C 684.48047,159.15431 684.89844,158.16603 685.73438,157.42383 C 686.57031,156.67385 687.67968,156.29885 689.0625,156.29883 L 695.51953,156.29883" + id="text6085" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 373.13672,6.5214844 L 376.08984,6.5214844 L 381.72656,13.095703 L 378.97266,13.095703 L 374.625,8.7480469 L 370.25391,13.095703 L 367.5,13.095703 L 373.13672,6.5214844" + id="text6091" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 750.67969,128.67773 L 750.67969,125.79492 L 753.32813,125.79492 L 753.32813,128.67773 L 750.67969,128.67773 M 746.60156,128.67773 L 746.60156,125.79492 L 749.25,125.79492 L 749.25,128.67773 L 746.60156,128.67773 M 753.39844,155.0332 L 749.73047,159.36914 L 748.06641,159.36914 L 750.375,155.0332 L 753.39844,155.0332" + id="text6099" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 171.07031,197.29102 L 175.92188,197.29102 L 175.92188,189.29883 L 173.97656,189.29883 L 171.07031,197.29102 M 165,203.63086 L 171.80859,186.36914 L 187.81641,186.36914 L 187.81641,189.36914 L 179.34375,189.36914 L 179.34375,193.04883 L 187.05469,193.04883 L 187.05469,196.00195 L 179.34375,196.00195 L 179.34375,200.44336 L 188.25,200.44336 L 188.25,203.63086 L 175.92188,203.63086 L 175.92188,200.08008 L 170.0625,200.08008 L 168.76172,203.63086 L 165,203.63086" + id="text6105" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 300.46875,193.23633 C 300.32031,193.22071 300.20312,193.20899 300.11719,193.20117 C 300.03906,193.19337 299.96484,193.18946 299.89453,193.18945 C 299.05859,193.18946 298.42578,193.53321 297.99609,194.2207 C 297.5664,194.90821 297.35156,195.92384 297.35156,197.26758 C 297.35156,198.04102 297.4375,198.70899 297.60938,199.27148 C 297.78906,199.83399 298.04687,200.28711 298.38281,200.63086 L 300.46875,193.23633 M 296.68359,206.49023 L 297.48047,203.63086 C 296.30859,203.13867 295.42187,202.35352 294.82031,201.27539 C 294.21875,200.19727 293.91797,198.85352 293.91797,197.24414 C 293.91797,195.11134 294.45312,193.43946 295.52344,192.22852 C 296.60156,191.01759 298.07421,190.41212 299.94141,190.41211 C 300.15234,190.41212 300.35937,190.41994 300.5625,190.43555 C 300.76562,190.45119 300.96874,190.47462 301.17188,190.50586 L 301.69922,188.56055 L 302.97656,188.56055 L 302.34375,190.78711 C 303.32811,191.09181 304.09765,191.63478 304.65234,192.41602 C 305.20702,193.18946 305.52733,194.17774 305.61328,195.38086 L 302.32031,195.36914 C 302.28124,194.98634 302.1914,194.65821 302.05078,194.38477 C 301.91796,194.10353 301.72265,193.85743 301.46484,193.64648 L 299.36719,201.13477 C 299.38281,201.13477 299.40624,201.13867 299.4375,201.14648 C 299.67187,201.16992 299.85156,201.18164 299.97656,201.18164 C 300.66406,201.18164 301.19921,200.99024 301.58203,200.60742 C 301.97265,200.22461 302.23437,199.62305 302.36719,198.80273 L 305.66016,198.80273 C 305.54296,200.41993 304.96874,201.70117 303.9375,202.64648 C 302.91405,203.5918 301.59374,204.06445 299.97656,204.06445 C 299.76562,204.06445 299.55077,204.05664 299.33203,204.04102 C 299.11328,204.02539 298.88671,204.00195 298.65234,203.9707 L 297.96094,206.49023 L 296.68359,206.49023 M 304.19531,223.0957 L 301.99219,223.0957 C 301.92968,222.54884 301.72264,222.12696 301.37109,221.83008 C 301.01952,221.5254 300.55468,221.37306 299.97656,221.37305 C 299.26562,221.37306 298.70702,221.69337 298.30078,222.33398 C 297.89452,222.96681 297.6914,223.85353 297.69141,224.99414 C 297.6914,226.14259 297.89452,227.01758 298.30078,227.61914 C 298.70702,228.22071 299.29687,228.52149 300.07031,228.52148 C 300.64061,228.52149 301.09765,228.35743 301.44141,228.0293 C 301.78514,227.70118 301.99218,227.23633 302.0625,226.63477 L 304.32422,226.62305 C 304.2617,227.70899 303.83592,228.58008 303.04688,229.23633 C 302.2578,229.89258 301.24218,230.22071 300,230.2207 C 298.54687,230.22071 297.39843,229.75977 296.55469,228.83789 C 295.71874,227.91602 295.30078,226.65821 295.30078,225.06445 C 295.30078,223.45509 295.72656,222.17384 296.57813,221.2207 C 297.43749,220.25978 298.58593,219.77931 300.02344,219.7793 C 301.21093,219.77931 302.18749,220.084 302.95313,220.69336 C 303.72655,221.30275 304.14061,222.10353 304.19531,223.0957 M 300,217.7168 C 298.99999,217.71681 298.06249,217.8965 297.1875,218.25586 C 296.32031,218.61525 295.54687,219.13869 294.86719,219.82617 C 294.17187,220.52931 293.64062,221.32618 293.27344,222.2168 C 292.90625,223.09962 292.72265,224.0254 292.72266,224.99414 C 292.72265,225.97071 292.90625,226.89649 293.27344,227.77148 C 293.64062,228.64649 294.17187,229.43164 294.86719,230.12695 C 295.55468,230.81446 296.33984,231.3418 297.22266,231.70898 C 298.10546,232.07617 299.03124,232.25977 300,232.25977 C 300.96874,232.25977 301.89452,232.07617 302.77734,231.70898 C 303.66796,231.3418 304.46874,230.80664 305.17969,230.10352 C 305.86717,229.43164 306.3867,228.66211 306.73828,227.79492 C 307.09764,226.92774 307.27733,225.99415 307.27734,224.99414 C 307.27733,224.00978 307.09373,223.08009 306.72656,222.20508 C 306.36717,221.32228 305.84373,220.53712 305.15625,219.84961 C 304.46092,219.15431 303.67577,218.62697 302.80078,218.26758 C 301.92577,217.90041 300.99218,217.71681 300,217.7168 M 299.97656,216.27539 C 301.16405,216.27541 302.28514,216.49416 303.33984,216.93164 C 304.40233,217.36916 305.35155,218.00587 306.1875,218.8418 C 307.0078,219.66212 307.63279,220.60353 308.0625,221.66602 C 308.49217,222.72071 308.70701,223.8379 308.70703,225.01758 C 308.70701,226.20509 308.49217,227.31446 308.0625,228.3457 C 307.64061,229.37696 307.01561,230.29883 306.1875,231.11133 C 305.3203,231.95508 304.35155,232.60352 303.28125,233.05664 C 302.21093,233.50195 301.10936,233.72461 299.97656,233.72461 C 298.82812,233.72461 297.73046,233.50586 296.68359,233.06836 C 295.64453,232.62305 294.70312,231.97852 293.85938,231.13477 C 293.02343,230.30664 292.38672,229.36914 291.94922,228.32227 C 291.51172,227.26758 291.29297,226.16602 291.29297,225.01758 C 291.29297,223.85353 291.51172,222.74415 291.94922,221.68945 C 292.38672,220.62697 293.02343,219.66994 293.85938,218.81836 C 294.67968,217.99025 295.60937,217.36134 296.64844,216.93164 C 297.68749,216.49416 298.79687,216.27541 299.97656,216.27539" + id="text6109" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 472.88672,203.63086 L 472.88672,186.36914 L 476.60156,186.36914 L 483.60938,198.22852 L 483.60938,186.36914 L 487.11328,186.36914 L 487.11328,203.63086 L 483.44531,203.63086 L 476.39063,191.77148 L 476.39063,203.63086 L 472.88672,203.63086 M 483.82031,181.0957 C 483.61717,182.07229 483.31639,182.79494 482.91797,183.26367 C 482.51952,183.72463 482.0078,183.9551 481.38281,183.95508 C 481.21874,183.9551 481.0664,183.94729 480.92578,183.93164 C 480.78515,183.90822 480.64452,183.87307 480.50391,183.82617 L 479.48438,183.52148 C 479.33593,183.48244 479.19921,183.4551 479.07422,183.43945 C 478.94921,183.41604 478.82812,183.40432 478.71094,183.4043 C 478.44531,183.40432 478.23046,183.47463 478.06641,183.61523 C 477.90234,183.75588 477.77343,183.98635 477.67969,184.30664 L 476.39063,184.30664 C 476.57812,183.36135 476.86718,182.66604 477.25781,182.2207 C 477.64843,181.77541 478.15624,181.55276 478.78125,181.55273 C 478.9453,181.55276 479.10937,181.56838 479.27344,181.59961 C 479.43749,181.62307 479.60937,181.66213 479.78906,181.7168 L 480.87891,182.00977 C 480.97265,182.04104 481.0703,182.06447 481.17188,182.08008 C 481.28124,182.09572 481.39843,182.10354 481.52344,182.10352 C 481.77343,182.10354 481.98046,182.02151 482.14453,181.85742 C 482.3164,181.68557 482.4453,181.43166 482.53125,181.0957 L 483.82031,181.0957" + id="text6113" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 535.83398,220.83432 L 539.2207,220.83432 L 538.33008,225.93198 C 538.21289,226.55698 538.12304,227.15073 538.06055,227.71323 C 537.99804,228.26792 537.96679,228.72104 537.9668,229.0726 C 537.96679,229.79917 538.13085,230.34214 538.45898,230.70151 C 538.7871,231.05307 539.2871,231.22885 539.95898,231.22885 C 540.74023,231.22885 541.3457,230.90854 541.77539,230.26791 C 542.21288,229.62729 542.57616,228.49058 542.86523,226.85776 L 543.91992,220.83432 L 547.30664,220.83432 L 545.04492,233.6312 L 541.9043,233.6312 L 542.11523,232.2601 C 541.7871,232.86948 541.41991,233.31479 541.01367,233.59604 C 540.61523,233.87729 540.14257,234.01791 539.5957,234.01791 C 539.07226,234.01791 538.60742,233.90073 538.20117,233.66635 C 537.79492,233.43979 537.42773,233.08432 537.09961,232.59995 L 536.04492,238.76401 L 532.69336,238.76401 L 535.83398,220.83432" + id="text6117" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 607.875,197.70117 C 607.74217,199.66211 606.98436,201.22071 605.60156,202.37695 C 604.22655,203.5332 602.42968,204.11133 600.21094,204.11133 C 597.65624,204.11133 595.66796,203.31445 594.24609,201.7207 C 592.83203,200.12696 592.125,197.89258 592.125,195.01758 C 592.125,192.08009 592.84765,189.83009 594.29297,188.26758 C 595.73828,186.7051 597.8164,185.92385 600.52734,185.92383 C 602.73046,185.92385 604.46874,186.46291 605.74219,187.54102 C 607.02342,188.61134 607.72655,190.12697 607.85156,192.08789 L 604.34766,192.08789 C 604.19921,191.11134 603.80077,190.36915 603.15234,189.86133 C 602.50389,189.34572 601.6289,189.08791 600.52734,189.08789 C 598.96484,189.08791 597.77734,189.59181 596.96484,190.59961 C 596.15234,191.60743 595.74609,193.08009 595.74609,195.01758 C 595.74609,196.89258 596.14843,198.3418 596.95313,199.36523 C 597.76562,200.38868 598.91796,200.90039 600.41016,200.90039 C 601.48827,200.90039 602.37108,200.62696 603.05859,200.08008 C 603.74608,199.52539 604.19139,198.73243 604.39453,197.70117 L 607.875,197.70117 M 597.62109,208.76367 L 597.62109,207.25195 C 598.24609,207.41601 598.81249,207.54101 599.32031,207.62695 C 599.82812,207.71289 600.26171,207.75586 600.62109,207.75586 C 601.02733,207.75586 601.32421,207.68554 601.51172,207.54492 C 601.69921,207.41211 601.79296,207.19726 601.79297,206.90039 C 601.79296,206.60351 601.68358,206.39258 601.46484,206.26758 C 601.24608,206.14258 600.8828,206.08008 600.375,206.08008 C 600.1953,206.08008 600.05858,206.08008 599.96484,206.08008 C 599.87108,206.08789 599.78515,206.0957 599.70703,206.10352 L 599.70703,203.63086 L 600.90234,203.63086 L 600.90234,204.68555 L 601.07813,204.68555 C 601.99218,204.68555 602.67968,204.87305 603.14063,205.24805 C 603.60155,205.62304 603.83202,206.18164 603.83203,206.92383 C 603.83202,207.70507 603.57421,208.29101 603.05859,208.68164 C 602.54296,209.07226 601.76952,209.26757 600.73828,209.26758 C 600.33983,209.26757 599.87108,209.2246 599.33203,209.13867 C 598.80077,209.05273 598.23046,208.92773 597.62109,208.76367" + id="text6121" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 721.7168,216.36914 L 721.7168,219.82617 L 718.23633,219.82617 L 718.23633,216.36914 L 721.7168,216.36914 M 721.55273,221.39648 C 721.55273,221.47462 721.55663,221.5879 721.56445,221.73633 C 721.57226,221.88478 721.57616,221.99415 721.57617,222.06445 C 721.57616,222.74415 721.50194,223.31446 721.35352,223.77539 C 721.20507,224.23634 720.96679,224.66602 720.63867,225.06445 C 720.38085,225.36134 720.00195,225.70118 719.50195,226.08398 C 719.00976,226.4668 718.69335,226.74415 718.55273,226.91602 C 718.24804,227.25977 718.0332,227.57618 717.9082,227.86523 C 717.79101,228.1543 717.73242,228.4668 717.73242,228.80273 C 717.73242,229.55274 717.93554,230.13477 718.3418,230.54883 C 718.74804,230.95508 719.32226,231.15821 720.06445,231.1582 C 720.79882,231.15821 721.38085,230.91211 721.81055,230.41992 C 722.24023,229.91993 722.4746,229.22071 722.51367,228.32227 L 725.8418,228.32227 L 725.8418,228.68555 C 725.84178,230.3418 725.31835,231.66211 724.27148,232.64648 C 723.23241,233.62305 721.83007,234.11133 720.06445,234.11133 C 718.25976,234.11133 716.82226,233.64648 715.75195,232.7168 C 714.68945,231.7793 714.1582,230.53321 714.1582,228.97852 C 714.1582,228.40821 714.2168,227.90821 714.33398,227.47852 C 714.45117,227.04883 714.63086,226.65821 714.87305,226.30664 C 715.18554,225.86915 715.67773,225.39259 716.34961,224.87695 C 717.02148,224.36134 717.43554,224.03321 717.5918,223.89258 C 717.88867,223.60353 718.0996,223.29884 718.22461,222.97852 C 718.35742,222.6504 718.42382,222.25587 718.42383,221.79492 C 718.42382,221.75587 718.41992,221.69337 718.41211,221.60742 C 718.40429,221.51368 718.40039,221.44337 718.40039,221.39648 L 721.55273,221.39648" + id="text6131" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Matrix Unicode" + d="" + id="text6955" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="137.05411" + y="23.149496" + id="text4346" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348" + x="137.05411" + y="23.149496" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> Ë </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="186.05411" + y="27.3995" + id="text4346-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-1" + x="186.05411" + y="27.3995" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> ¯ </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="482.80411" + y="24.6495" + id="text4346-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-7" + x="482.80411" + y="24.6495" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> Ë› </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="558.30408" + y="24.399498" + id="text4346-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-0" + x="558.30408" + y="24.399498" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> ˘ </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="626.55408" + y="11.1495" + id="text4346-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-09" + x="626.55408" + y="11.1495" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"><tspan + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start" + id="tspan4483"> o</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="667.80408" + y="28.899498" + id="text4346-31" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-15" + x="667.80408" + y="28.899498" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> . </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="619.55408" + y="203.14951" + id="text4346-38" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-8" + x="619.55408" + y="203.14951" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> ˇ </tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="620.30408" + y="232.14951" + id="text4346-9" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4348-6" + x="620.30408" + y="232.14951" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:23.75px;line-height:125%;font-family:'Arial Nova';-inkscape-font-specification:'Arial Nova, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1"> Ë™ </tspan></text> + <path + inkscape:connector-curvature="0" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:24px;line-height:125%;font-family:'Swis721 BT';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 402.88672,6.52148 2.95312,0 5.63672,6.574219 -2.7539,0 -4.34766,-4.3476565 -4.37109,4.3476565 -2.75391,0 5.63672,-6.574219" + id="text6091-3" /> + </g> +</svg> diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png Binary files differnew file mode 100644 index 000000000..875eb3652 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg new file mode 100644 index 000000000..1ca6a9c87 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg @@ -0,0 +1,935 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="900" + height="300" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.45.1" + version="1.0" + sodipodi:docbase="C:\Documents and Settings\David Nelson\Archives\Svg" + sodipodi:docname="KB_US-International.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path5387" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + id="path5390" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <marker + inkscape:stockid="Tail" + orient="auto" + refY="0.0" + refX="0.0" + id="Tail" + style="overflow:visible"> + <g + id="g5342" + transform="scale(-1.2)"> + <path + id="path5344" + d="M -3.8048674,-3.9585227 L 0.54352094,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5346" + d="M -1.2866832,-3.9585227 L 3.0617053,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5348" + d="M 1.3053582,-3.9585227 L 5.6537466,-0.00068114835" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5350" + d="M -3.8048674,4.1775838 L 0.54352094,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5352" + d="M -1.2866832,4.1775838 L 3.0617053,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + <path + id="path5354" + d="M 1.3053582,4.1775838 L 5.6537466,0.21974226" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" /> + </g> + </marker> + <marker + inkscape:stockid="Arrow2Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Mend" + style="overflow:visible;"> + <path + id="path5363" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.6) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path5369" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;"> + <path + id="path5375" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.2) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow2Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Send" + style="overflow:visible;"> + <path + id="path5357" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(0.3) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;"> + <path + id="path5381" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.4) rotate(180)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + id="path5372" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(-5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.74472808" + inkscape:cx="450" + inkscape:cy="150" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:grid-points="true" + showgrid="true" + gridtolerance="15px" + gridcolor="#0000ff" + gridopacity="0.12156863" + gridempcolor="#0000ff" + gridempopacity="0.25098039" + gridspacingx="7.5px" + gridspacingy="7.5px" + gridempspacing="4" + showborder="false" + inkscape:window-width="756" + inkscape:window-height="569" + inkscape:window-x="28" + inkscape:window-y="218" + showguides="true" + inkscape:guide-bbox="true" + inkscape:grid-bbox="true" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,0 L 60,0 L 60,60 L 0,60 L 0,0 z " + id="rect2186" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 60,0 L 120,0 L 120,60 L 60,60 L 60,0 z " + id="rect2218" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 120,0 L 180,0 L 180,60 L 120,60 L 120,0 z " + id="rect2222" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 180,0 L 240,0 L 240,60 L 180,60 L 180,0 z " + id="rect2228" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 240,0 L 300,0 L 300,60 L 240,60 L 240,0 z " + id="rect2230" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 300,0 L 360,0 L 360,60 L 300,60 L 300,0 z " + id="rect2232" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 360,0 L 420,0 L 420,60 L 360,60 L 360,0 z " + id="rect2234" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 420,0 L 480,0 L 480,60 L 420,60 L 420,0 z " + id="rect2236" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 480,0 L 540,0 L 540,60 L 480,60 L 480,0 z " + id="rect2238" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 540,0 L 600,0 L 600,60 L 540,60 L 540,0 z " + id="rect2240" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 600,0 L 660,0 L 660,60 L 600,60 L 600,0 z " + id="rect2242" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 660,0 L 720,0 L 720,60 L 660,60 L 660,0 z " + id="rect2244" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 720,0 L 780,0 L 780,60 L 720,60 L 720,0 z " + id="rect2246" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 780,0 L 900,0 L 900,60 L 780,60 L 780,0 z " + id="rect2248" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,60 L 90,60 L 90,120 L 0,120 L 0,60 z " + id="rect2250" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 90,60 L 150,60 L 150,120 L 90,120 L 90,60 z " + id="rect2252" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 150,60 L 210,60 L 210,120 L 150,120 L 150,60 z " + id="rect2254" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 210,60 L 270,60 L 270,120 L 210,120 L 210,60 z " + id="rect2256" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 270,60 L 330,60 L 330,120 L 270,120 L 270,60 z " + id="rect2258" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 330,60 L 390,60 L 390,120 L 330,120 L 330,60 z " + id="rect2262" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 390,60 L 450,60 L 450,120 L 390,120 L 390,60 z " + id="rect2264" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 450,60 L 510,60 L 510,120 L 450,120 L 450,60 z " + id="rect2266" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 510,60 L 570,60 L 570,120 L 510,120 L 510,60 z " + id="rect2270" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 570,60 L 630,60 L 630,120 L 570,120 L 570,60 z " + id="rect2272" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 630,60 L 690,60 L 690,120 L 630,120 L 630,60 z " + id="rect2274" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 690,60 L 750,60 L 750,120 L 690,120 L 690,60 z " + id="rect2278" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 750,60 L 810,60 L 810,120 L 750,120 L 750,60 z " + id="rect2280" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 810,60 L 900,60 L 900,120 L 810,120 L 810,60 z " + id="rect2284" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,120 L 105,120 L 105,180 L 0,180 L 0,120 z " + id="rect2286" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 105,120 L 165,120 L 165,180 L 105,180 L 105,120 z " + id="rect2292" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 165,120 L 225,120 L 225,180 L 165,180 L 165,120 z " + id="rect2296" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 225,120 L 285,120 L 285,180 L 225,180 L 225,120 z " + id="rect2298" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 285,120 L 345,120 L 345,180 L 285,180 L 285,120 z " + id="rect2300" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 345,120 L 405,120 L 405,180 L 345,180 L 345,120 z " + id="rect2302" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 405,120 L 465,120 L 465,180 L 405,180 L 405,120 z " + id="rect2306" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 465,120 L 525,120 L 525,180 L 465,180 L 465,120 z " + id="rect2308" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 525,120 L 585,120 L 585,180 L 525,180 L 525,120 z " + id="rect2312" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 585,120 L 645,120 L 645,180 L 585,180 L 585,120 z " + id="rect2314" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 645,120 L 705,120 L 705,180 L 645,180 L 645,120 z " + id="rect2316" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 705,120 L 765,120 L 765,180 L 705,180 L 705,120 z " + id="rect2318" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 765,120 L 900,120 L 900,180 L 765,180 L 765,120 z " + id="rect2320" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,180 L 135,180 L 135,240 L 0,240 L 0,180 z " + id="rect2322" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 135,180 L 195,180 L 195,240 L 135,240 L 135,180 z " + id="rect2324" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 195,180 L 255,180 L 255,240 L 195,240 L 195,180 z " + id="rect2326" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 255,180 L 315,180 L 315,240 L 255,240 L 255,180 z " + id="rect2330" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 315,180 L 375,180 L 375,240 L 315,240 L 315,180 z " + id="rect2334" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 375,180 L 435,180 L 435,240 L 375,240 L 375,180 z " + id="rect2336" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 435,180 L 495,180 L 495,240 L 435,240 L 435,180 z " + id="rect2338" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 495,180 L 555,180 L 555,240 L 495,240 L 495,180 z " + id="rect2340" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 555,180 L 615,180 L 615,240 L 555,240 L 555,180 z " + id="rect2342" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 615,180 L 675,180 L 675,240 L 615,240 L 615,180 z " + id="rect2344" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 675,180 L 735,180 L 735,240 L 675,240 L 675,180 z " + id="rect2346" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 735,180 L 900,180 L 900,240 L 735,240 L 735,180 z " + id="rect2348" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 0,240 L 90,240 L 90,300 L 0,300 L 0,240 z " + id="rect2350" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 810,240 L 900,240 L 900,300 L 810,300 L 810,240 z " + id="rect2352" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 150,240 L 240,240 L 240,300 L 150,300 L 150,240 z " + id="rect2354" /> + <path + style="fill:#dfdfdf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 600,240 L 690,240 L 690,300 L 600,300 L 600,240 z " + id="rect2360" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 240,240 L 600,240 L 600,300 L 240,300 L 240,240 z " + id="rect2362" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 90,240 L 150,240 L 150,300 L 90,300 L 90,240 z " + id="rect2364" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 690,240 L 750,240 L 750,300 L 690,300 L 690,240 z " + id="rect2366" /> + <path + style="fill:#efefef;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" + d="M 750,240 L 810,240 L 810,300 L 750,300 L 750,240 z " + id="rect2368" /> + <path + style="" + d="" + id="flowRoot4146" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 75.351563,18.826172 L 74.4375,11.056641 L 74.4375,6.3691406 L 78.046875,6.3691406 L 78.046875,11.056641 L 77.132813,18.826172 L 75.351563,18.826172 M 74.484375,23.630859 L 74.484375,20.173828 L 77.964844,20.173828 L 77.964844,23.630859 L 74.484375,23.630859 M 75.351563,53.630859 L 75.351563,42.158203 L 71.34375,42.158203 L 71.34375,39.802734 L 71.601563,39.802734 C 73.062496,39.802748 74.124995,39.576186 74.789063,39.123047 C 75.460931,38.669937 75.855462,37.912125 75.972656,36.849609 L 78.65625,36.849609 L 78.65625,53.630859 L 75.351563,53.630859" + id="text5091" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 23.34375,14.220703 L 23.34375,16.810547 C 22.531233,17.365241 21.761702,17.775396 21.035156,18.041016 C 20.316391,18.298833 19.605455,18.42774 18.902344,18.427734 C 18.542956,18.42774 18.183581,18.39649 17.824219,18.333984 C 17.464832,18.27149 17.105457,18.181646 16.746094,18.064453 C 16.558583,18.001959 16.281239,17.904303 15.914063,17.771484 C 14.203116,17.185553 12.902336,16.892585 12.011719,16.892578 C 11.34765,16.892585 10.652339,17.041022 9.9257813,17.337891 C 9.2070275,17.626959 8.3984345,18.091802 7.5,18.732422 L 7.5,16.142578 C 8.3359346,15.580086 9.1328088,15.162118 9.890625,14.888672 C 10.648432,14.607431 11.363275,14.466806 12.035156,14.466797 C 12.949211,14.466806 14.085929,14.693368 15.445313,15.146484 C 15.46874,15.154305 15.484365,15.158212 15.492188,15.158203 C 15.632802,15.205087 15.847646,15.279305 16.136719,15.380859 C 17.347644,15.810555 18.285143,16.025398 18.949219,16.025391 C 19.613267,16.025398 20.29686,15.880867 21,15.591797 C 21.703109,15.302743 22.484358,14.845712 23.34375,14.220703 M 11.988281,35.033203 L 15.011719,35.033203 L 17.320313,39.369141 L 15.65625,39.369141 L 11.988281,35.033203" + id="text5103" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 136.47578,20.443359 C 136.04608,21.099612 135.54999,21.583986 134.9875,21.896484 C 134.42499,22.201173 133.76093,22.353517 132.99532,22.353516 C 131.76093,22.353517 130.81953,22.01758 130.1711,21.345703 C 129.53047,20.673831 129.21015,19.681645 129.21016,18.369141 C 129.21015,16.50196 129.75312,14.935556 130.83907,13.669922 C 131.93281,12.404308 133.27656,11.771496 134.87032,11.771484 C 135.4953,11.771496 136.03827,11.900402 136.49922,12.158203 C 136.96015,12.416027 137.33905,12.798839 137.63594,13.306641 L 138.25703,12.158203 L 140.34297,12.158203 L 138.62032,19.166016 C 138.59686,19.251958 138.57733,19.341801 138.56172,19.435547 C 138.54608,19.521488 138.53827,19.591801 138.53828,19.646484 C 138.53827,19.919926 138.63202,20.126957 138.81953,20.267578 C 139.00702,20.400394 139.28436,20.4668 139.65157,20.466797 C 139.95624,20.4668 140.27264,20.388675 140.60078,20.232422 C 140.9367,20.076175 141.2492,19.857426 141.53828,19.576172 C 142.21014,18.951177 142.71795,18.220709 143.06172,17.384766 C 143.41326,16.548835 143.58904,15.630867 143.58907,14.630859 C 143.58904,12.75587 142.86248,11.216809 141.40938,10.013672 C 139.96405,8.8027492 138.09686,8.1972811 135.80782,8.1972656 C 134.70624,8.1972811 133.6789,8.3300934 132.72578,8.5957031 C 131.78046,8.8613429 130.92109,9.2558737 130.14766,9.7792969 C 128.81953,10.669935 127.79609,11.783215 127.07735,13.119141 C 126.36641,14.455087 126.01094,15.91993 126.01094,17.513672 C 126.01094,19.912113 126.81953,21.83008 128.43672,23.267578 C 130.0539,24.697265 132.21406,25.412108 134.91719,25.412109 C 136.1828,25.412108 137.41718,25.220702 138.62032,24.837891 C 139.83124,24.455077 140.95623,23.90039 141.99532,23.173828 L 142.95625,24.544922 C 141.76092,25.443358 140.49139,26.119138 139.14766,26.572266 C 137.81171,27.025387 136.41718,27.25195 134.96407,27.251953 C 133.46405,27.25195 132.08515,27.060543 130.82735,26.677734 C 129.56953,26.302732 128.45234,25.744139 127.47578,25.001953 C 126.26484,24.05664 125.35859,22.966798 124.75703,21.732422 C 124.15547,20.49805 123.85469,19.099614 123.85469,17.537109 C 123.85469,16.232429 124.05781,14.990243 124.46407,13.810547 C 124.87813,12.623058 125.48359,11.544934 126.28047,10.576172 C 127.43672,9.1621238 128.82734,8.0918124 130.45235,7.3652344 C 132.07734,6.6386889 133.88593,6.275408 135.87813,6.2753906 C 137.19843,6.275408 138.43671,6.4550953 139.59297,6.8144531 C 140.75702,7.1660321 141.76873,7.6660316 142.62813,8.3144531 C 143.68279,9.1347801 144.46795,10.072279 144.9836,11.126953 C 145.50701,12.17384 145.76873,13.357432 145.76875,14.677734 C 145.76873,15.966805 145.51092,17.15821 144.99532,18.251953 C 144.48748,19.337895 143.75311,20.267581 142.79219,21.041016 C 142.2453,21.478518 141.64764,21.814455 140.99922,22.048828 C 140.35858,22.275392 139.69061,22.388673 138.99532,22.388672 C 138.16718,22.388673 137.54218,22.224611 137.12032,21.896484 C 136.70624,21.568361 136.4914,21.083987 136.47578,20.443359 M 137.06172,15.427734 C 136.96015,14.794931 136.73358,14.314462 136.38203,13.986328 C 136.03827,13.650401 135.58124,13.482432 135.01094,13.482422 C 134.1203,13.482432 133.34687,13.966807 132.69063,14.935547 C 132.03437,15.904305 131.70624,17.068366 131.70625,18.427734 C 131.70624,19.146489 131.86249,19.693363 132.175,20.068359 C 132.49531,20.443363 132.95624,20.630862 133.55782,20.630859 C 134.20624,20.630862 134.79608,20.384769 135.32735,19.892578 C 135.8664,19.400395 136.23358,18.75977 136.42891,17.970703 L 137.06172,15.427734 M 128.56563,53.630859 C 128.58125,52.130861 128.90156,50.861331 129.52657,49.822266 C 130.15156,48.775395 131.26094,47.716803 132.85469,46.646484 C 133.09687,46.482429 133.44844,46.255867 133.90938,45.966797 C 136.01875,44.615243 137.07343,43.314463 137.07344,42.064453 C 137.07343,41.322278 136.85078,40.736341 136.40547,40.306641 C 135.96015,39.876967 135.35078,39.662123 134.57735,39.662109 C 133.73359,39.662123 133.08125,39.927748 132.62032,40.458984 C 132.16719,40.982435 131.94062,41.732434 131.94063,42.708984 L 131.94063,42.849609 L 128.84688,42.849609 C 128.84688,40.927747 129.3625,39.44728 130.39375,38.408203 C 131.425,37.369157 132.89375,36.849626 134.8,36.849609 C 136.52656,36.849626 137.90546,37.322282 138.93672,38.267578 C 139.96796,39.205093 140.48358,40.455091 140.4836,42.017578 C 140.48358,43.134776 140.21405,44.103525 139.675,44.923828 C 139.13593,45.744149 138.09296,46.677741 136.5461,47.724609 C 136.21796,47.951178 135.76484,48.248052 135.18672,48.615234 C 133.71797,49.560551 132.88984,50.2793 132.70235,50.771484 L 140.31953,50.771484 L 140.31953,53.630859 L 128.56563,53.630859" + id="text5127" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 195.28125,13.693359 L 194.25,16.552734 L 197.19141,16.552734 L 198.19922,13.693359 L 195.28125,13.693359 M 195.28125,6.4746094 L 197.87109,6.4746094 L 196.16016,11.337891 L 198.99609,11.337891 L 200.73047,6.4746094 L 203.32031,6.4746094 L 201.58594,11.337891 L 204.90234,11.337891 L 204.03516,13.693359 L 200.75391,13.693359 L 199.76953,16.529297 L 203.16797,16.529297 L 202.33594,18.873047 L 198.92578,18.873047 L 197.19141,23.748047 L 194.60156,23.748047 L 196.33594,18.873047 L 193.47656,18.873047 L 191.73047,23.748047 L 189.15234,23.748047 L 190.86328,18.873047 L 187.5,18.873047 L 188.39063,16.529297 L 191.69531,16.529297 L 192.70313,13.693359 L 189.19922,13.693359 L 190.06641,11.337891 L 193.54688,11.337891 L 195.28125,6.4746094 M 190.07813,48.521484 L 193.30078,48.521484 C 193.30859,49.458989 193.53515,50.166019 193.98047,50.642578 C 194.42578,51.111331 195.08593,51.345705 195.96094,51.345703 C 196.80468,51.345705 197.45312,51.126956 197.90625,50.689453 C 198.36718,50.244144 198.59765,49.607426 198.59766,48.779297 C 198.59765,47.951178 198.32812,47.326178 197.78906,46.904297 C 197.2578,46.474617 196.46484,46.259773 195.41016,46.259766 C 195.35546,46.259773 195.26953,46.263679 195.15234,46.271484 C 195.04296,46.279304 194.96093,46.28321 194.90625,46.283203 L 194.90625,43.962891 L 195.26953,43.962891 C 196.23827,43.9629 196.95312,43.7754 197.41406,43.400391 C 197.8828,43.017589 198.11718,42.435558 198.11719,41.654297 C 198.11718,41.005872 197.91796,40.494154 197.51953,40.119141 C 197.1289,39.736342 196.59374,39.544936 195.91406,39.544922 C 195.17187,39.544936 194.59765,39.763686 194.19141,40.201172 C 193.78515,40.638685 193.58203,41.259778 193.58203,42.064453 L 193.58203,42.205078 L 190.41797,42.205078 C 190.45703,40.486341 190.96094,39.169936 191.92969,38.255859 C 192.90625,37.334001 194.28125,36.873064 196.05469,36.873047 C 197.73437,36.873064 199.0664,37.283219 200.05078,38.103516 C 201.03514,38.923843 201.52733,40.02931 201.52734,41.419922 C 201.52733,42.154308 201.35936,42.798839 201.02344,43.353516 C 200.68749,43.908213 200.18358,44.365244 199.51172,44.724609 C 200.37108,45.099618 201.01952,45.619149 201.45703,46.283203 C 201.90233,46.93946 202.12499,47.724615 202.125,48.638672 C 202.12499,50.318363 201.57421,51.650393 200.47266,52.634766 C 199.37108,53.619141 197.86718,54.111328 195.96094,54.111328 C 194.07812,54.111328 192.625,53.634766 191.60156,52.681641 C 190.58594,51.720705 190.07812,50.357425 190.07813,48.591797 L 190.07813,48.521484" + id="text5139" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 254.46094,21.451172 C 255.10155,21.365237 255.58984,21.134768 255.92578,20.759766 C 256.26171,20.384769 256.42968,19.884769 256.42969,19.259766 C 256.42968,18.705083 256.26952,18.248052 255.94922,17.888672 C 255.63671,17.52149 255.14062,17.236335 254.46094,17.033203 L 254.46094,21.451172 M 253.06641,13.435547 L 253.06641,9.4511719 C 252.45703,9.529311 251.99218,9.7402483 251.67188,10.083984 C 251.35156,10.419935 251.1914,10.87306 251.19141,11.443359 C 251.1914,11.919934 251.33984,12.318371 251.63672,12.638672 C 251.9414,12.958995 252.41796,13.22462 253.06641,13.435547 M 253.06641,26.267578 L 253.06641,24.017578 C 251.30078,23.908203 249.98047,23.396485 249.10547,22.482422 C 248.23047,21.568361 247.79297,20.24805 247.79297,18.521484 L 250.93359,18.521484 C 250.97265,19.365239 251.16796,20.033207 251.51953,20.525391 C 251.8789,21.009768 252.39453,21.318362 253.06641,21.451172 L 253.06641,16.599609 C 251.2539,16.138679 249.96484,15.537117 249.19922,14.794922 C 248.43359,14.052744 248.05078,13.03712 248.05078,11.748047 C 248.05078,10.318373 248.5039,9.1660301 249.41016,8.2910156 C 250.32422,7.4160318 251.54296,6.959001 253.06641,6.9199219 L 253.06641,5.4199219 L 254.46094,5.4199219 L 254.46094,6.9199219 C 255.98437,6.9980635 257.17186,7.4590005 258.02344,8.3027344 C 258.87499,9.1386864 259.34374,10.318373 259.42969,11.841797 L 256.24219,11.841797 C 256.18749,11.115247 256.01171,10.56056 255.71484,10.177734 C 255.42577,9.7871232 255.0078,9.5683734 254.46094,9.5214844 L 254.46094,13.787109 C 256.39062,14.388681 257.74999,15.07618 258.53906,15.849609 C 259.32811,16.623054 259.72264,17.642584 259.72266,18.908203 C 259.72264,20.400394 259.26171,21.591799 258.33984,22.482422 C 257.42577,23.373047 256.1328,23.892578 254.46094,24.041016 L 254.46094,26.267578 L 253.06641,26.267578 M 254.64844,47.419922 L 254.64844,40.236328 L 250.08984,47.419922 L 254.64844,47.419922 M 254.57813,53.630859 L 254.57813,50.009766 L 247.5,50.009766 L 247.5,47.056641 L 253.6875,37.330078 L 257.84766,37.330078 L 257.84766,47.337891 L 259.79297,47.337891 L 259.79297,50.009766 L 257.84766,50.009766 L 257.84766,53.630859 L 254.57813,53.630859" + id="text5145" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 320.42578,19.740234 C 320.42577,20.263675 320.60155,20.705081 320.95313,21.064453 C 321.30467,21.416018 321.73827,21.591799 322.25391,21.591797 C 322.75389,21.591799 323.18358,21.412112 323.54297,21.052734 C 323.90233,20.68555 324.08201,20.24805 324.08203,19.740234 C 324.08201,19.240239 323.90233,18.814458 323.54297,18.462891 C 323.19139,18.103521 322.7617,17.923834 322.25391,17.923828 C 321.73827,17.923834 321.30467,18.099615 320.95313,18.451172 C 320.60155,18.794927 320.42577,19.224614 320.42578,19.740234 M 317.88281,19.740234 C 317.8828,18.521489 318.30468,17.494147 319.14844,16.658203 C 319.99217,15.822273 321.02733,15.404305 322.25391,15.404297 C 323.45701,15.404305 324.48045,15.830086 325.32422,16.681641 C 326.17576,17.525397 326.60154,18.544927 326.60156,19.740234 C 326.60154,20.943362 326.17576,21.974611 325.32422,22.833984 C 324.47264,23.685547 323.4492,24.111328 322.25391,24.111328 C 321.02733,24.111328 319.99217,23.689453 319.14844,22.845703 C 318.30468,22.001955 317.8828,20.9668 317.88281,19.740234 M 311.07422,24.111328 L 321.08203,6.8496094 L 322.96875,6.8496094 L 312.96094,24.111328 L 311.07422,24.111328 M 310.04297,11.220703 C 310.04297,11.73634 310.21484,12.169933 310.55859,12.521484 C 310.91015,12.873058 311.34375,13.048839 311.85938,13.048828 C 312.36718,13.048839 312.79687,12.873058 313.14844,12.521484 C 313.50781,12.162121 313.68749,11.728528 313.6875,11.220703 C 313.68749,10.720716 313.50781,10.294935 313.14844,9.9433594 C 312.79687,9.5839984 312.36718,9.4043111 311.85938,9.4042969 C 311.34375,9.4043111 310.91015,9.5800922 310.55859,9.9316406 C 310.21484,10.275404 310.04297,10.705091 310.04297,11.220703 M 307.5,11.220703 C 307.5,10.001967 307.92187,8.9707178 308.76563,8.1269531 C 309.60937,7.275407 310.64062,6.8496262 311.85938,6.8496094 C 313.06249,6.8496262 314.08593,7.2793132 314.92969,8.1386719 C 315.78124,8.990249 316.20702,10.017592 316.20703,11.220703 C 316.20702,12.423839 315.78124,13.451182 314.92969,14.302734 C 314.08593,15.146493 313.06249,15.568367 311.85938,15.568359 C 310.63281,15.568367 309.59765,15.150399 308.75391,14.314453 C 307.91797,13.478526 307.5,12.447277 307.5,11.220703 M 310.85156,49.119141 L 314.13281,49.119141 C 314.1875,49.853519 314.43359,50.423831 314.87109,50.830078 C 315.30859,51.228518 315.89453,51.427737 316.62891,51.427734 C 317.53515,51.427737 318.22655,51.162112 318.70313,50.630859 C 319.18749,50.099613 319.42968,49.337895 319.42969,48.345703 C 319.42968,47.416022 319.18358,46.685554 318.69141,46.154297 C 318.19921,45.615242 317.51952,45.345711 316.65234,45.345703 C 316.16796,45.345711 315.74218,45.443368 315.375,45.638672 C 315.00781,45.833992 314.69531,46.123054 314.4375,46.505859 L 311.41406,46.330078 L 312.50391,37.330078 L 322.14844,37.330078 L 322.14844,40.166016 L 314.87109,40.166016 L 314.4375,43.529297 C 314.80468,43.240245 315.22656,43.025401 315.70313,42.884766 C 316.17968,42.736339 316.71093,42.66212 317.29688,42.662109 C 318.96874,42.66212 320.3164,43.169932 321.33984,44.185547 C 322.37108,45.20118 322.88671,46.53321 322.88672,48.181641 C 322.88671,49.986332 322.3203,51.427737 321.1875,52.505859 C 320.05468,53.576172 318.53515,54.111328 316.62891,54.111328 C 314.89453,54.111328 313.51172,53.669922 312.48047,52.787109 C 311.45703,51.896486 310.91406,50.673831 310.85156,49.119141" + id="text5151" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 372.15234,48.298828 C 372.15234,49.25977 372.39062,50.021488 372.86719,50.583984 C 373.35156,51.146487 374.00781,51.427737 374.83594,51.427734 C 375.60937,51.427737 376.21484,51.154299 376.65234,50.607422 C 377.08983,50.06055 377.30858,49.298832 377.30859,48.322266 C 377.30858,47.423834 377.08202,46.724616 376.62891,46.224609 C 376.17577,45.724617 375.53905,45.474618 374.71875,45.474609 C 373.91406,45.474618 373.28515,45.724617 372.83203,46.224609 C 372.3789,46.724616 372.15234,47.416022 372.15234,48.298828 M 372.10547,43.916016 C 372.48828,43.525401 372.94921,43.232432 373.48828,43.037109 C 374.02734,42.833995 374.6289,42.732433 375.29297,42.732422 C 376.93358,42.732433 378.24608,43.232432 379.23047,44.232422 C 380.22264,45.23243 380.71874,46.56446 380.71875,48.228516 C 380.71874,49.994144 380.17968,51.419924 379.10156,52.505859 C 378.02343,53.591797 376.60155,54.134765 374.83594,54.134766 C 372.79687,54.134765 371.24609,53.431641 370.18359,52.025391 C 369.1289,50.619144 368.60156,48.560552 368.60156,45.849609 C 368.60156,42.935558 369.16797,40.708997 370.30078,39.169922 C 371.43359,37.623063 373.0664,36.849626 375.19922,36.849609 C 376.68358,36.849626 377.8789,37.236345 378.78516,38.009766 C 379.69921,38.783218 380.19921,39.830092 380.28516,41.150391 L 376.88672,41.150391 C 376.80858,40.611341 376.59765,40.205092 376.25391,39.931641 C 375.91015,39.658217 375.42968,39.521498 374.8125,39.521484 C 373.96874,39.521498 373.32031,39.888686 372.86719,40.623047 C 372.41406,41.349622 372.16015,42.447277 372.10547,43.916016" + id="text5157" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 432.85547,16.095703 L 431.96484,16.740234 C 431.60546,16.990241 431.33593,17.291022 431.15625,17.642578 C 430.97656,17.994146 430.88671,18.388677 430.88672,18.826172 C 430.88671,19.490239 431.11328,20.048832 431.56641,20.501953 C 432.01953,20.955081 432.58593,21.181643 433.26563,21.181641 C 433.76562,21.181643 434.24218,21.080081 434.69531,20.876953 C 435.15624,20.666019 435.58202,20.361331 435.97266,19.962891 L 432.85547,16.095703 M 433.79297,12.404297 L 434.20313,12.111328 C 434.57812,11.853527 434.85546,11.564465 435.03516,11.244141 C 435.21483,10.923841 435.30468,10.556654 435.30469,10.142578 C 435.30468,9.7441545 435.17968,9.4277486 434.92969,9.1933594 C 434.68749,8.958999 434.35546,8.8418117 433.93359,8.8417969 C 433.5039,8.8418117 433.16406,8.9629053 432.91406,9.2050781 C 432.66406,9.4394673 432.53906,9.7597795 432.53906,10.166016 C 432.53906,10.384779 432.59765,10.62306 432.71484,10.880859 C 432.83984,11.138684 433.01562,11.412122 433.24219,11.701172 L 433.79297,12.404297 M 431.15625,13.962891 L 430.47656,13.072266 C 430.125,12.603527 429.87109,12.166027 429.71484,11.759766 C 429.5664,11.345715 429.49218,10.912122 429.49219,10.458984 C 429.49218,9.2089988 429.89062,8.2168123 430.6875,7.4824219 C 431.49218,6.7402513 432.58203,6.3691579 433.95703,6.3691406 C 435.27733,6.3691579 436.3203,6.7090013 437.08594,7.3886719 C 437.85155,8.0683749 438.23436,8.9863428 438.23438,10.142578 C 438.23436,11.017591 438.0078,11.802746 437.55469,12.498047 C 437.10936,13.185557 436.40624,13.833994 435.44531,14.443359 L 437.91797,17.490234 C 438.15233,17.107428 438.33593,16.677741 438.46875,16.201172 C 438.60936,15.724617 438.70702,15.193368 438.76172,14.607422 L 441.80859,14.607422 C 441.72264,15.623055 441.5117,16.56446 441.17578,17.431641 C 440.83983,18.298833 440.37889,19.091801 439.79297,19.810547 L 442.93359,23.630859 L 438.94922,23.630859 L 437.77734,22.189453 C 437.08983,22.822266 436.33202,23.302735 435.50391,23.630859 C 434.68359,23.951172 433.82421,24.111328 432.92578,24.111328 C 431.33203,24.111328 430.02734,23.638672 429.01172,22.693359 C 428.0039,21.748049 427.5,20.541019 427.5,19.072266 C 427.5,17.978521 427.78125,17.037116 428.34375,16.248047 C 428.90625,15.458993 429.84375,14.697275 431.15625,13.962891 M 434.66016,53.630859 L 431.15625,53.630859 C 431.28125,51.341799 431.83203,49.07227 432.80859,46.822266 C 433.79296,44.572275 435.19531,42.361339 437.01563,40.189453 L 428.76563,40.189453 L 428.76563,37.330078 L 440.66016,37.330078 L 440.66016,39.849609 C 438.8164,41.880871 437.39843,44.029306 436.40625,46.294922 C 435.42187,48.560552 434.83984,51.005862 434.66016,53.630859" + id="text5163" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 493.5,13.212891 L 491.4375,16.119141 L 489.44531,14.724609 L 491.69531,11.900391 L 488.41406,10.986328 L 489.17578,8.6074219 L 492.32813,9.7324219 L 492.32813,6.3691406 L 494.64844,6.3691406 L 494.64844,9.7324219 L 497.80078,8.6308594 L 498.58594,11.009766 L 495.30469,11.900391 L 497.53125,14.701172 L 495.49219,16.166016 L 493.5,13.212891 M 490.875,48.755859 C 490.875,49.576176 491.10156,50.208988 491.55469,50.654297 C 492.01562,51.099612 492.67187,51.322268 493.52344,51.322266 C 494.33593,51.322268 494.97265,51.095706 495.43359,50.642578 C 495.90233,50.189457 496.13671,49.560551 496.13672,48.755859 C 496.13671,47.982428 495.89843,47.361334 495.42188,46.892578 C 494.9453,46.423835 494.31249,46.189461 493.52344,46.189453 C 492.73437,46.189461 492.09374,46.427742 491.60156,46.904297 C 491.11718,47.380866 490.875,47.998053 490.875,48.755859 M 491.14453,41.560547 C 491.14453,42.208996 491.34765,42.708995 491.75391,43.060547 C 492.16015,43.404307 492.74218,43.576182 493.5,43.576172 C 494.2578,43.576182 494.83984,43.400401 495.24609,43.048828 C 495.66015,42.697277 495.86718,42.201183 495.86719,41.560547 C 495.86718,40.93556 495.65624,40.443373 495.23438,40.083984 C 494.81249,39.724623 494.23437,39.544936 493.5,39.544922 C 492.78124,39.544936 492.20703,39.72853 491.77734,40.095703 C 491.35546,40.462904 491.14453,40.951185 491.14453,41.560547 M 489.9375,44.818359 C 489.23437,44.427744 488.72656,43.970713 488.41406,43.447266 C 488.10156,42.923839 487.94531,42.255871 487.94531,41.443359 C 487.94531,40.005873 488.4375,38.876968 489.42188,38.056641 C 490.40625,37.236345 491.76562,36.826189 493.5,36.826172 C 495.24999,36.826189 496.61718,37.236345 497.60156,38.056641 C 498.59374,38.869155 499.08983,39.998061 499.08984,41.443359 C 499.08983,42.216808 498.92186,42.888683 498.58594,43.458984 C 498.24999,44.021494 497.74608,44.474619 497.07422,44.818359 C 497.89452,45.20118 498.51171,45.73243 498.92578,46.412109 C 499.33983,47.083991 499.54686,47.904303 499.54688,48.873047 C 499.54686,50.505862 499.0078,51.787111 497.92969,52.716797 C 496.85936,53.646484 495.3828,54.111328 493.5,54.111328 C 491.59375,54.111328 490.11328,53.650391 489.05859,52.728516 C 488.0039,51.806642 487.47656,50.521487 487.47656,48.873047 C 487.47656,47.912115 487.67187,47.107428 488.0625,46.458984 C 488.46094,45.802742 489.08594,45.255868 489.9375,44.818359" + id="text5169" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 557.85938,6.3691406 C 556.78124,8.1347811 555.98046,9.9316543 555.45703,11.759766 C 554.93359,13.587901 554.67187,15.505868 554.67188,17.513672 C 554.67187,19.513676 554.93359,21.427737 555.45703,23.255859 C 555.98046,25.083983 556.78124,26.880856 557.85938,28.646484 L 555.38672,28.646484 C 554.01953,26.779294 552.98046,24.904296 552.26953,23.021484 C 551.5664,21.130862 551.21484,19.294926 551.21484,17.513672 C 551.21484,15.73243 551.5664,13.896494 552.26953,12.005859 C 552.98046,10.115248 554.01953,8.2363435 555.38672,6.3691406 L 557.85938,6.3691406 M 556.06641,42.685547 C 556.0664,41.724621 555.82421,40.96681 555.33984,40.412109 C 554.86327,39.849623 554.21093,39.568373 553.38281,39.568359 C 552.60156,39.568373 551.99218,39.837904 551.55469,40.376953 C 551.125,40.916028 550.91015,41.669934 550.91016,42.638672 C 550.91015,43.544932 551.13671,44.251963 551.58984,44.759766 C 552.04296,45.267586 552.67968,45.521492 553.5,45.521484 C 554.30468,45.521492 554.93359,45.271493 555.38672,44.771484 C 555.83983,44.271494 556.0664,43.576182 556.06641,42.685547 M 556.125,47.056641 C 555.73437,47.447272 555.27343,47.74024 554.74219,47.935547 C 554.21093,48.130865 553.61327,48.228521 552.94922,48.228516 C 551.30078,48.228521 549.98047,47.732428 548.98828,46.740234 C 547.99609,45.748055 547.5,44.419931 547.5,42.755859 C 547.5,40.990247 548.03906,39.564467 549.11719,38.478516 C 550.19531,37.392594 551.61718,36.849626 553.38281,36.849609 C 555.42968,36.849626 556.98436,37.556657 558.04688,38.970703 C 559.11718,40.376966 559.65233,42.431652 559.65234,45.134766 C 559.65233,48.041021 559.08202,50.267581 557.94141,51.814453 C 556.80077,53.361328 555.16015,54.134765 553.01953,54.134766 C 551.54296,54.134765 550.35156,53.751953 549.44531,52.986328 C 548.53906,52.212892 548.04297,51.162112 547.95703,49.833984 L 551.34375,49.845703 C 551.42187,50.384769 551.63281,50.787112 551.97656,51.052734 C 552.32031,51.318362 552.80468,51.451174 553.42969,51.451172 C 554.27343,51.451174 554.91796,51.083987 555.36328,50.349609 C 555.80858,49.615238 556.06249,48.517583 556.125,47.056641" + id="text5175" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 609.375,6.3691406 L 611.87109,6.3691406 C 613.23046,8.228531 614.26171,10.103529 614.96484,11.994141 C 615.66796,13.876963 616.01952,15.716805 616.01953,17.513672 C 616.01952,19.302739 615.66796,21.142581 614.96484,23.033203 C 614.26171,24.923827 613.23046,26.794919 611.87109,28.646484 L 609.375,28.646484 C 610.46094,26.873044 611.26562,25.072264 611.78906,23.244141 C 612.32031,21.408205 612.58593,19.498051 612.58594,17.513672 C 612.58593,15.521492 612.32031,13.611338 611.78906,11.783203 C 611.26562,9.9550918 610.46094,8.1504061 609.375,6.3691406 M 610.98047,45.474609 C 610.98046,47.513678 611.18359,48.994145 611.58984,49.916016 C 612.0039,50.837893 612.66015,51.29883 613.55859,51.298828 C 614.45702,51.29883 615.11327,50.833987 615.52734,49.904297 C 615.9414,48.974614 616.14843,47.498053 616.14844,45.474609 C 616.14843,43.44337 615.9414,41.966809 615.52734,41.044922 C 615.11327,40.12306 614.45702,39.662123 613.55859,39.662109 C 612.66015,39.662123 612.0039,40.12306 611.58984,41.044922 C 611.18359,41.958996 610.98046,43.435557 610.98047,45.474609 M 607.5,45.474609 C 607.5,42.591808 608,40.43556 609,39.005859 C 610.00781,37.568375 611.52734,36.849626 613.55859,36.849609 C 615.58202,36.849626 617.09765,37.572282 618.10547,39.017578 C 619.12108,40.455091 619.62889,42.615245 619.62891,45.498047 C 619.62889,48.380865 619.12499,50.533206 618.11719,51.955078 C 617.11718,53.376953 615.59765,54.08789 613.55859,54.087891 C 611.52734,54.08789 610.00781,53.373047 609,51.943359 C 608,50.513675 607.5,48.357427 607.5,45.474609" + id="text5181" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 667.5,26.900391 L 679.5,26.900391 L 679.5,29.291016 L 667.5,29.291016 L 667.5,26.900391 M 670.20703,48.849609 L 670.20703,45.638672 L 676.79297,45.638672 L 676.79297,48.849609 L 670.20703,48.849609" + id="text5187" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 733.33594,9.3222656 L 735.70313,9.3222656 L 735.70313,15.298828 L 741.53906,15.298828 L 741.53906,17.630859 L 735.70313,17.630859 L 735.70313,23.630859 L 733.33594,23.630859 L 733.33594,17.630859 L 727.5,17.630859 L 727.5,15.298828 L 733.33594,15.298828 L 733.33594,9.3222656 M 727.5,47.818359 L 741.53906,47.818359 L 741.53906,50.150391 L 727.5,50.150391 L 727.5,47.818359 M 727.5,42.779297 L 741.53906,42.779297 L 741.53906,45.111328 L 727.5,45.111328 L 727.5,42.779297" + id="text5201" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 11.070313,95.601563 L 11.070313,86.148438 L 7.65625,86.148438 L 7.65625,84.09375 L 16.828125,84.09375 L 16.828125,86.148438 L 13.4375,86.148438 L 13.4375,95.601563 L 11.070313,95.601563 M 22.859375,94.546875 C 22.572911,94.989584 22.197911,95.328125 21.734375,95.5625 C 21.270829,95.791666 20.731767,95.90625 20.117188,95.90625 C 19.294269,95.90625 18.658853,95.671875 18.210938,95.203125 C 17.768228,94.734376 17.546874,94.06771 17.546875,93.203125 C 17.546874,92.401045 17.768228,91.789066 18.210938,91.367188 C 18.658853,90.945317 19.395831,90.656255 20.421875,90.5 C 20.656246,90.463547 20.963538,90.42188 21.34375,90.375 C 22.307286,90.250005 22.789057,89.97136 22.789063,89.539063 C 22.789057,89.195319 22.682286,88.950527 22.46875,88.804688 C 22.255203,88.653653 21.898433,88.578132 21.398438,88.578125 C 20.9401,88.578132 20.588538,88.669278 20.34375,88.851563 C 20.098955,89.033861 19.97656,89.294277 19.976563,89.632813 L 19.976563,89.757813 L 17.851563,89.757813 L 17.851563,89.601563 C 17.851562,88.731778 18.158853,88.049487 18.773438,87.554688 C 19.388018,87.054696 20.236976,86.804696 21.320313,86.804688 C 22.507807,86.804696 23.41666,87.010425 24.046875,87.421875 C 24.682284,87.833341 24.999992,88.427091 25,89.203125 L 25,94.03125 C 24.999992,94.385418 25.03645,94.651043 25.109375,94.828125 C 25.182283,95.000001 25.304679,95.130209 25.476563,95.21875 L 25.476563,95.601563 L 23.109375,95.601563 C 23.031244,95.455729 22.971348,95.294271 22.929688,95.117188 C 22.888015,94.940105 22.864577,94.750001 22.859375,94.546875 M 22.820313,91.421875 C 22.450515,91.593754 22.023432,91.731775 21.539063,91.835938 C 21.059892,91.940108 20.812496,91.994795 20.796875,92 C 20.39583,92.114587 20.11458,92.257816 19.953125,92.429688 C 19.796872,92.601566 19.718747,92.838544 19.71875,93.140625 C 19.718747,93.453127 19.82031,93.703127 20.023438,93.890625 C 20.226559,94.072918 20.499997,94.164064 20.84375,94.164063 C 21.458329,94.164064 21.940099,93.992189 22.289063,93.648438 C 22.643224,93.299481 22.820307,92.825524 22.820313,92.226563 L 22.820313,91.421875 M 27.039063,84.09375 L 29.25,84.09375 L 29.25,88.164063 C 29.531246,87.721362 29.882809,87.388029 30.304688,87.164063 C 30.731766,86.934905 31.216141,86.820321 31.757813,86.820313 C 32.783847,86.820321 33.622388,87.2448 34.273438,88.09375 C 34.92447,88.937507 35.249991,90.036464 35.25,91.390625 C 35.249991,92.734378 34.92447,93.820314 34.273438,94.648438 C 33.622388,95.476563 32.773431,95.890625 31.726563,95.890625 C 31.179682,95.890625 30.70312,95.776041 30.296875,95.546875 C 29.895829,95.317709 29.531246,94.953126 29.203125,94.453125 L 29.203125,95.601563 L 27.039063,95.601563 L 27.039063,84.09375 M 32.992188,91.296875 C 32.992181,90.51563 32.828118,89.903652 32.5,89.460938 C 32.171869,89.013027 31.721348,88.789069 31.148438,88.789063 C 30.544266,88.789069 30.075517,89.007819 29.742188,89.445313 C 29.414059,89.87761 29.249997,90.494797 29.25,91.296875 C 29.249997,92.161462 29.406247,92.817711 29.71875,93.265625 C 30.036454,93.713544 30.497391,93.937502 31.101563,93.9375 C 31.71614,93.937502 32.18489,93.713544 32.507813,93.265625 C 32.830722,92.812503 32.992181,92.156253 32.992188,91.296875" + id="text5427" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 789.76563,44.369141 L 792.57031,44.369141 C 793.23176,44.369143 793.71353,44.249351 794.01563,44.009766 C 794.3177,43.770185 794.46874,43.392581 794.46875,42.876953 C 794.46874,42.340499 794.3203,41.955083 794.02344,41.720703 C 793.72656,41.481125 793.23697,41.361333 792.55469,41.361328 L 789.76563,41.361328 L 789.76563,44.369141 M 789.76563,39.392578 L 792.46875,39.392578 C 793.05208,39.392585 793.47916,39.293627 793.75,39.095703 C 794.02083,38.892586 794.15624,38.574878 794.15625,38.142578 C 794.15624,37.720712 794.02343,37.416025 793.75781,37.228516 C 793.49739,37.035817 793.06249,36.939463 792.45313,36.939453 L 789.76563,36.939453 L 789.76563,39.392578 M 787.5,46.447266 L 787.5,34.939453 L 792.92188,34.939453 C 794.09895,34.939465 794.99478,35.189464 795.60938,35.689453 C 796.22916,36.184255 796.53905,36.905609 796.53906,37.853516 C 796.53905,38.436857 796.42447,38.923836 796.19531,39.314453 C 795.96614,39.705085 795.62239,40.007168 795.16406,40.220703 C 795.7578,40.460292 796.20051,40.806646 796.49219,41.259766 C 796.78905,41.707687 796.93749,42.267582 796.9375,42.939453 C 796.93749,44.059247 796.57291,44.92383 795.84375,45.533203 C 795.11457,46.142578 794.08072,46.447266 792.74219,46.447266 L 787.5,46.447266 M 803.45313,45.392578 C 803.16666,45.835287 802.79166,46.173828 802.32813,46.408203 C 801.86458,46.63737 801.32552,46.751953 800.71094,46.751953 C 799.88802,46.751953 799.2526,46.517578 798.80469,46.048828 C 798.36198,45.580079 798.14062,44.913413 798.14063,44.048828 C 798.14062,43.246748 798.36198,42.634769 798.80469,42.212891 C 799.2526,41.79102 799.98958,41.501958 801.01563,41.345703 C 801.25,41.30925 801.55729,41.267583 801.9375,41.220703 C 802.90104,41.095708 803.38281,40.817063 803.38281,40.384766 C 803.38281,40.041022 803.27604,39.796231 803.0625,39.650391 C 802.84895,39.499356 802.49218,39.423835 801.99219,39.423828 C 801.53385,39.423835 801.18229,39.514981 800.9375,39.697266 C 800.69271,39.879564 800.57031,40.13998 800.57031,40.478516 L 800.57031,40.603516 L 798.44531,40.603516 L 798.44531,40.447266 C 798.44531,39.577481 798.7526,38.89519 799.36719,38.400391 C 799.98177,37.900399 800.83073,37.650399 801.91406,37.650391 C 803.10156,37.650399 804.01041,37.856128 804.64063,38.267578 C 805.27603,38.679044 805.59374,39.272794 805.59375,40.048828 L 805.59375,44.876953 C 805.59374,45.231121 805.6302,45.496746 805.70313,45.673828 C 805.77603,45.845704 805.89843,45.975912 806.07031,46.064453 L 806.07031,46.447266 L 803.70313,46.447266 C 803.62499,46.301432 803.5651,46.139974 803.52344,45.962891 C 803.48176,45.785808 803.45833,45.595704 803.45313,45.392578 M 803.41406,42.267578 C 803.04427,42.439457 802.61718,42.577478 802.13281,42.681641 C 801.65364,42.785811 801.40625,42.840498 801.39063,42.845703 C 800.98958,42.96029 800.70833,43.103519 800.54688,43.275391 C 800.39062,43.447269 800.3125,43.684248 800.3125,43.986328 C 800.3125,44.29883 800.41406,44.54883 800.61719,44.736328 C 800.82031,44.918621 801.09375,45.009767 801.4375,45.009766 C 802.05208,45.009767 802.53385,44.837892 802.88281,44.494141 C 803.23697,44.145185 803.41406,43.671227 803.41406,43.072266 L 803.41406,42.267578 M 812.71875,43.244141 L 814.96094,43.244141 C 814.86718,44.322268 814.47395,45.173829 813.78125,45.798828 C 813.08854,46.423828 812.19791,46.736328 811.10938,46.736328 C 809.875,46.736328 808.90625,46.335287 808.20313,45.533203 C 807.50521,44.725913 807.15625,43.611331 807.15625,42.189453 C 807.15625,40.772792 807.51302,39.663418 808.22656,38.861328 C 808.94531,38.054045 809.93229,37.650399 811.1875,37.650391 C 812.28645,37.650399 813.16666,37.942066 813.82813,38.525391 C 814.49478,39.108731 814.86718,39.92123 814.94531,40.962891 L 812.6875,40.962891 C 812.62499,40.509772 812.46614,40.163418 812.21094,39.923828 C 811.95572,39.684252 811.61979,39.56446 811.20313,39.564453 C 810.64062,39.56446 810.21875,39.785814 809.9375,40.228516 C 809.66146,40.67123 809.52343,41.335292 809.52344,42.220703 C 809.52343,43.038415 809.66666,43.668623 809.95313,44.111328 C 810.24479,44.54883 810.66145,44.76758 811.20313,44.767578 C 811.62499,44.76758 811.96354,44.639976 812.21875,44.384766 C 812.47395,44.12956 812.64062,43.749352 812.71875,43.244141 M 816.44531,46.447266 L 816.44531,34.939453 L 818.65625,34.939453 L 818.65625,40.978516 L 821.35938,37.955078 L 824.09375,37.955078 L 821.13281,41.103516 L 824.27344,46.447266 L 821.54688,46.447266 L 819.51563,42.830078 L 818.65625,43.759766 L 818.65625,46.447266 L 816.44531,46.447266 M 824.79688,43.681641 L 827.0625,43.681641 C 827.08333,44.113935 827.23958,44.436851 827.53125,44.650391 C 827.82291,44.858726 828.26041,44.962892 828.84375,44.962891 C 829.28645,44.962892 829.6276,44.889976 829.86719,44.744141 C 830.11197,44.593101 830.23437,44.382164 830.23438,44.111328 C 830.23437,43.725914 829.78124,43.436852 828.875,43.244141 C 828.5052,43.166019 828.21093,43.098311 827.99219,43.041016 C 826.88802,42.759769 826.11979,42.426436 825.6875,42.041016 C 825.26042,41.655604 825.04687,41.134771 825.04688,40.478516 C 825.04687,39.608731 825.35937,38.921231 825.98438,38.416016 C 826.61458,37.905608 827.46614,37.650399 828.53906,37.650391 C 829.67447,37.650399 830.5651,37.903003 831.21094,38.408203 C 831.86197,38.913419 832.20833,39.624356 832.25,40.541016 L 830.03906,40.541016 C 830.02343,40.181647 829.88541,39.903001 829.625,39.705078 C 829.36979,39.507168 829.01302,39.40821 828.55469,39.408203 C 828.12239,39.40821 827.79948,39.473314 827.58594,39.603516 C 827.3776,39.733731 827.27343,39.929043 827.27344,40.189453 C 827.27343,40.528001 827.83854,40.82748 828.96875,41.087891 C 829.22916,41.145188 829.43489,41.192063 829.58594,41.228516 C 830.71614,41.494146 831.48697,41.814458 831.89844,42.189453 C 832.3151,42.564457 832.52343,43.093102 832.52344,43.775391 C 832.52343,44.738934 832.18228,45.473308 831.5,45.978516 C 830.82291,46.483724 829.83593,46.736328 828.53906,46.736328 C 827.36718,46.736328 826.45052,46.473307 825.78906,45.947266 C 825.1276,45.421225 824.79687,44.697267 824.79688,43.775391 L 824.79688,43.681641 M 840.02344,42.251953 C 840.02343,41.397792 839.86197,40.74675 839.53906,40.298828 C 839.21614,39.84571 838.74739,39.619147 838.13281,39.619141 C 837.52864,39.619147 837.0677,39.843106 836.75,40.291016 C 836.4375,40.738938 836.28125,41.392583 836.28125,42.251953 C 836.28125,43.05404 836.44531,43.673831 836.77344,44.111328 C 837.10677,44.54883 837.57552,44.76758 838.17969,44.767578 C 838.7526,44.76758 839.20312,44.543622 839.53125,44.095703 C 839.85937,43.647789 840.02343,43.033207 840.02344,42.251953 M 834.07031,49.853516 L 834.07031,37.955078 L 836.23438,37.955078 L 836.23438,39.103516 C 836.5625,38.603523 836.92708,38.23894 837.32813,38.009766 C 837.73437,37.780608 838.21093,37.666024 838.75781,37.666016 C 839.80468,37.666024 840.65364,38.080086 841.30469,38.908203 C 841.95572,39.731127 842.28124,40.814459 842.28125,42.158203 C 842.28124,43.517581 841.95572,44.621747 841.30469,45.470703 C 840.65364,46.314453 839.8151,46.736328 838.78906,46.736328 C 838.24739,46.736328 837.76302,46.621745 837.33594,46.392578 C 836.91406,46.163412 836.5625,45.830079 836.28125,45.392578 L 836.28125,49.853516 L 834.07031,49.853516 M 848.70313,45.392578 C 848.41666,45.835287 848.04166,46.173828 847.57813,46.408203 C 847.11458,46.63737 846.57552,46.751953 845.96094,46.751953 C 845.13802,46.751953 844.5026,46.517578 844.05469,46.048828 C 843.61198,45.580079 843.39062,44.913413 843.39063,44.048828 C 843.39062,43.246748 843.61198,42.634769 844.05469,42.212891 C 844.5026,41.79102 845.23958,41.501958 846.26563,41.345703 C 846.5,41.30925 846.80729,41.267583 847.1875,41.220703 C 848.15104,41.095708 848.63281,40.817063 848.63281,40.384766 C 848.63281,40.041022 848.52604,39.796231 848.3125,39.650391 C 848.09895,39.499356 847.74218,39.423835 847.24219,39.423828 C 846.78385,39.423835 846.43229,39.514981 846.1875,39.697266 C 845.94271,39.879564 845.82031,40.13998 845.82031,40.478516 L 845.82031,40.603516 L 843.69531,40.603516 L 843.69531,40.447266 C 843.69531,39.577481 844.0026,38.89519 844.61719,38.400391 C 845.23177,37.900399 846.08073,37.650399 847.16406,37.650391 C 848.35156,37.650399 849.26041,37.856128 849.89063,38.267578 C 850.52603,38.679044 850.84374,39.272794 850.84375,40.048828 L 850.84375,44.876953 C 850.84374,45.231121 850.8802,45.496746 850.95313,45.673828 C 851.02603,45.845704 851.14843,45.975912 851.32031,46.064453 L 851.32031,46.447266 L 848.95313,46.447266 C 848.87499,46.301432 848.8151,46.139974 848.77344,45.962891 C 848.73176,45.785808 848.70833,45.595704 848.70313,45.392578 M 848.66406,42.267578 C 848.29427,42.439457 847.86718,42.577478 847.38281,42.681641 C 846.90364,42.785811 846.65625,42.840498 846.64063,42.845703 C 846.23958,42.96029 845.95833,43.103519 845.79688,43.275391 C 845.64062,43.447269 845.5625,43.684248 845.5625,43.986328 C 845.5625,44.29883 845.66406,44.54883 845.86719,44.736328 C 846.07031,44.918621 846.34375,45.009767 846.6875,45.009766 C 847.30208,45.009767 847.78385,44.837892 848.13281,44.494141 C 848.48697,44.145185 848.66406,43.671227 848.66406,43.072266 L 848.66406,42.267578 M 857.96875,43.244141 L 860.21094,43.244141 C 860.11718,44.322268 859.72395,45.173829 859.03125,45.798828 C 858.33854,46.423828 857.44791,46.736328 856.35938,46.736328 C 855.125,46.736328 854.15625,46.335287 853.45313,45.533203 C 852.75521,44.725913 852.40625,43.611331 852.40625,42.189453 C 852.40625,40.772792 852.76302,39.663418 853.47656,38.861328 C 854.19531,38.054045 855.18229,37.650399 856.4375,37.650391 C 857.53645,37.650399 858.41666,37.942066 859.07813,38.525391 C 859.74478,39.108731 860.11718,39.92123 860.19531,40.962891 L 857.9375,40.962891 C 857.87499,40.509772 857.71614,40.163418 857.46094,39.923828 C 857.20572,39.684252 856.86979,39.56446 856.45313,39.564453 C 855.89062,39.56446 855.46875,39.785814 855.1875,40.228516 C 854.91146,40.67123 854.77343,41.335292 854.77344,42.220703 C 854.77343,43.038415 854.91666,43.668623 855.20313,44.111328 C 855.49479,44.54883 855.91145,44.76758 856.45313,44.767578 C 856.87499,44.76758 857.21354,44.639976 857.46875,44.384766 C 857.72395,44.12956 857.89062,43.749352 857.96875,43.244141 M 866.88281,43.869141 L 869.14844,43.869141 C 868.91926,44.764976 868.45572,45.4681 867.75781,45.978516 C 867.0651,46.483724 866.21874,46.736328 865.21875,46.736328 C 863.98958,46.736328 863.01562,46.32487 862.29688,45.501953 C 861.57812,44.67383 861.21875,43.554039 861.21875,42.142578 C 861.21875,40.751959 861.57292,39.655606 862.28125,38.853516 C 862.98958,38.051441 863.95833,37.650399 865.1875,37.650391 C 866.48958,37.650399 867.49478,38.046232 868.20313,38.837891 C 868.91145,39.624356 869.26562,40.74675 869.26563,42.205078 C 869.26562,42.366541 869.26301,42.488936 869.25781,42.572266 C 869.2578,42.650394 869.2526,42.725915 869.24219,42.798828 L 863.57031,42.798828 C 863.60156,43.465498 863.76302,43.968101 864.05469,44.306641 C 864.35156,44.645184 864.77604,44.814455 865.32813,44.814453 C 865.71874,44.814455 866.03906,44.738934 866.28906,44.587891 C 866.53906,44.431643 866.73697,44.19206 866.88281,43.869141 M 863.57031,41.306641 L 866.91406,41.306641 C 866.89322,40.73373 866.73958,40.298834 866.45313,40.001953 C 866.17187,39.699877 865.76562,39.548835 865.23438,39.548828 C 864.73958,39.548835 864.34895,39.699877 864.0625,40.001953 C 863.78125,40.304043 863.61718,40.738938 863.57031,41.306641" + id="text5207" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 840,17.646484 L 797.02608,17.646484" + id="path5439" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 802.5,25.146484 L 802.5,10.146484 L 787.5,17.646484 L 802.5,25.146484 z " + id="path5441" /> + <g + id="g5459" + transform="translate(0,7.5)"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 82.50003,75 L 54.020182,75" + id="path5453" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z " + id="path5455" /> + <path + id="path5457" + d="M 45,67.5 C 45,82.5 45,82.5 45,82.5" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="g5464" + transform="matrix(-1,9.581637e-17,-9.581637e-17,-1,127.5,172.5)"> + <path + id="path5466" + d="M 82.50003,75 L 54.020182,75" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path5468" + d="M 60,82.5 L 60,67.5 L 45,75 L 60,82.5 z " + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 45,67.5 C 45,82.5 45,82.5 45,82.5" + id="path5470" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 107.0625,80.560547 L 105.23438,78.779297 L 107.17969,76.763672 L 109.05469,78.591797 C 109.30467,78.123052 109.49608,77.587897 109.62891,76.986328 C 109.7617,76.384773 109.82811,75.728524 109.82813,75.017578 C 109.82811,73.119151 109.40233,71.646496 108.55078,70.599609 C 107.69921,69.544936 106.5078,69.017593 104.97656,69.017578 C 103.46093,69.017593 102.28124,69.54103 101.4375,70.587891 C 100.59374,71.634778 100.17187,73.111339 100.17188,75.017578 C 100.17187,76.916022 100.59374,78.392583 101.4375,79.447266 C 102.28124,80.494144 103.46093,81.017581 104.97656,81.017578 C 105.36718,81.017581 105.73436,80.978518 106.07813,80.900391 C 106.42968,80.822268 106.7578,80.708987 107.0625,80.560547 M 109.55859,82.916016 C 108.97264,83.306641 108.28905,83.603516 107.50781,83.806641 C 106.73436,84.009765 105.89061,84.111328 104.97656,84.111328 C 102.39843,84.111328 100.34765,83.291016 98.824219,81.650391 C 97.308592,80.009769 96.55078,77.798834 96.550781,75.017578 C 96.55078,72.228527 97.308592,70.017592 98.824219,68.384766 C 100.34765,66.744158 102.39843,65.923846 104.97656,65.923828 C 107.55468,65.923846 109.60545,66.744158 111.12891,68.384766 C 112.66014,70.025404 113.42576,72.23634 113.42578,75.017578 C 113.42576,76.236336 113.26951,77.353522 112.95703,78.369141 C 112.64451,79.376957 112.18358,80.259769 111.57422,81.017578 L 113.44922,82.810547 L 111.52734,84.826172 L 109.55859,82.916016" + id="text5474" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 158.94141,83.630859 L 153.99609,66.369141 L 157.67578,66.369141 L 160.62891,78.544922 L 163.125,66.369141 L 166.91016,66.369141 L 169.40625,78.544922 L 172.35938,66.369141 L 176.00391,66.369141 L 171.07031,83.630859 L 167.68359,83.630859 L 165.01172,70.412109 L 162.32813,83.630859 L 158.94141,83.630859" + id="text5482" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 218.52539,83.630859 L 218.52539,66.369141 L 231.05273,66.369141 L 231.05273,69.369141 L 222.0293,69.369141 L 222.0293,73.048828 L 230.2793,73.048828 L 230.2793,76.001953 L 222.0293,76.001953 L 222.0293,80.443359 L 231.47461,80.443359 L 231.47461,83.630859 L 218.52539,83.630859" + id="text5492" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 281.4375,73.916016 L 285.60938,73.916016 C 286.51561,73.916025 287.17968,73.732432 287.60156,73.365234 C 288.03124,72.998058 288.24608,72.419933 288.24609,71.630859 C 288.24608,70.880872 288.03905,70.314466 287.625,69.931641 C 287.21093,69.54103 286.59374,69.345717 285.77344,69.345703 L 281.4375,69.345703 L 281.4375,73.916016 M 277.88672,83.630859 L 277.88672,66.369141 L 286.25391,66.369141 C 288.13671,66.369158 289.53124,66.771501 290.4375,67.576172 C 291.34373,68.380875 291.79686,69.611342 291.79688,71.267578 C 291.79686,72.322277 291.5742,73.201182 291.12891,73.904297 C 290.69139,74.607431 290.05858,75.087899 289.23047,75.345703 C 289.98045,75.611336 290.5117,76.017586 290.82422,76.564453 C 291.14452,77.111335 291.32811,77.962896 291.375,79.119141 L 291.44531,81.158203 C 291.4453,81.173831 291.4453,81.197268 291.44531,81.228516 C 291.46873,82.259767 291.69139,82.884766 292.11328,83.103516 L 292.11328,83.630859 L 288.22266,83.630859 C 288.09764,83.388672 287.99999,83.091797 287.92969,82.740234 C 287.86718,82.380861 287.82811,81.95508 287.8125,81.462891 L 287.76563,79.646484 C 287.72655,78.576177 287.52343,77.853521 287.15625,77.478516 C 286.79686,77.103522 286.14452,76.916022 285.19922,76.916016 L 281.4375,76.916016 L 281.4375,83.630859 L 277.88672,83.630859" + id="text5500" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 343.24219,83.630859 L 343.24219,69.451172 L 338.12109,69.451172 L 338.12109,66.369141 L 351.87891,66.369141 L 351.87891,69.451172 L 346.79297,69.451172 L 346.79297,83.630859 L 343.24219,83.630859" + id="text5504" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 407.06836,83.630859 L 403.51758,83.630859 L 403.51758,77.197266 L 397.24805,66.369141 L 401.5957,66.369141 L 405.28711,73.810547 L 408.69727,66.369141 L 412.75195,66.369141 L 407.06836,77.197266 L 407.06836,83.630859" + id="text5518" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 458.08594,66.105469 L 461.67188,66.105469 L 461.67188,76.933594 C 461.67187,78.269536 461.93749,79.246098 462.46875,79.863281 C 462.99999,80.472659 463.84374,80.777346 465,80.777344 C 466.17187,80.777346 467.02343,80.472659 467.55469,79.863281 C 468.09374,79.25391 468.36327,78.277349 468.36328,76.933594 L 468.36328,66.105469 L 471.91406,66.105469 L 471.91406,77.320313 C 471.91405,79.437504 471.3203,81.062502 470.13281,82.195313 C 468.95311,83.328125 467.24999,83.894531 465.02344,83.894531 C 462.78124,83.894531 461.0625,83.332031 459.86719,82.207031 C 458.67969,81.074221 458.08594,79.445316 458.08594,77.320313 L 458.08594,66.105469" + id="text5522" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 523.22461,83.630859 L 523.22461,66.369141 L 526.77539,66.369141 L 526.77539,83.630859 L 523.22461,83.630859" + id="text5526" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 580.18359,75 C 580.18359,76.898444 580.60546,78.375005 581.44922,79.429688 C 582.29296,80.476566 583.47265,81.000003 584.98828,81 C 586.51952,81.000003 587.71093,80.476566 588.5625,79.429688 C 589.41405,78.375005 589.83983,76.898444 589.83984,75 C 589.83983,73.101573 589.41405,71.628918 588.5625,70.582031 C 587.71093,69.527358 586.51952,69.000015 584.98828,69 C 583.47265,69.000015 582.29296,69.523452 581.44922,70.570313 C 580.60546,71.617199 580.18359,73.093761 580.18359,75 M 576.5625,75 C 576.5625,72.210949 577.32031,70.000014 578.83594,68.367188 C 580.35937,66.726579 582.41015,65.906268 584.98828,65.90625 C 587.56639,65.906268 589.61717,66.726579 591.14063,68.367188 C 592.67186,70.007826 593.43748,72.218761 593.4375,75 C 593.43748,77.781256 592.67186,79.992191 591.14063,81.632813 C 589.61717,83.273438 587.56639,84.09375 584.98828,84.09375 C 582.41015,84.09375 580.35937,83.273438 578.83594,81.632813 C 577.32031,79.992191 576.5625,77.781256 576.5625,75" + id="text5530" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 641.97656,74.361328 L 645.41016,74.361328 C 646.33983,74.361337 647.01561,74.166025 647.4375,73.775391 C 647.85936,73.376963 648.0703,72.740245 648.07031,71.865234 C 648.0703,71.044934 647.86327,70.423841 647.44922,70.001953 C 647.03515,69.580092 646.41796,69.369155 645.59766,69.369141 L 641.97656,69.369141 L 641.97656,74.361328 M 641.95313,77.490234 L 641.95313,83.630859 L 638.40234,83.630859 L 638.40234,66.369141 L 646.07813,66.369141 C 647.89061,66.369158 649.26171,66.841814 650.19141,67.787109 C 651.12889,68.724624 651.59764,70.103529 651.59766,71.923828 C 651.59764,73.705088 651.14061,75.080087 650.22656,76.048828 C 649.31249,77.009772 648.0078,77.490241 646.3125,77.490234 L 641.95313,77.490234" + id="text5534" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 709.24805,63.919922 L 709.24805,66.369141 C 709.17772,66.369155 709.08007,66.365249 708.95508,66.357422 C 708.83007,66.349624 708.74413,66.345718 708.69727,66.345703 C 707.90819,66.345718 707.37304,66.498062 707.0918,66.802734 C 706.81835,67.099624 706.68163,67.732435 706.68164,68.701172 L 706.68164,71.513672 C 706.68163,72.66993 706.50585,73.490242 706.1543,73.974609 C 705.80273,74.458991 705.16992,74.806647 704.25586,75.017578 C 705.16992,75.228522 705.80273,75.572271 706.1543,76.048828 C 706.50585,76.525395 706.68163,77.341801 706.68164,78.498047 L 706.68164,81.322266 C 706.68163,82.283202 706.81835,82.912108 707.0918,83.208984 C 707.36523,83.505857 707.90038,83.654294 708.69727,83.654297 C 708.74413,83.654294 708.83007,83.650388 708.95508,83.642578 C 709.08007,83.634763 709.17772,83.630857 709.24805,83.630859 L 709.24805,86.080078 C 709.13866,86.080073 708.98632,86.08398 708.79102,86.091797 C 708.59569,86.099605 708.45116,86.103511 708.35742,86.103516 C 707.57616,86.103511 706.92382,86.056636 706.40039,85.962891 C 705.87695,85.869136 705.43163,85.724605 705.06445,85.529297 C 704.61913,85.263668 704.30273,84.904293 704.11523,84.451172 C 703.93554,84.005857 703.8457,83.228514 703.8457,82.119141 L 703.8457,79.166016 C 703.8457,78.095706 703.64648,77.337895 703.24805,76.892578 C 702.84961,76.439458 702.17773,76.212896 701.23242,76.212891 C 701.18554,76.212896 701.10742,76.216802 700.99805,76.224609 C 700.88867,76.232427 700.80664,76.236333 700.75195,76.236328 L 700.75195,73.787109 C 700.80664,73.787117 700.88867,73.791023 700.99805,73.798828 C 701.10742,73.806648 701.18554,73.810554 701.23242,73.810547 C 702.16992,73.810554 702.83789,73.583992 703.23633,73.130859 C 703.64257,72.677743 703.8457,71.912119 703.8457,70.833984 L 703.8457,67.904297 C 703.8457,66.787124 703.93554,66.001968 704.11523,65.548828 C 704.30273,65.095719 704.61913,64.736345 705.06445,64.470703 C 705.43163,64.275408 705.87695,64.130876 706.40039,64.037109 C 706.92382,63.943377 707.57616,63.896502 708.35742,63.896484 C 708.45116,63.896502 708.59569,63.900408 708.79102,63.908203 C 708.98632,63.916033 709.13866,63.919939 709.24805,63.919922 M 703.0957,93.966797 L 709.01367,93.966797 L 709.01367,96.462891 L 706.25977,96.462891 L 706.25977,113.8418 L 709.01367,113.8418 L 709.01367,116.33789 L 703.0957,116.33789 L 703.0957,93.966797" + id="text5546" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 760.75195,63.908203 L 761.54883,63.908203 C 762.4082,63.90822 763.09961,63.955095 763.62305,64.048828 C 764.14648,64.142595 764.58398,64.291033 764.93555,64.494141 C 765.38085,64.744157 765.69335,65.103532 765.87305,65.572266 C 766.06054,66.033218 766.15429,66.806655 766.1543,67.892578 L 766.1543,70.845703 C 766.15429,71.916025 766.35351,72.677743 766.75195,73.130859 C 767.15038,73.57618 767.82226,73.798836 768.76758,73.798828 C 768.81444,73.798836 768.89257,73.794929 769.00195,73.787109 C 769.11132,73.779304 769.19335,73.775398 769.24805,73.775391 L 769.24805,76.224609 L 768.81445,76.224609 C 767.83788,76.224614 767.15038,76.443364 766.75195,76.880859 C 766.35351,77.318363 766.15429,78.076175 766.1543,79.154297 L 766.1543,82.107422 C 766.15429,83.224607 766.06054,84.009763 765.87305,84.462891 C 765.69335,84.916012 765.38085,85.267574 764.93555,85.517578 C 764.56835,85.712886 764.12304,85.857417 763.59961,85.951172 C 763.07617,86.044917 762.42382,86.091792 761.64258,86.091797 C 761.54883,86.091792 761.40429,86.087886 761.20898,86.080078 C 761.01367,86.072261 760.86133,86.068355 760.75195,86.068359 L 760.75195,83.619141 C 760.82226,83.619138 760.91992,83.623044 761.04492,83.630859 C 761.16992,83.638669 761.25586,83.642576 761.30273,83.642578 C 762.09179,83.642576 762.62304,83.490232 762.89648,83.185547 C 763.17773,82.88867 763.31836,82.263671 763.31836,81.310547 L 763.31836,78.509766 C 763.31836,77.337895 763.49414,76.513677 763.8457,76.037109 C 764.19726,75.55274 764.83007,75.20899 765.74414,75.005859 C 764.83007,74.794928 764.19726,74.447272 763.8457,73.962891 C 763.49414,73.478523 763.31836,72.658212 763.31836,71.501953 L 763.31836,68.666016 C 763.31836,67.712904 763.17773,67.087905 762.89648,66.791016 C 762.62304,66.486343 762.09179,66.333999 761.30273,66.333984 C 761.25586,66.333999 761.16992,66.337906 761.04492,66.345703 C 760.91992,66.35353 760.82226,66.357437 760.75195,66.357422 L 760.75195,63.908203 M 767.00977,93.955078 L 767.00977,116.32617 L 761.08008,116.32617 L 761.08008,113.83008 L 763.8457,113.83008 L 763.8457,96.451172 L 761.08008,96.451172 L 761.08008,93.955078 L 767.00977,93.955078" + id="text5554" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 823.79883,62.977287 L 826.21289,62.977287 L 826.21289,86.977287 L 823.79883,86.977287 L 823.79883,62.977287 M 827.10352,113.54369 L 821.29102,93.6101 L 822.87305,93.6101 L 828.70898,113.54369 L 827.10352,113.54369" + id="text5564" /> + <g + id="g3597"> + <path + id="text5570" + d="M 22.996094,139.10156 C 22.907541,140.40886 22.403635,141.44792 21.484375,142.21875 C 20.565095,142.98958 19.365878,143.375 17.886719,143.375 C 16.183589,143.375 14.859372,142.84375 13.914063,141.78125 C 12.968749,140.71875 12.496093,139.22917 12.496094,137.3125 C 12.496093,135.35417 12.977863,133.85418 13.941406,132.8125 C 14.904945,131.77084 16.29036,131.25001 18.097656,131.25 C 19.566398,131.25001 20.726554,131.60808 21.578125,132.32422 C 22.429677,133.04037 22.897124,134.05209 22.980469,135.35938 L 20.644531,135.35938 C 20.545564,134.70834 20.279939,134.21225 19.847656,133.87109 C 19.415357,133.52996 18.832024,133.35938 18.097656,133.35938 C 17.055984,133.35938 16.264318,133.69532 15.722656,134.36719 C 15.180986,135.03907 14.910153,136.02084 14.910156,137.3125 C 14.910153,138.5625 15.179684,139.52865 15.71875,140.21094 C 16.257808,140.89323 17.024734,141.23438 18.019531,141.23438 C 18.738274,141.23438 19.326815,141.05078 19.785156,140.68359 C 20.243481,140.31641 20.540356,139.78907 20.675781,139.10156 L 22.996094,139.10156 z M 29.558594,142 C 29.27213,142.44271 28.89713,142.77995 28.433594,143.01172 C 27.970048,143.24349 27.430986,143.35937 26.816406,143.35938 C 25.993487,143.35937 25.359373,143.125 24.914063,142.65625 C 24.468749,142.1875 24.246093,141.52083 24.246094,140.65625 C 24.246093,139.85417 24.468749,139.24219 24.914063,138.82031 C 25.359373,138.39844 26.09505,138.10938 27.121094,137.95313 C 27.355465,137.91667 27.662756,137.87501 28.042969,137.82813 C 29.006505,137.70313 29.488275,137.42448 29.488281,136.99219 C 29.488275,136.64844 29.381505,136.40235 29.167969,136.25391 C 28.954422,136.10548 28.597651,136.03126 28.097656,136.03125 C 27.639319,136.03126 27.287757,136.1224 27.042969,136.30469 C 26.798174,136.48699 26.675778,136.7474 26.675781,137.08594 L 26.675781,137.21094 L 24.550781,137.21094 L 24.550781,137.05469 C 24.55078,136.1849 24.858072,135.50131 25.472656,135.00391 C 26.087237,134.50652 26.936195,134.25782 28.019531,134.25781 C 29.207026,134.25782 30.117181,134.46355 30.75,134.875 C 31.382805,135.28647 31.699211,135.88022 31.699219,136.65625 L 31.699219,141.48438 C 31.699211,141.83854 31.735669,142.10287 31.808594,142.27734 C 31.881502,142.45182 32.003898,142.58333 32.175781,142.67188 L 32.175781,143.05469 L 29.808594,143.05469 C 29.730463,142.90885 29.670567,142.7474 29.628906,142.57031 C 29.587234,142.39323 29.563796,142.20313 29.558594,142 L 29.558594,142 z M 29.519531,138.875 C 29.149734,139.04688 28.723953,139.1849 28.242188,139.28906 C 27.760413,139.39323 27.511715,139.44792 27.496094,139.45313 C 27.095049,139.56771 26.815101,139.71094 26.65625,139.88281 C 26.497393,140.05469 26.417966,140.29167 26.417969,140.59375 C 26.417966,140.90625 26.519528,141.15495 26.722656,141.33984 C 26.925778,141.52474 27.199215,141.61719 27.542969,141.61719 C 28.157548,141.61719 28.64062,141.44401 28.992188,141.09766 C 29.343744,140.7513 29.519525,140.27865 29.519531,139.67969 L 29.519531,138.875 z M 39.691406,138.85938 C 39.691399,138.00521 39.529941,137.35287 39.207031,136.90234 C 38.884108,136.45183 38.415359,136.22657 37.800781,136.22656 C 37.19661,136.22657 36.736975,136.45053 36.421875,136.89844 C 36.106767,137.34636 35.949216,138.00001 35.949219,138.85938 C 35.949216,139.66146 36.11458,140.28125 36.445313,140.71875 C 36.776038,141.15625 37.243485,141.375 37.847656,141.375 C 38.420567,141.375 38.871088,141.15104 39.199219,140.70313 C 39.527337,140.25521 39.691399,139.64063 39.691406,138.85938 L 39.691406,138.85938 z M 33.738281,146.46094 L 33.738281,134.5625 L 35.902344,134.5625 L 35.902344,135.71094 C 36.230465,135.21095 36.59635,134.84636 37,134.61719 C 37.403641,134.38803 37.878901,134.27345 38.425781,134.27344 C 39.472649,134.27345 40.321607,134.68621 40.972656,135.51172 C 41.623689,136.33725 41.94921,137.42188 41.949219,138.76563 C 41.94921,140.125 41.623689,141.22787 40.972656,142.07422 C 40.321607,142.92057 39.483066,143.34375 38.457031,143.34375 C 37.915359,143.34375 37.432287,143.22917 37.007813,143 C 36.583329,142.77083 36.230465,142.4375 35.949219,142 L 35.949219,146.46094 L 33.738281,146.46094 z M 43.027344,140.28906 L 45.292969,140.28906 C 45.313799,140.72136 45.470049,141.04297 45.761719,141.25391 C 46.053382,141.46485 46.490881,141.57031 47.074219,141.57031 C 47.516922,141.57031 47.85937,141.4961 48.101563,141.34766 C 48.343744,141.19922 48.464838,140.98959 48.464844,140.71875 C 48.464838,140.33334 48.011713,140.04427 47.105469,139.85156 C 46.735673,139.77344 46.441402,139.70573 46.222656,139.64844 C 45.118487,139.36719 44.351561,139.03386 43.921875,138.64844 C 43.492187,138.26303 43.277343,137.74219 43.277344,137.08594 C 43.277343,136.21615 43.591145,135.52735 44.21875,135.01953 C 44.846352,134.51173 45.696611,134.25782 46.769531,134.25781 C 47.904943,134.25782 48.796869,134.51043 49.445313,135.01563 C 50.093742,135.52084 50.438794,136.23178 50.480469,137.14844 L 48.269531,137.14844 C 48.253901,136.78907 48.117182,136.51042 47.859375,136.3125 C 47.601557,136.11459 47.243485,136.01563 46.785156,136.01563 C 46.352861,136.01563 46.031246,136.08074 45.820313,136.21094 C 45.609372,136.34115 45.503903,136.53646 45.503906,136.79688 C 45.503903,137.13542 46.069007,137.4349 47.199219,137.69531 C 47.45963,137.75261 47.665359,137.79948 47.816406,137.83594 C 48.946608,138.10157 49.718743,138.42188 50.132813,138.79688 C 50.546867,139.17188 50.753898,139.70052 50.753906,140.38281 C 50.753898,141.34636 50.414055,142.08073 49.734375,142.58594 C 49.054681,143.09115 48.066401,143.34375 46.769531,143.34375 C 45.597653,143.34375 44.680987,143.08073 44.019531,142.55469 C 43.358072,142.02865 43.027343,141.30469 43.027344,140.38281 L 43.027344,140.28906 z M 57.011719,143.05469 L 57.011719,131.54688 L 59.378906,131.54688 L 59.378906,140.92969 L 64.996094,140.92969 L 64.996094,143.05469 L 57.011719,143.05469 z M 67.972656,138.79688 C 67.972653,139.64063 68.14583,140.29167 68.492188,140.75 C 68.838538,141.20834 69.332027,141.4375 69.972656,141.4375 C 70.602859,141.4375 71.09114,141.20834 71.4375,140.75 C 71.783847,140.29167 71.957024,139.64063 71.957031,138.79688 C 71.957024,137.95834 71.78515,137.3112 71.441406,136.85547 C 71.09765,136.39975 70.608067,136.17188 69.972656,136.17188 C 69.332027,136.17188 68.838538,136.39975 68.492188,136.85547 C 68.14583,137.3112 67.972653,137.95834 67.972656,138.79688 L 67.972656,138.79688 z M 65.667969,138.79688 C 65.667968,137.38542 66.05078,136.27605 66.816406,135.46875 C 67.582029,134.66147 68.634111,134.25782 69.972656,134.25781 C 71.305983,134.25782 72.356764,134.66147 73.125,135.46875 C 73.89322,136.27605 74.277335,137.38542 74.277344,138.79688 C 74.277335,140.21354 73.89322,141.32552 73.125,142.13281 C 72.356764,142.9401 71.305983,143.34375 69.972656,143.34375 C 68.634111,143.34375 67.582029,142.9401 66.816406,142.13281 C 66.05078,141.32552 65.667968,140.21354 65.667969,138.79688 L 65.667969,138.79688 z M 80.949219,139.85156 L 83.191406,139.85156 C 83.097648,140.92969 82.704419,141.78125 82.011719,142.40625 C 81.319004,143.03125 80.42838,143.34375 79.339844,143.34375 C 78.105465,143.34375 77.138019,142.94141 76.4375,142.13672 C 75.736978,141.33203 75.386718,140.21875 75.386719,138.79688 C 75.386718,137.38021 75.744791,136.26954 76.460938,135.46484 C 77.177081,134.66016 78.162757,134.25782 79.417969,134.25781 C 80.516921,134.25782 81.398431,134.54949 82.0625,135.13281 C 82.726555,135.71615 83.097648,136.52865 83.175781,137.57031 L 80.917969,137.57031 C 80.855463,137.11719 80.696609,136.77084 80.441406,136.53125 C 80.186193,136.29167 79.850255,136.17188 79.433594,136.17188 C 78.87109,136.17188 78.450517,136.39324 78.171875,136.83594 C 77.893226,137.27865 77.753903,137.94271 77.753906,138.82813 C 77.753903,139.64584 77.898434,140.27474 78.1875,140.71484 C 78.476559,141.15495 78.891923,141.375 79.433594,141.375 C 79.855464,141.375 80.194005,141.2474 80.449219,140.99219 C 80.704421,140.73698 80.871088,140.35677 80.949219,139.85156 L 80.949219,139.85156 z M 84.675781,143.05469 L 84.675781,131.54688 L 86.886719,131.54688 L 86.886719,137.58594 L 89.589844,134.5625 L 92.324219,134.5625 L 89.363281,137.71094 L 92.503906,143.05469 L 89.777344,143.05469 L 87.746094,139.4375 L 86.886719,140.36719 L 86.886719,143.05469 L 84.675781,143.05469 z " + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" /> + <path + id="path5584" + d="M 23.746094,146.25 L 12.496094,161.25 L 19.996094,161.25 L 19.996094,168.75 L 27.496094,168.75 L 27.496094,161.25 L 34.996094,161.25 L 23.746094,146.25 z M 22.714844,150.46875 L 24.746094,150.46875 L 27.871094,159.09375 L 25.996094,159.09375 L 25.402344,157.3125 L 22.058594,157.3125 L 21.496094,159.09375 L 19.621094,159.09375 L 22.714844,150.46875 z M 23.746094,152.1875 L 22.527344,155.84375 L 24.933594,155.84375 L 23.746094,152.1875 z " + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 119.9707,129.82617 L 117.58008,137.17383 L 122.37305,137.17383 L 119.9707,129.82617 M 117.9082,126.36914 L 122.00977,126.36914 L 128.23242,143.63086 L 124.50586,143.63086 L 123.33398,140.08008 L 116.64258,140.08008 L 115.50586,143.63086 L 111.76758,143.63086 L 117.9082,126.36914" + id="text5641" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 172.98047,138.29297 L 176.48438,138.29297 C 176.61718,139.23829 177.0039,139.94141 177.64453,140.40234 C 178.28515,140.85547 179.21093,141.08203 180.42188,141.08203 C 181.45312,141.08203 182.23046,140.89844 182.75391,140.53125 C 183.27733,140.16407 183.53905,139.6211 183.53906,138.90234 C 183.53905,137.85547 182.03515,136.98829 179.02734,136.30078 C 178.98827,136.29298 178.95312,136.28516 178.92188,136.27734 C 178.84374,136.26173 178.72265,136.23438 178.55859,136.19531 C 176.94921,135.84376 175.80078,135.44923 175.11328,135.01172 C 174.5039,134.6211 174.03906,134.09767 173.71875,133.44141 C 173.39844,132.77735 173.23828,131.99611 173.23828,131.09766 C 173.23828,129.41798 173.80859,128.13283 174.94922,127.24219 C 176.08984,126.34377 177.73828,125.89455 179.89453,125.89453 C 181.91015,125.89455 183.48436,126.37111 184.61719,127.32422 C 185.7578,128.27736 186.35936,129.62111 186.42188,131.35547 L 183.01172,131.35547 C 182.94921,130.51954 182.6289,129.88283 182.05078,129.44531 C 181.47265,129.00783 180.64843,128.78908 179.57813,128.78906 C 178.64843,128.78908 177.92968,128.97267 177.42188,129.33984 C 176.92187,129.69923 176.67187,130.21486 176.67188,130.88672 C 176.67187,131.80079 177.65234,132.48439 179.61328,132.9375 C 180.14452,133.06251 180.55859,133.16017 180.85547,133.23047 C 182.11327,133.55079 183.0039,133.80079 183.52734,133.98047 C 184.05858,134.16017 184.51952,134.35938 184.91016,134.57813 C 185.61327,134.96876 186.14061,135.48829 186.49219,136.13672 C 186.84374,136.77735 187.01952,137.54688 187.01953,138.44531 C 187.01952,140.24219 186.41405,141.63672 185.20313,142.62891 C 183.99218,143.61328 182.28515,144.10547 180.08203,144.10547 C 177.91015,144.10547 176.20703,143.60156 174.97266,142.59375 C 173.73828,141.58594 173.07422,140.15235 172.98047,138.29297" + id="text5645" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 236.16211,140.51367 L 239.00977,140.51367 C 240.65819,140.51367 241.8496,140.08399 242.58398,139.22461 C 243.32616,138.35743 243.69725,136.95508 243.69727,135.01758 C 243.69725,133.0879 243.3535,131.66993 242.66602,130.76367 C 241.9785,129.85744 240.90429,129.40431 239.44336,129.4043 L 236.16211,129.4043 L 236.16211,140.51367 M 232.68164,143.63086 L 232.68164,126.36914 L 239.44336,126.36914 C 242.09179,126.36916 244.06444,127.084 245.36133,128.51367 C 246.666,129.94337 247.31834,132.11134 247.31836,135.01758 C 247.31834,136.59571 247.07616,137.98633 246.5918,139.18945 C 246.11522,140.39258 245.41991,141.36133 244.50586,142.0957 C 243.81835,142.64258 243.0371,143.03711 242.16211,143.2793 C 241.2871,143.51367 240.06054,143.63086 238.48242,143.63086 L 232.68164,143.63086" + id="text5649" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 293.97656,143.63086 L 293.97656,126.36914 L 306.02344,126.36914 L 306.02344,129.36914 L 297.48047,129.36914 L 297.48047,133.2832 L 304.96875,133.2832 L 304.96875,136.2832 L 297.48047,136.2832 L 297.48047,143.63086 L 293.97656,143.63086" + id="text5653" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 365.17969,141.57422 C 364.53905,142.44141 363.80858,143.07813 362.98828,143.48438 C 362.17577,143.89062 361.21874,144.09375 360.11719,144.09375 C 357.70312,144.09375 355.74609,143.25781 354.24609,141.58594 C 352.7539,139.90625 352.00781,137.70313 352.00781,134.97656 C 352.00781,132.22657 352.7539,130.02736 354.24609,128.37891 C 355.73828,126.73049 357.72656,125.90627 360.21094,125.90625 C 362.37499,125.90627 364.14061,126.4258 365.50781,127.46484 C 366.87498,128.49611 367.68748,129.91798 367.94531,131.73047 L 364.32422,131.73047 C 364.10546,130.83204 363.65624,130.14845 362.97656,129.67969 C 362.30468,129.21095 361.42577,128.97658 360.33984,128.97656 C 358.89452,128.97658 357.75781,129.50783 356.92969,130.57031 C 356.10937,131.62501 355.69921,133.08595 355.69922,134.95313 C 355.69921,136.82813 356.1289,138.29688 356.98828,139.35938 C 357.84765,140.42188 359.02734,140.95313 360.52734,140.95313 C 361.65233,140.95313 362.59374,140.6211 363.35156,139.95703 C 364.10936,139.29297 364.57811,138.38282 364.75781,137.22656 L 360.84375,137.22656 L 360.84375,134.27344 L 367.99219,134.27344 L 367.99219,143.61328 L 365.61328,143.61328 L 365.17969,141.57422" + id="text5657" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 412.86328,143.63086 L 412.86328,126.36914 L 416.4375,126.36914 L 416.4375,132.80273 L 423.5625,132.80273 L 423.5625,126.36914 L 427.13672,126.36914 L 427.13672,143.63086 L 423.5625,143.63086 L 423.5625,135.97852 L 416.4375,135.97852 L 416.4375,143.63086 L 412.86328,143.63086" + id="text5661" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 474.48047,136.95703 L 477.91406,136.95703 L 477.91406,139.04297 C 477.91406,139.64453 478.09375,140.10547 478.45313,140.42578 C 478.8125,140.73828 479.32812,140.89453 480,140.89453 C 480.73437,140.89453 481.24609,140.70313 481.53516,140.32031 C 481.82421,139.9375 481.96874,139.21875 481.96875,138.16406 L 481.96875,126.12891 L 485.51953,126.12891 L 485.51953,138.32813 C 485.51952,139.42188 485.45311,140.22657 485.32031,140.74219 C 485.1953,141.25 484.98436,141.69922 484.6875,142.08984 C 484.23436,142.66797 483.61327,143.10938 482.82422,143.41406 C 482.03515,143.71875 481.10937,143.87109 480.04688,143.87109 C 479.07031,143.87109 478.20703,143.73828 477.45703,143.47266 C 476.70703,143.20703 476.08203,142.8125 475.58203,142.28906 C 475.18359,141.86719 474.89844,141.39844 474.72656,140.88281 C 474.5625,140.35938 474.48047,139.5 474.48047,138.30469 L 474.48047,136.95703" + id="text5665" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 532.32422,143.63086 L 532.32422,126.36914 L 535.875,126.36914 L 535.875,133.45898 L 542.61328,126.36914 L 547.05469,126.36914 L 540.16406,133.35352 L 547.67578,143.63086 L 543.33984,143.63086 L 537.71484,135.73242 L 535.875,137.56055 L 535.875,143.63086 L 532.32422,143.63086" + id="text5669" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 594.01172,143.63086 L 594.01172,126.36914 L 597.5625,126.36914 L 597.5625,140.44336 L 605.98828,140.44336 L 605.98828,143.63086 L 594.01172,143.63086" + id="text5673" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 143.15039,203.63086 L 143.15039,200.63086 L 152.53711,189.49805 L 143.33789,189.49805 L 143.33789,186.36914 L 156.84961,186.36914 L 156.84961,189.36914 L 147.43945,200.51367 L 156.63867,200.51367 L 156.63867,203.63086 L 143.15039,203.63086" + id="text5679" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 202.37109,203.63086 L 207.79688,194.81836 L 202.37109,186.36914 L 206.47266,186.36914 L 210,192.4043 L 213.50391,186.36914 L 217.62891,186.36914 L 212.20313,194.79492 L 217.62891,203.63086 L 213.52734,203.63086 L 210,197.6543 L 206.47266,203.63086 L 202.37109,203.63086" + id="text5683" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 277.875,197.68359 C 277.74217,199.64454 276.98436,201.20313 275.60156,202.35938 C 274.22655,203.51563 272.42968,204.09375 270.21094,204.09375 C 267.65624,204.09375 265.66796,203.29688 264.24609,201.70313 C 262.83203,200.10938 262.125,197.87501 262.125,195 C 262.125,192.06251 262.84765,189.81251 264.29297,188.25 C 265.73828,186.68752 267.8164,185.90627 270.52734,185.90625 C 272.73046,185.90627 274.46874,186.44533 275.74219,187.52344 C 277.02342,188.59377 277.72655,190.10939 277.85156,192.07031 L 274.34766,192.07031 C 274.19921,191.09376 273.80077,190.35158 273.15234,189.84375 C 272.50389,189.32814 271.6289,189.07033 270.52734,189.07031 C 268.96484,189.07033 267.77734,189.57423 266.96484,190.58203 C 266.15234,191.58986 265.74609,193.06251 265.74609,195 C 265.74609,196.87501 266.14843,198.32422 266.95313,199.34766 C 267.76562,200.3711 268.91796,200.88282 270.41016,200.88281 C 271.48827,200.88282 272.37108,200.60938 273.05859,200.0625 C 273.74608,199.50782 274.19139,198.71485 274.39453,197.68359 L 277.875,197.68359" + id="text5687" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 328.33594,203.63086 L 322.38281,186.36914 L 326.32031,186.36914 L 329.98828,199.2832 L 333.72656,186.36914 L 337.61719,186.36914 L 331.73438,203.63086 L 328.33594,203.63086" + id="text5691" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 386.32031,200.51367 L 390.52734,200.51367 C 391.51952,200.51367 392.24218,200.33399 392.69531,199.97461 C 393.14843,199.61524 393.37499,199.04883 393.375,198.27539 C 393.37499,197.47071 393.15233,196.89258 392.70703,196.54102 C 392.26171,196.18165 391.52733,196.00196 390.50391,196.00195 L 386.32031,196.00195 L 386.32031,200.51367 M 386.32031,193.04883 L 390.375,193.04883 C 391.24999,193.04884 391.89061,192.9004 392.29688,192.60352 C 392.70311,192.29884 392.90624,191.82228 392.90625,191.17383 C 392.90624,190.54103 392.70702,190.084 392.30859,189.80273 C 391.91796,189.51369 391.26561,189.36915 390.35156,189.36914 L 386.32031,189.36914 L 386.32031,193.04883 M 382.92188,203.63086 L 382.92188,186.36914 L 391.05469,186.36914 C 392.8203,186.36916 394.16405,186.74416 395.08594,187.49414 C 396.01561,188.23634 396.48045,189.31837 396.48047,190.74023 C 396.48045,191.61525 396.30858,192.34571 395.96484,192.93164 C 395.62108,193.51759 395.10545,193.97071 394.41797,194.29102 C 395.30858,194.6504 395.97264,195.16993 396.41016,195.84961 C 396.85545,196.52149 397.07811,197.36133 397.07813,198.36914 C 397.07811,200.04883 396.53123,201.34571 395.4375,202.25977 C 394.34374,203.17383 392.79296,203.63086 390.78516,203.63086 L 382.92188,203.63086" + id="text5695" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 442.88672,203.63086 L 442.88672,186.36914 L 446.60156,186.36914 L 453.60938,198.22852 L 453.60938,186.36914 L 457.11328,186.36914 L 457.11328,203.63086 L 453.44531,203.63086 L 446.39063,191.77148 L 446.39063,203.63086 L 442.88672,203.63086" + id="text5699" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 501.32813,203.63086 L 501.32813,186.36914 L 506.57813,186.36914 L 510.01172,199.50586 L 513.39844,186.36914 L 518.67188,186.36914 L 518.67188,203.63086 L 515.34375,203.63086 L 515.34375,189.70898 L 511.83984,203.63086 L 508.20703,203.63086 L 504.65625,189.70898 L 504.65625,203.63086 L 501.32813,203.63086" + id="text5703" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 658.22461,134.6543 L 658.22461,131.10352 L 661.77539,131.10352 L 661.77539,134.6543 L 658.22461,134.6543 M 658.22461,143.63086 L 658.22461,140.10352 L 661.77539,140.10352 L 661.77539,143.63086 L 658.22461,143.63086 M 658.24805,164.6543 L 658.24805,161.10352 L 661.77539,161.10352 L 661.77539,164.6543 L 658.24805,164.6543 M 658.24805,177.68555 L 658.24805,176.31445 C 658.90429,176.12695 659.38867,175.83789 659.70117,175.44727 C 660.01367,175.05664 660.16992,174.54883 660.16992,173.92383 L 660.16992,173.63086 L 658.22461,173.63086 L 658.22461,170.10352 L 661.77539,170.10352 L 661.77539,173.49023 C 661.77539,174.66211 661.47851,175.59961 660.88477,176.30273 C 660.29101,177.01367 659.41211,177.47461 658.24805,177.68555" + id="text5725" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 720.78516,126.7793 L 723.03516,126.7793 L 723.03516,133.33008 L 720.78516,133.33008 L 720.78516,126.7793 M 716.96484,126.7793 L 719.21484,126.7793 L 719.21484,133.33008 L 716.96484,133.33008 L 716.96484,126.7793 M 718.88672,156.7793 L 721.13672,156.7793 L 721.13672,163.33008 L 718.88672,163.33008 L 718.88672,156.7793" + id="text5731" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 772.5,140.60938 L 772.5,129.10156 L 780.85156,129.10156 L 780.85156,131.10156 L 774.83594,131.10156 L 774.83594,133.55469 L 780.33594,133.55469 L 780.33594,135.52344 L 774.83594,135.52344 L 774.83594,138.48438 L 781.13281,138.48438 L 781.13281,140.60938 L 772.5,140.60938 M 782.74219,140.60938 L 782.74219,132.11719 L 784.96875,132.11719 L 784.96875,133.125 C 785.28645,132.71355 785.66145,132.40626 786.09375,132.20313 C 786.52604,131.9948 787.00781,131.89063 787.53906,131.89063 C 788.47656,131.89063 789.17708,132.13543 789.64063,132.625 C 790.10937,133.10938 790.34374,133.84115 790.34375,134.82031 L 790.34375,140.60938 L 788.07031,140.60938 L 788.07031,135.47656 C 788.07031,134.86719 787.96614,134.4323 787.75781,134.17188 C 787.55468,133.91147 787.22135,133.78126 786.75781,133.78125 C 786.22135,133.78126 785.79687,133.94271 785.48438,134.26563 C 785.17187,134.58334 785.01562,135.01823 785.01563,135.57031 L 785.01563,140.60938 L 782.74219,140.60938 M 796.07813,140.67188 C 795.86979,140.67708 795.61979,140.6849 795.32813,140.69531 C 795.04166,140.71094 794.85937,140.71875 794.78125,140.71875 C 793.91146,140.71875 793.3151,140.55729 792.99219,140.23438 C 792.67448,139.90625 792.51562,139.26302 792.51563,138.30469 L 792.51563,133.71094 L 791.39063,133.71094 L 791.39063,132.11719 L 792.51563,132.11719 L 792.51563,129.79688 L 794.76563,129.79688 L 794.76563,132.11719 L 796.07813,132.11719 L 796.07813,133.71094 L 794.76563,133.71094 L 794.76563,138.41406 C 794.76562,138.63802 794.8151,138.78646 794.91406,138.85938 C 795.01302,138.92709 795.21614,138.96094 795.52344,138.96094 L 796.07813,138.96094 L 796.07813,140.67188 M 802.63281,138.03125 L 804.89844,138.03125 C 804.66926,138.92709 804.20572,139.63021 803.50781,140.14063 C 802.8151,140.64583 801.96874,140.89844 800.96875,140.89844 C 799.73958,140.89844 798.76562,140.48698 798.04688,139.66406 C 797.32812,138.83594 796.96875,137.71615 796.96875,136.30469 C 796.96875,134.91407 797.32292,133.81772 798.03125,133.01563 C 798.73958,132.21355 799.70833,131.81251 800.9375,131.8125 C 802.23958,131.81251 803.24478,132.20834 803.95313,133 C 804.66145,133.78647 805.01562,134.90886 805.01563,136.36719 C 805.01562,136.52865 805.01301,136.65105 805.00781,136.73438 C 805.0078,136.8125 805.0026,136.88802 804.99219,136.96094 L 799.32031,136.96094 C 799.35156,137.62761 799.51302,138.13021 799.80469,138.46875 C 800.10156,138.80729 800.52604,138.97656 801.07813,138.97656 C 801.46874,138.97656 801.78906,138.90104 802.03906,138.75 C 802.28906,138.59375 802.48697,138.35417 802.63281,138.03125 M 799.32031,135.46875 L 802.66406,135.46875 C 802.64322,134.89584 802.48958,134.46094 802.20313,134.16406 C 801.92187,133.86199 801.51562,133.71094 800.98438,133.71094 C 800.48958,133.71094 800.09895,133.86199 799.8125,134.16406 C 799.53125,134.46615 799.36718,134.90105 799.32031,135.46875 M 806.52344,140.60938 L 806.52344,132.11719 L 808.63281,132.11719 L 808.63281,133.57031 C 808.92968,132.98699 809.27604,132.5599 809.67188,132.28906 C 810.0677,132.01303 810.53906,131.87501 811.08594,131.875 C 811.17447,131.87501 811.24218,131.87761 811.28906,131.88281 C 811.34114,131.88282 811.38281,131.88543 811.41406,131.89063 L 811.42188,134.19531 L 810.66406,134.19531 C 810.04427,134.19532 809.57812,134.35678 809.26563,134.67969 C 808.95312,135.00261 808.79687,135.48178 808.79688,136.11719 L 808.79688,140.60938 L 806.52344,140.60938" + id="text5737" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 787.5,172.5 L 787.5,157.5 L 772.5,165 L 787.5,172.5 z " + id="path5745" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="M 810,150 L 810,165 L 780,165" + id="path5747" /> + <g + id="g3601"> + <path + id="text5753" + d="M 12.496094,197.64063 L 14.832032,197.64063 C 14.92057,198.27084 15.178382,198.73828 15.605469,199.04297 C 16.032548,199.34766 16.649735,199.5 17.457032,199.5 C 18.144525,199.5 18.662754,199.37761 19.011719,199.13281 C 19.36067,198.88802 19.535149,198.52604 19.535157,198.04688 C 19.535149,197.34896 18.532546,196.77084 16.527344,196.3125 C 16.501298,196.3073 16.47786,196.30209 16.457032,196.29688 C 16.404944,196.28646 16.324215,196.26823 16.214844,196.24219 C 15.141924,196.00782 14.3763,195.7448 13.917969,195.45313 C 13.511717,195.19271 13.201822,194.84245 12.988282,194.40234 C 12.774739,193.96225 12.667968,193.44272 12.667969,192.84375 C 12.667968,191.72397 13.048176,190.8659 13.808594,190.26953 C 14.569008,189.67319 15.667965,189.37501 17.105469,189.375 C 18.449212,189.37501 19.499993,189.69272 20.257813,190.32813 C 21.015616,190.96355 21.415355,191.85938 21.457032,193.01563 L 19.183594,193.01563 C 19.14192,192.45834 18.928379,192.03386 18.542969,191.74219 C 18.157546,191.45053 17.608067,191.3047 16.894532,191.30469 C 16.274735,191.3047 15.796871,191.42579 15.460938,191.66797 C 15.124997,191.91017 14.957028,192.25522 14.957032,192.70313 C 14.957028,193.31251 15.610674,193.76824 16.917969,194.07031 C 17.27213,194.15365 17.548172,194.21876 17.746094,194.26563 C 18.584629,194.47917 19.17968,194.64584 19.53125,194.76563 C 19.882805,194.88542 20.188794,195.01824 20.449219,195.16406 C 20.91796,195.42448 21.269522,195.76954 21.503907,196.19922 C 21.738272,196.62891 21.855459,197.14323 21.855469,197.74219 C 21.855459,198.94011 21.451814,199.86849 20.644532,200.52734 C 19.837232,201.1862 18.699212,201.51562 17.230469,201.51563 C 15.782548,201.51562 14.647133,201.17969 13.824219,200.50781 C 13.001301,199.83594 12.558593,198.88021 12.496094,197.64063 L 12.496094,197.64063 z M 23.566407,201.19531 L 23.566407,189.6875 L 25.824219,189.6875 L 25.824219,193.64063 C 26.131507,193.25522 26.497392,192.96485 26.921875,192.76953 C 27.34635,192.57423 27.82161,192.47657 28.347657,192.47656 C 28.84765,192.47657 29.299473,192.56251 29.703125,192.73438 C 30.106764,192.90626 30.433586,193.15105 30.683594,193.46875 C 30.855461,193.6823 30.976554,193.92709 31.046875,194.20313 C 31.117179,194.47917 31.152335,194.92188 31.152344,195.53125 L 31.152344,195.6875 L 31.152344,201.19531 L 28.894532,201.19531 L 28.894532,196.75 C 28.894525,195.69792 28.798171,195.03777 28.605469,194.76953 C 28.412755,194.50131 28.066401,194.36719 27.566407,194.36719 C 27.029944,194.36719 26.605465,194.52735 26.292969,194.84766 C 25.980466,195.16797 25.824216,195.60417 25.824219,196.15625 L 25.824219,201.19531 L 23.566407,201.19531 z M 33.191407,191.75781 L 33.191407,189.6875 L 35.464844,189.6875 L 35.464844,191.75781 L 33.191407,191.75781 z M 33.191407,201.19531 L 33.191407,192.70313 L 35.464844,192.70313 L 35.464844,201.19531 L 33.191407,201.19531 z M 37.886719,201.19531 L 37.886719,194.29688 L 36.675782,194.29688 L 36.675782,192.70313 L 37.886719,192.70313 L 37.886719,191.91406 C 37.886718,191.12241 38.091144,190.54038 38.5,190.16797 C 38.908852,189.79558 39.553383,189.60939 40.433594,189.60938 C 40.595048,189.60939 40.765621,189.61329 40.945313,189.62109 C 41.124996,189.62892 41.316402,189.64324 41.519532,189.66406 L 41.519532,191.46875 L 40.925782,191.46875 C 40.587236,191.46876 40.36458,191.51303 40.257813,191.60156 C 40.151038,191.69011 40.097653,191.85938 40.097657,192.10938 L 40.097657,192.70313 L 41.519532,192.70313 L 41.519532,194.29688 L 40.113282,194.29688 L 40.113282,201.19531 L 37.886719,201.19531 z M 46.449219,201.25781 C 46.240881,201.26302 45.992183,201.27214 45.703125,201.28516 C 45.414059,201.29818 45.230465,201.30469 45.152344,201.30469 C 44.28255,201.30469 43.687498,201.14193 43.367188,200.81641 C 43.046874,200.49089 42.886718,199.84896 42.886719,198.89063 L 42.886719,194.29688 L 41.761719,194.29688 L 41.761719,192.70313 L 42.886719,192.70313 L 42.886719,190.38281 L 45.136719,190.38281 L 45.136719,192.70313 L 46.449219,192.70313 L 46.449219,194.29688 L 45.136719,194.29688 L 45.136719,199 C 45.136716,199.22396 45.186195,199.3711 45.285157,199.44141 C 45.384111,199.51172 45.587236,199.54688 45.894532,199.54688 L 46.449219,199.54688 L 46.449219,201.25781 z " + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" /> + <path + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 24.746094,207.125 L 13.496094,222.125 L 20.996094,222.125 L 20.996094,229.625 L 28.496094,229.625 L 28.496094,222.125 L 35.996094,222.125 L 24.746094,207.125 z " + id="path5757" /> + </g> + <g + id="g5795" + transform="translate(727.5,0)"> + <text + sodipodi:linespacing="125%" + id="text5797" + y="201.19531" + x="31.8125" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + xml:space="preserve"><tspan + y="201.19531" + x="31.8125" + id="tspan5799" + sodipodi:role="line">Shift</tspan></text> + <path + id="path5801" + d="M 27.25,207.125 L 16,222.125 L 23.5,222.125 L 23.5,229.625 L 31,229.625 L 31,222.125 L 38.5,222.125 L 27.25,207.125 z " + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 576.90234,189.63867 L 576.90234,192.20508 L 566.4375,196.48242 L 576.90234,200.74805 L 576.90234,203.31445 L 563.09766,197.63086 L 563.09766,195.29883 L 576.90234,189.63867 M 568.21875,237.68555 L 568.21875,236.31445 C 568.875,236.12695 569.35937,235.83789 569.67188,235.44727 C 569.98437,235.05664 570.14062,234.54883 570.14063,233.92383 L 570.14063,233.63086 L 568.21875,233.63086 L 568.21875,230.10352 L 571.76953,230.10352 L 571.76953,233.49023 C 571.76953,234.6543 571.46875,235.59179 570.86719,236.30273 C 570.27343,237.01367 569.39062,237.47461 568.21875,237.68555" + id="text5803" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 623.09766,189.63867 L 636.90234,195.29883 L 636.90234,197.63086 L 623.09766,203.31445 L 623.09766,200.74805 L 633.58594,196.48242 L 623.09766,192.20508 L 623.09766,189.63867 M 628.21875,233.63086 L 628.21875,230.10352 L 631.74609,230.10352 L 631.74609,233.63086 L 628.21875,233.63086" + id="text5813" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 688.44727,198.61523 C 688.44726,198.5293 688.44335,198.41602 688.43555,198.27539 C 688.42773,198.12696 688.42382,198.01758 688.42383,197.94727 C 688.42382,197.25977 688.49804,196.68946 688.64648,196.23633 C 688.79492,195.7754 689.0332,195.34571 689.36133,194.94727 C 689.61132,194.6504 689.98242,194.31056 690.47461,193.92773 C 690.9746,193.54493 691.29882,193.26759 691.44727,193.0957 C 691.75976,192.74415 691.9746,192.42775 692.0918,192.14648 C 692.20898,191.86525 692.26757,191.55665 692.26758,191.2207 C 692.26757,190.47853 692.06054,189.9004 691.64648,189.48633 C 691.23241,189.07228 690.65429,188.86525 689.91211,188.86523 C 689.16992,188.86525 688.58398,189.11525 688.1543,189.61523 C 687.73242,190.10744 687.50195,190.80275 687.46289,191.70117 L 684.1582,191.70117 L 684.1582,191.33789 C 684.1582,189.68947 684.67773,188.37697 685.7168,187.40039 C 686.76367,186.41603 688.16992,185.92385 689.93555,185.92383 C 691.74023,185.92385 693.17382,186.38869 694.23633,187.31836 C 695.30663,188.24025 695.84178,189.47853 695.8418,191.0332 C 695.84178,191.58009 695.77928,192.07228 695.6543,192.50977 C 695.5371,192.93946 695.3535,193.33399 695.10352,193.69336 C 694.78319,194.14649 694.2871,194.63868 693.61523,195.16992 C 692.95116,195.69337 692.54882,196.01759 692.4082,196.14258 C 692.11132,196.43165 691.89648,196.73634 691.76367,197.05664 C 691.63866,197.37696 691.57616,197.75977 691.57617,198.20508 C 691.57616,198.24415 691.58007,198.31055 691.58789,198.4043 C 691.59569,198.49805 691.5996,198.56836 691.59961,198.61523 L 688.44727,198.61523 M 688.2832,203.63086 L 688.2832,200.19727 L 691.74023,200.19727 L 691.74023,203.63086 L 688.2832,203.63086 M 686.31445,235.85742 L 692.12695,215.92383 L 693.73242,215.92383 L 687.89648,235.85742 L 686.31445,235.85742" + id="text5819" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 18,271.78906 C 17.911447,273.09636 17.406239,274.13542 16.484375,274.90625 C 15.5677,275.67708 14.369784,276.0625 12.890625,276.0625 C 11.187496,276.0625 9.8619761,275.53125 8.9140625,274.46875 C 7.971353,273.40625 7.4999993,271.91667 7.5,270 C 7.4999993,268.04167 7.9817696,266.54168 8.9453125,265.5 C 9.9088511,264.45834 11.294266,263.93751 13.101563,263.9375 C 14.570305,263.93751 15.729158,264.29689 16.578125,265.01563 C 17.432281,265.72918 17.901031,266.73959 17.984375,268.04688 L 15.648438,268.04688 C 15.54947,267.39584 15.283846,266.90105 14.851563,266.5625 C 14.419263,266.21876 13.83593,266.04688 13.101563,266.04688 C 12.059891,266.04688 11.268225,266.38282 10.726563,267.05469 C 10.184892,267.72657 9.9140594,268.70834 9.9140625,270 C 9.9140594,271.25 10.182288,272.21615 10.71875,272.89844 C 11.260412,273.58073 12.028641,273.92188 13.023438,273.92188 C 13.742181,273.92188 14.330722,273.73959 14.789063,273.375 C 15.247387,273.00521 15.544262,272.47657 15.679688,271.78906 L 18,271.78906 M 23.46875,275.80469 C 23.260412,275.8099 23.010412,275.81771 22.71875,275.82813 C 22.432288,275.84375 22.249996,275.85156 22.171875,275.85156 C 21.302081,275.85156 20.705727,275.6901 20.382813,275.36719 C 20.065103,275.03906 19.906249,274.39583 19.90625,273.4375 L 19.90625,268.84375 L 18.78125,268.84375 L 18.78125,267.25 L 19.90625,267.25 L 19.90625,264.92969 L 22.15625,264.92969 L 22.15625,267.25 L 23.46875,267.25 L 23.46875,268.84375 L 22.15625,268.84375 L 22.15625,273.54688 C 22.156247,273.77084 22.205726,273.91927 22.304688,273.99219 C 22.403642,274.0599 22.606767,274.09375 22.914063,274.09375 L 23.46875,274.09375 L 23.46875,275.80469 M 24.789063,275.74219 L 24.789063,267.25 L 26.898438,267.25 L 26.898438,268.70313 C 27.195309,268.1198 27.541663,267.69272 27.9375,267.42188 C 28.333329,267.14584 28.804682,267.00782 29.351563,267.00781 C 29.440099,267.00782 29.507807,267.01043 29.554688,267.01563 C 29.606765,267.01563 29.648432,267.01824 29.679688,267.02344 L 29.6875,269.32813 L 28.929688,269.32813 C 28.309891,269.32813 27.843746,269.48959 27.53125,269.8125 C 27.218747,270.13542 27.062497,270.61459 27.0625,271.25 L 27.0625,275.74219 L 24.789063,275.74219 M 31.023438,275.74219 L 31.023438,264.23438 L 33.296875,264.23438 L 33.296875,275.74219 L 31.023438,275.74219" + id="text5827" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 162.96875,266.49609 L 161.375,271.39453 L 164.57031,271.39453 L 162.96875,266.49609 M 161.59375,264.19141 L 164.32813,264.19141 L 168.47656,275.69922 L 165.99219,275.69922 L 165.21094,273.33203 L 160.75,273.33203 L 159.99219,275.69922 L 157.5,275.69922 L 161.59375,264.19141 M 169.53906,275.69922 L 169.53906,264.19141 L 171.8125,264.19141 L 171.8125,275.69922 L 169.53906,275.69922 M 177.64063,275.76172 C 177.43229,275.76693 177.18229,275.77474 176.89063,275.78516 C 176.60416,275.80078 176.42187,275.80859 176.34375,275.80859 C 175.47396,275.80859 174.8776,275.64714 174.55469,275.32422 C 174.23698,274.99609 174.07812,274.35287 174.07813,273.39453 L 174.07813,268.80078 L 172.95313,268.80078 L 172.95313,267.20703 L 174.07813,267.20703 L 174.07813,264.88672 L 176.32813,264.88672 L 176.32813,267.20703 L 177.64063,267.20703 L 177.64063,268.80078 L 176.32813,268.80078 L 176.32813,273.50391 C 176.32812,273.72787 176.3776,273.8763 176.47656,273.94922 C 176.57552,274.01693 176.77864,274.05078 177.08594,274.05078 L 177.64063,274.05078 L 177.64063,275.76172" + id="text5831" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 612.96875,266.53906 L 611.375,271.4375 L 614.57031,271.4375 L 612.96875,266.53906 M 611.59375,264.23438 L 614.32813,264.23438 L 618.47656,275.74219 L 615.99219,275.74219 L 615.21094,273.375 L 610.75,273.375 L 609.99219,275.74219 L 607.5,275.74219 L 611.59375,264.23438 M 619.53906,275.74219 L 619.53906,264.23438 L 621.8125,264.23438 L 621.8125,275.74219 L 619.53906,275.74219 M 627.64063,275.80469 C 627.43229,275.8099 627.18229,275.81771 626.89063,275.82813 C 626.60416,275.84375 626.42187,275.85156 626.34375,275.85156 C 625.47396,275.85156 624.8776,275.6901 624.55469,275.36719 C 624.23698,275.03906 624.07812,274.39583 624.07813,273.4375 L 624.07813,268.84375 L 622.95313,268.84375 L 622.95313,267.25 L 624.07813,267.25 L 624.07813,264.92969 L 626.32813,264.92969 L 626.32813,267.25 L 627.64063,267.25 L 627.64063,268.84375 L 626.32813,268.84375 L 626.32813,273.54688 C 626.32812,273.77084 626.3776,273.91927 626.47656,273.99219 C 626.57552,274.0599 626.77864,274.09375 627.08594,274.09375 L 627.64063,274.09375 L 627.64063,275.80469 M 642,274.38281 C 641.57291,274.96094 641.08593,275.38542 640.53906,275.65625 C 639.99739,275.92708 639.35937,276.0625 638.625,276.0625 C 637.01562,276.0625 635.71093,275.50521 634.71094,274.39063 C 633.71614,273.27084 633.21875,271.80209 633.21875,269.98438 C 633.21875,268.15105 633.71614,266.6849 634.71094,265.58594 C 635.70573,264.48699 637.03125,263.93751 638.6875,263.9375 C 640.1302,263.93751 641.30728,264.28387 642.21875,264.97656 C 643.1302,265.66407 643.67186,266.61199 643.84375,267.82031 L 641.42969,267.82031 C 641.28385,267.22136 640.98437,266.76563 640.53125,266.45313 C 640.08333,266.14063 639.49739,265.98438 638.77344,265.98438 C 637.80989,265.98438 637.05208,266.33855 636.5,267.04688 C 635.95312,267.75001 635.67968,268.72397 635.67969,269.96875 C 635.67968,271.21875 635.96614,272.19792 636.53906,272.90625 C 637.11197,273.61459 637.89843,273.96875 638.89844,273.96875 C 639.64843,273.96875 640.27603,273.7474 640.78125,273.30469 C 641.28645,272.86198 641.59895,272.25521 641.71875,271.48438 L 639.10938,271.48438 L 639.10938,269.51563 L 643.875,269.51563 L 643.875,275.74219 L 642.28906,275.74219 L 642,274.38281 M 645.96094,275.74219 L 645.96094,267.25 L 648.07031,267.25 L 648.07031,268.70313 C 648.36718,268.1198 648.71354,267.69272 649.10938,267.42188 C 649.5052,267.14584 649.97656,267.00782 650.52344,267.00781 C 650.61197,267.00782 650.67968,267.01043 650.72656,267.01563 C 650.77864,267.01563 650.82031,267.01824 650.85156,267.02344 L 650.85938,269.32813 L 650.10156,269.32813 C 649.48177,269.32813 649.01562,269.48959 648.70313,269.8125 C 648.39062,270.13542 648.23437,270.61459 648.23438,271.25 L 648.23438,275.74219 L 645.96094,275.74219" + id="text5835" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 828,271.78906 C 827.91145,273.09636 827.40624,274.13542 826.48438,274.90625 C 825.5677,275.67708 824.36978,276.0625 822.89063,276.0625 C 821.1875,276.0625 819.86198,275.53125 818.91406,274.46875 C 817.97135,273.40625 817.5,271.91667 817.5,270 C 817.5,268.04167 817.98177,266.54168 818.94531,265.5 C 819.90885,264.45834 821.29427,263.93751 823.10156,263.9375 C 824.5703,263.93751 825.72916,264.29689 826.57813,265.01563 C 827.43228,265.72918 827.90103,266.73959 827.98438,268.04688 L 825.64844,268.04688 C 825.54947,267.39584 825.28385,266.90105 824.85156,266.5625 C 824.41926,266.21876 823.83593,266.04688 823.10156,266.04688 C 822.05989,266.04688 821.26822,266.38282 820.72656,267.05469 C 820.18489,267.72657 819.91406,268.70834 819.91406,270 C 819.91406,271.25 820.18229,272.21615 820.71875,272.89844 C 821.26041,273.58073 822.02864,273.92188 823.02344,273.92188 C 823.74218,273.92188 824.33072,273.73959 824.78906,273.375 C 825.24739,273.00521 825.54426,272.47657 825.67969,271.78906 L 828,271.78906 M 833.46875,275.80469 C 833.26041,275.8099 833.01041,275.81771 832.71875,275.82813 C 832.43229,275.84375 832.25,275.85156 832.17188,275.85156 C 831.30208,275.85156 830.70573,275.6901 830.38281,275.36719 C 830.0651,275.03906 829.90625,274.39583 829.90625,273.4375 L 829.90625,268.84375 L 828.78125,268.84375 L 828.78125,267.25 L 829.90625,267.25 L 829.90625,264.92969 L 832.15625,264.92969 L 832.15625,267.25 L 833.46875,267.25 L 833.46875,268.84375 L 832.15625,268.84375 L 832.15625,273.54688 C 832.15625,273.77084 832.20573,273.91927 832.30469,273.99219 C 832.40364,274.0599 832.60677,274.09375 832.91406,274.09375 L 833.46875,274.09375 L 833.46875,275.80469 M 834.78906,275.74219 L 834.78906,267.25 L 836.89844,267.25 L 836.89844,268.70313 C 837.19531,268.1198 837.54166,267.69272 837.9375,267.42188 C 838.33333,267.14584 838.80468,267.00782 839.35156,267.00781 C 839.4401,267.00782 839.50781,267.01043 839.55469,267.01563 C 839.60677,267.01563 839.64843,267.01824 839.67969,267.02344 L 839.6875,269.32813 L 838.92969,269.32813 C 838.30989,269.32813 837.84375,269.48959 837.53125,269.8125 C 837.21875,270.13542 837.0625,270.61459 837.0625,271.25 L 837.0625,275.74219 L 834.78906,275.74219 M 841.02344,275.74219 L 841.02344,264.23438 L 843.29688,264.23438 L 843.29688,275.74219 L 841.02344,275.74219" + id="text5839" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 108.94531,264.01953 L 105.64844,252.51172 L 108.10156,252.51172 L 110.07031,260.62891 L 111.73438,252.51172 L 114.25781,252.51172 L 115.92188,260.62891 L 117.89063,252.51172 L 120.32031,252.51172 L 117.03125,264.01953 L 114.77344,264.01953 L 112.99219,255.20703 L 111.20313,264.01953 L 108.94531,264.01953 M 121.5,254.58203 L 121.5,252.51172 L 123.77344,252.51172 L 123.77344,254.58203 L 121.5,254.58203 M 121.5,264.01953 L 121.5,255.52734 L 123.77344,255.52734 L 123.77344,264.01953 L 121.5,264.01953 M 125.79688,264.01953 L 125.79688,255.52734 L 128.02344,255.52734 L 128.02344,256.53516 C 128.34114,256.12371 128.71614,255.81641 129.14844,255.61328 C 129.58072,255.40496 130.06249,255.30079 130.59375,255.30078 C 131.53124,255.30079 132.23176,255.54558 132.69531,256.03516 C 133.16405,256.51954 133.39843,257.25131 133.39844,258.23047 L 133.39844,264.01953 L 131.125,264.01953 L 131.125,258.88672 C 131.12499,258.27735 131.02083,257.84245 130.8125,257.58203 C 130.60937,257.32162 130.27604,257.19141 129.8125,257.19141 C 129.27604,257.19141 128.85156,257.35287 128.53906,257.67578 C 128.22656,257.9935 128.07031,258.42839 128.07031,258.98047 L 128.07031,264.01953 L 125.79688,264.01953 M 106.64844,284.01953 L 106.64844,272.51172 L 109.01563,272.51172 L 109.01563,277.23828 L 113.50781,272.51172 L 116.46875,272.51172 L 111.875,277.16797 L 116.88281,284.01953 L 113.99219,284.01953 L 110.24219,278.75391 L 109.01563,279.97266 L 109.01563,284.01953 L 106.64844,284.01953 M 122.9375,281.44141 L 125.20313,281.44141 C 124.97395,282.33724 124.51041,283.04037 123.8125,283.55078 C 123.11979,284.05599 122.27343,284.30859 121.27344,284.30859 C 120.04427,284.30859 119.07031,283.89714 118.35156,283.07422 C 117.63281,282.2461 117.27344,281.1263 117.27344,279.71484 C 117.27344,278.32422 117.6276,277.22787 118.33594,276.42578 C 119.04427,275.62371 120.01302,275.22267 121.24219,275.22266 C 122.54427,275.22267 123.54947,275.6185 124.25781,276.41016 C 124.96614,277.19662 125.3203,278.31902 125.32031,279.77734 C 125.3203,279.93881 125.3177,280.0612 125.3125,280.14453 C 125.31249,280.22266 125.30728,280.29818 125.29688,280.37109 L 119.625,280.37109 C 119.65625,281.03776 119.81771,281.54037 120.10938,281.87891 C 120.40625,282.21745 120.83073,282.38672 121.38281,282.38672 C 121.77343,282.38672 122.09374,282.3112 122.34375,282.16016 C 122.59374,282.00391 122.79166,281.76433 122.9375,281.44141 M 119.625,278.87891 L 122.96875,278.87891 C 122.94791,278.306 122.79426,277.8711 122.50781,277.57422 C 122.22656,277.27214 121.82031,277.1211 121.28906,277.12109 C 120.79427,277.1211 120.40364,277.27214 120.11719,277.57422 C 119.83593,277.87631 119.67187,278.3112 119.625,278.87891 M 127.16406,287.42578 L 127.16406,285.58984 C 127.23698,285.60026 127.3125,285.60807 127.39063,285.61328 C 127.46875,285.61849 127.57031,285.62109 127.69531,285.62109 C 128.14323,285.62109 128.47916,285.51432 128.70313,285.30078 C 128.92708,285.09245 129.03906,284.77734 129.03906,284.35547 C 129.03906,284.32422 129.03385,284.28516 129.02344,284.23828 C 129.01302,284.19141 129.0026,284.15234 128.99219,284.12109 L 125.92969,275.52734 L 128.42969,275.52734 L 130.21875,281.65234 L 131.96094,275.52734 L 134.35156,275.52734 L 130.85938,285.54297 C 130.59895,286.29297 130.27343,286.80338 129.88281,287.07422 C 129.49218,287.35026 128.90625,287.48828 128.125,287.48828 C 127.98437,287.48828 127.83333,287.48307 127.67188,287.47266 C 127.51041,287.46224 127.34114,287.44661 127.16406,287.42578" + id="text5872" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 708.94531,264.01953 L 705.64844,252.51172 L 708.10156,252.51172 L 710.07031,260.62891 L 711.73438,252.51172 L 714.25781,252.51172 L 715.92188,260.62891 L 717.89063,252.51172 L 720.32031,252.51172 L 717.03125,264.01953 L 714.77344,264.01953 L 712.99219,255.20703 L 711.20313,264.01953 L 708.94531,264.01953 M 721.5,254.58203 L 721.5,252.51172 L 723.77344,252.51172 L 723.77344,254.58203 L 721.5,254.58203 M 721.5,264.01953 L 721.5,255.52734 L 723.77344,255.52734 L 723.77344,264.01953 L 721.5,264.01953 M 725.79688,264.01953 L 725.79688,255.52734 L 728.02344,255.52734 L 728.02344,256.53516 C 728.34114,256.12371 728.71614,255.81641 729.14844,255.61328 C 729.58072,255.40496 730.06249,255.30079 730.59375,255.30078 C 731.53124,255.30079 732.23176,255.54558 732.69531,256.03516 C 733.16405,256.51954 733.39843,257.25131 733.39844,258.23047 L 733.39844,264.01953 L 731.125,264.01953 L 731.125,258.88672 C 731.12499,258.27735 731.02083,257.84245 730.8125,257.58203 C 730.60937,257.32162 730.27604,257.19141 729.8125,257.19141 C 729.27604,257.19141 728.85156,257.35287 728.53906,257.67578 C 728.22656,257.9935 728.07031,258.42839 728.07031,258.98047 L 728.07031,264.01953 L 725.79688,264.01953 M 706.64844,284.01953 L 706.64844,272.51172 L 709.01563,272.51172 L 709.01563,277.23828 L 713.50781,272.51172 L 716.46875,272.51172 L 711.875,277.16797 L 716.88281,284.01953 L 713.99219,284.01953 L 710.24219,278.75391 L 709.01563,279.97266 L 709.01563,284.01953 L 706.64844,284.01953 M 722.9375,281.44141 L 725.20313,281.44141 C 724.97395,282.33724 724.51041,283.04037 723.8125,283.55078 C 723.11979,284.05599 722.27343,284.30859 721.27344,284.30859 C 720.04427,284.30859 719.07031,283.89714 718.35156,283.07422 C 717.63281,282.2461 717.27344,281.1263 717.27344,279.71484 C 717.27344,278.32422 717.6276,277.22787 718.33594,276.42578 C 719.04427,275.62371 720.01302,275.22267 721.24219,275.22266 C 722.54427,275.22267 723.54947,275.6185 724.25781,276.41016 C 724.96614,277.19662 725.3203,278.31902 725.32031,279.77734 C 725.3203,279.93881 725.3177,280.0612 725.3125,280.14453 C 725.31249,280.22266 725.30728,280.29818 725.29688,280.37109 L 719.625,280.37109 C 719.65625,281.03776 719.81771,281.54037 720.10938,281.87891 C 720.40625,282.21745 720.83073,282.38672 721.38281,282.38672 C 721.77343,282.38672 722.09374,282.3112 722.34375,282.16016 C 722.59374,282.00391 722.79166,281.76433 722.9375,281.44141 M 719.625,278.87891 L 722.96875,278.87891 C 722.94791,278.306 722.79426,277.8711 722.50781,277.57422 C 722.22656,277.27214 721.82031,277.1211 721.28906,277.12109 C 720.79427,277.1211 720.40364,277.27214 720.11719,277.57422 C 719.83593,277.87631 719.67187,278.3112 719.625,278.87891 M 727.16406,287.42578 L 727.16406,285.58984 C 727.23698,285.60026 727.3125,285.60807 727.39063,285.61328 C 727.46875,285.61849 727.57031,285.62109 727.69531,285.62109 C 728.14323,285.62109 728.47916,285.51432 728.70313,285.30078 C 728.92708,285.09245 729.03906,284.77734 729.03906,284.35547 C 729.03906,284.32422 729.03385,284.28516 729.02344,284.23828 C 729.01302,284.19141 729.0026,284.15234 728.99219,284.12109 L 725.92969,275.52734 L 728.42969,275.52734 L 730.21875,281.65234 L 731.96094,275.52734 L 734.35156,275.52734 L 730.85938,285.54297 C 730.59895,286.29297 730.27343,286.80338 729.88281,287.07422 C 729.49218,287.35026 728.90625,287.48828 728.125,287.48828 C 727.98437,287.48828 727.83333,287.48307 727.67188,287.47266 C 727.51041,287.46224 727.34114,287.44661 727.16406,287.42578" + id="text5878" /> + <path + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 759.98438,275.60938 L 759.98438,264.10156 L 763.48438,264.10156 L 765.77344,272.85938 L 768.03125,264.10156 L 771.54688,264.10156 L 771.54688,275.60938 L 769.32813,275.60938 L 769.32813,266.32813 L 766.99219,275.60938 L 764.57031,275.60938 L 762.20313,266.32813 L 762.20313,275.60938 L 759.98438,275.60938 M 778.99219,273.03125 L 781.25781,273.03125 C 781.02864,273.92709 780.5651,274.63021 779.86719,275.14063 C 779.17447,275.64583 778.32812,275.89844 777.32813,275.89844 C 776.09896,275.89844 775.125,275.48698 774.40625,274.66406 C 773.6875,273.83594 773.32812,272.71615 773.32813,271.30469 C 773.32812,269.91407 773.68229,268.81772 774.39063,268.01563 C 775.09896,267.21355 776.06771,266.81251 777.29688,266.8125 C 778.59895,266.81251 779.60416,267.20834 780.3125,268 C 781.02083,268.78647 781.37499,269.90886 781.375,271.36719 C 781.37499,271.52865 781.37239,271.65105 781.36719,271.73438 C 781.36718,271.8125 781.36197,271.88802 781.35156,271.96094 L 775.67969,271.96094 C 775.71093,272.62761 775.87239,273.13021 776.16406,273.46875 C 776.46093,273.80729 776.88541,273.97656 777.4375,273.97656 C 777.82812,273.97656 778.14843,273.90104 778.39844,273.75 C 778.64843,273.59375 778.84635,273.35417 778.99219,273.03125 M 775.67969,270.46875 L 779.02344,270.46875 C 779.0026,269.89584 778.84895,269.46094 778.5625,269.16406 C 778.28124,268.86199 777.87499,268.71094 777.34375,268.71094 C 776.84895,268.71094 776.45833,268.86199 776.17188,269.16406 C 775.89062,269.46615 775.72656,269.90105 775.67969,270.46875 M 782.88281,275.60938 L 782.88281,267.11719 L 785.10938,267.11719 L 785.10938,268.125 C 785.42708,267.71355 785.80208,267.40626 786.23438,267.20313 C 786.66666,266.9948 787.14843,266.89063 787.67969,266.89063 C 788.61718,266.89063 789.3177,267.13543 789.78125,267.625 C 790.24999,268.10938 790.48437,268.84115 790.48438,269.82031 L 790.48438,275.60938 L 788.21094,275.60938 L 788.21094,270.47656 C 788.21093,269.86719 788.10676,269.4323 787.89844,269.17188 C 787.69531,268.91147 787.36197,268.78126 786.89844,268.78125 C 786.36197,268.78126 785.9375,268.94272 785.625,269.26563 C 785.3125,269.58334 785.15625,270.01823 785.15625,270.57031 L 785.15625,275.60938 L 782.88281,275.60938 M 800.01563,267.11719 L 800.01563,275.60938 L 797.78906,275.60938 L 797.78906,274.60156 C 797.46614,275.01302 797.08854,275.32292 796.65625,275.53125 C 796.22916,275.73437 795.74739,275.83594 795.21094,275.83594 C 794.27864,275.83594 793.57812,275.59115 793.10938,275.10156 C 792.64583,274.61198 792.41406,273.88021 792.41406,272.90625 L 792.41406,267.11719 L 794.6875,267.11719 L 794.6875,272.25 C 794.6875,272.85417 794.78906,273.28646 794.99219,273.54688 C 795.19531,273.80209 795.53125,273.92969 796,273.92969 C 796.53124,273.92969 796.95312,273.77084 797.26563,273.45313 C 797.58333,273.13021 797.74218,272.69271 797.74219,272.14063 L 797.74219,267.11719 L 800.01563,267.11719" + id="text5884" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 104.41406,17.103516 L 104.41406,10.212891 L 101.74219,10.212891 L 101.74219,8.7949219 L 101.94141,8.7949219 C 102.89453,8.7949367 103.58984,8.6621243 104.02734,8.3964844 C 104.47265,8.1308749 104.73828,7.6894691 104.82422,7.0722656 L 106.59375,7.0722656 L 106.59375,17.103516 L 104.41406,17.103516 M 106.72266,36.369141 L 106.72266,39.826172 L 103.24219,39.826172 L 103.24219,36.369141 L 106.72266,36.369141 M 105.89063,41.173828 L 106.80469,48.978516 L 106.80469,53.630859 L 103.19531,53.630859 L 103.19531,48.978516 L 104.10938,41.173828 L 105.89063,41.173828" + id="text5890" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 160.85156,47.103516 C 160.875,46.197273 161.08984,45.431649 161.49609,44.806641 C 161.91015,44.18165 162.63672,43.548838 163.67578,42.908203 C 163.82422,42.822276 164.03125,42.701183 164.29688,42.544922 C 165.74218,41.724621 166.46484,40.931653 166.46484,40.166016 C 166.46484,39.720717 166.32031,39.369155 166.03125,39.111328 C 165.74218,38.85353 165.34375,38.724624 164.83594,38.724609 C 164.27343,38.724624 163.83984,38.88478 163.53516,39.205078 C 163.23047,39.517592 163.07812,39.966811 163.07813,40.552734 L 163.07813,40.646484 L 161.03906,40.646484 C 161.03906,39.498061 161.37891,38.615249 162.05859,37.998047 C 162.73828,37.380876 163.71093,37.072282 164.97656,37.072266 C 166.11718,37.072282 167.02343,37.353532 167.69531,37.916016 C 168.37499,38.470718 168.71484,39.212905 168.71484,40.142578 C 168.71484,40.814466 168.53905,41.39259 168.1875,41.876953 C 167.83593,42.361339 167.14843,42.919933 166.125,43.552734 C 165.89843,43.701182 165.57812,43.896494 165.16406,44.138672 C 164.22656,44.685556 163.69922,45.115243 163.58203,45.427734 L 168.62109,45.427734 L 168.62109,47.103516 L 160.85156,47.103516" + id="text5910" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 220.92188,44.033203 L 223.05469,44.033203 C 223.07031,44.603525 223.22265,45.029305 223.51172,45.310547 C 223.80078,45.591805 224.23437,45.73243 224.8125,45.732422 C 225.36718,45.73243 225.79687,45.599617 226.10156,45.333984 C 226.40624,45.068368 226.55859,44.689462 226.55859,44.197266 C 226.55859,43.697276 226.38281,43.322276 226.03125,43.072266 C 225.67968,42.814464 225.15234,42.685558 224.44922,42.685547 L 224.10938,42.685547 L 224.10938,41.291016 L 224.35547,41.291016 C 225.0039,41.291028 225.48046,41.181653 225.78516,40.962891 C 226.09765,40.736341 226.2539,40.392591 226.25391,39.931641 C 226.2539,39.54103 226.12109,39.232436 225.85547,39.005859 C 225.58984,38.771499 225.23437,38.654312 224.78906,38.654297 C 224.29687,38.654312 223.91797,38.787124 223.65234,39.052734 C 223.38672,39.310561 223.2539,39.681655 223.25391,40.166016 L 223.25391,40.236328 L 221.16797,40.236328 C 221.19141,39.212905 221.51953,38.431656 222.15234,37.892578 C 222.79297,37.345719 223.70312,37.072282 224.88281,37.072266 C 225.99218,37.072282 226.86718,37.314469 227.50781,37.798828 C 228.15624,38.283218 228.48046,38.943374 228.48047,39.779297 C 228.48046,40.21681 228.36718,40.603529 228.14063,40.939453 C 227.92187,41.26759 227.59374,41.537121 227.15625,41.748047 C 227.72656,41.974621 228.15624,42.291027 228.44531,42.697266 C 228.74218,43.095714 228.89062,43.564463 228.89063,44.103516 C 228.89062,45.119149 228.52343,45.923836 227.78906,46.517578 C 227.06249,47.103522 226.07031,47.396491 224.8125,47.396484 C 223.57031,47.396491 222.60937,47.107428 221.92969,46.529297 C 221.25781,45.95118 220.92187,45.134774 220.92188,44.080078 L 220.92188,44.033203" + id="text5922" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 278.92969,21.685547 C 279.86719,21.037112 280.53125,20.439456 280.92188,19.892578 C 281.32031,19.345707 281.51953,18.75977 281.51953,18.134766 C 281.51953,17.837896 281.47265,17.525397 281.37891,17.197266 C 281.28515,16.861335 281.14843,16.509773 280.96875,16.142578 L 278.90625,16.142578 L 278.90625,14.841797 L 280.17188,14.841797 C 279.82812,14.162119 279.57812,13.556651 279.42188,13.025391 C 279.26562,12.494152 279.1875,11.998059 279.1875,11.537109 C 279.1875,10.146498 279.69531,9.021499 280.71094,8.1621094 C 281.73437,7.3027507 283.08203,6.8730636 284.75391,6.8730469 C 286.5664,6.8730636 287.98827,7.3379069 289.01953,8.2675781 C 290.05077,9.1972801 290.61327,10.517591 290.70703,12.228516 L 287.47266,12.228516 C 287.41015,11.345715 287.15624,10.669935 286.71094,10.201172 C 286.26562,9.7324358 285.65624,9.498061 284.88281,9.4980469 C 284.14843,9.498061 283.58203,9.6894671 283.18359,10.072266 C 282.79296,10.455091 282.59765,11.005872 282.59766,11.724609 C 282.59765,12.138683 282.84375,12.888683 283.33594,13.974609 C 283.50781,14.349619 283.63671,14.638681 283.72266,14.841797 L 287.0625,14.841797 L 287.0625,16.142578 L 284.20313,16.142578 C 284.27343,16.43946 284.32421,16.712898 284.35547,16.962891 C 284.38671,17.212897 284.40234,17.443366 284.40234,17.654297 C 284.40234,18.216802 284.22656,18.779302 283.875,19.341797 C 283.53124,19.896488 282.94531,20.548831 282.11719,21.298828 C 282.625,21.064456 283.08203,20.892581 283.48828,20.783203 C 283.90234,20.666019 284.27734,20.607425 284.61328,20.607422 C 285.01952,20.607425 285.57421,20.701175 286.27734,20.888672 C 286.98046,21.068362 287.48046,21.158206 287.77734,21.158203 C 288.16796,21.158206 288.55077,21.095706 288.92578,20.970703 C 289.30858,20.845706 289.68749,20.6543 290.0625,20.396484 L 291.09375,22.939453 C 290.4453,23.322266 289.82421,23.611328 289.23047,23.806641 C 288.63671,24.009765 288.08202,24.111328 287.56641,24.111328 C 286.97265,24.111328 286.16796,23.955078 285.15234,23.642578 C 284.14453,23.330078 283.41406,23.173829 282.96094,23.173828 C 282.48437,23.173829 282.01953,23.251954 281.56641,23.408203 C 281.12109,23.564453 280.6875,23.798828 280.26563,24.111328 L 278.92969,21.685547 M 284.94141,40.025391 C 284.05859,40.025404 283.29687,40.345716 282.65625,40.986328 C 282.01562,41.626965 281.69531,42.384777 281.69531,43.259766 C 281.69531,44.1504 282.01171,44.912118 282.64453,45.544922 C 283.27734,46.169929 284.04296,46.482429 284.94141,46.482422 C 285.82421,46.482429 286.58202,46.169929 287.21484,45.544922 C 287.85546,44.912118 288.17577,44.1504 288.17578,43.259766 C 288.17577,42.384777 287.85546,41.626965 287.21484,40.986328 C 286.58202,40.345716 285.82421,40.025404 284.94141,40.025391 M 279.65625,36.779297 L 282.05859,39.158203 C 282.48046,38.85353 282.92578,38.626968 283.39453,38.478516 C 283.86328,38.322281 284.37109,38.244156 284.91797,38.244141 C 285.46484,38.244156 285.97655,38.322281 286.45313,38.478516 C 286.93749,38.626968 287.39062,38.85353 287.8125,39.158203 L 290.19141,36.779297 L 291.42188,38.033203 L 289.04297,40.435547 C 289.33983,40.849622 289.56249,41.294934 289.71094,41.771484 C 289.85936,42.240246 289.93358,42.736339 289.93359,43.259766 C 289.93358,43.783213 289.85936,44.279306 289.71094,44.748047 C 289.56249,45.216805 289.33983,45.666024 289.04297,46.095703 L 291.42188,48.498047 L 290.19141,49.716797 L 287.8125,47.337891 C 287.39062,47.650397 286.9414,47.880865 286.46484,48.029297 C 285.98827,48.17774 285.48046,48.251959 284.94141,48.251953 C 284.3789,48.251959 283.85937,48.17774 283.38281,48.029297 C 282.91406,47.880865 282.47265,47.650397 282.05859,47.337891 L 279.65625,49.716797 L 278.4375,48.498047 L 280.80469,46.095703 C 280.50781,45.673836 280.28515,45.23243 280.13672,44.771484 C 279.99609,44.302744 279.92578,43.798838 279.92578,43.259766 C 279.92578,42.736339 279.99609,42.240246 280.13672,41.771484 C 280.28515,41.294934 280.50781,40.849622 280.80469,40.435547 L 278.4375,38.033203 L 279.65625,36.779297" + id="text5928" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 352.875,47.701172 C 352.74217,49.662113 351.98436,51.220706 350.60156,52.376953 C 349.22655,53.533203 347.42968,54.111328 345.21094,54.111328 C 342.65624,54.111328 340.66796,53.314453 339.24609,51.720703 C 337.83203,50.126957 337.125,47.892584 337.125,45.017578 C 337.125,42.08009 337.84765,39.830092 339.29297,38.267578 C 340.73828,36.705095 342.8164,35.923846 345.52734,35.923828 C 347.73046,35.923846 349.46874,36.462908 350.74219,37.541016 C 352.02342,38.611343 352.72655,40.126967 352.85156,42.087891 L 349.34766,42.087891 C 349.19921,41.111341 348.80077,40.369154 348.15234,39.861328 C 347.50389,39.345717 346.6289,39.087905 345.52734,39.087891 C 343.96484,39.087905 342.77734,39.591811 341.96484,40.599609 C 341.15234,41.607434 340.74609,43.080089 340.74609,45.017578 C 340.74609,46.892585 341.14843,48.341802 341.95313,49.365234 C 342.76562,50.388675 343.91796,50.900393 345.41016,50.900391 C 346.48827,50.900393 347.37108,50.626956 348.05859,50.080078 C 348.74608,49.525395 349.19139,48.732427 349.39453,47.701172 L 352.875,47.701172" + id="text5946" /> + <path + transform="matrix(1.16233,0,-0.444745,0.860341,0,0)" + style="font-size:16.72912407px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 307.52845,53.268758 L 317.31434,53.268758 L 317.31434,54.894293 L 307.52845,54.894293 L 307.52845,53.268758 M 307.52845,49.756296 L 317.31434,49.756296 L 317.31434,51.381831 L 307.52845,51.381831 L 307.52845,49.756296" + id="text5956" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 411.45117,50.150391 L 411.45117,46.142578 L 408.63867,50.150391 L 411.45117,50.150391 M 411.45117,53.630859 L 411.45117,51.591797 L 406.98633,51.591797 L 406.98633,49.962891 L 410.90039,44.513672 L 413.51367,44.513672 L 413.51367,50.103516 L 414.73242,50.103516 L 414.73242,51.591797 L 413.51367,51.591797 L 413.51367,53.630859 L 411.45117,53.630859 M 398.58398,54.111328 L 408.7793,36.615234 L 410.70117,36.615234 L 400.48242,54.111328 L 398.58398,54.111328 M 397.78711,46.458984 L 397.78711,40.025391 L 395.26758,40.025391 L 395.26758,38.701172 L 395.44336,38.701172 C 396.36523,38.701187 397.0332,38.576187 397.44727,38.326172 C 397.86914,38.076187 398.11914,37.658219 398.19727,37.072266 L 399.88477,37.072266 L 399.88477,46.458984 L 397.78711,46.458984" + id="text5960" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 467.0918,53.630859 C 467.11522,52.779298 467.32225,52.064455 467.71289,51.486328 C 468.11131,50.900393 468.80663,50.31055 469.79883,49.716797 C 469.95506,49.630863 470.16991,49.50977 470.44336,49.353516 C 471.7949,48.595708 472.47068,47.861334 472.4707,47.150391 C 472.47068,46.736335 472.33006,46.40821 472.04883,46.166016 C 471.76756,45.923836 471.38475,45.802742 470.90039,45.802734 C 470.36912,45.802742 469.95506,45.95118 469.6582,46.248047 C 469.36913,46.544929 469.22459,46.966804 469.22461,47.513672 L 469.22461,47.607422 L 467.2793,47.607422 C 467.27928,46.529304 467.6035,45.70118 468.25195,45.123047 C 468.90038,44.537118 469.82616,44.24415 471.0293,44.244141 C 472.12303,44.24415 472.99412,44.505868 473.64258,45.029297 C 474.29881,45.552742 474.62693,46.251961 474.62695,47.126953 C 474.62693,47.751959 474.45506,48.294927 474.11133,48.755859 C 473.77537,49.208989 473.11522,49.72852 472.13086,50.314453 C 471.9199,50.439456 471.63084,50.607425 471.26367,50.818359 C 470.34959,51.341799 469.83397,51.744143 469.7168,52.025391 L 474.50977,52.025391 L 474.50977,53.630859 L 467.0918,53.630859 M 458.68945,54.111328 L 468.88477,36.615234 L 470.80664,36.615234 L 460.58789,54.111328 L 458.68945,54.111328 M 457.89258,46.458984 L 457.89258,40.025391 L 455.37305,40.025391 L 455.37305,38.701172 L 455.54883,38.701172 C 456.4707,38.701187 457.13867,38.576187 457.55273,38.326172 C 457.97461,38.076187 458.22461,37.658219 458.30273,37.072266 L 459.99023,37.072266 L 459.99023,46.458984 L 457.89258,46.458984" + id="text5967" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 531.83203,50.150391 L 531.83203,46.142578 L 529.01953,50.150391 L 531.83203,50.150391 M 531.83203,53.630859 L 531.83203,51.591797 L 527.36719,51.591797 L 527.36719,49.962891 L 531.28125,44.513672 L 533.89453,44.513672 L 533.89453,50.103516 L 535.11328,50.103516 L 535.11328,51.591797 L 533.89453,51.591797 L 533.89453,53.630859 L 531.83203,53.630859 M 518.96484,54.111328 L 529.16016,36.615234 L 531.08203,36.615234 L 520.86328,54.111328 L 518.96484,54.111328 M 514.88672,43.599609 L 516.89063,43.599609 C 516.91406,44.130869 517.0625,44.529306 517.33594,44.794922 C 517.61718,45.052743 518.03125,45.181649 518.57813,45.181641 C 519.10937,45.181649 519.51953,45.060555 519.80859,44.818359 C 520.09765,44.568368 520.24218,44.208994 520.24219,43.740234 C 520.24218,43.271495 520.07421,42.919933 519.73828,42.685547 C 519.40234,42.443371 518.90625,42.322277 518.25,42.322266 C 518.20312,42.322277 518.14453,42.326183 518.07422,42.333984 C 518.0039,42.341808 517.94922,42.345714 517.91016,42.345703 L 517.91016,41.033203 L 518.14453,41.033203 C 518.76171,41.033216 519.21484,40.931653 519.50391,40.728516 C 519.80078,40.517591 519.94921,40.193373 519.94922,39.755859 C 519.94921,39.388686 519.82421,39.099624 519.57422,38.888672 C 519.32421,38.669937 518.98437,38.560562 518.55469,38.560547 C 518.08593,38.560562 517.72265,38.685562 517.46484,38.935547 C 517.21484,39.177749 517.08984,39.525405 517.08984,39.978516 L 517.08984,40.048828 L 515.08594,40.048828 C 515.10156,39.087905 515.41797,38.353531 516.03516,37.845703 C 516.65234,37.330094 517.52343,37.072282 518.64844,37.072266 C 519.70312,37.072282 520.53906,37.302751 521.15625,37.763672 C 521.77343,38.216812 522.08202,38.833999 522.08203,39.615234 C 522.08202,40.02931 521.97655,40.392591 521.76563,40.705078 C 521.55468,41.009778 521.23827,41.263684 520.81641,41.466797 C 521.36327,41.677746 521.77343,41.970715 522.04688,42.345703 C 522.32812,42.712902 522.46874,43.154307 522.46875,43.669922 C 522.46874,44.607431 522.11718,45.349618 521.41406,45.896484 C 520.71874,46.443367 519.77343,46.716804 518.57813,46.716797 C 517.39062,46.716804 516.47656,46.451179 515.83594,45.919922 C 515.20312,45.380868 514.88672,44.615243 514.88672,43.623047 L 514.88672,43.599609" + id="text5973" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 586.63477,39.404297 L 586.63477,42.498047 L 583.36523,42.498047 L 583.36523,39.474609 C 583.36523,38.482437 583.66992,37.654313 584.2793,36.990234 C 584.88867,36.326189 585.67382,35.970721 586.63477,35.923828 L 586.63477,37.119141 C 586.04101,37.259782 585.59961,37.509782 585.31055,37.869141 C 585.02148,38.220719 584.87695,38.681656 584.87695,39.251953 L 584.87695,39.404297 L 586.63477,39.404297" + id="text5979" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 643.36523,39.474609 L 643.36523,36.369141 L 646.63477,36.369141 L 646.63477,39.427734 C 646.63476,40.412123 646.33007,41.240247 645.7207,41.912109 C 645.11132,42.576183 644.32617,42.931651 643.36523,42.978516 L 643.36523,41.771484 C 643.95898,41.630871 644.39648,41.384778 644.67773,41.033203 C 644.96679,40.673841 645.11132,40.201185 645.11133,39.615234 L 645.11133,39.474609 L 643.36523,39.474609" + id="text5985" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 706.89258,53.630859 L 703.50586,53.630859 L 703.50586,47.560547 L 703.27148,47.150391 L 698.00977,47.150391 L 698.00977,45.826172 L 702.49805,45.826172 L 701.64258,44.337891 L 698.00977,44.337891 L 698.00977,43.025391 L 700.86914,43.025391 L 697.61133,37.330078 L 701.41992,37.330078 L 705.19336,44.724609 L 708.69727,37.330078 L 712.27148,37.330078 L 709.27148,43.025391 L 712.00195,43.025391 L 712.00195,44.337891 L 708.58008,44.337891 L 707.7832,45.826172 L 712.00195,45.826172 L 712.00195,47.150391 L 707.0918,47.150391 L 706.89258,47.560547 L 706.89258,53.630859" + id="text5991" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 764.97656,19.306641 C 765.46093,19.306645 765.8789,19.482426 766.23047,19.833984 C 766.58202,20.18555 766.7578,20.603519 766.75781,21.087891 C 766.7578,21.564455 766.58202,21.974611 766.23047,22.318359 C 765.8789,22.66211 765.46093,22.833985 764.97656,22.833984 C 764.48437,22.833985 764.06249,22.666017 763.71094,22.330078 C 763.36718,21.994142 763.1953,21.58008 763.19531,21.087891 C 763.1953,20.595706 763.36718,20.177738 763.71094,19.833984 C 764.06249,19.482426 764.48437,19.306645 764.97656,19.306641 M 757.94531,15.298828 L 771.98438,15.298828 L 771.98438,17.630859 L 757.94531,17.630859 L 757.94531,15.298828 M 764.97656,10.095703 C 765.46093,10.095717 765.8789,10.271498 766.23047,10.623047 C 766.58202,10.96681 766.7578,11.380872 766.75781,11.865234 C 766.7578,12.357433 766.58202,12.779308 766.23047,13.130859 C 765.88671,13.47462 765.46874,13.646494 764.97656,13.646484 C 764.48437,13.646494 764.06249,13.47462 763.71094,13.130859 C 763.36718,12.779308 763.1953,12.357433 763.19531,11.865234 C 763.1953,11.373059 763.36718,10.955091 763.71094,10.611328 C 764.06249,10.267591 764.48437,10.095717 764.97656,10.095703 M 759.84375,39.544922 L 765.11719,44.818359 L 770.40234,39.544922 L 772.05469,41.173828 L 766.78125,46.482422 L 772.05469,51.755859 L 770.40234,53.396484 L 765.11719,48.111328 L 759.84375,53.396484 L 758.20313,51.755859 L 763.48828,46.482422 L 758.20313,41.173828 L 759.84375,39.544922" + id="text5997" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 134.9707,69.826172 L 132.58008,77.173828 L 137.37305,77.173828 L 134.9707,69.826172 M 132.9082,66.369141 L 137.00977,66.369141 L 143.23242,83.630859 L 139.50586,83.630859 L 138.33398,80.080078 L 131.64258,80.080078 L 130.50586,83.630859 L 126.76758,83.630859 L 132.9082,66.369141 M 135.70898,64.166016 L 135.70898,61.283203 L 138.35742,61.283203 L 138.35742,64.166016 L 135.70898,64.166016 M 131.63086,64.166016 L 131.63086,61.283203 L 134.2793,61.283203 L 134.2793,64.166016 L 131.63086,64.166016" + id="text6003" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 194.9707,62.126953 C 194.5957,62.126975 194.27538,62.267599 194.00977,62.548828 C 193.74413,62.822286 193.61132,63.154317 193.61133,63.544922 C 193.61132,63.927754 193.74023,64.251973 193.99805,64.517578 C 194.26366,64.783222 194.58788,64.916034 194.9707,64.916016 C 195.36132,64.916034 195.69335,64.783222 195.9668,64.517578 C 196.24804,64.24416 196.38866,63.919942 196.38867,63.544922 C 196.38866,63.16213 196.24804,62.830099 195.9668,62.548828 C 195.69335,62.267599 195.36132,62.126975 194.9707,62.126953 M 194.9707,60.521484 C 195.81444,60.521507 196.52929,60.814476 197.11523,61.400391 C 197.70116,61.978537 197.99413,62.685568 197.99414,63.521484 C 197.99413,64.357441 197.70116,65.068378 197.11523,65.654297 C 196.52929,66.232439 195.81444,66.521501 194.9707,66.521484 C 194.13476,66.521501 193.42773,66.232439 192.84961,65.654297 C 192.27929,65.07619 191.99414,64.365254 191.99414,63.521484 C 191.99414,62.677755 192.27929,61.966819 192.84961,61.388672 C 193.42773,60.81057 194.13476,60.521507 194.9707,60.521484 M 192.7207,67.072266 L 197.23242,67.072266 L 203.23242,83.630859 L 199.50586,83.630859 L 198.33398,80.080078 L 191.64258,80.080078 L 190.50586,83.630859 L 186.76758,83.630859 L 192.7207,67.072266 M 194.9707,69.826172 L 192.58008,77.173828 L 197.37305,77.173828 L 194.9707,69.826172" + id="text6007" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 248.52539,83.630859 L 248.52539,66.369141 L 261.05273,66.369141 L 261.05273,69.369141 L 252.0293,69.369141 L 252.0293,73.048828 L 260.2793,73.048828 L 260.2793,76.001953 L 252.0293,76.001953 L 252.0293,80.443359 L 261.47461,80.443359 L 261.47461,83.630859 L 248.52539,83.630859 M 258.24023,60.521484 L 254.57227,64.857422 L 252.9082,64.857422 L 255.2168,60.521484 L 258.24023,60.521484" + id="text6011" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 313.72266,101.49056 L 313.72266,104.29134 L 314.88281,104.29134 C 315.5703,104.29135 316.07421,104.18198 316.39453,103.96322 C 316.71483,103.74448 316.87499,103.40073 316.875,102.93197 C 316.87499,102.43979 316.70311,102.07651 316.35938,101.84212 C 316.01561,101.60776 315.48436,101.49057 314.76563,101.49056 L 313.72266,101.49056 M 311.37891,100.00228 L 315.16406,100.00228 C 316.53905,100.00229 317.5703,100.23667 318.25781,100.70541 C 318.95311,101.16636 319.30077,101.85776 319.30078,102.77962 C 319.30077,103.42026 319.11327,103.96713 318.73828,104.42025 C 318.36327,104.87338 317.84374,105.18198 317.17969,105.34603 L 319.34766,109.67025 L 316.72266,109.67025 L 314.88281,105.70931 L 313.72266,105.70931 L 313.72266,109.67025 L 311.37891,109.67025 L 311.37891,100.00228 M 315,97.717125 C 314.0078,97.717141 313.08593,97.892922 312.23438,98.244469 C 311.38281,98.588234 310.61718,99.099952 309.9375,99.779625 C 309.22656,100.49058 308.67968,101.29917 308.29688,102.20541 C 307.91406,103.10385 307.72265,104.03354 307.72266,104.99447 C 307.72265,105.96323 307.90234,106.8851 308.26172,107.76009 C 308.62109,108.62729 309.14062,109.40072 309.82031,110.08041 C 310.51562,110.79135 311.30859,111.33822 312.19922,111.72103 C 313.08984,112.09603 314.01562,112.28353 314.97656,112.28353 C 315.91405,112.28353 316.82421,112.09994 317.70703,111.73275 C 318.59764,111.36556 319.40624,110.83822 320.13281,110.15072 C 320.81248,109.49447 321.33983,108.72885 321.71484,107.85384 C 322.08983,106.97885 322.27733,106.0726 322.27734,105.13509 C 322.27733,104.09604 322.10155,103.13901 321.75,102.264 C 321.40623,101.38901 320.89061,100.60386 320.20313,99.908531 C 319.49999,99.181983 318.70702,98.635109 317.82422,98.267906 C 316.94921,97.900734 316.0078,97.717141 315,97.717125 M 314.97656,96.275719 C 316.17968,96.275736 317.31249,96.502298 318.375,96.955406 C 319.4453,97.400735 320.39842,98.049172 321.23438,98.900719 C 322.03905,99.713233 322.65233,100.64292 323.07422,101.68978 C 323.49608,102.73667 323.70701,103.84604 323.70703,105.01791 C 323.70701,106.20541 323.48826,107.33041 323.05078,108.39291 C 322.61326,109.4476 321.97655,110.37728 321.14063,111.18197 C 320.30467,112.00228 319.35155,112.63119 318.28125,113.06869 C 317.21874,113.50619 316.11718,113.72494 314.97656,113.72494 C 313.81249,113.72494 312.69921,113.49838 311.63672,113.04525 C 310.57421,112.59213 309.625,111.93978 308.78906,111.08822 C 307.97656,110.26791 307.35547,109.33822 306.92578,108.29916 C 306.5039,107.25229 306.29297,106.15854 306.29297,105.01791 C 306.29297,104.22104 306.39844,103.4476 306.60938,102.69759 C 306.82031,101.93979 307.13672,101.20151 307.55859,100.48275 C 308.34765,99.154639 309.39062,98.12339 310.6875,97.389 C 311.98437,96.646829 313.41405,96.275736 314.97656,96.275719" + id="text6015" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 372.0293,69.064453 L 376.06055,69.064453 C 377.84179,69.064468 379.18944,69.505874 380.10352,70.388672 C 381.01756,71.263684 381.47459,72.556652 381.47461,74.267578 C 381.47459,75.939461 381.02538,77.228522 380.12695,78.134766 C 379.23632,79.033208 377.95897,79.482426 376.29492,79.482422 L 372.0293,79.482422 L 372.0293,83.630859 L 368.52539,83.630859 L 368.52539,66.369141 L 372.0293,66.369141 L 372.0293,69.064453 M 372.05273,76.599609 L 375.47461,76.599609 C 376.4121,76.599616 377.09179,76.416023 377.51367,76.048828 C 377.93554,75.673836 378.14647,75.080087 378.14648,74.267578 C 378.14647,73.509776 377.93554,72.939464 377.51367,72.556641 C 377.09179,72.166027 376.47069,71.970715 375.65039,71.970703 L 372.05273,71.970703 L 372.05273,76.599609" + id="text6019" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 428.08594,66.322266 L 431.67188,66.322266 L 431.67188,77.150391 C 431.67187,78.486333 431.93749,79.462895 432.46875,80.080078 C 432.99999,80.689456 433.84374,80.994143 435,80.994141 C 436.17187,80.994143 437.02343,80.689456 437.55469,80.080078 C 438.09374,79.470707 438.36327,78.494146 438.36328,77.150391 L 438.36328,66.322266 L 441.91406,66.322266 L 441.91406,77.537109 C 441.91405,79.654301 441.3203,81.279299 440.13281,82.412109 C 438.95311,83.544922 437.24999,84.111328 435.02344,84.111328 C 432.78124,84.111328 431.0625,83.548828 429.86719,82.423828 C 428.67969,81.291018 428.08594,79.662113 428.08594,77.537109 L 428.08594,66.322266 M 435.73828,64.166016 L 435.73828,61.283203 L 438.38672,61.283203 L 438.38672,64.166016 L 435.73828,64.166016 M 431.66016,64.166016 L 431.66016,61.283203 L 434.30859,61.283203 L 434.30859,64.166016 L 431.66016,64.166016" + id="text6023" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 488.08594,66.105469 L 491.67188,66.105469 L 491.67188,76.933594 C 491.67187,78.269536 491.93749,79.246098 492.46875,79.863281 C 492.99999,80.472659 493.84374,80.777346 495,80.777344 C 496.17187,80.777346 497.02343,80.472659 497.55469,79.863281 C 498.09374,79.25391 498.36327,78.277349 498.36328,76.933594 L 498.36328,66.105469 L 501.91406,66.105469 L 501.91406,77.320313 C 501.91405,79.437504 501.3203,81.062502 500.13281,82.195313 C 498.95311,83.328125 497.24999,83.894531 495.02344,83.894531 C 492.78124,83.894531 491.0625,83.332031 489.86719,82.207031 C 488.67969,81.074221 488.08594,79.445316 488.08594,77.320313 L 488.08594,66.105469 M 498.45703,60.304688 L 494.78906,64.640625 L 493.125,64.640625 L 495.43359,60.304688 L 498.45703,60.304688" + id="text6029" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 552.43945,83.630859 L 552.43945,66.369141 L 555.99023,66.369141 L 555.99023,83.630859 L 552.43945,83.630859 M 557.66602,60.521484 L 553.99805,64.857422 L 552.33398,64.857422 L 554.64258,60.521484 L 557.66602,60.521484" + id="text6033" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 610.18359,75 C 610.18359,76.898444 610.60546,78.375005 611.44922,79.429688 C 612.29296,80.476566 613.47265,81.000003 614.98828,81 C 616.51952,81.000003 617.71093,80.476566 618.5625,79.429688 C 619.41405,78.375005 619.83983,76.898444 619.83984,75 C 619.83983,73.101573 619.41405,71.628918 618.5625,70.582031 C 617.71093,69.527358 616.51952,69.000015 614.98828,69 C 613.47265,69.000015 612.29296,69.523452 611.44922,70.570313 C 610.60546,71.617199 610.18359,73.093761 610.18359,75 M 606.5625,75 C 606.5625,72.210949 607.32031,70.000014 608.83594,68.367188 C 610.35937,66.726579 612.41015,65.906268 614.98828,65.90625 C 617.56639,65.906268 619.61717,66.726579 621.14063,68.367188 C 622.67186,70.007826 623.43748,72.218761 623.4375,75 C 623.43748,77.781256 622.67186,79.992191 621.14063,81.632813 C 619.61717,83.273438 617.56639,84.09375 614.98828,84.09375 C 612.41015,84.09375 610.35937,83.273438 608.83594,81.632813 C 607.32031,79.992191 606.5625,77.781256 606.5625,75 M 618.44531,60.503906 L 614.77734,64.839844 L 613.11328,64.839844 L 615.42188,60.503906 L 618.44531,60.503906" + id="text6037" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 670.18359,75.017578 C 670.18359,76.916022 670.60546,78.392583 671.44922,79.447266 C 672.29296,80.494144 673.47265,81.017581 674.98828,81.017578 C 676.51952,81.017581 677.71093,80.494144 678.5625,79.447266 C 679.41405,78.392583 679.83983,76.916022 679.83984,75.017578 C 679.83983,73.119151 679.41405,71.646496 678.5625,70.599609 C 677.71093,69.544936 676.51952,69.017593 674.98828,69.017578 C 673.47265,69.017593 672.29296,69.54103 671.44922,70.587891 C 670.60546,71.634778 670.18359,73.111339 670.18359,75.017578 M 666.5625,75.017578 C 666.5625,72.228527 667.32031,70.017592 668.83594,68.384766 C 670.35937,66.744158 672.41015,65.923846 674.98828,65.923828 C 677.56639,65.923846 679.61717,66.744158 681.14063,68.384766 C 682.67186,70.025404 683.43748,72.23634 683.4375,75.017578 C 683.43748,77.798834 682.67186,80.009769 681.14063,81.650391 C 679.61717,83.291016 677.56639,84.111328 674.98828,84.111328 C 672.41015,84.111328 670.35937,83.291016 668.83594,81.650391 C 667.32031,80.009769 666.5625,77.798834 666.5625,75.017578 M 675.72656,64.166016 L 675.72656,61.283203 L 678.375,61.283203 L 678.375,64.166016 L 675.72656,64.166016 M 671.64844,64.166016 L 671.64844,61.283203 L 674.29688,61.283203 L 674.29688,64.166016 L 671.64844,64.166016" + id="text6041" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 735.5332,106.35352 L 735.5332,103.35352 L 739.44727,99.966797 L 739.44727,102.75586 L 737.04492,104.8418 L 739.44727,106.92773 L 739.44727,109.74023 L 735.5332,106.35352 M 730.4707,106.35352 L 730.4707,103.35352 L 734.4082,99.966797 L 734.4082,102.75586 L 732.00586,104.8418 L 734.4082,106.92773 L 734.4082,109.74023 L 730.4707,106.35352" + id="text6045" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 799.44727,103.3418 L 799.44727,106.3418 L 795.5332,109.72852 L 795.5332,106.93945 L 797.93555,104.83008 L 795.5332,102.76758 L 795.5332,99.955078 L 799.44727,103.3418 M 794.4082,103.3418 L 794.4082,106.3418 L 790.4707,109.72852 L 790.4707,106.93945 L 792.86133,104.83008 L 790.4707,102.76758 L 790.4707,99.955078 L 794.4082,103.3418" + id="text6051" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 883.81641,76.535881 L 886.23047,76.535881 L 886.23047,85.418694 L 883.81641,85.418694 L 883.81641,76.535881 M 883.81641,64.535881 L 886.23047,64.535881 L 886.23047,73.418694 L 883.81641,73.418694 L 883.81641,64.535881 M 877.98047,101.19213 L 892.01953,101.19213 L 892.01953,107.07494 L 889.6875,107.07494 L 889.6875,103.48901 L 877.98047,103.48901 L 877.98047,101.19213" + id="text6057" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 149.9707,129.82617 L 147.58008,137.17383 L 152.37305,137.17383 L 149.9707,129.82617 M 147.9082,126.36914 L 152.00977,126.36914 L 158.23242,143.63086 L 154.50586,143.63086 L 153.33398,140.08008 L 146.64258,140.08008 L 145.50586,143.63086 L 141.76758,143.63086 L 147.9082,126.36914 M 153.42773,120.52148 L 149.75977,124.85742 L 148.0957,124.85742 L 150.4043,120.52148 L 153.42773,120.52148" + id="text6065" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 211.40625,137.91797 C 211.71874,137.73829 211.95312,137.53907 212.10938,137.32031 C 212.26562,137.10157 212.34374,136.86719 212.34375,136.61719 C 212.34374,136.31251 212.2539,136.0547 212.07422,135.84375 C 211.89452,135.62501 211.52343,135.3711 210.96094,135.08203 L 207.85547,133.47656 C 207.55078,133.65626 207.3164,133.85938 207.15234,134.08594 C 206.99609,134.31251 206.91797,134.5547 206.91797,134.8125 C 206.91797,135.1172 207.03125,135.38673 207.25781,135.62109 C 207.49218,135.84766 208.0039,136.16407 208.79297,136.57031 L 211.40625,137.91797 M 205.03125,141.75 L 207.92578,141.75 C 207.98828,142.35938 208.16796,142.8125 208.46484,143.10938 C 208.76953,143.40625 209.19921,143.55469 209.75391,143.55469 C 210.26952,143.55469 210.67968,143.43359 210.98438,143.19141 C 211.28905,142.94141 211.4414,142.60547 211.44141,142.18359 C 211.4414,141.83985 211.32812,141.54297 211.10156,141.29297 C 210.87499,141.03516 210.42577,140.74219 209.75391,140.41406 L 206.95313,138.99609 C 206.0625,138.55079 205.39844,138.03907 204.96094,137.46094 C 204.52344,136.88282 204.30469,136.23438 204.30469,135.51563 C 204.30469,134.82032 204.47266,134.21095 204.80859,133.6875 C 205.15234,133.15626 205.65625,132.71485 206.32031,132.36328 C 205.92969,132.01173 205.64062,131.62892 205.45313,131.21484 C 205.26562,130.79298 205.17187,130.32814 205.17188,129.82031 C 205.17187,128.64845 205.57422,127.70705 206.37891,126.99609 C 207.18359,126.27736 208.2539,125.91799 209.58984,125.91797 C 210.96484,125.91799 212.04296,126.26955 212.82422,126.97266 C 213.60546,127.6758 214.0078,128.64845 214.03125,129.89063 L 211.26563,129.89063 C 211.24999,129.3672 211.09374,128.96876 210.79688,128.69531 C 210.50781,128.42189 210.08984,128.28517 209.54297,128.28516 C 209.05859,128.28517 208.68359,128.39064 208.41797,128.60156 C 208.16015,128.81251 208.03125,129.10939 208.03125,129.49219 C 208.03125,129.8047 208.18359,130.09767 208.48828,130.37109 C 208.80078,130.63673 209.35937,130.95704 210.16406,131.33203 L 212.13281,132.24609 C 213.1328,132.72267 213.87108,133.25392 214.34766,133.83984 C 214.82421,134.41798 215.06249,135.08595 215.0625,135.84375 C 215.06249,136.55469 214.8828,137.17579 214.52344,137.70703 C 214.17186,138.23047 213.66405,138.63672 213,138.92578 C 213.45312,139.32422 213.79296,139.76563 214.01953,140.25 C 214.24608,140.73438 214.35936,141.26563 214.35938,141.84375 C 214.35936,143.04688 213.92968,144.03906 213.07031,144.82031 C 212.21093,145.60937 211.10546,146.0039 209.75391,146.00391 C 208.26953,146.0039 207.1289,145.64453 206.33203,144.92578 C 205.53515,144.20703 205.10156,143.14844 205.03125,141.75 M 203.97656,173.625 L 203.97656,160.59375 C 203.97656,159.29689 204.48047,158.25002 205.48828,157.45313 C 206.49609,156.64845 207.83984,156.24611 209.51953,156.24609 C 211.23046,156.24611 212.5703,156.63674 213.53906,157.41797 C 214.5078,158.19923 214.99217,159.27345 214.99219,160.64063 C 214.99217,161.48439 214.84764,162.17579 214.55859,162.71484 C 214.27733,163.25392 213.83983,163.66798 213.24609,163.95703 C 214.16796,164.32423 214.85936,164.86329 215.32031,165.57422 C 215.78905,166.28516 216.02342,167.16016 216.02344,168.19922 C 216.02342,169.94922 215.51952,171.36328 214.51172,172.44141 C 213.5039,173.51953 212.18358,174.05859 210.55078,174.05859 C 210.32421,174.05859 210.0703,174.04687 209.78906,174.02344 C 209.51562,174 209.21874,173.96484 208.89844,173.91797 L 208.89844,171.17578 C 208.99999,171.19141 209.10156,171.20313 209.20313,171.21094 C 209.31249,171.21875 209.47265,171.22266 209.68359,171.22266 C 210.60546,171.22266 211.3164,170.96875 211.81641,170.46094 C 212.3164,169.94532 212.5664,169.21485 212.56641,168.26953 C 212.5664,167.35548 212.29296,166.66016 211.74609,166.18359 C 211.20702,165.70704 210.41796,165.46876 209.37891,165.46875 L 209.0625,165.46875 L 209.07422,163.06641 C 209.12109,163.07423 209.17187,163.08204 209.22656,163.08984 C 209.28124,163.08985 209.36327,163.08985 209.47266,163.08984 C 210.16796,163.08985 210.6953,162.91798 211.05469,162.57422 C 211.42187,162.22267 211.60546,161.71486 211.60547,161.05078 C 211.60546,160.38673 211.41405,159.88283 211.03125,159.53906 C 210.65624,159.18751 210.10546,159.01173 209.37891,159.01172 C 208.70703,159.01173 208.19531,159.20705 207.84375,159.59766 C 207.49218,159.98048 207.3164,160.54298 207.31641,161.28516 L 207.31641,173.625 L 203.97656,173.625" + id="text6073" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 267.09961,140.51367 L 269.94727,140.51367 C 271.60351,140.51367 272.80272,140.08008 273.54492,139.21289 C 274.2871,138.34571 274.65819,136.94727 274.6582,135.01758 C 274.65819,133.09571 274.31053,131.68165 273.61523,130.77539 C 272.92772,129.86134 271.8496,129.40431 270.38086,129.4043 L 267.09961,129.4043 L 267.09961,133.23633 L 270.88477,133.23633 L 270.88477,135.47461 L 267.09961,135.47461 L 267.09961,140.51367 M 263.61914,143.63086 L 263.61914,135.47461 L 261.74414,135.47461 L 261.74414,133.23633 L 263.61914,133.23633 L 263.61914,126.36914 L 270.4043,126.36914 C 273.04491,126.36916 275.01366,127.084 276.31055,128.51367 C 277.60741,129.93556 278.25584,132.10353 278.25586,135.01758 C 278.25584,136.60352 278.01756,137.99805 277.54102,139.20117 C 277.07225,140.4043 276.38084,141.36914 275.4668,142.0957 C 274.77928,142.64258 273.99413,143.03711 273.11133,143.2793 C 272.23632,143.51367 271.00585,143.63086 269.41992,143.63086 L 263.61914,143.63086" + id="text6077" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 626.72461,139.55273 C 627.17773,140.04493 627.68945,140.41211 628.25977,140.6543 C 628.83007,140.89649 629.47069,141.01758 630.18164,141.01758 C 631.71288,141.01758 632.90428,140.49414 633.75586,139.44727 C 634.60741,138.39258 635.03319,136.91602 635.0332,135.01758 C 635.03319,134.24415 634.96288,133.54493 634.82227,132.91992 C 634.68163,132.28712 634.4785,131.73634 634.21289,131.26758 L 626.72461,139.55273 M 625.98633,138.36914 L 633.39258,130.21289 C 632.9785,129.81447 632.50585,129.51759 631.97461,129.32227 C 631.44335,129.11916 630.84569,129.01759 630.18164,129.01758 C 628.66601,129.01759 627.48632,129.54103 626.64258,130.58789 C 625.79882,131.63478 625.37695,133.11134 625.37695,135.01758 C 625.37695,135.72071 625.42382,136.34571 625.51758,136.89258 C 625.61914,137.43946 625.77539,137.93165 625.98633,138.36914 M 621.36914,143.36133 L 623.51367,140.9707 C 622.91992,140.16602 622.47851,139.27149 622.18945,138.28711 C 621.90039,137.29493 621.75586,136.20509 621.75586,135.01758 C 621.75586,132.22853 622.51367,130.01759 624.0293,128.38477 C 625.55273,126.74416 627.60351,125.92385 630.18164,125.92383 C 631.28319,125.92385 632.27147,126.06447 633.14648,126.3457 C 634.02928,126.62697 634.84178,127.06056 635.58398,127.64648 L 637.30664,125.70117 L 638.45508,126.73242 L 636.63867,128.70117 C 637.30272,129.5215 637.79881,130.45509 638.12695,131.50195 C 638.46287,132.54884 638.63084,133.72071 638.63086,135.01758 C 638.63084,137.79883 637.86912,140.00977 636.3457,141.65039 C 634.82225,143.29102 632.76757,144.11133 630.18164,144.11133 C 629.01757,144.11133 627.96679,143.94727 627.0293,143.61914 C 626.0996,143.29102 625.26367,142.79102 624.52148,142.11914 L 622.50586,144.4043 L 621.36914,143.36133" + id="text6081" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 690,127.98633 C 689.42968,127.98634 688.9414,128.18556 688.53516,128.58398 C 688.13672,128.98244 687.9375,129.4629 687.9375,130.02539 C 687.9375,130.60353 688.13672,131.09181 688.53516,131.49023 C 688.93359,131.88868 689.42187,132.0879 690,132.08789 C 690.5625,132.0879 691.04296,131.88478 691.44141,131.47852 C 691.83984,131.07228 692.03906,130.5879 692.03906,130.02539 C 692.03906,129.4629 691.83984,128.98244 691.44141,128.58398 C 691.04296,128.18556 690.5625,127.98634 690,127.98633 M 690,126.47461 C 690.98437,126.47463 691.82031,126.82619 692.50781,127.5293 C 693.20312,128.22462 693.55077,129.06447 693.55078,130.04883 C 693.55077,131.0254 693.20312,131.86134 692.50781,132.55664 C 691.81249,133.25196 690.96875,133.59962 689.97656,133.59961 C 688.99218,133.59962 688.15625,133.25587 687.46875,132.56836 C 686.78906,131.88087 686.44922,131.04103 686.44922,130.04883 C 686.44922,129.05666 686.79297,128.21291 687.48047,127.51758 C 688.17578,126.82228 689.01562,126.47463 690,126.47461 M 695.51953,156.29883 L 695.51953,157.59961 L 694.19531,157.59961 L 694.19531,173.63086 L 692.42578,173.63086 L 692.42578,157.59961 L 690.57422,157.59961 L 690.57422,173.63086 L 688.78125,173.63086 L 688.78125,164.44336 C 687.47656,164.39649 686.43359,164.00196 685.65234,163.25977 C 684.87109,162.51759 684.48047,161.56056 684.48047,160.38867 C 684.48047,159.15431 684.89844,158.16603 685.73438,157.42383 C 686.57031,156.67385 687.67968,156.29885 689.0625,156.29883 L 695.51953,156.29883" + id="text6085" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 373.13672,6.5214844 L 376.08984,6.5214844 L 381.72656,13.095703 L 378.97266,13.095703 L 374.625,8.7480469 L 370.25391,13.095703 L 367.5,13.095703 L 373.13672,6.5214844" + id="text6091" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 750.67969,128.67773 L 750.67969,125.79492 L 753.32813,125.79492 L 753.32813,128.67773 L 750.67969,128.67773 M 746.60156,128.67773 L 746.60156,125.79492 L 749.25,125.79492 L 749.25,128.67773 L 746.60156,128.67773 M 753.39844,155.0332 L 749.73047,159.36914 L 748.06641,159.36914 L 750.375,155.0332 L 753.39844,155.0332" + id="text6099" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 171.07031,197.29102 L 175.92188,197.29102 L 175.92188,189.29883 L 173.97656,189.29883 L 171.07031,197.29102 M 165,203.63086 L 171.80859,186.36914 L 187.81641,186.36914 L 187.81641,189.36914 L 179.34375,189.36914 L 179.34375,193.04883 L 187.05469,193.04883 L 187.05469,196.00195 L 179.34375,196.00195 L 179.34375,200.44336 L 188.25,200.44336 L 188.25,203.63086 L 175.92188,203.63086 L 175.92188,200.08008 L 170.0625,200.08008 L 168.76172,203.63086 L 165,203.63086" + id="text6105" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 300.46875,193.23633 C 300.32031,193.22071 300.20312,193.20899 300.11719,193.20117 C 300.03906,193.19337 299.96484,193.18946 299.89453,193.18945 C 299.05859,193.18946 298.42578,193.53321 297.99609,194.2207 C 297.5664,194.90821 297.35156,195.92384 297.35156,197.26758 C 297.35156,198.04102 297.4375,198.70899 297.60938,199.27148 C 297.78906,199.83399 298.04687,200.28711 298.38281,200.63086 L 300.46875,193.23633 M 296.68359,206.49023 L 297.48047,203.63086 C 296.30859,203.13867 295.42187,202.35352 294.82031,201.27539 C 294.21875,200.19727 293.91797,198.85352 293.91797,197.24414 C 293.91797,195.11134 294.45312,193.43946 295.52344,192.22852 C 296.60156,191.01759 298.07421,190.41212 299.94141,190.41211 C 300.15234,190.41212 300.35937,190.41994 300.5625,190.43555 C 300.76562,190.45119 300.96874,190.47462 301.17188,190.50586 L 301.69922,188.56055 L 302.97656,188.56055 L 302.34375,190.78711 C 303.32811,191.09181 304.09765,191.63478 304.65234,192.41602 C 305.20702,193.18946 305.52733,194.17774 305.61328,195.38086 L 302.32031,195.36914 C 302.28124,194.98634 302.1914,194.65821 302.05078,194.38477 C 301.91796,194.10353 301.72265,193.85743 301.46484,193.64648 L 299.36719,201.13477 C 299.38281,201.13477 299.40624,201.13867 299.4375,201.14648 C 299.67187,201.16992 299.85156,201.18164 299.97656,201.18164 C 300.66406,201.18164 301.19921,200.99024 301.58203,200.60742 C 301.97265,200.22461 302.23437,199.62305 302.36719,198.80273 L 305.66016,198.80273 C 305.54296,200.41993 304.96874,201.70117 303.9375,202.64648 C 302.91405,203.5918 301.59374,204.06445 299.97656,204.06445 C 299.76562,204.06445 299.55077,204.05664 299.33203,204.04102 C 299.11328,204.02539 298.88671,204.00195 298.65234,203.9707 L 297.96094,206.49023 L 296.68359,206.49023 M 304.19531,223.0957 L 301.99219,223.0957 C 301.92968,222.54884 301.72264,222.12696 301.37109,221.83008 C 301.01952,221.5254 300.55468,221.37306 299.97656,221.37305 C 299.26562,221.37306 298.70702,221.69337 298.30078,222.33398 C 297.89452,222.96681 297.6914,223.85353 297.69141,224.99414 C 297.6914,226.14259 297.89452,227.01758 298.30078,227.61914 C 298.70702,228.22071 299.29687,228.52149 300.07031,228.52148 C 300.64061,228.52149 301.09765,228.35743 301.44141,228.0293 C 301.78514,227.70118 301.99218,227.23633 302.0625,226.63477 L 304.32422,226.62305 C 304.2617,227.70899 303.83592,228.58008 303.04688,229.23633 C 302.2578,229.89258 301.24218,230.22071 300,230.2207 C 298.54687,230.22071 297.39843,229.75977 296.55469,228.83789 C 295.71874,227.91602 295.30078,226.65821 295.30078,225.06445 C 295.30078,223.45509 295.72656,222.17384 296.57813,221.2207 C 297.43749,220.25978 298.58593,219.77931 300.02344,219.7793 C 301.21093,219.77931 302.18749,220.084 302.95313,220.69336 C 303.72655,221.30275 304.14061,222.10353 304.19531,223.0957 M 300,217.7168 C 298.99999,217.71681 298.06249,217.8965 297.1875,218.25586 C 296.32031,218.61525 295.54687,219.13869 294.86719,219.82617 C 294.17187,220.52931 293.64062,221.32618 293.27344,222.2168 C 292.90625,223.09962 292.72265,224.0254 292.72266,224.99414 C 292.72265,225.97071 292.90625,226.89649 293.27344,227.77148 C 293.64062,228.64649 294.17187,229.43164 294.86719,230.12695 C 295.55468,230.81446 296.33984,231.3418 297.22266,231.70898 C 298.10546,232.07617 299.03124,232.25977 300,232.25977 C 300.96874,232.25977 301.89452,232.07617 302.77734,231.70898 C 303.66796,231.3418 304.46874,230.80664 305.17969,230.10352 C 305.86717,229.43164 306.3867,228.66211 306.73828,227.79492 C 307.09764,226.92774 307.27733,225.99415 307.27734,224.99414 C 307.27733,224.00978 307.09373,223.08009 306.72656,222.20508 C 306.36717,221.32228 305.84373,220.53712 305.15625,219.84961 C 304.46092,219.15431 303.67577,218.62697 302.80078,218.26758 C 301.92577,217.90041 300.99218,217.71681 300,217.7168 M 299.97656,216.27539 C 301.16405,216.27541 302.28514,216.49416 303.33984,216.93164 C 304.40233,217.36916 305.35155,218.00587 306.1875,218.8418 C 307.0078,219.66212 307.63279,220.60353 308.0625,221.66602 C 308.49217,222.72071 308.70701,223.8379 308.70703,225.01758 C 308.70701,226.20509 308.49217,227.31446 308.0625,228.3457 C 307.64061,229.37696 307.01561,230.29883 306.1875,231.11133 C 305.3203,231.95508 304.35155,232.60352 303.28125,233.05664 C 302.21093,233.50195 301.10936,233.72461 299.97656,233.72461 C 298.82812,233.72461 297.73046,233.50586 296.68359,233.06836 C 295.64453,232.62305 294.70312,231.97852 293.85938,231.13477 C 293.02343,230.30664 292.38672,229.36914 291.94922,228.32227 C 291.51172,227.26758 291.29297,226.16602 291.29297,225.01758 C 291.29297,223.85353 291.51172,222.74415 291.94922,221.68945 C 292.38672,220.62697 293.02343,219.66994 293.85938,218.81836 C 294.67968,217.99025 295.60937,217.36134 296.64844,216.93164 C 297.68749,216.49416 298.79687,216.27541 299.97656,216.27539" + id="text6109" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 472.88672,203.63086 L 472.88672,186.36914 L 476.60156,186.36914 L 483.60938,198.22852 L 483.60938,186.36914 L 487.11328,186.36914 L 487.11328,203.63086 L 483.44531,203.63086 L 476.39063,191.77148 L 476.39063,203.63086 L 472.88672,203.63086 M 483.82031,181.0957 C 483.61717,182.07229 483.31639,182.79494 482.91797,183.26367 C 482.51952,183.72463 482.0078,183.9551 481.38281,183.95508 C 481.21874,183.9551 481.0664,183.94729 480.92578,183.93164 C 480.78515,183.90822 480.64452,183.87307 480.50391,183.82617 L 479.48438,183.52148 C 479.33593,183.48244 479.19921,183.4551 479.07422,183.43945 C 478.94921,183.41604 478.82812,183.40432 478.71094,183.4043 C 478.44531,183.40432 478.23046,183.47463 478.06641,183.61523 C 477.90234,183.75588 477.77343,183.98635 477.67969,184.30664 L 476.39063,184.30664 C 476.57812,183.36135 476.86718,182.66604 477.25781,182.2207 C 477.64843,181.77541 478.15624,181.55276 478.78125,181.55273 C 478.9453,181.55276 479.10937,181.56838 479.27344,181.59961 C 479.43749,181.62307 479.60937,181.66213 479.78906,181.7168 L 480.87891,182.00977 C 480.97265,182.04104 481.0703,182.06447 481.17188,182.08008 C 481.28124,182.09572 481.39843,182.10354 481.52344,182.10352 C 481.77343,182.10354 481.98046,182.02151 482.14453,181.85742 C 482.3164,181.68557 482.4453,181.43166 482.53125,181.0957 L 483.82031,181.0957" + id="text6113" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 535.83398,220.83432 L 539.2207,220.83432 L 538.33008,225.93198 C 538.21289,226.55698 538.12304,227.15073 538.06055,227.71323 C 537.99804,228.26792 537.96679,228.72104 537.9668,229.0726 C 537.96679,229.79917 538.13085,230.34214 538.45898,230.70151 C 538.7871,231.05307 539.2871,231.22885 539.95898,231.22885 C 540.74023,231.22885 541.3457,230.90854 541.77539,230.26791 C 542.21288,229.62729 542.57616,228.49058 542.86523,226.85776 L 543.91992,220.83432 L 547.30664,220.83432 L 545.04492,233.6312 L 541.9043,233.6312 L 542.11523,232.2601 C 541.7871,232.86948 541.41991,233.31479 541.01367,233.59604 C 540.61523,233.87729 540.14257,234.01791 539.5957,234.01791 C 539.07226,234.01791 538.60742,233.90073 538.20117,233.66635 C 537.79492,233.43979 537.42773,233.08432 537.09961,232.59995 L 536.04492,238.76401 L 532.69336,238.76401 L 535.83398,220.83432" + id="text6117" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 607.875,197.70117 C 607.74217,199.66211 606.98436,201.22071 605.60156,202.37695 C 604.22655,203.5332 602.42968,204.11133 600.21094,204.11133 C 597.65624,204.11133 595.66796,203.31445 594.24609,201.7207 C 592.83203,200.12696 592.125,197.89258 592.125,195.01758 C 592.125,192.08009 592.84765,189.83009 594.29297,188.26758 C 595.73828,186.7051 597.8164,185.92385 600.52734,185.92383 C 602.73046,185.92385 604.46874,186.46291 605.74219,187.54102 C 607.02342,188.61134 607.72655,190.12697 607.85156,192.08789 L 604.34766,192.08789 C 604.19921,191.11134 603.80077,190.36915 603.15234,189.86133 C 602.50389,189.34572 601.6289,189.08791 600.52734,189.08789 C 598.96484,189.08791 597.77734,189.59181 596.96484,190.59961 C 596.15234,191.60743 595.74609,193.08009 595.74609,195.01758 C 595.74609,196.89258 596.14843,198.3418 596.95313,199.36523 C 597.76562,200.38868 598.91796,200.90039 600.41016,200.90039 C 601.48827,200.90039 602.37108,200.62696 603.05859,200.08008 C 603.74608,199.52539 604.19139,198.73243 604.39453,197.70117 L 607.875,197.70117 M 597.62109,208.76367 L 597.62109,207.25195 C 598.24609,207.41601 598.81249,207.54101 599.32031,207.62695 C 599.82812,207.71289 600.26171,207.75586 600.62109,207.75586 C 601.02733,207.75586 601.32421,207.68554 601.51172,207.54492 C 601.69921,207.41211 601.79296,207.19726 601.79297,206.90039 C 601.79296,206.60351 601.68358,206.39258 601.46484,206.26758 C 601.24608,206.14258 600.8828,206.08008 600.375,206.08008 C 600.1953,206.08008 600.05858,206.08008 599.96484,206.08008 C 599.87108,206.08789 599.78515,206.0957 599.70703,206.10352 L 599.70703,203.63086 L 600.90234,203.63086 L 600.90234,204.68555 L 601.07813,204.68555 C 601.99218,204.68555 602.67968,204.87305 603.14063,205.24805 C 603.60155,205.62304 603.83202,206.18164 603.83203,206.92383 C 603.83202,207.70507 603.57421,208.29101 603.05859,208.68164 C 602.54296,209.07226 601.76952,209.26757 600.73828,209.26758 C 600.33983,209.26757 599.87108,209.2246 599.33203,209.13867 C 598.80077,209.05273 598.23046,208.92773 597.62109,208.76367" + id="text6121" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Swis721 BT" + d="M 721.7168,216.36914 L 721.7168,219.82617 L 718.23633,219.82617 L 718.23633,216.36914 L 721.7168,216.36914 M 721.55273,221.39648 C 721.55273,221.47462 721.55663,221.5879 721.56445,221.73633 C 721.57226,221.88478 721.57616,221.99415 721.57617,222.06445 C 721.57616,222.74415 721.50194,223.31446 721.35352,223.77539 C 721.20507,224.23634 720.96679,224.66602 720.63867,225.06445 C 720.38085,225.36134 720.00195,225.70118 719.50195,226.08398 C 719.00976,226.4668 718.69335,226.74415 718.55273,226.91602 C 718.24804,227.25977 718.0332,227.57618 717.9082,227.86523 C 717.79101,228.1543 717.73242,228.4668 717.73242,228.80273 C 717.73242,229.55274 717.93554,230.13477 718.3418,230.54883 C 718.74804,230.95508 719.32226,231.15821 720.06445,231.1582 C 720.79882,231.15821 721.38085,230.91211 721.81055,230.41992 C 722.24023,229.91993 722.4746,229.22071 722.51367,228.32227 L 725.8418,228.32227 L 725.8418,228.68555 C 725.84178,230.3418 725.31835,231.66211 724.27148,232.64648 C 723.23241,233.62305 721.83007,234.11133 720.06445,234.11133 C 718.25976,234.11133 716.82226,233.64648 715.75195,232.7168 C 714.68945,231.7793 714.1582,230.53321 714.1582,228.97852 C 714.1582,228.40821 714.2168,227.90821 714.33398,227.47852 C 714.45117,227.04883 714.63086,226.65821 714.87305,226.30664 C 715.18554,225.86915 715.67773,225.39259 716.34961,224.87695 C 717.02148,224.36134 717.43554,224.03321 717.5918,223.89258 C 717.88867,223.60353 718.0996,223.29884 718.22461,222.97852 C 718.35742,222.6504 718.42382,222.25587 718.42383,221.79492 C 718.42382,221.75587 718.41992,221.69337 718.41211,221.60742 C 718.40429,221.51368 718.40039,221.44337 718.40039,221.39648 L 721.55273,221.39648" + id="text6131" /> + <path + style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Matrix Unicode" + d="" + id="text6955" /> + </g> +</svg> diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG b/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG Binary files differnew file mode 100644 index 000000000..c730c2d65 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG b/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG Binary files differnew file mode 100644 index 000000000..fae2439ca --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG b/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG Binary files differnew file mode 100644 index 000000000..59b202be2 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c b/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c new file mode 100644 index 000000000..317a245be --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c @@ -0,0 +1,237 @@ +/* +Copyright 2016 Julien Pecqueur <julien@peclu.net> +Copyright 2016 Felix Uhl <ifreilicht@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "s60-x.h" + +//make keymap a little easier to read +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 1 + +//uncomment to activate dead keys +//#define DONT_REVIVE_DEADKEYS 1 + +//Function keycodes for better readability +//SpaceFN +//OneShot LeftShift +//GamingMode Lock (disables SpaceFn and OneShot LShift) +//Function +//Mute microphone +#define KC_SPACEFN KC_FN0 +#define KC_OSLS KC_FN3 +#define KC_GMLK KC_FN1 +#define KC_FUNC KC_FN2 +#define MICMUTE RCTL(KC_LCTL) + +enum function_codes { + F_SPACEFN = 0, + F_OSLS = 3, + F_GMLK = 1, + F_FUNC = 2 +}; + +enum layer_names { + DEFAULT, + GAMING, + FUNCTION +}; + +enum languages { + GERMAN +}; + +#define LANGUAGE GERMAN + +enum custom_keycodes { + KC_CM_A = SAFE_RANGE, +// KC_CM_B, + KC_CM_C, +// KC_CM_D, + KC_CM_E, +// KC_CM_F, + KC_CM_G, +// KC_CM_H, + KC_CM_I, +// KC_CM_J, + KC_CM_K, + KC_CM_L, + KC_CM_M, + KC_CM_N, + KC_CM_O, + KC_CM_P, +// KC_CM_Q, + KC_CM_R, + KC_CM_S, +// KC_CM_T, + KC_CM_U, +// KC_CM_V, + KC_CM_W, +// KC_CM_X, + KC_CM_Y, + KC_CM_Z +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layout 0: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|Del| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Z| U| I| O| P| [| ]|BckSp| + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Y| X| C| V| B| N| M| ,| .| /| Up |RSft| + * |-----------------------------------------------------------| + * |Fn2 |Gui |Alt | SpaceFn |Alt |Left|Down|Right| + * `-----------------------------------------------------------' + */ + [DEFAULT] = KEYMAP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_UP, KC_RSFT, \ + KC_FUNC, KC_LGUI, KC_LALT, KC_SPACEFN, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Layout 1: Gaming Layer, SpaceFn disabled + * ,-----------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | |Fn1 | + * |-----------------------------------------------------------| + * | |RSft| | Space | | | | | + * `-----------------------------------------------------------' + */ + [GAMING] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GMLK, \ + _______, KC_RSFT, _______, KC_SPC, _______, _______, _______, _______ + ), + + /* Layout 2: Function Layer + * MicMute requires special software to be installed. Check readme.md for more information + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|RES| + * |-----------------------------------------------------------| + * | | | | |Prv|Ply|Nxt| Ü | | Ö | |Prt|Slk|Pau | + * |-----------------------------------------------------------| + * | | Ä | ß | |Vl-|Mut|Vl+| | | | | |PEnt | + * |-----------------------------------------------------------| + * | | | | |MicMut|Cal| | | | |Pau |PUp |Fn1 | + * |-----------------------------------------------------------| + * | | | | | |Home|PDn |End | + * `-----------------------------------------------------------' + */ + [FUNCTION] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, RESET, \ + _______, _______, KC_CM_W, KC_CM_E, KC_MPRV, KC_MPLY, KC_MNXT, KC_CM_U, KC_CM_I, KC_CM_O, KC_CM_P, KC_PSCR, KC_SLCK, KC_PAUS, \ + _______, KC_CM_A, KC_CM_S, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_CM_K, KC_CM_L, _______, _______, _______, KC_PENT, \ + _______, _______, KC_CM_Y, _______, KC_CM_C, MICMUTE, KC_CALC, KC_CM_N, KC_CM_M, _______, _______, _______, _______, KC_PGUP, KC_GMLK, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), +}; + +/* +* Fn action definition +*/ +const uint16_t PROGMEM fn_actions[] = { + [F_SPACEFN] = ACTION_LAYER_TAP_KEY(2, KC_SPACE), // SpaceFn layout 1 + [F_GMLK] = ACTION_LAYER_TOGGLE(1), // Disable SpaceFn and Oneshot Shift + [F_FUNC] = ACTION_LAYER_MOMENTARY(2), // SpaceFn layout 1 + [F_OSLS] = ACTION_MODS_ONESHOT(MOD_LSFT) // Oneshot Leftshift +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +}; + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_german(uint16_t keycode, keyrecord_t *record) { + uint16_t send_code = 0; + if (record->event.pressed) { + switch (keycode) { + case KC_CM_A: + send_code = KC_Q; + break; + case KC_CM_O: + send_code = KC_P; + break; + case KC_CM_U: + send_code = KC_Y; + break; + case KC_CM_S: + send_code = KC_S; + break; + } + + if (send_code == 0) { + return true; + } + else { + register_code(KC_RALT); + register_code(send_code); + unregister_code(send_code); + unregister_code(KC_RALT); + return false; + } + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + //revive dead keys +#ifndef DONT_REVIVE_DEADKEYS + bool shift_active = keyboard_report->mods & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_LSFT)); + bool altgr_active = keyboard_report->mods & (MOD_BIT(KC_RALT)); + if ((keycode == KC_QUOT && !altgr_active) || + keycode == KC_GRV || + (keycode == KC_6 && shift_active)) + { + if (record->event.pressed) { + register_code(keycode); + unregister_code(keycode); + register_code(KC_SPACE); + unregister_code(KC_SPACE); + } + return false; + } +#endif +#if LANGUAGE == GERMAN + return process_german(keycode, record); +#else + return true; +#endif +} + +void led_set_user(uint8_t usb_led) { + +}
\ No newline at end of file diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md new file mode 100644 index 000000000..b22010612 --- /dev/null +++ b/keyboards/s60-x/keymaps/ansi_qwertz/readme.md @@ -0,0 +1,94 @@ +# ANSI_QWERTZ + +[Click here to go to the layers directly.](readme.md#1-layers) + +This keymap was specifically designed to support keycaps with ANSI layout and legends, while retaining the possibility of inputting characters +with diacritics that are normally not used in the english language. + +It currently relies on the US-International keyboard layout, which can be installed in any current operating system without the use of third party hardware. + +##0 Features +* Input of letters with diacritics on familiar QWERTZ layout +* Support for ANSI-legend keycaps +* Option to "revive" all dead keys +* Dedicated arrow cluster +* SpaceFN for easy access to Function keys and diacritic input +* Locking "Gaming Mode" that disables SpaceFN and allows to bind GUI key in Games +* Reset key binding, no need to press hardware reset button to program +* Microphone Mute key (requires 3rd-party software, see below) + +###0.0 Languages +The US-International Layout is currently required for the support of non-english languages. This keymap swaps Y and Z to provide the familiar QWERTZ position for characters when using that layout. +All diacritic characters are input by either holding `Space` or `Fn` and pressing the corresponding key. For languages that aren't yet supported explicitly, +one can also use AltGr to input the characters as intended by the US-Intl layout or the dead keys, if they're kept from being [revived](readme.md#04-revive-dead-keys). + +The illustration below shows the "US International" layout available in the Language settings of Windows, Linux and Mac OS. + +![KB_US-International](docs/KB_US-International.png) + +Not all languages are supported by this layout. Linux also offers the "US International Alternative" layout, +which contains more dead keys to input pretty much every diacritic character in a language using latin letters. More information can be found [here](http://web.archive.org/web/20160818101234/http://dry.sailingissues.com/us-international-keyboard-layout.html). + +![KB_US-International-Alternative](docs/KB_US-International-Alternative.png) + +####0.0.0 Explicitly Supported Languages +* German + +####0.0.1 Implicitly Supported Languages +This list only applies to Windows. Linux systems support all languages, see above. This list might be incomplete! Please add your language if you find it's supported. + +* French + +###0.1 SpaceFN +SpaceFN basically means that `Space` acts as a normal spacebar when tapped, but acts as a layer-key when held down. +This means that you can't hold space to output multiple spaces consecutively and that space only registers once released. +The advantage is that the spacebar is easier to reach than any other `Fn`-key could be. + +###0.2 "Gaming Mode" +To alleviate the problems SpaceFN would cause when gaming, the Gaming Mode is pretty much a layer that can be turned on by pressing Fn+RShift. +This will turn the double-role Spacebar into a normal one, so the Fn-layer (and thus function and media keys) can only be accessed with the Fn-key. +It also turns the GUI-key (aka Win-key aka Super-key) into Right Shift, so it can be bound in Games. This is especially useful when playing with ESDF instead of WASD. + +###0.3 Mute Microphone +The function layer has a "Mute Microphone"-key. As this is not an existing media key and you can't normally set a shortcut to this function, +you need to set this up in software before using it, see below. This key is bound to `RCtrl+LCtrl`, a keycombination that +no other program in existence uses for anything, at least to my knowledge. It also can't be pressed with this keymap in any other way. + +####0.3.0 Linux +Follow [these instructions](http://askubuntu.com/a/13364). + +#####0.3.1 Windows (Requires 3rd Party Software) +*DISCLAIMER: I take no responsibility for any potential harm caused by third party applications!* + +You'll need a utility called "MicMute". It is available on [Sourceforge](https://sourceforge.net/projects/micmute/). +After installing and running the tool, you only need to use the "Setup Shortcut" option to bind the key to muting the microphone +and check whether your microphone is selected under "Devices". + +###0.4 Revive Dead Keys +Some diacritics that are commonly used are dead keys on the international layouts, for example `` ` ``, `'`, or `"`. +The dead keys on the regular international layout (shown in red [here](readme.md#00-languages)) are revived with this keymap by automatically inserting a space if one of those characters is typed. +If you don't want this to be the case, uncomment the following line in `keymap.c` prior to compiling: +``` +//#define DONT_REVIVE_DEADKEYS 1 +``` + +##1 Layers +###1.0 Base Layer +The base layer is shown here for ANSI keysm, HHKB-style right shift and split backspace. If you use a 2U backspace key there, `Del` will not be available. +Again, the Y and Z keys are swapped, so you get the QWERTZ-positions of Y and Z when using the US-International layout. + +![base_layer](docs/base_layer.PNG) + +###1.1 Gaming layer +To turn this layer on, please use the combination `Fn+RShift`, not `Space+RShift`. If you do the latter, the Function layer will become stuck. You can press `Fn` once to unstick it if this happens to you. A solution is being worked on. + +![gaming_layer](docs/gaming_layer.PNG) + +###1.2 Function Layer +This is the function layer for German diacritics. It can be accessed via the `Fn` or by holding `Space` on the base layer. + +![function_layer](docs/function_layer.PNG) + + + + diff --git a/keyboards/s60-x/keymaps/custom/keymap.c b/keyboards/s60-x/keymaps/custom/keymap.c new file mode 100644 index 000000000..fb2a40b85 --- /dev/null +++ b/keyboards/s60-x/keymaps/custom/keymap.c @@ -0,0 +1,28 @@ +#include "s60-x.h" + +/* Main layer: Test layout, using all keys. + + 0 1 2 3 4 5 6 7 8 9 A B C D E + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ 0 │GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │PGUP │BKSPC│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + 1 │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + 2 │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │PGDN │ENTER│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + 3 │LSHFT│HOME │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ END │RSHFT│ UP │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + 4 │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│R_GUI│ APP │RCTRL│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: ANSI qwerty */ + LEGACY_KEYMAP(GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, PGUP, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, PGDN, ENT , \ + LSFT, HOME, Z, X, C, V, B, N, M, COMM, DOT, SLSH, END, RSFT, UP, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, RCTL), +}; +const uint16_t PROGMEM fn_actions[] = {}; + diff --git a/keyboards/s60-x/keymaps/custom/readme.md b/keyboards/s60-x/keymaps/custom/readme.md new file mode 100644 index 000000000..cf87bd915 --- /dev/null +++ b/keyboards/s60-x/keymaps/custom/readme.md @@ -0,0 +1,15 @@ +### 8 Custom +The custom keymap - [keymap_custom.c](keymap_custom.c) - is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. + +#### 8.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │PgUp │BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │PgDwn│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│Home │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ End │Shift│ Up │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60-x/keymaps/default/keymap.c new file mode 100644 index 000000000..eb0c6b056 --- /dev/null +++ b/keyboards/s60-x/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +#include "s60-x.h" + +/* 0: Main layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: ANSI qwerty */ + LEGACY_KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT , \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, FN0, APP, RCTL), + +/* 1: Fn layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +*/ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, PGDN, PSCR, SLCK, PAUS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay +}; diff --git a/keyboards/s60-x/keymaps/default/readme.md b/keyboards/s60-x/keymaps/default/readme.md new file mode 100644 index 000000000..01cda9df9 --- /dev/null +++ b/keyboards/s60-x/keymaps/default/readme.md @@ -0,0 +1,27 @@ +### 1 Standard - ANSI +The standard keymap is the one that is pre-flashed on the S60-X. + +#### 1.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │RCTRL│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 1.1 Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/hasu/keymap.c b/keyboards/s60-x/keymaps/hasu/keymap.c new file mode 100644 index 000000000..cbeaae028 --- /dev/null +++ b/keyboards/s60-x/keymaps/hasu/keymap.c @@ -0,0 +1,182 @@ +#include "s60-x.h" + +/* + * Hasu + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default Layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ Fn2 │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Fn1 │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ Fn3 │ Fn3 │ Fn0 │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, FN2, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, FN1, NO, FN9, NO, \ + LCTL, LGUI, LALT, SPC, RALT, FN3, FN3, FN0), + /* Keymap 1: colemak +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│BKSPC│ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│R_WIN│ APP │ Fn0 │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, K, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + /* Keymap 2: dvorak +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│R_WIN│ APP │ FN0 │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC, RBRC, NO, BSPC, \ + TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ + CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ + LSFT, NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + /* Keymap 3: workman +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ D │ E │ W │ B │ J │ F │ U │ P │ ; │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│BKSPC│ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ M │ C │ V │ K │ L │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│R_WIN│ APP │ FN0 │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ + LSFT, NO, Z, X, M, C, V, K, L, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, FN0), + /* Overlay 4: HHKB mode +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ Del │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│Caps │ │ │ │ │ │ │ │ Psc │ Slk │Pause│ Up │ │ Ins │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│ VoD │ VoU │Mute │ │ │NP_* │NP_/ │Home │PgUp │Left │Right│▒▒▒▒▒│Enter│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ │ │ │ │ │NP_+ │NP_- │ End │PgDwn│Down │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████│Space│█████│█████│█████│R_ALT│R_GUI│ App │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, INS, \ + LCTL, VOLD, VOLU, MUTE, TRNS, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, TRNS, ENT, \ + LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, TRNS, RSFT, TRNS, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, FN4, TRNS), + /* Overlay 5: Vi mode (Slash) +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│BkSpc│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ Tab │Home │PgDwn│ Up │PgUp │ End │Home │PgDwn│PgUp │ End │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│ │Left │Down │Right│ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│Enter│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ │ │ │ │ │Home │PgDwn│PgUp │ End │ │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████│Space│█████│█████│█████│R_ALT│R_GUI│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, BSPC, \ + TAB, HOME, PGDN, UP, PGUP, END, HOME, PGDN, PGUP, END, TRNS, TRNS, TRNS, TRNS, \ + LCTL, TRNS, LEFT, DOWN, RGHT, TRNS, LEFT, DOWN, UP, RGHT, TRNS, TRNS, TRNS, ENT, \ + LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGDN, PGUP, END, TRNS, TRNS, RSFT, TRNS, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, RCTL), + /* Overlay 6: Mouse mode (Semicolon/App) +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│BkSpc│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ Tab │ │ │ │ │ │ MwL │ MwD │ MwU │ MwR │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│ │ Ac0 │ Ac1 │ Ac2 │ │ McL │ McD │ McU │ McR │ │ │▒▒▒▒▒│Enter│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSFHT│▒▒▒▒▒│ │ │ │ │ Mb3 │ Mb2 │ Mb1 │ Mb4 │ Mb5 │ │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████│ Mb1 │█████│█████│█████│ │ │ │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + */ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, BSPC, \ + TAB, TRNS, TRNS, TRNS, TRNS, TRNS, WH_L, WH_D, WH_U, WH_R, TRNS, TRNS, TRNS, TRNS, \ + LCTL, TRNS, ACL0, ACL1, ACL2, TRNS, MS_L, MS_D, MS_U, MS_R, TRNS, TRNS, TRNS, ENT, \ + LSFT, TRNS, TRNS, TRNS, TRNS, TRNS, BTN3, BTN2, BTN1, BTN4, BTN5, TRNS, TRNS, RSFT, TRNS, \ + LCTL, LGUI, LALT, BTN1, TRNS, TRNS, TRNS, RCTL), + /* Overlay 7: Layout selector +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Lq │ Lc │ Ld │ Lw │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ Lq │ Lw │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ Ld │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ Lc │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + +Lq: set Qwerty layout +Lc: set Colemak layout +Ld: set Dvorak layout +Lw: set Workman layout + + */ + LEGACY_KEYMAP( + FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN6, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(4), + [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), + [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), + [3] = ACTION_LAYER_MOMENTARY(6), + [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector + [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout + [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout + [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout + [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout + [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV), +}; diff --git a/keyboards/s60-x/keymaps/hasu/readme.md b/keyboards/s60-x/keymaps/hasu/readme.md new file mode 100644 index 000000000..64969b616 --- /dev/null +++ b/keyboards/s60-x/keymaps/hasu/readme.md @@ -0,0 +1,4 @@ +### 5. Hasu +This is Hasu's favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. + +(Hasu is the initial creator of the TMK firmware, in case you weren't aware.)
\ No newline at end of file diff --git a/keyboards/s60-x/keymaps/hhkb/keymap.c b/keyboards/s60-x/keymaps/hhkb/keymap.c new file mode 100644 index 000000000..9afd1247f --- /dev/null +++ b/keyboards/s60-x/keymaps/hhkb/keymap.c @@ -0,0 +1,52 @@ +#include "s60-x.h" + +/* + * HHKB Layout + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Default layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │BkSpc│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Fn3 │ ' │▒▒▒▒▒│Enter│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│ Fn │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│▒▒▒▒▒│ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│▒▒▒▒▒│ Alt │ Gui │▒▒▒▒▒│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSLS, GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSPC, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, FN0, \ + NO, LGUI, LALT, SPC, NO, RALT, RGUI, NO), + /* 1: HHKB Fn layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Pwr │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Ins │ Del │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│Caps │ │ │ │ │ │ │ │ Psc │ Slk │ Pus │ Up │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ VoD │ VoU │ Mut │ Ejc │ │NP_* │NP_/ │Home │PgUp │Left │Right│▒▒▒▒▒│NPEnt│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │NP_+ │NP_- │ End │PgDwn│Down │▒▒▒▒▒│ │ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│▒▒▒▒▒│ │ │█████│█████│█████│ │█████│█████│█████│▒▒▒▒▒│ │ │▒▒▒▒▒│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PSCR, SLCK, PAUS, UP, TRNS, TRNS, \ + TRNS, VOLD, VOLU, MUTE, EJCT, TRNS, PAST, PSLS, HOME, PGUP, LEFT, RGHT, NO, PENT, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PPLS, PMNS, END, PGDN, DOWN, NO, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), +}; diff --git a/keyboards/s60-x/keymaps/hhkb/readme.md b/keyboards/s60-x/keymaps/hhkb/readme.md new file mode 100644 index 000000000..2bceb26dd --- /dev/null +++ b/keyboards/s60-x/keymaps/hhkb/readme.md @@ -0,0 +1,26 @@ +### 7. HHKB +[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +#### 7.0: Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │BkSpc│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Fn3 │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│ Fn │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │▒▒▒▒▒│ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│▒▒▒▒▒│ Alt │ Gui │▒▒▒▒▒│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 7.1: HHKB Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Pwr │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Ins │ Del │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ │ │ │ │ │ │ │ Psc │ Slk │ Pus │ Up │ │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ VoD │ VoU │ Mut │ Ejc │ │ * │ / │Home │PgUp │Left │Right│▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ │ │ │ │ │ + │ - │ End │PgDwn│Down │▒▒▒▒▒│ │ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │▒▒▒▒▒│ │ │█████│█████│█████│ │█████│█████│█████│▒▒▒▒▒│ │ │▒▒▒▒▒│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/iso/keymap.c b/keyboards/s60-x/keymaps/iso/keymap.c new file mode 100644 index 000000000..43a9c48b0 --- /dev/null +++ b/keyboards/s60-x/keymaps/iso/keymap.c @@ -0,0 +1,48 @@ +#include "s60-x.h" + +/* 0: Main layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │NUHS │ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: ANSI qwerty */ + LEGACY_KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, NO, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT , \ + LSFT, BSLS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, FN0, APP, RCTL), + +/* 1: Fn layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +*/ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, PGDN, PSCR, SLCK, PAUS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay +}; diff --git a/keyboards/s60-x/keymaps/iso/readme.md b/keyboards/s60-x/keymaps/iso/readme.md new file mode 100644 index 000000000..2c06bf86f --- /dev/null +++ b/keyboards/s60-x/keymaps/iso/readme.md @@ -0,0 +1,28 @@ +### 2 Standard - ISO +The same as the standard keymap, but with additional ISO keys. + + +#### 2.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │NUHS │ENTER│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │RCTRL│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 2.1 Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ │ │ │ │ │ │ │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/jpec/keymap.c b/keyboards/s60-x/keymaps/jpec/keymap.c new file mode 100644 index 000000000..c8fc13328 --- /dev/null +++ b/keyboards/s60-x/keymaps/jpec/keymap.c @@ -0,0 +1,92 @@ +/* +Copyright 2016 Julien Pecqueur <julien@peclu.net> +Copyright 2016 Felix Uhl <ifreilicht@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "s60-x.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layout 0: Default Layer + * ,-----------------------------------------------------------. + * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Fn1 |Gui |Alt | SpaceFn |Alt |Gui |App |Ctrl| + * `-----------------------------------------------------------' + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NUHS, ENT, \ + LSFT, NUBS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + FN1, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), + + /* Layout 1: Function Layer + * ,-----------------------------------------------------------. + * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * | |Prv|Ply|Nxt|Stp| | |PUp|Up |PDn| |Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | |Vl-|Mut|Vl+| | |Hom|Lef|Dow|Rig|End| |PEnt | + * |-----------------------------------------------------------| + * | |Prt|Cut|Cop|Pst|Cal| | | | | |CapsLock | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + LEGACY_KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + TRNS, MPRV, MPLY, MNXT, MSTP, TRNS, TRNS, PGUP, UP, PGDN, TRNS, SLCK, PAUS, INS, \ + TRNS, VOLD, MUTE, VOLU, TRNS, TRNS, HOME, LEFT, DOWN, RGHT, END, TRNS, TRNS, PENT, \ + TRNS, TRNS, PSCR, FN2, FN3, FN4, CALC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* +* Fn action definition +*/ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), /* SpaceFn layout 1 */ + [1] = ACTION_LAYER_MOMENTARY(1), /* Momentary layout 1 */ + [2] = ACTION_MODS_KEY(MOD_LSFT, KC_DEL), /* Cut */ + [3] = ACTION_MODS_KEY(MOD_LCTL, KC_INS), /* Copy */ + [4] = ACTION_MODS_KEY(MOD_LSFT, KC_INS), /* Paste */ +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +}
\ No newline at end of file diff --git a/keyboards/s60-x/keymaps/jpec/readme.md b/keyboards/s60-x/keymaps/jpec/readme.md new file mode 100644 index 000000000..73318dad7 --- /dev/null +++ b/keyboards/s60-x/keymaps/jpec/readme.md @@ -0,0 +1 @@ +# The default keymap for s60-x
\ No newline at end of file diff --git a/keyboards/s60-x/keymaps/plain/keymap.c b/keyboards/s60-x/keymaps/plain/keymap.c new file mode 100644 index 000000000..790ac88e7 --- /dev/null +++ b/keyboards/s60-x/keymaps/plain/keymap.c @@ -0,0 +1,25 @@ +#include "s60-x.h" + +/* Main layer: +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│R_GUI│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + LEGACY_KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, RALT, RGUI, APP, RCTL), +}; +const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboards/s60-x/keymaps/plain/readme.md b/keyboards/s60-x/keymaps/plain/readme.md new file mode 100644 index 000000000..ab13323e3 --- /dev/null +++ b/keyboards/s60-x/keymaps/plain/readme.md @@ -0,0 +1,16 @@ +### 4. Plain +Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. +See [keymap_plain.c](keymap_plain.c) for detail. + +#### 4.0 Plain Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/poker/keymap.c b/keyboards/s60-x/keymaps/poker/keymap.c new file mode 100644 index 000000000..0a8691792 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker/keymap.c @@ -0,0 +1,180 @@ +#include "s60-x.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│ Fn0 │R_WIN│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 1: colemak +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│BKSPC│ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│ Fn0 │R_WIN│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, F, P, G, J, L, U, Y, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, R, S, T, D, H, N, E, I, O, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, K, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 2: dvorak +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│ Fn0 │R_WIN│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, LBRC, RBRC, NO, BSPC, \ + TAB, QUOT, COMM, DOT, P, Y, F, G, C, R, L, SLSH, EQL, BSLS, \ + CAPS, A, O, E, U, I, D, H, T, N, S, MINS, NO, ENT, \ + LSFT, NO, SCLN, Q, J, K, X, B, M, W, V, Z, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 3: workman +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ D │ E │ W │ B │ J │ F │ U │ P │ ; │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│BKSPC│ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ M │ C │ V │ K │ L │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│ Fn0 │R_WIN│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, D, R, W, B, J, F, U, P, SCLN, LBRC, RBRC, BSLS, \ + BSPC, A, S, H, T, G, Y, N, E, O, I, QUOT, NO, ENT, \ + LSFT, NO, Z, X, M, C, V, K, L, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 4: Poker with Arrow +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ Up │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │Left │Down │Right│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, RGHT), + /* 5: Poker with Esc +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + /* 6: Poker Fn +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ FnQ │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ FnL │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Tsk │ End │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ FnS │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + +Fn: to Fn overlay +FnL: to Layout selector overaly +FnQ: toggle Esc overlay +FnS: toggle Arrow overlay + + */ + LEGACY_KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, FN4, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN3, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), + /* 7: Layout selector +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Lq │ Lc │ Ld │ Lw │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ Lq │ Lw │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ Ld │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ Lc │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + +Lq: set Qwerty layout +Lc: set Colemak layout +Ld: set Dvorak layout +Lw: set Workman layout + + */ + LEGACY_KEYMAP( + FN5, FN6, FN7, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, FN5, FN8, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN6, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay + [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay + [2] = ACTION_LAYER_TOGGLE(5), // toggle Esc overlay + [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc) + [4] = ACTION_LAYER_MOMENTARY(7), // to Layout selector + [5] = ACTION_DEFAULT_LAYER_SET(0), // set qwerty layout + [6] = ACTION_DEFAULT_LAYER_SET(1), // set colemak layout + [7] = ACTION_DEFAULT_LAYER_SET(2), // set dvorak layout + [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout +}; diff --git a/keyboards/s60-x/keymaps/poker/readme.md b/keyboards/s60-x/keymaps/poker/readme.md new file mode 100644 index 000000000..0d8be9d0f --- /dev/null +++ b/keyboards/s60-x/keymaps/poker/readme.md @@ -0,0 +1,31 @@ +### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Fn │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 3.1 Poker Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ FnQ │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Tsk │ End │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ Up │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ FnS │█████│█████│█████│ Fn │Left │Down │Right│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/poker_bit/keymap.c b/keyboards/s60-x/keymaps/poker_bit/keymap.c new file mode 100644 index 000000000..7626038f4 --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_bit/keymap.c @@ -0,0 +1,110 @@ +#include "s60-x.h" + +// Poker fix with toggle and bit operation +// Fn + Esc = ` +// Fn + {left, down, up, right} = {home, pgdown, pgup, end} +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│ Fn0 │R_WIN│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 4: Poker Default + Fn'd +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│Caps │ Fn2 │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Fn4 │ End │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ Fn1 │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + [4] = LEGACY_KEYMAP( + TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + CAPS, FN2, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN4, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN1, TRNS, TRNS, TRNS, TRNS), + /* 5: Poker with Arrow +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│PgUp │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ Fn3 │Home │PgDwn│ End │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN3, HOME, PGDN, END), + /* 6: Poker with Esc +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), + /* 7: Poker with Arrow + Fn'd +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ Up │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │Left │Down │Right│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, LEFT, DOWN, RGHT), +}; +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc) + [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle + [2] = ACTION_LAYER_TOGGLE(6), // Poker Esc toggle + [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH), // Poker Fn(with fix for Arrow) + [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc) +}; diff --git a/keyboards/s60-x/keymaps/poker_bit/readme.md b/keyboards/s60-x/keymaps/poker_bit/readme.md new file mode 100644 index 000000000..0d8be9d0f --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_bit/readme.md @@ -0,0 +1,31 @@ +### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Fn │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 3.1 Poker Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ FnQ │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Tsk │ End │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ Up │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ FnS │█████│█████│█████│ Fn │Left │Down │Right│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/poker_set/keymap.c b/keyboards/s60-x/keymaps/poker_set/keymap.c new file mode 100644 index 000000000..09423e75b --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_set/keymap.c @@ -0,0 +1,178 @@ +#include "s60-x.h" + +// Poker fix with set(state transition) +// Fn + Esc = ` +// Fn + {left, down, up, right} = {home, pgdown, pgup, end} +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_WIN│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│ Fn0 │R_WIN│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, SPC, FN0, RGUI, APP, RCTL), + /* 1: Poker with Arrow +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ Up │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ Fn1 │Left │Down │Right│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN1, LEFT, DOWN, RGHT), + /* 2: Poker with Esc +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ Fn2 │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN2, TRNS, TRNS, TRNS), + /* 3: Poker with Arrow and Esc +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │ │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ Up │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ Fn3 │Left │Down │Right│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, TRNS, \ + TRNS, TRNS, TRNS, TRNS, FN3, LEFT, DOWN, RGHT), + /* 4: Poker Fn'd +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ Fn6 │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Fn8 │ End │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ Fn5 │█████│█████│█████│ Fn4 │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN6, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN5, FN4, TRNS, TRNS, TRNS), + /* 5: Poker Fn'd arrow +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ Fn7 │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Fn8 │ End │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│PgUp │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ Fn4 │█████│█████│█████│ Fn5 │Home │PgDwn│ End │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN7, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, PGUP, TRNS, \ + TRNS, TRNS, TRNS, FN4, FN5, HOME, PGDN, END), + /* 6: Poker Fn'd Esc +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ Fn4 │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Fn8 │ End │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ Fn7 │█████│█████│█████│ Fn6 │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN4, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, FN7, FN6, TRNS, TRNS, TRNS), + /* 7: Poker Fn'd Arrow + Esc +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│Grave│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ Fn5 │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Fn8 │ End │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│PgUp │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ Fn6 │█████│█████│█████│ Fn7 │Home │PgDwn│ End │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + TRNS, FN5, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, CALC, TRNS, HOME, INS, TRNS, \ + TRNS, LEFT, DOWN, RGHT, TRNS, TRNS, PSCR, SLCK, PAUS, TRNS, FN8, END, TRNS, TRNS, \ + TRNS, TRNS, DEL, TRNS, WHOM, MUTE, VOLU, VOLD, TRNS, PGUP, PGDN, DEL, TRNS, PGUP, TRNS, \ + TRNS, TRNS, TRNS, FN6, FN7, HOME, PGDN, END), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + /* Poker Layout */ + [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press + [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press + [2] = ACTION_LAYER_SET(6, ON_PRESS), // FN2 move to Fn'd Esc when press + [3] = ACTION_LAYER_SET(7, ON_PRESS), // FN3 move to Fn'd arrow + Esc when press + + //[4] = ACTION_LAYER_CLEAR(ON_RELEASE), // FN4 clear overlay when release + [4] = ACTION_LAYER_SET(0, ON_RELEASE), // FN4 clear overlay when release + [5] = ACTION_LAYER_SET(1, ON_RELEASE), // FN5 move to arrow when release + [6] = ACTION_LAYER_SET(2, ON_RELEASE), // FN6 move to Esc when release + [7] = ACTION_LAYER_SET(3, ON_RELEASE), // FN7 move to arrow + Esc when release + + [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc) +}; diff --git a/keyboards/s60-x/keymaps/poker_set/readme.md b/keyboards/s60-x/keymaps/poker_set/readme.md new file mode 100644 index 000000000..0d8be9d0f --- /dev/null +++ b/keyboards/s60-x/keymaps/poker_set/readme.md @@ -0,0 +1,31 @@ +### 3 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Fn │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 3.1 Poker Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ FnQ │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Tsk │ End │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ Up │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ FnS │█████│█████│█████│ Fn │Left │Down │Right│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/keymaps/spacefn/keymap.c b/keyboards/s60-x/keymaps/spacefn/keymap.c new file mode 100644 index 000000000..b6dc7ca7e --- /dev/null +++ b/keyboards/s60-x/keymaps/spacefn/keymap.c @@ -0,0 +1,55 @@ +#include "s60-x.h" + +/* + * SpaceFN + * http://geekhack.org/index.php?topic=51069.0 + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Default Layer +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│LCTRL│L_GUI│L_ALT│█████│█████│█████Spc/Fn0█████│█████│█████│R_ALT│R_GUI│ APP │RCTRL│█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, NO, BSPC, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, BSLS, \ + CAPS, A, S, D, F, G, H, J, K, L, SCLN, QUOT, NO, ENT, \ + LSFT, NO, Z, X, C, V, B, N, M, COMM, DOT, SLSH, NO, RSFT, NO, \ + LCTL, LGUI, LALT, FN0, RALT, RGUI, APP, RCTL), + + /* Overlay 1: SpaceFN +┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+│ ` │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ Del │ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ Esc │ │ │ │Home │ Up │ End │Pscr │Slck │Pause│ Ins │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │ │ │ │PgUp │Left │Down │Right│ │ │▒▒▒▒▒│ │█████│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │▒▒▒▒▒│ │ │ │Space│PgDwn│ ` │ ~ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ +├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +│ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ +└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + */ + LEGACY_KEYMAP( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, DEL, \ + TRNS, TRNS, TRNS, ESC, TRNS, TRNS, TRNS, HOME, UP, END, PSCR, SLCK, PAUS, INS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, PGUP, LEFT, DOWN, RGHT, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, SPC, PGDN, GRV, FN1, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, \ + TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE), + [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // tilde +}; diff --git a/keyboards/s60-x/keymaps/spacefn/readme.md b/keyboards/s60-x/keymaps/spacefn/readme.md new file mode 100644 index 000000000..d04bd9486 --- /dev/null +++ b/keyboards/s60-x/keymaps/spacefn/readme.md @@ -0,0 +1,27 @@ +### 6. SpaceFN +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). + +#### 6.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│████ Space/Fn ███│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 6.1 SpaceFN layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ Del │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │ │ │ │ │Home │ Up │ End │ Psc │ Slk │Pause│ Ins │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │ │ │ │PgUp │Left │Down │Right│ │ │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ │ │ │ │Space│PgDwn│ ` │ ~ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ Fn │█████│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ diff --git a/keyboards/s60-x/readme.md b/keyboards/s60-x/readme.md new file mode 100644 index 000000000..099d58699 --- /dev/null +++ b/keyboards/s60-x/readme.md @@ -0,0 +1,260 @@ +S60-x keyboard firmware +====================== +DIY compact keyboard designed by VinnyCordeiro for Sentraq. Most of the keymaps are based on GH60 code. This is a port from TMK to QMK based on the [original S60-X Repo](https://github.com/VinnyCordeiro/tmk_keyboard). + +## S60X Resources +- [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open) + +## Quickstart + +If you just want to test a few layouts, the archive [s60-x_precompiled.zip](s60-x_precompiled.zip) contains pre-compiled .hex-files for all available keymaps. Not all of them are tested. +You only need to flash them onto your keyboard, which is explained below, there's no need to setup a build environment. For a full list + +## Flashing your keyboard +The recommended programs for flashing your keyboard are [Atmel FLIP](http://www.atmel.com/tools/FLIP.aspx) (Windows) and [dfu-programmer](http://dfu-programmer.sourceforge.net/) (Linux/Windows). + +[QMK Firmware Flasher](https://github.com/jackhumbert/qmk_firmware_flasher/releases) may work, as the S60-X keyboard uses the ATMega32U4 microcontroller, but it is untested. Use at your own risk. + +[Easy AVR USB Keyboard Firmware](https://deskthority.net/wiki/Easy_AVR_USB_Keyboard_Firmware) also supports S60-X, but it is completely unrelated to TMK firmware. Use at your own risk. + +**Programming the firmware (Windows)** + +1. download and install FLIP (http://www.atmel.com/tools/FLIP.aspx) +2. connect the keyboard, press the program button on the underside of the board (S1) and wait until it enumerates (you'll hear the "disconnect" and "connect" sound) +3. go to device manager, find the atmega32u4 chip and click "update driver" +4. choose location manually: folder named "usb" inside the installation directory of FLIP +5. once the driver is installed, run flip +6. Device -> Select: choose ATMega32U4 +7. Settings -> Communication -> USB, FLIP should show the signature at this point (58 1E 95 87) +8. File -> Load HEX file: choose the hex firmware: <firmware>.hex +9. click "Run" +10. after programming is done, disconnect the device from USB and connect again. + + +**Programming the firmware (Linux)** + +1. Download and install/compile/unpack dfu-programmer from http://dfu-programmer.sourceforge.net/. +2. Issue the following commands in the command prompt after connecting the device and pressing the programming button (S1). You may need root permissions or udev rules to do that. + 1. `sudo dfu-programmer atmega32u4 erase` + 2. `sudo dfu-programmer atmega32u4 flash <firmware>.hex` + 3. `sudo dfu-programmer atmega32u4 start` +3. The keyboard should start working. If it doesn't, reconnect the cable. + +## Building the firmware + +To build firmware binary hex file with a certain keymap just run `make` with the `keymap` option like: + + $ make keymap=[custom|poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|<name>] + +For a more detailed explanation of the build process and the environment setup, see the ["Getting Started" section](/readme.md#getting-started). + +## List of included Keymaps + +Several versions of keymaps are available in advance but you are recommended to define your favorite layout yourself. +To define your own keymap, copy the [default keymap template](/quantum/template/keymaps/default) directory into the `keymaps` directory and start modifying the `keymap.c` file. Some options might require you to change the `config.h` or `Makefile` as well, refer to the main documentation for more information on those. +If you want to later merge your finalised keymap into this repository to make it available for everyone, make sure to also modify the `readme.md` in your keymap directory to show a visual version of your keymap. + +Here's a list of the standard layouts that are provided with the precompiled .hex-files. + +### 0 Initial explanations +The █████ blocks on the layouts hides the switch positions that do not exist physically on the PCB. If you feel like hacking the keyboard and adding new keys, those are the positions that can be used. You'll have to modify the [keymap_common.h](keymap_common.h) file for that. + +The â–’â–’â–’â–’â–’ blocks hides switch positions not used on this particular layout, but they do exist on the PCB. + +There is no LED support on the PCB at the moment, but I'll let the code for that untouched. + + +### 1 [Standard - ANSI (default layout)](keymaps/default/keymap.c) +The standard keymap is the one that is pre-flashed on the S60-X. + +#### 1.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │RCTRL│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 1.1 Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + + +### 2 [Standard - ISO](keymaps/iso/keymap.c) +The same as the standard keymap, but with additional ISO keys. + + +#### 2.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │NUHS │ENTER│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │RCTRL│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 2.1 Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ │ │ │ │ │ │ │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + + +### 3 Poker +[The poker keymap](keymaps/poker/keymap.c) emulates original Vortex Poker layers +while both [poker_bit](keymaps/poker_bit/keymap.c) and [poker_set](keymap/poker_set/keymap.c) implement the same layout in a slightly different way, fix a minor issue of the original poker Layout and enhance arrow keys. + + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} + +#### 3.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Fn │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 3.1 Poker Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ FnQ │ Up │ │ │ │ │ │ │ Cal │ │Home │ Ins │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │Left │Down │Right│ │ │ Psc │ Slk │Pause│ │ Tsk │ End │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ Del │ │ Web │Mute │ VoU │ VoD │ │PgUp │PgDwn│ Del │▒▒▒▒▒│ Up │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ FnS │█████│█████│█████│ Fn │Left │Down │Right│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + + +### 4. [Plain](keymaps/plain/keymap.c) +Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. + +#### 4.0 Plain Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + + +### 5. [Hasu](keymaps/hasu/keymap.c) +This is Hasu's favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. + +(Hasu is the creator of the TMK firmware, for those who do not know that.) + + +### 6. [SpaceFN](keymaps/spacefn/keymap.c) +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. Check the sourcefile and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0) for more information. + +#### 6.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│████ Space/Fn ███│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 6.1 SpaceFN layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│ Del │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │ │ │ │ │Home │ Up │ End │ Psc │ Slk │Pause│ Ins │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │ │ │ │PgUp │Left │Down │Right│ │ │▒▒▒▒▒│ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ │ │ │ │Space│PgDwn│ ` │ ~ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ │ │█████│█████│█████│ Fn │█████│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + + +### 7. [HHKB](keymap/hhkb/keymap.c) +The HHKB keymap emulates original HHKB layers. +#### 7.0: Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │BkSpc│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Fn3 │ ' │▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│Shift│ Fn │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │▒▒▒▒▒│ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│▒▒▒▒▒│ Alt │ Gui │▒▒▒▒▒│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +#### 7.1: HHKB Fn layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ Pwr │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Ins │ Del │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ │ │ │ │ │ │ │ Psc │ Slk │ Pus │ Up │ │ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │ VoD │ VoU │ Mut │ Ejc │ │ * │ / │Home │PgUp │Left │Right│▒▒▒▒▒│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ │▒▒▒▒▒│ │ │ │ │ │ + │ - │ End │PgDwn│Down │▒▒▒▒▒│ │ │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │▒▒▒▒▒│ │ │█████│█████│█████│ │█████│█████│█████│▒▒▒▒▒│ │ │▒▒▒▒▒│█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + + +### 8 [Custom](keymaps/custom/keymap.c) +The custom keymap is where I tested all the switches, not being concerned with a specific layout or layers. It's a plain layout option with the extra keys used on ISO & HHKB layouts being assigned some other keys. + +#### 8.0 Default layer + ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┠+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │PgUp │BkSpc│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │PgDwn│Enter│█████│ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Shift│Home │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ End │Shift│ Up │ + ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ + │Ctrl │ Gui │ Alt │█████│█████│█████│Space│█████│█████│█████│ Alt │ Gui │ App │Ctrl │█████│ + └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ + +### 9. [ANSI_QWERTZ](keymaps/ansi_qwertz/keymap.c) + +This keymap was designed for inputting characters with diacritics with ANSI keycaps. +It provides toggleable SpaceFn functionality, a dedicated arrow cluster and a microphone mute key on the function layer as well as a bootloader reset key. + +For more info, [check here](keymaps/ansi_qwertz/readme.md). diff --git a/keyboards/s60-x/s60-x.c b/keyboards/s60-x/s60-x.c new file mode 100644 index 000000000..417358140 --- /dev/null +++ b/keyboards/s60-x/s60-x.c @@ -0,0 +1,28 @@ +#include "s60-x.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60-x/s60-x.h new file mode 100644 index 000000000..29a2a27b2 --- /dev/null +++ b/keyboards/s60-x/s60-x.h @@ -0,0 +1,69 @@ +/* +Copyright 2012,2013 Jun Wako <wakojun@gmail.com> +Copyright 2015 Vinícius Nery Cordeiro <vinicius.nery.cordeiro@gmail.com> +Copyright 2016 Felix Uhl <ifreilicht@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef S60X_H +#define S60X_H + +#include "quantum.h" + +#ifdef __INTELLISENSE__ +#define PROGMEM +#include "config.h" +#endif + +/* S60-X keymap definition macro +* K31 is the extra key next to short left ISO shift +* K2C is the moved key next to enter on ISO boards +* K3C is the extra key next to short right JIS shift +* K0D is extra key from split backspace +* K3E is extra key from HHKB-style split right shift +*/ + +#define KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO } \ +} + +/*This special definition is used for S60-X keymaps that were ported from TMK + * QMK has a lot of keycodes that don't start with KC_, so using the regular KEYMAP macro is recommended + */ +#define LEGACY_KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_NO }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_NO }, \ + { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_NO, KC_##K46, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_NO } \ +} + +#endif diff --git a/keyboards/s60-x/s60-x_precompiled.zip b/keyboards/s60-x/s60-x_precompiled.zip Binary files differnew file mode 100644 index 000000000..00d99ca8a --- /dev/null +++ b/keyboards/s60-x/s60-x_precompiled.zip diff --git a/keyboards/satan/keymaps/default/keymap.c b/keyboards/satan/keymaps/default/keymap.c index 3806137e7..2bf49d2e6 100644 --- a/keyboards/satan/keymaps/default/keymap.c +++ b/keyboards/satan/keymaps/default/keymap.c @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | * `-----------------------------------------------------------' */ -[_BL] = KEYMAP( +[_BL] = KEYMAP_ANSI( F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSLS, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_FL] = KEYMAP( +[_FL] = KEYMAP_ANSI( #ifdef RGBLIGHT_ENABLE KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG, \ diff --git a/keyboards/satan/keymaps/denolfe/Makefile b/keyboards/satan/keymaps/denolfe/Makefile new file mode 100644 index 000000000..c4adab737 --- /dev/null +++ b/keyboards/satan/keymaps/denolfe/Makefile @@ -0,0 +1,20 @@ + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/satan/keymaps/denolfe/README.md b/keyboards/satan/keymaps/denolfe/README.md new file mode 100644 index 000000000..30b94fcdd --- /dev/null +++ b/keyboards/satan/keymaps/denolfe/README.md @@ -0,0 +1,12 @@ +# denolfe's Layout +Customized Satan keymap + +![Layout](keyboard-layout.png "Practical Keymap") + +## Programming Instructions: +`cd` into keymap directory, `make dfu` + +## Features +- Movement keys with <kbd>CapsLock</kbd> + <kbd>h</kbd>, <kbd>j</kbd>, <kbd>k</kbd>, <kbd>l</kbd> +- Media Keys +- Backlight control diff --git a/keyboards/satan/keymaps/denolfe/keyboard-layout.png b/keyboards/satan/keymaps/denolfe/keyboard-layout.png Binary files differnew file mode 100644 index 000000000..d6d6ad57f --- /dev/null +++ b/keyboards/satan/keymaps/denolfe/keyboard-layout.png diff --git a/keyboards/satan/keymaps/denolfe/keymap.c b/keyboards/satan/keymaps/denolfe/keymap.c new file mode 100644 index 000000000..5f189d78a --- /dev/null +++ b/keyboards/satan/keymaps/denolfe/keymap.c @@ -0,0 +1,171 @@ +#include "satan.h" + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Used for SHIFT_ESC +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _SL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | + * `-----------------------------------------------------------' + */ +[_BL] = KEYMAP_ANSI( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RGUI, KC_RCTL), + + /* Keymap _FL: Function Layer + * ,-----------------------------------------------------------. + * | | | | | | | | | | | | | | RESET| + * |-----------------------------------------------------------| + * | | | | | | | | | | | |BL-|BL+|BL | + * |-----------------------------------------------------------| + * | | | | | | | | | | | | | + * |-----------------------------------------------------------| + * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ +[_FL] = KEYMAP_ANSI( + #ifdef RGBLIGHT_ENABLE + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + #else + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, KC_END, KC_MPRV, KC_MNXT, KC_MPLY, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_HOME, LCTL(KC_LEFT), LCTL(KC_END), LCTL(KC_RIGHT), KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, F(9), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + #endif + +[_SL] = KEYMAP_ANSI( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_PGUP, KC_TRNS, LSFT(KC_END), KC_MPRV, KC_MNXT, KC_MPLY, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_UP), LSFT(KC_RIGHT), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +enum function_id { + SHIFT_ESC, + #ifdef RGBLIGHT_ENABLE + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL + #endif +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(SHIFT_ESC), + #ifdef RGBLIGHT_ENABLE + [1] = ACTION_FUNCTION(RGBLED_TOGGLE), + [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), + #endif + [9] = ACTION_LAYER_MODS(2, MOD_LSFT) +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t shift_esc_shift_mask; + switch (id) { + case SHIFT_ESC: + shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; + if (record->event.pressed) { + if (shift_esc_shift_mask) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + if (shift_esc_shift_mask) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + //led operations + #ifdef RGBLIGHT_ENABLE + case RGBLED_TOGGLE: + if (record->event.pressed) { + rgblight_toggle(); + } + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + break; + #endif + } +} diff --git a/keyboards/satan/keymaps/iso_split_rshift/.gitignore b/keyboards/satan/keymaps/iso_split_rshift/.gitignore new file mode 100644 index 000000000..4d652661c --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/.gitignore @@ -0,0 +1,3 @@ +updatemerge.sh +clear_flash.hex +resetboard.sh diff --git a/keyboards/satan/keymaps/iso_split_rshift/LEDpinSatan.jpg b/keyboards/satan/keymaps/iso_split_rshift/LEDpinSatan.jpg Binary files differnew file mode 100644 index 000000000..7616693f9 --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/LEDpinSatan.jpg diff --git a/keyboards/satan/keymaps/iso_split_rshift/Makefile b/keyboards/satan/keymaps/iso_split_rshift/Makefile new file mode 100644 index 000000000..d1e07da3f --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/Makefile @@ -0,0 +1,16 @@ +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/satan/keymaps/iso_split_rshift/build.sh b/keyboards/satan/keymaps/iso_split_rshift/build.sh new file mode 100755 index 000000000..6b4b4568f --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/build.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# adjust for cpu +# -j 16 gave best result on a hyperthreaded quad core core i7 + +LIMIT=10 +THREADS="-j 16" +KMAP=iso_split_rshift + +echo "We need sudo later" +sudo ls 2>&1 /dev/null + +function wait_bootloader { + echo "Waiting for Bootloader..." + local STARTTIME=$(date +"%s") + local REMIND=0 + local EXEC=dfu-programmer + local TARGET=atmega32u4 + while true + do + sudo $EXEC $TARGET get > /dev/null 2>&1 + [ $? -eq 0 ] && break + ENDTIME=$(date +"%s") + DURATION=$(($ENDTIME-$STARTTIME)) + if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ] + then + echo "Did you forget to press the reset button?" + REMIND=1 + fi + sleep 1 + done +} +make clean +make KEYMAP=${KMAP} ${THREADS} +if [[ $? -eq 0 ]] +then + echo "please trigger flashing!" + wait_bootloader + sudo make KEYMAP=${KMAP} dfu ${THREADS} +else + echo "make failed" + exit 77 +fi diff --git a/keyboards/satan/keymaps/iso_split_rshift/config.h b/keyboards/satan/keymaps/iso_split_rshift/config.h new file mode 100644 index 000000000..27c1372da --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/config.h @@ -0,0 +1,27 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// only change +#undef RGB_DI_PIN +#define RGB_DI_PIN B2 + +#endif diff --git a/keyboards/satan/keymaps/iso_split_rshift/keymap.c b/keyboards/satan/keymaps/iso_split_rshift/keymap.c new file mode 100644 index 000000000..cf938e07d --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/keymap.c @@ -0,0 +1,209 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "satan.h" +// TODO: replace your ugly german brckets with #defines + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _DEF 0 +#define _SPC 1 +#define _TAB 2 +#define _SFX 3 + +// dual-role shortcuts +#define TABDUAL LT(_TAB, KC_TAB) +#define CAPSDUAL CTL_T(KC_ESC) +#define SPACEDUAL LT(_SPC, KC_SPACE) +#define ENTERDUAL CTL_T(KC_ENT) +// arrow cluster duality bottom right corner +#define ARRLEFT ALT_T(KC_LEFT) +#define ARRDOWN GUI_T(KC_DOWN) +#define ARRUP SFT_T(KC_UP) +#define ARRRIGHT CTL_T(KC_RIGHT) +// german brackets +#define GER_CUR_L RALT(KC_7) // [ +#define GER_CUR_R RALT(KC_0) // ] +#define GER_PAR_L LSFT(KC_8) // ( +#define GER_PAR_R LSFT(KC_9) // ) +#define GER_ANG_L KC_NUBS // < +#define GER_ANG_R LSFT(KC_NUBS) // > +#define GER_BRC_L RALT(KC_8) // [ +#define GER_BRC_R RALT(KC_9) // ] + +// increase readability +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _DEF: Default Layer + * ,-----------------------------------------------------------. + * |Grv| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Tab is Fn1 + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return | + * |-----------------------------------------------------------| + * |Sft | < | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| RShift is UP + * |-----------------------------------------------------------| + * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| Gui Menu, RCtrl is + * `-----------------------------------------------------------' LEFT DWN RIGHT + */ + [_DEF] = KEYMAP_ISO_SPLITRSHIFT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + TABDUAL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ARRUP, TG(_SFX), \ + KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT), + + /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) + * ,-----------------------------------------------------------. + * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete| + * |-----------------------------------------------------------| + * | |Paus| Up| [ | ] | | | | ( | ) | | | | | + * |-----------------------------------------------------------| + * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | + * |-----------------------------------------------------------| + * | | | | | < | > | |M0 | | | | | Vol+ | | + * |-----------------------------------------------------------| + * | | | | |Alt |Prev|Vol-|Next| + * `-----------------------------------------------------------' + */ + [_SPC] = KEYMAP_ISO_SPLITRSHIFT( + KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + _______, KC_PAUS, KC_UP, GER_BRC_L, GER_BRC_R, _______, _______, GER_PAR_L, GER_PAR_R, _______, _______, _______, _______, _______, \ + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, \ + _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), + + /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (by holding tab) + * ,-----------------------------------------------------------. + * |WAKE| | | | | | | | | | | | |Insert| TAB+GRC = WAKE + * |-----------------------------------------------------------| + * | | | | | | | | | { | } | | | | | + * |-----------------------------------------------------------| + * | | | | | | |Pos1|PgDn|PgUp|End| | |Retrn | + * |-----------------------------------------------------------| + * | | | | | | | |AF2| | | | | PgUp | | + * |-----------------------------------------------------------| + * | | | | |Alt |Pos1|PgDn|End | + * `-----------------------------------------------------------' + */ + [_TAB] = KEYMAP_ISO_SPLITRSHIFT( + KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \ + _______, _______, _______, _______, _______, _______, _______, GER_CUR_L, GER_CUR_R, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, KC_ENT, \ + _______, _______, _______, _______, _______, _______, _______, M(1), _______, _______, _______, _______, KC_PGUP, _______, \ + _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), + + /* Keymap 3: Split right shift Numpad toggle Layer (by tapping the split rshift key) + * ,-----------------------------------------------------------. + * |RSET| | | | | | | 7| 8| 9| | | |Backsp | + * |-----------------------------------------------------------| + * | | | | | | | | 4 | 5 | 6 | | | | \ | + * |-----------------------------------------------------------| + * | | L | L | | | | | 1 | 2 | 3 | | | Return | + * |-----------------------------------------------------------| + * | | | L | L | L | L | L | L | | 0 | | /| Up | | All "L"s represent + * |-----------------------------------------------------------| LED controlling + * |Ctrl|Win |Alt | |Alt |Left|Down|Right| + * `-----------------------------------------------------------' + */ + [_SFX] = KEYMAP_ISO_SPLITRSHIFT( + RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \ + _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, KC_BSLS, \ + _______, F(2), F(3), _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \ + _______, F(4), F(5), F(6), F(7), F(8), F(9), _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \ + _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT), +}; + +enum function_id { + LAUNCH, + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_FUNCTION(LAUNCH), + [2] = ACTION_FUNCTION(RGBLED_TOGGLE), + [3] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [4] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [5] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [6] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [7] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [8] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [9] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), + [10] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ENT), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + return (record->event.pressed ? + MACRO( D(RALT), T(SPC), U(RALT), END ) + :MACRO( END )); + break; + case 1: + return (record->event.pressed ? + MACRO( D(LALT), T(F2), U(LALT), END ) + :MACRO( END )); + break; + } + return MACRO_NONE; +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + switch (id) { + case RGBLED_TOGGLE: + //led operations + if (record->event.pressed) { + rgblight_toggle(); + } + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + rgblight_increase_hue(); + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + rgblight_decrease_hue(); + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + rgblight_increase_sat(); + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + rgblight_decrease_sat(); + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + rgblight_increase_val(); + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + rgblight_decrease_val(); + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + rgblight_step(); + } + break; + } +} diff --git a/keyboards/satan/keymaps/iso_split_rshift/readme.md b/keyboards/satan/keymaps/iso_split_rshift/readme.md new file mode 100644 index 000000000..ec6123d8a --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/readme.md @@ -0,0 +1,36 @@ +toneman77's Satan Layout +===================== + +##Quantum MK Firmware +For the full Quantum feature list, see the parent readme.md. + +* heavily modified ISO (!) layout with split right shift key +* spaceFn +* Dual-Role keys: +* + | Original key | when tapped | when held | + | ---------------- | ------------- | ------------- | + | Space | Space | layer change | + | Caps lock | Escape | Control | + | Tab | Tab | layer change | + | Enter | Enter | Control | + +* Lockable layer for LED functions and numpad +* vim-style arrow keys on hjkl (spacefn layer) +* corresponding Home/PgDn/PgUp/End on hjkl (tab layer) +* bonus arrow keys in the bottom right corner on Alt/Win/Menu/rCtrl/Shift +* more bonus arrow keys on wasd (spacefn layer) +* media keys prev/next/play/vol+/vol- (spacefn layer) +* firmware bootloader button +* WS2812 RGB Underglow Support (not needed anymore to solder directly to the atmega) +* additional brackets that only work in german layout due to horrible placement +in the default qwertz layout + + +### Additional Credits +* Keymap has been based on TerryMathews' fork of Aqoush's fork of qmk-satan-rgb. [here](https://github.com/TerryMathews/qmk-satan-rgb/tree/master/keyboard/satan) +* nice visualization of the layers [here](http://www.keyboard-layout-editor.com/#/gists/aba4e4396459ede85bc66a22cee88e48) +* no-need-to-solder-on-chip picture: +![no need to solder directly on the chip anymore](LEDpinSatan.jpg) +* special thanks to /u/TerryMathews who suggested the pin PB2, so soldering +directly on the atmega is not needed anymore. Happened on [reddit](https://www.reddit.com/r/MechanicalKeyboards/comments/4ghq9z/photos_satan_rgb60_w1976/d2k5tra) diff --git a/keyboards/satan/keymaps/iso_split_rshift/resetboard.sh b/keyboards/satan/keymaps/iso_split_rshift/resetboard.sh new file mode 100755 index 000000000..d955ccf54 --- /dev/null +++ b/keyboards/satan/keymaps/iso_split_rshift/resetboard.sh @@ -0,0 +1,4 @@ +#!/bin/bash +sudo dfu-programmer atmega32u4 erase --force +sudo dfu-programmer atmega32u4 flash clear_flash.hex +sudo dfu-programmer atmega32u4 reset diff --git a/keyboards/satan/keymaps/poker/keymap.c b/keyboards/satan/keymaps/poker/keymap.c index 8181955cf..9da7d29b7 100644 --- a/keyboards/satan/keymaps/poker/keymap.c +++ b/keyboards/satan/keymaps/poker/keymap.c @@ -25,12 +25,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | * `-----------------------------------------------------------' */ -[_BL] = KEYMAP( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(_RL), MO(_FL), KC_RCTL), +[_BL] = KEYMAP_ANSI( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_RL), MO(_FL), KC_RCTL), /* Keymap _FL: Function Layer * ,-----------------------------------------------------------. @@ -45,12 +45,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_FL] = KEYMAP( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ - KC_TRNS,KC_TRNS, KC_UP, KC_TRNS,KC_TRNS,KC_TRNS, KC_CALC,KC_TRNS,KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ - KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[_FL] = KEYMAP_ANSI( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), /* Keymap _RL: Function Layer * ,-----------------------------------------------------------. @@ -65,19 +65,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ -[_RL] = KEYMAP( +[_RL] = KEYMAP_ANSI( #ifdef RGBLIGHT_ENABLE - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #endif }; diff --git a/keyboards/satan/keymaps/stanleylai/keymap.c b/keyboards/satan/keymaps/stanleylai/keymap.c index 623427e97..979c122e5 100644 --- a/keyboards/satan/keymaps/stanleylai/keymap.c +++ b/keyboards/satan/keymaps/stanleylai/keymap.c @@ -26,25 +26,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Function layer [_FL] = KEYMAP_HHKB( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NO, \ - KC_NO, KC_MPRV, KC_UP, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \ - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LT(_RGBL, KC_PGUP), KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_HOME, KC_PGDN, KC_END), + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NO, \ + KC_NO, KC_MPRV, KC_UP, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LT(_RGBL, KC_PGUP), KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_HOME, KC_PGDN, KC_END), // RGB Layer [_RGBL] = KEYMAP_HHKB( #ifdef RGBLIGHT_ENABLE RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_TRNS, KC_TRNS,\ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS,\ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_NO, BL_TOGG, BL_STEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #endif }; diff --git a/keyboards/satan/satan.h b/keyboards/satan/satan.h index 513446bf3..f3cbd5305 100644 --- a/keyboards/satan/satan.h +++ b/keyboards/satan/satan.h @@ -3,15 +3,18 @@ #include "quantum.h" -/* Satan GH60 matrix layout +// readability +#define XXX KC_NO + +/* Satan GH60 matrix layout (3c is right of 3d, 3d is shift) * ,-----------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49| * |-----------------------------------------------------------| * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | * |-----------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | * |-----------------------------------------------------------| - * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c | * |-----------------------------------------------------------| * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | * `-----------------------------------------------------------' @@ -19,18 +22,45 @@ // The first section contains all of the arguments // The second converts the arguments into a two-dimensional array #define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ +} +/* Satan GH60 ANSI layout + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | + * |-----------------------------------------------------------| + * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + */ +#define KEYMAP_ANSI( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, k2d}, \ - {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d}, \ - {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } /* Satan HHKB matrix layout @@ -51,17 +81,46 @@ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO, k2d}, \ - {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, KC_NO, k49, k4a, k4b, k4c, k4d} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ } +/* ISO w/ split right shift key matrix layout + * ,-----------------------------------------------------------. + * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | + * |-----------------------------------------------------------| + * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | + * |-----------------------------------------------------------| + * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | + * |-----------------------------------------------------------| + * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c| + * |-----------------------------------------------------------| + * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | + * `-----------------------------------------------------------' + + swap 3c and 3d. 3c is right of 3d in reality + */ +#define KEYMAP_ISO_SPLITRSHIFT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ +} void matrix_init_user(void); void matrix_scan_user(void); diff --git a/keyboards/tv44/Makefile b/keyboards/tv44/Makefile new file mode 100644 index 000000000..45ca12780 --- /dev/null +++ b/keyboards/tv44/Makefile @@ -0,0 +1,75 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= yes # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../Makefile +endif + + diff --git a/keyboards/tv44/config.h b/keyboards/tv44/config.h new file mode 100644 index 000000000..0ae93c095 --- /dev/null +++ b/keyboards/tv44/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEAE +#define PRODUCT_ID 0x8844 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Evan Sailer +#define PRODUCT TheVan 44 +#define DESCRIPTION keyboard firmware for TV44 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D7, B5, F7, D4 } +#define MATRIX_COL_PINS { D2, D3, D5, D6, B4, B6, F6, F5, F4, F1, F0, B3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/tv44/keymaps/default/Makefile b/keyboards/tv44/keymaps/default/Makefile new file mode 100644 index 000000000..f4671a9d1 --- /dev/null +++ b/keyboards/tv44/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/tv44/keymaps/default/config.h b/keyboards/tv44/keymaps/default/config.h new file mode 100644 index 000000000..df06a2620 --- /dev/null +++ b/keyboards/tv44/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif
\ No newline at end of file diff --git a/keyboards/tv44/keymaps/default/keymap.c b/keyboards/tv44/keymaps/default/keymap.c new file mode 100644 index 000000000..f3f989f2d --- /dev/null +++ b/keyboards/tv44/keymaps/default/keymap.c @@ -0,0 +1,97 @@ +#include "tv44.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +#define _QW 0 +#define _DV 1 +#define _CM 2 +#define _L1 3 +#define _L2 4 +#define _L3 5 + +// Macro name shortcuts +#define QWERTY M(_QW) +#define DVORAK M(_DV) +#define COLEMAK M(_CM) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = { /* Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1) }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, + {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } + }, + [_DV] = { /* Dvorak */ + {KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, + {MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) }, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) }, + {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } + }, + [_CM] = { /* Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC }, + {MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, MO(_L1) }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2) }, + {KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) } + }, + [_L1] = { /* LAYER 1 */ + {KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, + {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ }, + {_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT }, + {_______, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } + }, + [_L2] = { /* LAYER 2 */ + {_______, QWERTY, DVORAK, COLEMAK, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______ }, + {KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4, KC_5, KC_6, KC_VOLU, KC_ENT }, + {_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______ }, + {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______ } + }, + [_L3] = { /* LAYER 3 */ + {_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______ }, + {KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______ }, + {KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______ }, + {_______, KC_LSFT, KC_B, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_C, _______, _______, XXXXXXX, _______ } + } +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _DV: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DV); + } + break; + case _QW: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_CM); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/tv44/keymaps/default/readme.md b/keyboards/tv44/keymaps/default/readme.md new file mode 100644 index 000000000..ac84c08cf --- /dev/null +++ b/keyboards/tv44/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for tv44
\ No newline at end of file diff --git a/keyboards/tv44/keymaps/xyverz/Makefile b/keyboards/tv44/keymaps/xyverz/Makefile new file mode 100644 index 000000000..f4671a9d1 --- /dev/null +++ b/keyboards/tv44/keymaps/xyverz/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/tv44/keymaps/xyverz/config.h b/keyboards/tv44/keymaps/xyverz/config.h new file mode 100644 index 000000000..df06a2620 --- /dev/null +++ b/keyboards/tv44/keymaps/xyverz/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif
\ No newline at end of file diff --git a/keyboards/tv44/keymaps/xyverz/keymap.c b/keyboards/tv44/keymaps/xyverz/keymap.c new file mode 100644 index 000000000..8cbcf8d35 --- /dev/null +++ b/keyboards/tv44/keymaps/xyverz/keymap.c @@ -0,0 +1,92 @@ +#include "tv44.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +#define _DV 0 +#define _QW 1 +#define _CM 2 +#define _L1 3 +#define _L2 4 + +// Macro name shortcuts +#define DVORAK M(_DV) +#define QWERTY M(_QW) +#define COLEMAK M(_CM) + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DV] = { /* 0: Dvorak */ + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, + {MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT }, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT }, + {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_SLSH, KC_MINS, XXXXXXX, MO(_L2) } + }, + + [_QW] = { /* 1: Qwerty */ + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT }, + {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_SLSH, KC_MINS, XXXXXXX, MO(_L2) } + }, + + [_CM] = { /* 2: Colemak */ + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC }, + {MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT }, + {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_SLSH, KC_MINS, XXXXXXX, MO(_L2) } + }, + + [_L1] = {/* 1: FN 1 */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL }, + {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ }, + {_______, _______, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT }, + {KC_ESC, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_SLSH, _______, _______ } + }, + + [_L2] = { /* 2: FN 2 */ + {KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_ESC }, + {_______, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_VOLU, KC_ENT }, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_VOLD, _______ }, + {QWERTY, DVORAK, COLEMAK, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______ } + } + +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case _DV: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DV); + } + break; + case _QW: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_CM); + } + break; + } + return MACRO_NONE; +}; + + diff --git a/keyboards/tv44/keymaps/xyverz/readme.md b/keyboards/tv44/keymaps/xyverz/readme.md new file mode 100644 index 000000000..ac84c08cf --- /dev/null +++ b/keyboards/tv44/keymaps/xyverz/readme.md @@ -0,0 +1 @@ +# The default keymap for tv44
\ No newline at end of file diff --git a/keyboards/tv44/readme.md b/keyboards/tv44/readme.md new file mode 100644 index 000000000..e3b557fe2 --- /dev/null +++ b/keyboards/tv44/readme.md @@ -0,0 +1,28 @@ +tv44 keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/tv44 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: + +``` +$ make keymap=[default|jack|<name>] +``` + +Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
\ No newline at end of file diff --git a/keyboards/tv44/tv44.c b/keyboards/tv44/tv44.c new file mode 100644 index 000000000..6dc0efd28 --- /dev/null +++ b/keyboards/tv44/tv44.c @@ -0,0 +1,28 @@ +#include "tv44.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/tv44/tv44.h b/keyboards/tv44/tv44.h new file mode 100644 index 000000000..65c0b4593 --- /dev/null +++ b/keyboards/tv44/tv44.h @@ -0,0 +1,22 @@ +#ifndef TV44_H +#define TV44_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \ + K30, K31, K32, K33, K37, K38, K39, K3A, K3B \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \ + { K30, K31, K32, K33, KC_NO, KC_NO, KC_NO, K37, K38, K39, K3A, K3B } \ + +#endif diff --git a/quantum/dynamic_macro.h b/quantum/dynamic_macro.h new file mode 100644 index 000000000..a3ad61bc7 --- /dev/null +++ b/quantum/dynamic_macro.h @@ -0,0 +1,226 @@ +/* Author: Wojciech Siewierski < wojciech dot siewierski at onet dot pl > */ +#ifndef DYNAMIC_MACROS_H +#define DYNAMIC_MACROS_H + +#include "action_layer.h" + +#ifndef DYNAMIC_MACRO_SIZE +/* May be overridden with a custom value. Be aware that the effective + * macro length is half of this value: each keypress is recorded twice + * because of the down-event and up-event. This is not a bug, it's the + * intended behavior. */ +#define DYNAMIC_MACRO_SIZE 256 +#endif + +/* DYNAMIC_MACRO_RANGE must be set as the last element of user's + * "planck_keycodes" enum prior to including this header. This allows + * us to 'extend' it. + */ +enum dynamic_macro_keycodes { + DYN_REC_START1 = DYNAMIC_MACRO_RANGE, + DYN_REC_START2, + DYN_MACRO_PLAY1, + DYN_MACRO_PLAY2, +}; + +/* Blink the LEDs to notify the user about some event. */ +void dynamic_macro_led_blink(void) +{ + backlight_toggle(); + _delay_ms(100); + backlight_toggle(); +} + +/** + * Start recording of the dynamic macro. + * + * @param[out] macro_pointer The new macro buffer iterator. + * @param[in] macro_buffer The macro buffer used to initialize macro_pointer. + */ +void dynamic_macro_record_start( + keyrecord_t **macro_pointer, keyrecord_t *macro_buffer) +{ + dynamic_macro_led_blink(); + + clear_keyboard(); + layer_clear(); + *macro_pointer = macro_buffer; +} + +/** + * Play the dynamic macro. + * + * @param macro_buffer[in] The beginning of the macro buffer being played. + * @param macro_end[in] The element after the last macro buffer element. + * @param direction[in] Either +1 or -1, which way to iterate the buffer. + */ +void dynamic_macro_play( + keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction) +{ + uint32_t saved_layer_state = layer_state; + + clear_keyboard(); + layer_clear(); + + while (macro_buffer != macro_end) { + process_record(macro_buffer); + macro_buffer += direction; + } + + clear_keyboard(); + + layer_state = saved_layer_state; +} + +/** + * Record a single key in a dynamic macro. + * + * @param macro_pointer[in,out] The current buffer position. + * @param macro_end2[in] The end of the other macro which shouldn't be overwritten. + * @param direction[in] Either +1 or -1, which way to iterate the buffer. + * @param record[in] The current keypress. + */ +void dynamic_macro_record_key( + keyrecord_t **macro_pointer, + keyrecord_t *macro_end2, + int8_t direction, + keyrecord_t *record) +{ + if (*macro_pointer + direction != macro_end2) { + **macro_pointer = *record; + *macro_pointer += direction; + } else { + /* Notify about the end of buffer. The blinks are paired + * because they should happen on both down and up events. */ + backlight_toggle(); + } +} + +/** + * End recording of the dynamic macro. Essentially just update the + * pointer to the end of the macro. + */ +void dynamic_macro_record_end(keyrecord_t *macro_pointer, keyrecord_t **macro_end) +{ + dynamic_macro_led_blink(); + + *macro_end = macro_pointer; +} + +/* Handle the key events related to the dynamic macros. Should be + * called from process_record_user() like this: + * + * bool process_record_user(uint16_t keycode, keyrecord_t *record) { + * if (!process_record_dynamic_macro(keycode, record)) { + * return false; + * } + * <...THE REST OF THE FUNCTION...> + * } + */ +bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) +{ + /* Both macros use the same buffer but read/write on different + * ends of it. + * + * Macro1 is written left-to-right starting from the beginning of + * the buffer. + * + * Macro2 is written right-to-left starting from the end of the + * buffer. + * + * ¯o_buffer macro_end + * v v + * +------------------------------------------------------------+ + * |>>>>>> MACRO1 >>>>>>| |<<<<<<<<<<<<< MACRO2 <<<<<<<<<<<<<| + * +------------------------------------------------------------+ + * ^ ^ + * r_macro_end r_macro_buffer + * + * During the recording when one macro encounters the end of the + * other macro, the recording is stopped. Apart from this, there + * are no arbitrary limits for the macros' length in relation to + * each other: for example one can either have two medium sized + * macros or one long macro and one short macro. Or even one empty + * and one using the whole buffer. + */ + static keyrecord_t macro_buffer[DYNAMIC_MACRO_SIZE]; + + /* Pointer to the first buffer element after the first macro. + * Initially points to the very beginning of the buffer since the + * macro is empty. */ + static keyrecord_t *macro_end = macro_buffer; + + /* The other end of the macro buffer. Serves as the beginning of + * the second macro. */ + static keyrecord_t *const r_macro_buffer = macro_buffer + DYNAMIC_MACRO_SIZE - 1; + + /* Like macro_end but for the second macro. */ + static keyrecord_t *r_macro_end = r_macro_buffer; + + /* A persistent pointer to the current macro position (iterator) + * used during the recording. */ + static keyrecord_t *macro_pointer = NULL; + + /* 0 - no macro is being recorded right now + * 1,2 - either macro 1 or 2 is being recorded */ + static uint8_t macro_id = 0; + + if (macro_id == 0) { + /* No macro recording in progress. */ + if (!record->event.pressed) { + switch (keycode) { + case DYN_REC_START1: + dynamic_macro_record_start(¯o_pointer, macro_buffer); + macro_id = 1; + return false; + case DYN_REC_START2: + dynamic_macro_record_start(¯o_pointer, r_macro_buffer); + macro_id = 2; + return false; + case DYN_MACRO_PLAY1: + dynamic_macro_play(macro_buffer, macro_end, +1); + return false; + case DYN_MACRO_PLAY2: + dynamic_macro_play(r_macro_buffer, r_macro_end, -1); + return false; + } + } + } else { + /* A macro is being recorded right now. */ + switch (keycode) { + case MO(_DYN): + /* Use the layer key used to access the macro recording as + * a stop button. */ + if (record->event.pressed) { /* Ignore the initial release + * just after the recoding + * starts. */ + switch (macro_id) { + case 1: + dynamic_macro_record_end(macro_pointer, ¯o_end); + break; + case 2: + dynamic_macro_record_end(macro_pointer, &r_macro_end); + break; + } + macro_id = 0; + } + return false; + default: + /* Store the key in the macro buffer and process it normally. */ + switch (macro_id) { + case 1: + dynamic_macro_record_key(¯o_pointer, r_macro_end, +1, record); + break; + case 2: + dynamic_macro_record_key(¯o_pointer, macro_end, -1, record); + break; + } + return true; + break; + } + } + + return true; +} + +#endif diff --git a/quantum/keymap.h b/quantum/keymap.h index a15865183..f2d94d75c 100644 --- a/quantum/keymap.h +++ b/quantum/keymap.h @@ -156,16 +156,16 @@ enum quantum_keycodes { BL_INC, BL_TOGG, BL_STEP, - - // RGB functionality - RGB_TOG, - RGB_MOD, - RGB_HUI, - RGB_HUD, - RGB_SAI, - RGB_SAD, - RGB_VAI, - RGB_VAD, + + // RGB functionality + RGB_TOG, + RGB_MOD, + RGB_HUI, + RGB_HUD, + RGB_SAI, + RGB_SAD, + RGB_VAI, + RGB_VAD, // Left shift, open paren KC_LSPO, @@ -309,7 +309,7 @@ enum quantum_keycodes { #define OSL(layer) (layer | QK_ONE_SHOT_LAYER) // One-shot mod -#define OSM(layer) (layer | QK_ONE_SHOT_MOD) +#define OSM(mod) (mod | QK_ONE_SHOT_MOD) // M-od, T-ap - 256 keycode max #define MT(mod, kc) (kc | QK_MOD_TAP | ((mod & 0xF) << 8)) diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 5429e3438..07de3ecb8 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -1,26 +1,16 @@ #include "quantum.h" +#include "action_tapping.h" -static qk_tap_dance_state_t qk_tap_dance_state; -bool td_debug_enable = false; - -#if CONSOLE_ENABLE -#define td_debug(s) if (td_debug_enable) \ - { \ - xprintf ("D:tap_dance:%s:%s = { keycode = %d, count = %d, active = %d, pressed = %d }\n", __FUNCTION__, s, \ - qk_tap_dance_state.keycode, qk_tap_dance_state.count, \ - qk_tap_dance_state.active, qk_tap_dance_state.pressed); \ - } -#else -#define td_debug(s) -#endif +static uint16_t last_td; +static int8_t highest_td = -1; void qk_tap_dance_pair_finished (qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; if (state->count == 1) { - register_code (pair->kc1); + register_code16 (pair->kc1); } else if (state->count == 2) { - register_code (pair->kc2); + register_code16 (pair->kc2); } } @@ -28,105 +18,117 @@ void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; if (state->count == 1) { - unregister_code (pair->kc1); + unregister_code16 (pair->kc1); } else if (state->count == 2) { - unregister_code (pair->kc2); + unregister_code16 (pair->kc2); } } static inline void _process_tap_dance_action_fn (qk_tap_dance_state_t *state, - void *user_data, - qk_tap_dance_user_fn_t fn) + void *user_data, + qk_tap_dance_user_fn_t fn) { if (fn) { fn(state, user_data); } } -static inline void process_tap_dance_action_on_each_tap (qk_tap_dance_action_t action) +static inline void process_tap_dance_action_on_each_tap (qk_tap_dance_action_t *action) { - td_debug("trigger"); - _process_tap_dance_action_fn (&qk_tap_dance_state, action.user_data, action.fn.on_each_tap); + _process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_each_tap); } -static inline void process_tap_dance_action_on_dance_finished (qk_tap_dance_action_t action) +static inline void process_tap_dance_action_on_dance_finished (qk_tap_dance_action_t *action) { - td_debug("trigger"); - _process_tap_dance_action_fn (&qk_tap_dance_state, action.user_data, action.fn.on_dance_finished); + if (action->state.finished) + return; + action->state.finished = true; + _process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_dance_finished); } -static inline void process_tap_dance_action_on_reset (qk_tap_dance_action_t action) +static inline void process_tap_dance_action_on_reset (qk_tap_dance_action_t *action) { - td_debug("trigger") - _process_tap_dance_action_fn (&qk_tap_dance_state, action.user_data, action.fn.on_reset); + _process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_reset); } bool process_tap_dance(uint16_t keycode, keyrecord_t *record) { - bool r = true; uint16_t idx = keycode - QK_TAP_DANCE; - qk_tap_dance_action_t action; + qk_tap_dance_action_t *action; + + if (last_td && last_td != keycode) { + (&tap_dance_actions[last_td - QK_TAP_DANCE])->state.interrupted = true; + } switch(keycode) { case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: - action = tap_dance_actions[idx]; - - process_tap_dance_action_on_each_tap (action); - if (qk_tap_dance_state.keycode && qk_tap_dance_state.keycode != keycode) { - process_tap_dance_action_on_dance_finished (action); - } else if (qk_tap_dance_state.active && qk_tap_dance_state.pressed) { - reset_tap_dance (&qk_tap_dance_state); - } else { - r = false; - } + if ((int16_t)idx > highest_td) + highest_td = idx; + action = &tap_dance_actions[idx]; - qk_tap_dance_state.active = true; - qk_tap_dance_state.pressed = record->event.pressed; + action->state.keycode = keycode; + action->state.pressed = record->event.pressed; if (record->event.pressed) { - qk_tap_dance_state.keycode = keycode; - qk_tap_dance_state.timer = timer_read (); - qk_tap_dance_state.count++; + action->state.count++; + action->state.timer = timer_read(); + + if (last_td && last_td != keycode) { + qk_tap_dance_action_t *paction = &tap_dance_actions[last_td - QK_TAP_DANCE]; + paction->state.interrupted = true; + process_tap_dance_action_on_dance_finished (paction); + reset_tap_dance (&paction->state); + } } + last_td = keycode; + break; default: - if (qk_tap_dance_state.keycode) { - // if we are here, the tap dance was interrupted by a different key - idx = qk_tap_dance_state.keycode - QK_TAP_DANCE; - action = tap_dance_actions[idx]; + if (!record->event.pressed) + return true; + + if (highest_td == -1) + return true; - process_tap_dance_action_on_each_tap (action); + for (int i = 0; i <= highest_td; i++) { + action = &tap_dance_actions[i]; + if (action->state.count == 0) + continue; + action->state.interrupted = true; process_tap_dance_action_on_dance_finished (action); - reset_tap_dance (&qk_tap_dance_state); - qk_tap_dance_state.active = false; + reset_tap_dance (&action->state); } break; } - return r; + return true; } void matrix_scan_tap_dance () { - if (qk_tap_dance_state.active && timer_elapsed (qk_tap_dance_state.timer) > TAPPING_TERM) { - // if we are here, the tap dance was timed out - uint16_t idx = qk_tap_dance_state.keycode - QK_TAP_DANCE; - qk_tap_dance_action_t action = tap_dance_actions[idx]; + if (highest_td == -1) + return; + + for (int i = 0; i <= highest_td; i++) { + qk_tap_dance_action_t *action = &tap_dance_actions[i]; - process_tap_dance_action_on_dance_finished (action); - reset_tap_dance (&qk_tap_dance_state); + if (action->state.count && timer_elapsed (action->state.timer) > TAPPING_TERM) { + process_tap_dance_action_on_dance_finished (action); + reset_tap_dance (&action->state); + } } } void reset_tap_dance (qk_tap_dance_state_t *state) { - uint16_t idx = state->keycode - QK_TAP_DANCE; - qk_tap_dance_action_t action; + qk_tap_dance_action_t *action; if (state->pressed) return; - action = tap_dance_actions[idx]; + action = &tap_dance_actions[state->keycode - QK_TAP_DANCE]; + process_tap_dance_action_on_reset (action); - state->keycode = 0; state->count = 0; - state->active = false; + state->interrupted = false; + state->finished = false; + last_td = 0; } diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index 6a1258067..d7b857bdc 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -11,8 +11,9 @@ typedef struct uint8_t count; uint16_t keycode; uint16_t timer; - bool active:1; - bool pressed:1; + bool interrupted; + bool pressed; + bool finished; } qk_tap_dance_state_t; #define TD(n) (QK_TAP_DANCE + n) @@ -26,6 +27,7 @@ typedef struct qk_tap_dance_user_fn_t on_dance_finished; qk_tap_dance_user_fn_t on_reset; } fn; + qk_tap_dance_state_t state; void *user_data; } qk_tap_dance_action_t; @@ -48,8 +50,7 @@ typedef struct .fn = { user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_reset } \ } -extern const qk_tap_dance_action_t tap_dance_actions[]; -extern bool td_debug_enable; +extern qk_tap_dance_action_t tap_dance_actions[]; /* To be used internally */ diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index ad5d7f86b..06c1694f2 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -13,45 +13,196 @@ uint16_t hex_to_keycode(uint8_t hex) } } -void set_unicode_mode(uint8_t os_target) +void set_unicode_input_mode(uint8_t os_target) { input_mode = os_target; } +__attribute__((weak)) +void unicode_input_start (void) { + switch(input_mode) { + case UC_OSX: + register_code(KC_LALT); + break; + case UC_LNX: + register_code(KC_LCTL); + register_code(KC_LSFT); + register_code(KC_U); + unregister_code(KC_U); + unregister_code(KC_LSFT); + unregister_code(KC_LCTL); + break; + case UC_WIN: + register_code(KC_LALT); + register_code(KC_PPLS); + unregister_code(KC_PPLS); + break; + } + wait_ms(UNICODE_TYPE_DELAY); +} + +__attribute__((weak)) +void unicode_input_finish (void) { + switch(input_mode) { + case UC_OSX: + case UC_WIN: + unregister_code(KC_LALT); + break; + case UC_LNX: + register_code(KC_SPC); + unregister_code(KC_SPC); + break; + } +} + +void register_hex(uint16_t hex) { + for(int i = 3; i >= 0; i--) { + uint8_t digit = ((hex >> (i*4)) & 0xF); + register_code(hex_to_keycode(digit)); + unregister_code(hex_to_keycode(digit)); + } +} + bool process_unicode(uint16_t keycode, keyrecord_t *record) { if (keycode > QK_UNICODE && record->event.pressed) { uint16_t unicode = keycode & 0x7FFF; - switch(input_mode) { - case UC_OSX: - register_code(KC_LALT); - break; - case UC_LNX: - register_code(KC_LCTL); - register_code(KC_LSFT); - register_code(KC_U); - unregister_code(KC_U); - break; - case UC_WIN: - register_code(KC_LALT); - register_code(KC_PPLS); - unregister_code(KC_PPLS); - break; + unicode_input_start(); + register_hex(unicode); + unicode_input_finish(); + } + return true; +} + +#ifdef UCIS_ENABLE +qk_ucis_state_t qk_ucis_state; + +void qk_ucis_start(void) { + qk_ucis_state.count = 0; + qk_ucis_state.in_progress = true; + + qk_ucis_start_user(); +} + +__attribute__((weak)) +void qk_ucis_start_user(void) { + unicode_input_start(); + register_hex(0x2328); + unicode_input_finish(); +} + +static bool is_uni_seq(char *seq) { + uint8_t i; + + for (i = 0; seq[i]; i++) { + uint16_t code; + if (('1' <= seq[i]) && (seq[i] <= '0')) + code = seq[i] - '1' + KC_1; + else + code = seq[i] - 'a' + KC_A; + + if (i > qk_ucis_state.count || qk_ucis_state.codes[i] != code) + return false; + } + + return (qk_ucis_state.codes[i] == KC_ENT || + qk_ucis_state.codes[i] == KC_SPC); +} + +__attribute__((weak)) +void qk_ucis_symbol_fallback (void) { + for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) { + uint8_t code = qk_ucis_state.codes[i]; + register_code(code); + unregister_code(code); + wait_ms(UNICODE_TYPE_DELAY); + } +} + +void register_ucis(const char *hex) { + for(int i = 0; hex[i]; i++) { + uint8_t kc = 0; + char c = hex[i]; + + switch (c) { + case '0': + kc = KC_0; + break; + case '1' ... '9': + kc = c - '1' + KC_1; + break; + case 'a' ... 'f': + kc = c - 'a' + KC_A; + break; + case 'A' ... 'F': + kc = c - 'A' + KC_A; + break; } - for(int i = 3; i >= 0; i--) { - uint8_t digit = ((unicode >> (i*4)) & 0xF); - register_code(hex_to_keycode(digit)); - unregister_code(hex_to_keycode(digit)); + + if (kc) { + register_code (kc); + unregister_code (kc); + wait_ms (UNICODE_TYPE_DELAY); } - switch(input_mode) { - case UC_OSX: - case UC_WIN: - unregister_code(KC_LALT); - break; - case UC_LNX: - unregister_code(KC_LCTL); - unregister_code(KC_LSFT); + } +} + +bool process_ucis (uint16_t keycode, keyrecord_t *record) { + uint8_t i; + + if (!qk_ucis_state.in_progress) + return true; + + if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && + !(keycode == KC_BSPC || keycode == KC_ESC || keycode == KC_SPC || keycode == KC_ENT)) { + return false; + } + + if (!record->event.pressed) + return true; + + qk_ucis_state.codes[qk_ucis_state.count] = keycode; + qk_ucis_state.count++; + + if (keycode == KC_BSPC) { + if (qk_ucis_state.count >= 2) { + qk_ucis_state.count -= 2; + return true; + } else { + qk_ucis_state.count--; + return false; + } + } + + if (keycode == KC_ENT || keycode == KC_SPC || keycode == KC_ESC) { + bool symbol_found = false; + + for (i = qk_ucis_state.count; i > 0; i--) { + register_code (KC_BSPC); + unregister_code (KC_BSPC); + wait_ms(UNICODE_TYPE_DELAY); + } + + if (keycode == KC_ESC) { + qk_ucis_state.in_progress = false; + return false; + } + + unicode_input_start(); + for (i = 0; ucis_symbol_table[i].symbol; i++) { + if (is_uni_seq (ucis_symbol_table[i].symbol)) { + symbol_found = true; + register_ucis(ucis_symbol_table[i].code + 2); break; + } } + if (!symbol_found) { + qk_ucis_symbol_fallback(); + } + unicode_input_finish(); + + qk_ucis_state.in_progress = false; + return false; } return true; -}
\ No newline at end of file +} +#endif diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h index ca17f8f66..02ce3dd7e 100644 --- a/quantum/process_keycode/process_unicode.h +++ b/quantum/process_keycode/process_unicode.h @@ -8,10 +8,48 @@ #define UC_WIN 2 #define UC_BSD 3 +#ifndef UNICODE_TYPE_DELAY +#define UNICODE_TYPE_DELAY 10 +#endif + void set_unicode_input_mode(uint8_t os_target); +void unicode_input_start(void); +void unicode_input_finish(void); +void register_hex(uint16_t hex); bool process_unicode(uint16_t keycode, keyrecord_t *record); +#ifdef UCIS_ENABLE +#ifndef UCIS_MAX_SYMBOL_LENGTH +#define UCIS_MAX_SYMBOL_LENGTH 32 +#endif + +typedef struct { + char *symbol; + char *code; +} qk_ucis_symbol_t; + +typedef struct { + uint8_t count; + uint16_t codes[UCIS_MAX_SYMBOL_LENGTH]; + bool in_progress:1; +} qk_ucis_state_t; + +extern qk_ucis_state_t qk_ucis_state; + +#define UCIS_TABLE(...) {__VA_ARGS__, {NULL, NULL}} +#define UCIS_SYM(name, code) {name, #code} + +extern const qk_ucis_symbol_t ucis_symbol_table[]; + +void qk_ucis_start(void); +void qk_ucis_start_user(void); +void qk_ucis_symbol_fallback (void); +void register_ucis(const char *hex); +bool process_ucis (uint16_t keycode, keyrecord_t *record); + +#endif + #define UC_BSPC UC(0x0008) #define UC_SPC UC(0x0020) @@ -119,4 +157,4 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record); #define UC_TILD UC(0x007E) #define UC_DEL UC(0x007F) -#endif
\ No newline at end of file +#endif diff --git a/quantum/quantum.c b/quantum/quantum.c index bc2da510f..e3a20f43e 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1,5 +1,42 @@ #include "quantum.h" +static void do_code16 (uint16_t code, void (*f) (uint8_t)) { + switch (code) { + case QK_MODS ... QK_MODS_MAX: + break; + default: + return; + } + + if (code & QK_LCTL) + f(KC_LCTL); + if (code & QK_LSFT) + f(KC_LSFT); + if (code & QK_LALT) + f(KC_LALT); + if (code & QK_LGUI) + f(KC_LGUI); + + if (code & QK_RCTL) + f(KC_RCTL); + if (code & QK_RSFT) + f(KC_RSFT); + if (code & QK_RALT) + f(KC_RALT); + if (code & QK_RGUI) + f(KC_RGUI); +} + +void register_code16 (uint16_t code) { + do_code16 (code, register_code); + register_code (code); +} + +void unregister_code16 (uint16_t code) { + unregister_code (code); + do_code16 (code, unregister_code); +} + __attribute__ ((weak)) bool process_action_kb(keyrecord_t *record) { return true; @@ -46,18 +83,20 @@ bool process_record_quantum(keyrecord_t *record) { uint16_t keycode; #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) - uint8_t layer; + /* TODO: Use store_or_get_action() or a similar function. */ + if (!disable_action_cache) { + uint8_t layer; - if (record->event.pressed) { - layer = layer_switch_get_layer(key); - update_source_layers_cache(key, layer); - } else { - layer = read_source_layers_cache(key); - } - keycode = keymap_key_to_keycode(layer, key); - #else - keycode = keymap_key_to_keycode(layer_switch_get_layer(key), key); + if (record->event.pressed) { + layer = layer_switch_get_layer(key); + update_source_layers_cache(key, layer); + } else { + layer = read_source_layers_cache(key); + } + keycode = keymap_key_to_keycode(layer, key); + } else #endif + keycode = keymap_key_to_keycode(layer_switch_get_layer(key), key); // This is how you use actions here // if (keycode == KC_LEAD) { @@ -87,6 +126,9 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef UNICODE_ENABLE process_unicode(keycode, record) && #endif + #ifdef UCIS_ENABLE + process_ucis(keycode, record) && + #endif true)) { return false; } diff --git a/quantum/quantum.h b/quantum/quantum.h index 6e3fbcc79..0c6046649 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -83,6 +83,9 @@ void reset_keyboard(void); void startup_user(void); void shutdown_user(void); +void register_code16 (uint16_t code); +void unregister_code16 (uint16_t code); + #ifdef BACKLIGHT_ENABLE void backlight_init_ports(void); @@ -13,7 +13,7 @@ For an easy-to-read version of this document and the repository, check out [http * [Planck](/keyboards/planck/) * [Preonic](/keyboards/preonic/) * [Atomic](/keyboards/atomic/) -* [ErgoDox EZ](/keyboards/ergodox_ez/) +* [ErgoDox EZ](/keyboards/ergodox/) * [Clueboard](/keyboards/clueboard/) * [Cluepad](/keyboards/cluepad/) @@ -31,7 +31,7 @@ The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/j This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest: -* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox_ez/); for the Planck, it's [here](keyboards/planck/) and so on. +* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. * The list of possible keycodes you can use in your keymap is actually spread out in a few different places: * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. * [quantum/keymap.h](quantum/keymap.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `keymap.h` is where they're actually defined. @@ -43,6 +43,29 @@ Before you are able to compile, you'll need to install an environment for AVR de ## Build Environment Setup +### Windows 10 + +It's still recommended to use the method for Vista and later below. The reason for this is that the Windows 10 Subsystem for Linux lacks [USB support](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13355724-unable-to-access-usb-devices-from-bash), so it's not possible to flash the firmware to the keyboard. Please add your vote to the link! + +That said, it's still possible to use it for compilation. And recommended, if you need to compile much, since it's much faster than at least Cygwin (which is also supported, but currently lacking documentation). I haven't tried the method below, so I'm unable to tell. + +Here are the steps + +1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). +2. If you have previously cloned the repository using the normal Git bash, you will need to clean up the line endings. If you have cloned it after 20th of August 2016, you are likely fine. To clean up the line endings do the following + 1. Make sure that you have no changes you haven't committed by running `git status`, if you do commit them first + 2. From within the Git bash run ´git rm --cached -r .` + 3. Followed by `git reset --hard` +3. Start the "Bash On Ubuntu On Windows" from the start menu +4. With the bash open, navigate to your git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. +5. Run `sudo util/install_dependencies.sh`. +6. After a while the installation will finish, and you are good to go + +**Note** From time to time, the dependencies might change, so just run `install_dependencies.sh` again if things are not working. + +**Warning:** If you edit Makefiles or shell scripts, make sure you are using an editor that saves the files with Unix line endings. Otherwise the compilation might not work. + + ### Windows (Vista and later) 1. If you have ever installed WinAVR, uninstall it. 2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. @@ -68,12 +91,36 @@ You can also try these instructions: 3. Install [DFU-Programmer][dfu-prog]. ### Linux -Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager. + +To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed. + +You can also install things manually, but this documentation might not be always up to date with all requirements. + +The current requirements are the following, but not all might be needed depending on what you do. Also note that some systems might not have all the dependencies available as packages, or they might be named differently. + +``` +build-essential +gcc +unzip +wget +zip +gcc-avr +binutils-avr +avr-libc +dfu-programmer +dfu-util +gcc-arm-none-eabi +binutils-arm-none-eabi +libnewlib-arm-none-eabi +git +``` + +Install the dependencies with your favorite package manager. Debian/Ubuntu example: sudo apt-get update - sudo apt-get install gcc-avr avr-libc dfu-programmer + sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi ### Docker @@ -431,7 +478,7 @@ enum { }; //Tap Dance Definitions -const qk_tap_dance_action_t tap_dance_actions[] = { +qk_tap_dance_action_t tap_dance_actions[] = { //Tap once for Esc, twice for Caps Lock [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) // Other declarations would go here, separated by commas, if you have them @@ -517,7 +564,7 @@ void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) { ergodox_right_led_3_off(); } -const qk_tap_dance_action_t tap_dance_actions[] = { +qk_tap_dance_action_t tap_dance_actions[] = { [CT_SE] = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT) ,[CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset) ,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg) @@ -695,6 +742,53 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) And then, to assign this macro to a key on your keyboard layout, you just use `M(0)` on the key you want to press for copy/paste. +## Dynamic macros: record and replay macros in runtime + +In addition to the static macros described above, you may enable the dynamic macros which you may record while writing. They are forgotten as soon as the keyboard is unplugged. Only two such macros may be stored at the same time, with the total length of 128 keypresses. + +To enable them, first add a new element to the `planck_keycodes` enum -- `DYNAMIC_MACRO_RANGE`: + + enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV, + DYNAMIC_MACRO_RANGE, + }; + +Afterwards create a new layer called `_DYN`: + + #define _DYN 6 /* almost any other free number should be ok */ + +Below these two modifications include the `dynamic_macro.h` header: + + #include "dynamic_macro.h"` + +Then define the `_DYN` layer with the following keys: `DYN_REC_START1`, `DYN_MACRO_PLAY1`,`DYN_REC_START2` and `DYN_MACRO_PLAY2`. It may also contain other keys, it doesn't matter apart from the fact that you won't be able to record these keys in the dynamic macros. + + [_DYN]= { + {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + }, + +Add the following code to the very beginning of your `process_record_user()` function: + + if (!process_record_dynamic_macro(keycode, record)) { + return false; + } + +To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`. To finish the recording, press the `_DYN` layer button. The handler awaits specifically for the `MO(_DYN)` keycode as the "stop signal" so please don't use any fancy ways to access this layer, use the regular `MO()` modifier. To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`. + +If the LED-s start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by setting the `DYNAMIC_MACRO_SIZE` preprocessor macro (default value: 256; please read the comments for it in the header). + +For the details about the internals of the dynamic macros, please read the comments in the `dynamic_macro.h` header. + ## Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: diff --git a/tmk_core/common.mk b/tmk_core/common.mk index aa05b9491..429c57143 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -85,6 +85,10 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) OPT_DEFS += -DBLUETOOTH_ENABLE endif +ifeq ($(strip $(ONEHAND_ENABLE)), yes) + OPT_DEFS += -DONEHAND_ENABLE +endif + ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) OPT_DEFS += -DKEYMAP_SECTION_ENABLE diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index be6dea2b7..08ef22eb9 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -41,6 +41,12 @@ void action_exec(keyevent_t event) dprint("EVENT: "); debug_event(event); dprintln(); } +#ifdef ONEHAND_ENABLE + if (!IS_NOEVENT(event)) { + process_hand_swap(&event); + } +#endif + keyrecord_t record = { .event = event }; #ifndef NO_ACTION_TAPPING @@ -53,6 +59,26 @@ void action_exec(keyevent_t event) #endif } +#ifdef ONEHAND_ENABLE +bool swap_hands = false; + +void process_hand_swap(keyevent_t *event) { + static swap_state_row_t swap_state[MATRIX_ROWS]; + + keypos_t pos = event->key; + swap_state_row_t col_bit = (swap_state_row_t)1<<pos.col; + bool do_swap = event->pressed ? swap_hands : + swap_state[pos.row] & (col_bit); + + if (do_swap) { + event->key = hand_swap_config[pos.row][pos.col]; + swap_state[pos.row] |= col_bit; + } else { + swap_state[pos.row] &= ~(col_bit); + } +} +#endif + #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) bool disable_action_cache = false; @@ -440,6 +466,54 @@ void process_action(keyrecord_t *record, action_t action) #endif case ACT_COMMAND: break; +#ifdef ONEHAND_ENABLE + case ACT_SWAP_HANDS: + switch (action.swap.code) { + case OP_SH_TOGGLE: + if (event.pressed) { + swap_hands = !swap_hands; + } + break; + case OP_SH_ON_OFF: + swap_hands = event.pressed; + break; + case OP_SH_OFF_ON: + swap_hands = !event.pressed; + break; + case OP_SH_ON: + if (!event.pressed) { + swap_hands = true; + } + break; + case OP_SH_OFF: + if (!event.pressed) { + swap_hands = false; + } + break; + #ifndef NO_ACTION_TAPPING + case OP_SH_TAP_TOGGLE: + /* tap toggle */ + if (tap_count > 0) { + if (!event.pressed) { + swap_hands = !swap_hands; + } + } else { + swap_hands = event.pressed; + } + break; + default: + if (tap_count > 0) { + if (event.pressed) { + register_code(action.swap.code); + } else { + unregister_code(action.swap.code); + } + } else { + swap_hands = event.pressed; + } + #endif + } +#endif #ifndef NO_ACTION_FUNCTION case ACT_FUNCTION: action_function(record, action.func.id, action.func.opt); @@ -652,6 +726,13 @@ bool is_tap_key(keypos_t key) return true; } return false; + case ACT_SWAP_HANDS: + switch (action.swap.code) { + case 0x00 ... 0xdf: + case OP_SH_TAP_TOGGLE: + return true; + } + return false; case ACT_MACRO: case ACT_FUNCTION: if (action.func.opt & FUNC_TAP) { return true; } @@ -692,6 +773,7 @@ void debug_action(action_t action) case ACT_MACRO: dprint("ACT_MACRO"); break; case ACT_COMMAND: dprint("ACT_COMMAND"); break; case ACT_FUNCTION: dprint("ACT_FUNCTION"); break; + case ACT_SWAP_HANDS: dprint("ACT_SWAP_HANDS"); break; default: dprint("UNKNOWN"); break; } dprintf("[%X:%02X]", action.kind.param>>8, action.kind.param&0xff); diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h index e8aa12a7c..b9bdfe642 100644 --- a/tmk_core/common/action.h +++ b/tmk_core/common/action.h @@ -65,6 +65,24 @@ bool process_record_quantum(keyrecord_t *record); #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) extern bool disable_action_cache; #endif + +/* Code for handling one-handed key modifiers. */ +#ifdef ONEHAND_ENABLE +extern bool swap_hands; +extern const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS]; +#if (MATRIX_COLS <= 8) +typedef uint8_t swap_state_row_t; +#elif (MATRIX_COLS <= 16) +typedef uint16_t swap_state_row_t; +#elif (MATRIX_COLS <= 32) +typedef uint32_t swap_state_row_t; +#else +#error "MATRIX_COLS: invalid value" +#endif + +void process_hand_swap(keyevent_t *record); +#endif + void process_record_nocache(keyrecord_t *record); void process_record(keyrecord_t *record); void process_action(keyrecord_t *record, action_t action); diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index ca729aaec..33da35f35 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -108,6 +108,8 @@ enum action_kind_id { /* Other Keys */ ACT_USAGE = 0b0100, ACT_MOUSEKEY = 0b0101, + /* One-hand Support */ + ACT_SWAP_HANDS = 0b0110, /* Layer Actions */ ACT_LAYER = 0b1000, ACT_LAYER_TAP = 0b1010, /* Layer 0-15 */ @@ -178,6 +180,11 @@ typedef union { uint8_t opt :4; uint8_t kind :4; } func; + struct action_swap { + uint8_t code :8; + uint8_t opt :4; + uint8_t kind :4; + } swap; } action_t; @@ -295,6 +302,7 @@ enum backlight_opt { BACKLIGHT_STEP = 3, BACKLIGHT_LEVEL = 4, }; + /* Macro */ #define ACTION_MACRO(id) ACTION(ACT_MACRO, (id)) #define ACTION_MACRO_TAP(id) ACTION(ACT_MACRO, FUNC_TAP<<8 | (id)) @@ -306,7 +314,7 @@ enum backlight_opt { #define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8) #define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | (level)) /* Command */ -#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (addr)) +#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (id)) /* Function */ enum function_opts { FUNC_TAP = 0x8, /* indciates function is tappable */ @@ -314,5 +322,23 @@ enum function_opts { #define ACTION_FUNCTION(id) ACTION(ACT_FUNCTION, (id)) #define ACTION_FUNCTION_TAP(id) ACTION(ACT_FUNCTION, FUNC_TAP<<8 | (id)) #define ACTION_FUNCTION_OPT(id, opt) ACTION(ACT_FUNCTION, (opt)<<8 | (id)) +/* OneHand Support */ +enum swap_hands_pram_tap_op { + OP_SH_TOGGLE = 0xF0, + OP_SH_TAP_TOGGLE, + OP_SH_ON_OFF, + OP_SH_OFF_ON, + OP_SH_OFF, + OP_SH_ON, +}; + +#define ACTION_SWAP_HANDS() ACTION_SWAP_HANDS_ON_OFF() +#define ACTION_SWAP_HANDS_TOGGLE() ACTION(ACT_SWAP_HANDS, OP_SH_TOGGLE) +#define ACTION_SWAP_HANDS_TAP_TOGGLE() ACTION(ACT_SWAP_HANDS, OP_SH_TAP_TOGGLE) +#define ACTION_SWAP_HANDS_TAP_KEY(key) ACTION(ACT_SWAP_HANDS, key) +#define ACTION_SWAP_HANDS_ON_OFF() ACTION(ACT_SWAP_HANDS, OP_SH_ON_OFF) +#define ACTION_SWAP_HANDS_OFF_ON() ACTION(ACT_SWAP_HANDS, OP_SH_OFF_ON) +#define ACTION_SWAP_HANDS_ON() ACTION(ACT_SWAP_HANDS, OP_SH_ON) +#define ACTION_SWAP_HANDS_OFF() ACTION(ACT_SWAP_HANDS, OP_SH_OFF) #endif /* ACTION_CODE_H */ diff --git a/tmk_core/common/virtser.h b/tmk_core/common/virtser.h new file mode 100644 index 000000000..74891b6ae --- /dev/null +++ b/tmk_core/common/virtser.h @@ -0,0 +1,10 @@ +#ifndef _VIRTSER_H_ +#define _VIRTSER_H_ + +/* Define this function in your code to process incoming bytes */ +void virtser_recv(const uint8_t ch); + +/* Call this to send a character over the Virtual Serial Device */ +void virtser_send(const uint8_t byte); + +#endif diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 0eeace44e..5b1e3d19d 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -26,6 +26,10 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) $(TMK_DIR)/protocol/serial_uart.c endif +ifeq ($(strip $(VIRTSER_ENABLE)), yes) + LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c +endif + SRC += $(LUFA_SRC) # Search Path diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/mshelp/placeholder.txt b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/mshelp/placeholder.txt index 486e9a427..a34fd58df 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/mshelp/placeholder.txt +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/mshelp/placeholder.txt @@ -1 +1 @@ -Copy the Microsoft HV1 Docbook transform contents into this directory (i.e. with the XSLT files in the current folder). The HV1 transform proposal can be found at http://sourceforge.net/tracker/?func=detail&aid=3610290&group_id=21935&atid=373750 .
+Copy the Microsoft HV1 Docbook transform contents into this directory (i.e. with the XSLT files in the current folder). The HV1 transform proposal can be found at http://sourceforge.net/tracker/?func=detail&aid=3610290&group_id=21935&atid=373750 . diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/placeholder.txt b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/placeholder.txt index c017acfd7..dd69b7e0b 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/placeholder.txt +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/Docbook/placeholder.txt @@ -1 +1 @@ -Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ .
+Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ . diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt index ee8a38340..8aa4a9413 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_hv1_transform.xslt @@ -1,45 +1,45 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
- <xsl:import href="../Docbook/mshelp/docbook.xsl"/>
-
- <xsl:output method="xml" indent="no"/>
-
- <xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">
- <span class="hl-keyword" style="color: #0079C1">
- <xsl:apply-templates/>
- </span>
- </xsl:template>
-
- <xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">
- <span class="hl-string" style="color: #800000">
- <xsl:apply-templates/>
- </span>
- </xsl:template>
-
- <xsl:template match="emphasis[@role = 'comment']">
- <em class="hl-comment" style="color: #008000">
- <xsl:apply-templates/>
- </em>
- </xsl:template>
-
- <xsl:template match="emphasis[@role = 'preprocessor']">
- <span class="hl-preprocessor" style="color: #A000A0">
- <xsl:apply-templates/>
- </span>
- </xsl:template>
-
- <xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">
- <xsl:apply-templates />
- </xsl:template>
-
-</xsl:stylesheet>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file --> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + + <xsl:import href="../Docbook/mshelp/docbook.xsl"/> + + <xsl:output method="xml" indent="no"/> + + <xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']"> + <span class="hl-keyword" style="color: #0079C1"> + <xsl:apply-templates/> + </span> + </xsl:template> + + <xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']"> + <span class="hl-string" style="color: #800000"> + <xsl:apply-templates/> + </span> + </xsl:template> + + <xsl:template match="emphasis[@role = 'comment']"> + <em class="hl-comment" style="color: #008000"> + <xsl:apply-templates/> + </em> + </xsl:template> + + <xsl:template match="emphasis[@role = 'preprocessor']"> + <span class="hl-preprocessor" style="color: #A000A0"> + <xsl:apply-templates/> + </span> + </xsl:template> + + <xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]"> + <xsl:apply-templates /> + </xsl:template> + +</xsl:stylesheet> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css index 49eb7e970..0b6ccbd8c 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/HV1/lufa_studio_help_styling.css @@ -1,53 +1,53 @@ -/*
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-.programlisting {
- display: block;
- margin-left: 15px;
- padding: 10px;
- background-color: #f4f4f4;
- border: 1px solid #aaaaaa;
- font-family: "Consolas", "Courier New", sans-serif;
- }
-
- code {
- background-color: #f4f4f4;
- font-family: "Consolas", "Courier New", sans-serif;
- }
-
-.note, .warning, .tip {
- display: block;
- margin-left: 15px;
- padding-left: 10px;
- padding-bottom: 5px;
- background-color: #f4f4f4;
- border: 1px solid #aaaaaa;
-}
-
-table {
- border: 1px solid #aaaaaa;
- border-collapse: collapse;
- margin-left: 15px;
- font-size: 10pt;
-}
-
-table thead {
- background-color: #f4f4f4;
-}
-
-table thead th {
- padding: 5px;
-}
-
-table tbody td {
- padding: 5px;
-}
-
-ul {
- padding-left: 20px;
-}
+/* + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +.programlisting { + display: block; + margin-left: 15px; + padding: 10px; + background-color: #f4f4f4; + border: 1px solid #aaaaaa; + font-family: "Consolas", "Courier New", sans-serif; + } + + code { + background-color: #f4f4f4; + font-family: "Consolas", "Courier New", sans-serif; + } + +.note, .warning, .tip { + display: block; + margin-left: 15px; + padding-left: 10px; + padding-bottom: 5px; + background-color: #f4f4f4; + border: 1px solid #aaaaaa; +} + +table { + border: 1px solid #aaaaaa; + border-collapse: collapse; + margin-left: 15px; + font-size: 10pt; +} + +table thead { + background-color: #f4f4f4; +} + +table thead th { + padding: 5px; +} + +table tbody td { + padding: 5px; +} + +ul { + padding-left: 20px; +} diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/[Content_Types].xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/[Content_Types].xml index 05ef8b6ba..112d16994 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/[Content_Types].xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/[Content_Types].xml @@ -1,13 +1,13 @@ -<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
- <Default Extension="vsixmanifest" ContentType="text/xml"/>
- <Default Extension="cache" ContentType="text/xml"/>
- <Default Extension="png" ContentType="application/octet-stream"/>
- <Default Extension="txt" ContentType="text/plain"/>
- <Default Extension="xml" ContentType="text/xml"/>
- <Default Extension="zip" ContentType="application/octet-stream"/>
- <Default Extension="dll" ContentType="application/octet-stream" />
- <Default Extension="pkgdef" ContentType="text/plain" />
- <Default Extension="htm" ContentType="text/html" />
- <Default Extension="msha" ContentType="text/html" />
- <Default Extension="mshc" ContentType="application/octet-stream"/>
-</Types>
+<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> + <Default Extension="vsixmanifest" ContentType="text/xml"/> + <Default Extension="cache" ContentType="text/xml"/> + <Default Extension="png" ContentType="application/octet-stream"/> + <Default Extension="txt" ContentType="text/plain"/> + <Default Extension="xml" ContentType="text/xml"/> + <Default Extension="zip" ContentType="application/octet-stream"/> + <Default Extension="dll" ContentType="application/octet-stream" /> + <Default Extension="pkgdef" ContentType="text/plain" /> + <Default Extension="htm" ContentType="text/html" /> + <Default Extension="msha" ContentType="text/html" /> + <Default Extension="mshc" ContentType="application/octet-stream"/> +</Types> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/asf-manifest.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/asf-manifest.xml index 794fd689e..bd969518a 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/asf-manifest.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/asf-manifest.xml @@ -1,18 +1,18 @@ -<AsfContentProvider Version="1.0.0">
- <Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b">
- <Org>FourWalledCubicle</Org>
- <ShortName>LUFA</ShortName>
- <Author>Dean Camera</Author>
- <Description/>
- <FollowFolderStructure>True</FollowFolderStructure>
- </Identifier>
- <AsfContent Type="zip" Path="contents.zip">
- <Content>
- <Version>0</Version>
- <HelpURL/>
- <Locator/>
- <DbXMLPath>content.xml.cache</DbXMLPath>
- <Description/>
- </Content>
- </AsfContent>
-</AsfContentProvider>
+<AsfContentProvider Version="1.0.0"> + <Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b"> + <Org>FourWalledCubicle</Org> + <ShortName>LUFA</ShortName> + <Author>Dean Camera</Author> + <Description/> + <FollowFolderStructure>True</FollowFolderStructure> + </Identifier> + <AsfContent Type="zip" Path="contents.zip"> + <Content> + <Version>0</Version> + <HelpURL/> + <Locator/> + <DbXMLPath>content.xml.cache</DbXMLPath> + <Description/> + </Content> + </AsfContent> +</AsfContentProvider> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/extension.vsixmanifest b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/extension.vsixmanifest index ea6edeb25..847501744 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/extension.vsixmanifest +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/extension.vsixmanifest @@ -1,33 +1,33 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
- <Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">
- <Name>LUFA Library</Name>
- <Author>Dean Camera</Author>
- <Version>0</Version>
- <MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>
- <Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>
-
- <License>License.txt</License>
- <Icon>LUFA_thumb.png</Icon>
- <PreviewImage>LUFA.png</PreviewImage>
-
- <SupportedProducts>
- <IsolatedShell Version="6.1">AtmelStudio</IsolatedShell>
- <IsolatedShell Version="6.2">AtmelStudio</IsolatedShell>
- </SupportedProducts>
-
- <SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
- <Locale>1033</Locale>
-
- <AllUsers>false</AllUsers>
- </Identifier>
-
- <References/>
-
- <Content>
- <VsPackage>LUFA.pkgdef</VsPackage>
- <CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>
- <CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>
- </Content>
-</Vsix>
+<?xml version="1.0" encoding="utf-8"?> + +<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010"> + <Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b"> + <Name>LUFA Library</Name> + <Author>Dean Camera</Author> + <Version>0</Version> + <MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl> + <Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description> + + <License>License.txt</License> + <Icon>LUFA_thumb.png</Icon> + <PreviewImage>LUFA.png</PreviewImage> + + <SupportedProducts> + <IsolatedShell Version="6.1">AtmelStudio</IsolatedShell> + <IsolatedShell Version="6.2">AtmelStudio</IsolatedShell> + </SupportedProducts> + + <SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/> + <Locale>1033</Locale> + + <AllUsers>false</AllUsers> + </Identifier> + + <References/> + + <Content> + <VsPackage>LUFA.pkgdef</VsPackage> + <CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension> + <CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension> + </Content> +</Vsix> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/generate_caches.py b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/generate_caches.py index c51cff400..eb4b71efd 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/generate_caches.py +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/VSIX/generate_caches.py @@ -1,38 +1,38 @@ -"""
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-"""
-
-import sys
-sys.path.append("ProjectGenerator")
-
-
-def show_message(message):
- print("[Project Generator] %s" % message)
- sys.stdout.flush()
-
-
-def main(lufa_root_path):
- try:
- from asf_avrstudio5_interface import PythonFacade
- except ImportError:
- print("Fatal Error: The ASF project generator is missing.")
- return 1
-
- p = PythonFacade(lufa_root_path)
-
- show_message("Checking database sanity...")
- p.check_extension_database_sanity(lufa_root_path)
-
- show_message("Building cache files...")
- p.generate_extension_cache_files(lufa_root_path)
-
- show_message("Cache files created.")
- return 0
-
-
-if __name__ == "__main__":
- sys.exit(main(sys.argv[1]))
+""" + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +""" + +import sys +sys.path.append("ProjectGenerator") + + +def show_message(message): + print("[Project Generator] %s" % message) + sys.stdout.flush() + + +def main(lufa_root_path): + try: + from asf_avrstudio5_interface import PythonFacade + except ImportError: + print("Fatal Error: The ASF project generator is missing.") + return 1 + + p = PythonFacade(lufa_root_path) + + show_message("Checking database sanity...") + p.check_extension_database_sanity(lufa_root_path) + + show_message("Building cache files...") + p.generate_extension_cache_files(lufa_root_path) + + show_message("Cache files created.") + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1])) diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa.xml index 28afdda58..86cfc0409 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa.xml @@ -1,96 +1,96 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <extension-container>
- <extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)">
- <author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/>
- <description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description>
- <icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/>
- <preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/>
- <license caption="LUFA License" path="LUFA/License.txt"/>
- <release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/>
- <online-help>
- <index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/>
- <module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
- <module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
- </online-help>
- <dependencies/>
- </extension>
- </extension-container>
-
- <asf>
- <device-alias-map name="lufa_avr8">
- <device-support value="at90usb82"/>
- <device-support value="atmega8u2"/>
- <device-support value="at90usb162"/>
- <device-support value="atmega16u2"/>
- <device-support value="atmega16u4"/>
- <device-support value="atmega32u2"/>
- <device-support value="atmega32u4"/>
- <device-support value="at90usb646"/>
- <device-support value="at90usb647"/>
- <device-support value="at90usb1286"/>
- <device-support value="at90usb1287"/>
- </device-alias-map>
-
- <device-alias-map name="lufa_xmega">
- <device-support value="atxmega16a4u"/>
- <device-support value="atxmega32a4u"/>
- <device-support value="atxmega64a4u"/>
- <device-support value="atxmega128a4u"/>
- <device-support value="atxmega64a3u"/>
- <device-support value="atxmega128a3u"/>
- <device-support value="atxmega192a3u"/>
- <device-support value="atxmega256a3u"/>
- <device-support value="atxmega256a3bu"/>
- <device-support value="atxmega128a1u"/>
- <device-support value="atxmega64b3"/>
- <device-support value="atxmega128b3"/>
- <device-support value="atxmega64b1"/>
- <device-support value="atxmega128b1"/>
- <device-support value="atxmega64c3"/>
- <device-support value="atxmega128c3"/>
- <!-- <device-support value="atxmega192c3"/> Wait for ASFP-3339 merge and release before enabling -->
- <device-support value="atxmega256c3"/>
- <device-support value="atxmega384c3"/>
- <device-support value="atxmega16c4"/>
- </device-alias-map>
-
- <device-alias-map name="lufa_uc3">
- <device-support value="at32uc3a364"/>
- <device-support value="at32uc3a364s"/>
- <device-support value="at32uc3a464"/>
- <device-support value="at32uc3a464s"/>
- <device-support value="at32uc3b064"/>
- <device-support value="at32uc3b164"/>
- <device-support value="at32uc3a0128"/>
- <device-support value="at32uc3a1128"/>
- <device-support value="at32uc3a3128"/>
- <device-support value="at32uc3a3128s"/>
- <device-support value="at32uc3a4128"/>
- <device-support value="at32uc3a4128s"/>
- <device-support value="at32uc3b0128"/>
- <device-support value="at32uc3b1128"/>
- <device-support value="at32uc3a0256"/>
- <device-support value="at32uc3a1256"/>
- <device-support value="at32uc3a3256"/>
- <device-support value="at32uc3a3256s"/>
- <device-support value="at32uc3a4256"/>
- <device-support value="at32uc3a4256s"/>
- <device-support value="at32uc3b0256"/>
- <device-support value="at32uc3b1256"/>
- <device-support value="at32uc3a0512"/>
- <device-support value="at32uc3a1512"/>
- <device-support value="at32uc3b0512"/>
- <device-support value="at32uc3b1512"/>
- </device-alias-map>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <extension-container> + <extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)"> + <author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/> + <description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description> + <icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/> + <preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/> + <license caption="LUFA License" path="LUFA/License.txt"/> + <release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/> + <online-help> + <index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/> + <module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/> + <module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/> + </online-help> + <dependencies/> + </extension> + </extension-container> + + <asf> + <device-alias-map name="lufa_avr8"> + <device-support value="at90usb82"/> + <device-support value="atmega8u2"/> + <device-support value="at90usb162"/> + <device-support value="atmega16u2"/> + <device-support value="atmega16u4"/> + <device-support value="atmega32u2"/> + <device-support value="atmega32u4"/> + <device-support value="at90usb646"/> + <device-support value="at90usb647"/> + <device-support value="at90usb1286"/> + <device-support value="at90usb1287"/> + </device-alias-map> + + <device-alias-map name="lufa_xmega"> + <device-support value="atxmega16a4u"/> + <device-support value="atxmega32a4u"/> + <device-support value="atxmega64a4u"/> + <device-support value="atxmega128a4u"/> + <device-support value="atxmega64a3u"/> + <device-support value="atxmega128a3u"/> + <device-support value="atxmega192a3u"/> + <device-support value="atxmega256a3u"/> + <device-support value="atxmega256a3bu"/> + <device-support value="atxmega128a1u"/> + <device-support value="atxmega64b3"/> + <device-support value="atxmega128b3"/> + <device-support value="atxmega64b1"/> + <device-support value="atxmega128b1"/> + <device-support value="atxmega64c3"/> + <device-support value="atxmega128c3"/> + <!-- <device-support value="atxmega192c3"/> Wait for ASFP-3339 merge and release before enabling --> + <device-support value="atxmega256c3"/> + <device-support value="atxmega384c3"/> + <device-support value="atxmega16c4"/> + </device-alias-map> + + <device-alias-map name="lufa_uc3"> + <device-support value="at32uc3a364"/> + <device-support value="at32uc3a364s"/> + <device-support value="at32uc3a464"/> + <device-support value="at32uc3a464s"/> + <device-support value="at32uc3b064"/> + <device-support value="at32uc3b164"/> + <device-support value="at32uc3a0128"/> + <device-support value="at32uc3a1128"/> + <device-support value="at32uc3a3128"/> + <device-support value="at32uc3a3128s"/> + <device-support value="at32uc3a4128"/> + <device-support value="at32uc3a4128s"/> + <device-support value="at32uc3b0128"/> + <device-support value="at32uc3b1128"/> + <device-support value="at32uc3a0256"/> + <device-support value="at32uc3a1256"/> + <device-support value="at32uc3a3256"/> + <device-support value="at32uc3a3256s"/> + <device-support value="at32uc3a4256"/> + <device-support value="at32uc3a4256s"/> + <device-support value="at32uc3b0256"/> + <device-support value="at32uc3b1256"/> + <device-support value="at32uc3a0512"/> + <device-support value="at32uc3a1512"/> + <device-support value="at32uc3b0512"/> + <device-support value="at32uc3b1512"/> + </device-alias-map> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_common.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_common.xml index 9e17b188b..c2ef7af4c 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_common.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_common.xml @@ -1,34 +1,34 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="service" id="lufa.common" caption="LUFA Common Infrastructure">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <info type="gui-flag" value="hidden"/>
- <build type="doxygen-entry-point" value="Group_Common"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Version.h"/>
- <build type="distribute" subtype="license" value="License.txt"/>
-
- <build type="header-file" subtype="api" value="Common/Common.h"/>
- <build type="header-file" value="Common/Architectures.h"/>
- <build type="header-file" value="Common/ArchitectureSpecific.h"/>
- <build type="header-file" value="Common/Attributes.h"/>
- <build type="header-file" value="Common/BoardTypes.h"/>
- <build type="header-file" value="Common/CompilerSpecific.h"/>
- <build type="header-file" value="Common/Endianness.h"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="service" id="lufa.common" caption="LUFA Common Infrastructure"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <info type="gui-flag" value="hidden"/> + <build type="doxygen-entry-point" value="Group_Common"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Version.h"/> + <build type="distribute" subtype="license" value="License.txt"/> + + <build type="header-file" subtype="api" value="Common/Common.h"/> + <build type="header-file" value="Common/Architectures.h"/> + <build type="header-file" value="Common/ArchitectureSpecific.h"/> + <build type="header-file" value="Common/Attributes.h"/> + <build type="header-file" value="Common/BoardTypes.h"/> + <build type="header-file" value="Common/CompilerSpecific.h"/> + <build type="header-file" value="Common/Endianness.h"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board.xml index 3677d2003..e150aa645 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board.xml @@ -1,114 +1,114 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture">
- <device-support value="mega"/>
-
- <require idref="lufa.drivers.board"/>
- <require idref="lufa.drivers.board.info"/>
- </board>
-
- <board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture">
- <device-support value="xmega"/>
-
- <require idref="lufa.drivers.board"/>
- <require idref="lufa.drivers.board.info"/>
- </board>
-
- <board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture">
- <device-support value="uc3"/>
-
- <require idref="lufa.drivers.board"/>
- <require idref="lufa.drivers.board.info"/>
- </board>
-
- <module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_BoardInfo"/>
-
- <require idref="lufa.common"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Board/Board.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_LEDs"/>
-
- <require idref="lufa.common"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Board/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_Buttons"/>
-
- <require idref="lufa.common"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Board/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_Dataflash"/>
-
- <require idref="lufa.common"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Board/Dataflash.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_Joystick"/>
-
- <require idref="lufa.common"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Board/Joystick.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_Temperature"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.drivers.peripheral.adc"/>
-
- <build type="c-source" value="Drivers/Board/Temperature.c"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Board/Temperature.h"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture"> + <device-support value="mega"/> + + <require idref="lufa.drivers.board"/> + <require idref="lufa.drivers.board.info"/> + </board> + + <board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture"> + <device-support value="xmega"/> + + <require idref="lufa.drivers.board"/> + <require idref="lufa.drivers.board.info"/> + </board> + + <board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture"> + <device-support value="uc3"/> + + <require idref="lufa.drivers.board"/> + <require idref="lufa.drivers.board.info"/> + </board> + + <module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_BoardInfo"/> + + <require idref="lufa.common"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Board/Board.h"/> + </module> + + <module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_LEDs"/> + + <require idref="lufa.common"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Board/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_Buttons"/> + + <require idref="lufa.common"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Board/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_Dataflash"/> + + <require idref="lufa.common"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Board/Dataflash.h"/> + </module> + + <module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_Joystick"/> + + <require idref="lufa.common"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Board/Joystick.h"/> + </module> + + <module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_Temperature"/> + + <require idref="lufa.common"/> + <require idref="lufa.drivers.peripheral.adc"/> + + <build type="c-source" value="Drivers/Board/Temperature.c"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Board/Temperature.h"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board_names.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board_names.xml index 4b099920b..ab7e03e4e 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board_names.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_board_names.xml @@ -1,853 +1,853 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <select-by-config id="lufa.drivers.board" name="lufa.drivers.board.name" default="none" caption="LUFA Board Support">
- <info type="description" value="summary">
- Board hardware (LEDs, Buttons, etc.) drivers for the preconfigured LUFA boards. Note that only the boards
- compatible with the currently selected device will be shown.
-
- To disable all hardware drivers silently, use NONE. To supply customer drivers, use USER (see manual).
- </info>
-
- <module type="driver" id="lufa.drivers.board#none" caption="Board Support - None">
- <device-support value="avr"/>
- <build type="define" name="BOARD" value="BOARD_NONE"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#user" caption="Board Support - User Supplied">
- <device-support value="avr"/>
- <build type="define" name="BOARD" value="BOARD_USER"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#adafruit_u4" caption="Board Support - ADAFRUITU4">
- <build type="doxygen-entry-point" value="Group_BoardInfo_ADAFRUITU4"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_ADAFRUITU4"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#atavrusbrf01" caption="Board Support - ATAVRUSBRF01">
- <build type="doxygen-entry-point" value="Group_BoardInfo_ATAVRUSBRF01"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_ATAVRUSBRF01"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#benito" caption="Board Support - BENITO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_BENITO"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_BENITO"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/BENITO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BENITO/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BENITO/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#big_multio" caption="Board Support - BIGMULTIO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_BIGMULTIO"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_BIGMULTIO"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#blackcat" caption="Board Support - BLACKCAT">
- <build type="doxygen-entry-point" value="Group_BoardInfo_BLACKCAT"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_BLACKCAT"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#bui" caption="Board Support - BUI">
- <build type="doxygen-entry-point" value="Group_BoardInfo_BUI"/>
-
- <device-support value="at90usb646"/>
- <build type="define" name="BOARD" value="BOARD_BUI"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/BUI/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BUI/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#bumbleb" caption="Board Support - BUMBLEB">
- <build type="doxygen-entry-point" value="Group_BoardInfo_BUMBLEB"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_BUMBLEB"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.joystick"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#culv3" caption="Board Support - CULV3">
- <build type="doxygen-entry-point" value="Group_BoardInfo_CULV3"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_CULV3"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/CULV3/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/CULV3/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/CULV3/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#duce" caption="Board Support - DUCE">
- <build type="doxygen-entry-point" value="Group_BoardInfo_DUCE"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_DUCE"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/DUCE/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/DUCE/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#evk527" caption="Board Support - EVK527">
- <build type="doxygen-entry-point" value="Group_BoardInfo_EVK527"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_EVK527"/>
-
- <require idref="lufa.drivers.misc.at45db321c"/>
- <require idref="lufa.drivers.peripheral.spi"/>
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.joystick"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/EVK527/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/EVK527/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/EVK527/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/EVK527/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/EVK527/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#jm_db_u2" caption="Board Support - JMDBU2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_JMDBU2"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_JMDBU2"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/JMDBU2/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#leonardo" caption="Board Support - LEONARDO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_LEONARDO"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_LEONARDO"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/LEONARDO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/LEONARDO/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#maximus" caption="Board Support - MAXIMUS">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MAXIMUS"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_MAXIMUS"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_32u2" caption="Board Support - MICROPENDOUS_32U2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_32U2"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_32U2"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_a" caption="Board Support - MICROPENDOUS_A">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_A"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_A"/>
-
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_1" caption="Board Support - MICROPENDOUS_1">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_1"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_1"/>
-
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_2" caption="Board Support - MICROPENDOUS_2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_2"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_2"/>
-
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_3" caption="Board Support - MICROPENDOUS_3">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_3"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_3"/>
-
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_4" caption="Board Support - MICROPENDOUS_4">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_4"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_4"/>
-
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_dip" caption="Board Support - MICROPENDOUS_DIP">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_DIP"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_DIP"/>
-
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_rev1" caption="Board Support - MICROPENDOUS_REV1">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV1"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV1"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#micropendous_rev2" caption="Board Support - MICROPENDOUS_REV2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV2"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV2"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#microsin_162" caption="Board Support - MICROSIN162">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICROSIN162"/>
-
- <device-support value="atmega162"/>
- <build type="define" name="BOARD" value="BOARD_MICROSIN162"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#minimus" caption="Board Support - MINIMUS">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MINIMUS"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_MINIMUS"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MINIMUS/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#multio" caption="Board Support - MULTIO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MULTIO"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_MULTIO"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MULTIO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MULTIO/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#olimex_162" caption="Board Support - OLIMEX162">
- <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX162"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_OLIMEX162"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#olimex_32u4" caption="Board Support - OLIMEX32U4">
- <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX32U4"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_OLIMEX32U4"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#olimex_isp_mkii" caption="Board Support - OLIMEXISPMK2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXISPMK2"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_OLIMEXISPMK2"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#olimex_t32u4" caption="Board Support - OLIMEX_T32U4">
- <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXT32U4"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_OLIMEXT32U4"/>
-
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#rzusbstick" caption="Board Support - RZUSBSTICK">
- <build type="doxygen-entry-point" value="Group_BoardInfo_RZUSBSTICK"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_RZUSBSTICK"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#sparkfun_8u2" caption="Board Support - SPARKFUN8U2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_SPARKFUN8U2"/>
-
- <device-support value="atmega8u2"/>
- <build type="define" name="BOARD" value="BOARD_SPARKFUN8U2"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#stk525" caption="Board Support - STK525">
- <build type="doxygen-entry-point" value="Group_BoardInfo_STK525"/>
-
- <device-support value="at90usb1287"/>
- <device-support value="at90usb1286"/>
- <device-support value="at90usb647"/>
- <device-support value="at90usb646"/>
- <build type="define" name="BOARD" value="BOARD_STK525"/>
-
- <require idref="lufa.drivers.misc.at45db321c"/>
- <require idref="lufa.drivers.peripheral.spi"/>
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.joystick"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/STK525/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK525/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK525/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK525/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK525/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#stk526" caption="Board Support - STK526">
- <build type="doxygen-entry-point" value="Group_BoardInfo_STK526"/>
-
- <device-support value="at90usb162"/>
- <device-support value="at90usb82"/>
- <device-support value="atmega32u2"/>
- <device-support value="atmega16u2"/>
- <device-support value="atmega8u2"/>
- <build type="define" name="BOARD" value="BOARD_STK526"/>
-
- <require idref="lufa.drivers.misc.at45db642d"/>
- <require idref="lufa.drivers.peripheral.spi"/>
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.joystick"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/STK526/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK526/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK526/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK526/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STK526/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#teensy" caption="Board Support - TEENSY">
- <build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_TEENSY"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#teensy2" caption="Board Support - TEENSY2">
- <build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY2"/>
-
- <device-support value="at90usb646"/>
- <build type="define" name="BOARD" value="BOARD_TEENSY2"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#tul" caption="Board Support - TUL">
- <build type="doxygen-entry-point" value="Group_BoardInfo_TUL"/>
-
- <device-support value="atmega32u4"/>
- <build type="define" name="BOARD" value="BOARD_TUL"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/TUL/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/TUL/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/TUL/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#udip" caption="Board Support - UDIP">
- <build type="doxygen-entry-point" value="Group_BoardInfo_UDIP"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_UDIP"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/UDIP/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/UDIP/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/UDIP/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#uno" caption="Board Support - UNO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_UNO"/>
-
- <device-support value="atmega8u2"/>
- <device-support value="atmega16u2"/>
- <build type="define" name="BOARD" value="BOARD_UNO"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/UNO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/UNO/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#usb2ax" caption="Board Support - USB2AX">
- <build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_USB2AX"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#usb2ax_v3" caption="Board Support - USB2AX_V3">
- <build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V3"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_USB2AX_V3"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#usb2ax_v3_1" caption="Board Support - USB2AX_V31">
- <build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V31"/>
-
- <device-support value="atmega32u2"/>
- <build type="define" name="BOARD" value="BOARD_USB2AX_V31"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#usbfoo" caption="Board Support - USBFOO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_USBFOO"/>
-
- <device-support value="atmega162"/>
- <build type="define" name="BOARD" value="BOARD_USBFOO"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/USBFOO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBFOO/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBFOO/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#usbkey" caption="Board Support - USBKEY">
- <build type="doxygen-entry-point" value="Group_BoardInfo_USBKEY"/>
-
- <device-support value="at90usb1287"/>
- <build type="define" name="BOARD" value="BOARD_USBKEY"/>
-
- <require idref="lufa.drivers.misc.at45db642d"/>
- <require idref="lufa.drivers.peripheral.spi"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.joystick"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBKEY/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#usbtiny_mkii" caption="Board Support - USBTINYMKII">
- <build type="doxygen-entry-point" value="Group_BoardInfo_USBTINYMKII"/>
-
- <device-support value="at90usb162"/>
- <build type="define" name="BOARD" value="BOARD_USBTINYMKII"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/LEDs.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#xplain_rev1" caption="Board Support - XPLAIN (HW Rev 1)">
- <build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN_REV1"/>
-
- <device-support value="at90usb1287"/>
-
- <require idref="lufa.drivers.misc.at45db642d"/>
- <require idref="lufa.drivers.peripheral.spi"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_XPLAIN_REV1"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#xplain" caption="Board Support - XPLAIN (HW Rev 2+)">
- <build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN"/>
-
- <device-support value="at90usb1287"/>
-
- <require idref="lufa.drivers.misc.at45db642d"/>
- <require idref="lufa.drivers.peripheral.spi"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_XPLAIN"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#a3bu_xplained" caption="Board Support - A3BU_XPLAINED">
- <build type="doxygen-entry-point" value="Group_BoardInfo_A3BU_XPLAINED"/>
-
- <device-support value="atxmega256a3bu"/>
-
- <require idref="lufa.drivers.misc.at45db642d"/>
- <require idref="lufa.drivers.peripheral.usart_spi"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_A3BU_XPLAINED"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#b1_xplained" caption="Board Support - B1_XPLAINED">
- <build type="doxygen-entry-point" value="Group_BoardInfo_B1_XPLAINED"/>
-
- <device-support value="atxmega128b1"/>
-
- <require idref="lufa.drivers.misc.at45db642d"/>
- <require idref="lufa.drivers.peripheral.usart_spi"/>
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.dataflash"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Board.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_B1_XPLAINED"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#evk1100" caption="Board Support - EVK1100">
- <build type="doxygen-entry-point" value="Group_BoardInfo_EVK1100"/>
-
- <device-support value="at32uc3a0512"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.joystick"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/UC3/EVK1100/Board.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1100/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1100/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1100/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_EVK1100"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#evk1101" caption="Board Support - EVK1101">
- <build type="doxygen-entry-point" value="Group_BoardInfo_EVK1101"/>
-
- <device-support value="at32uc3b0256"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.joystick"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/UC3/EVK1101/Board.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1101/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1101/Joystick.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1101/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_EVK1101"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#evk1104" caption="Board Support - EVK1104">
- <build type="doxygen-entry-point" value="Group_BoardInfo_EVK1104"/>
-
- <device-support value="at32uc3a3256"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/UC3/EVK1104/Board.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1104/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/UC3/EVK1104/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_EVK1104"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#uc3a3_xplained" caption="Board Support - UC3A3_XPLAINED">
- <build type="doxygen-entry-point" value="Group_BoardInfo_UC3_A3_XPLAINED"/>
-
- <device-support value="at32uc3a3256"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Board.h"/>
- <build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_UC3A3_XPLAINED"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#stange_isp" caption="Board Support - STANGE_ISP">
- <build type="doxygen-entry-point" value="Group_BoardInfo_STANGE_ISP"/>
-
- <device-support value="at90usb162"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_STANGE_ISP"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#c3_xplained" caption="Board Support - C3_XPLAINED">
- <build type="doxygen-entry-point" value="Group_BoardInfo_C3_XPLAINED"/>
-
- <device-support value="atxmega384c3"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Board.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_C3_XPLAINED"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#u2s" caption="Board Support - U2S">
- <build type="doxygen-entry-point" value="Group_BoardInfo_U2S"/>
-
- <device-support value="atmega32u2"/>
-
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/U2S/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/U2S/Buttons.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/U2S/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_U2S"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#yun" caption="Board Support - YUN">
- <build type="doxygen-entry-point" value="Group_BoardInfo_YUN"/>
-
- <device-support value="atmega32u4"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/YUN/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/YUN/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_YUN"/>
- </module>
-
- <module type="driver" id="lufa.drivers.board#yun" caption="Board Support - MICRO">
- <build type="doxygen-entry-point" value="Group_BoardInfo_MICRO"/>
-
- <device-support value="atmega32u4"/>
-
- <require idref="lufa.drivers.board.leds"/>
-
- <build type="header-file" value="Drivers/Board/AVR8/MICRO/Board.h"/>
- <build type="header-file" value="Drivers/Board/AVR8/MICRO/LEDs.h"/>
-
- <build type="define" name="BOARD" value="BOARD_MICRO"/>
- </module>
- </select-by-config>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <select-by-config id="lufa.drivers.board" name="lufa.drivers.board.name" default="none" caption="LUFA Board Support"> + <info type="description" value="summary"> + Board hardware (LEDs, Buttons, etc.) drivers for the preconfigured LUFA boards. Note that only the boards + compatible with the currently selected device will be shown. + + To disable all hardware drivers silently, use NONE. To supply customer drivers, use USER (see manual). + </info> + + <module type="driver" id="lufa.drivers.board#none" caption="Board Support - None"> + <device-support value="avr"/> + <build type="define" name="BOARD" value="BOARD_NONE"/> + </module> + + <module type="driver" id="lufa.drivers.board#user" caption="Board Support - User Supplied"> + <device-support value="avr"/> + <build type="define" name="BOARD" value="BOARD_USER"/> + </module> + + <module type="driver" id="lufa.drivers.board#adafruit_u4" caption="Board Support - ADAFRUITU4"> + <build type="doxygen-entry-point" value="Group_BoardInfo_ADAFRUITU4"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_ADAFRUITU4"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/ADAFRUITU4/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#atavrusbrf01" caption="Board Support - ATAVRUSBRF01"> + <build type="doxygen-entry-point" value="Group_BoardInfo_ATAVRUSBRF01"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_ATAVRUSBRF01"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/ATAVRUSBRF01/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#benito" caption="Board Support - BENITO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_BENITO"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_BENITO"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/BENITO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BENITO/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BENITO/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#big_multio" caption="Board Support - BIGMULTIO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_BIGMULTIO"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_BIGMULTIO"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BIGMULTIO/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#blackcat" caption="Board Support - BLACKCAT"> + <build type="doxygen-entry-point" value="Group_BoardInfo_BLACKCAT"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_BLACKCAT"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BLACKCAT/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#bui" caption="Board Support - BUI"> + <build type="doxygen-entry-point" value="Group_BoardInfo_BUI"/> + + <device-support value="at90usb646"/> + <build type="define" name="BOARD" value="BOARD_BUI"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/BUI/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BUI/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#bumbleb" caption="Board Support - BUMBLEB"> + <build type="doxygen-entry-point" value="Group_BoardInfo_BUMBLEB"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_BUMBLEB"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.joystick"/> + + <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/Joystick.h"/> + <build type="header-file" value="Drivers/Board/AVR8/BUMBLEB/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#culv3" caption="Board Support - CULV3"> + <build type="doxygen-entry-point" value="Group_BoardInfo_CULV3"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_CULV3"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/CULV3/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/CULV3/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/CULV3/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#duce" caption="Board Support - DUCE"> + <build type="doxygen-entry-point" value="Group_BoardInfo_DUCE"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_DUCE"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/DUCE/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/DUCE/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#evk527" caption="Board Support - EVK527"> + <build type="doxygen-entry-point" value="Group_BoardInfo_EVK527"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_EVK527"/> + + <require idref="lufa.drivers.misc.at45db321c"/> + <require idref="lufa.drivers.peripheral.spi"/> + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.joystick"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/EVK527/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/EVK527/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/EVK527/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/AVR8/EVK527/Joystick.h"/> + <build type="header-file" value="Drivers/Board/AVR8/EVK527/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#jm_db_u2" caption="Board Support - JMDBU2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_JMDBU2"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_JMDBU2"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/JMDBU2/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/JMDBU2/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#leonardo" caption="Board Support - LEONARDO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_LEONARDO"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_LEONARDO"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/LEONARDO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/LEONARDO/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#maximus" caption="Board Support - MAXIMUS"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MAXIMUS"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_MAXIMUS"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MAXIMUS/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_32u2" caption="Board Support - MICROPENDOUS_32U2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_32U2"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_32U2"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_a" caption="Board Support - MICROPENDOUS_A"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_A"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_A"/> + + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_1" caption="Board Support - MICROPENDOUS_1"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_1"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_1"/> + + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_2" caption="Board Support - MICROPENDOUS_2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_2"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_2"/> + + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_3" caption="Board Support - MICROPENDOUS_3"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_3"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_3"/> + + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_4" caption="Board Support - MICROPENDOUS_4"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_4"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_4"/> + + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_dip" caption="Board Support - MICROPENDOUS_DIP"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_DIP"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_DIP"/> + + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_rev1" caption="Board Support - MICROPENDOUS_REV1"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV1"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV1"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#micropendous_rev2" caption="Board Support - MICROPENDOUS_REV2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROPENDOUS_REV2"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_MICROPENDOUS_REV2"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROPENDOUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#microsin_162" caption="Board Support - MICROSIN162"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICROSIN162"/> + + <device-support value="atmega162"/> + <build type="define" name="BOARD" value="BOARD_MICROSIN162"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICROSIN162/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#minimus" caption="Board Support - MINIMUS"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MINIMUS"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_MINIMUS"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MINIMUS/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MINIMUS/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#multio" caption="Board Support - MULTIO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MULTIO"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_MULTIO"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/MULTIO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MULTIO/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#olimex_162" caption="Board Support - OLIMEX162"> + <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX162"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_OLIMEX162"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEX162/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#olimex_32u4" caption="Board Support - OLIMEX32U4"> + <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEX32U4"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_OLIMEX32U4"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEX32U4/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#olimex_isp_mkii" caption="Board Support - OLIMEXISPMK2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXISPMK2"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_OLIMEXISPMK2"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEXISPMK2/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#olimex_t32u4" caption="Board Support - OLIMEX_T32U4"> + <build type="doxygen-entry-point" value="Group_BoardInfo_OLIMEXT32U4"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_OLIMEXT32U4"/> + + <require idref="lufa.drivers.board.leds"/> + <require idref="lufa.drivers.board.buttons"/> + + <build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/LEDs.h"/> + <build type="header-file" value="Drivers/Board/AVR8/OLIMEXT32U4/Buttons.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#rzusbstick" caption="Board Support - RZUSBSTICK"> + <build type="doxygen-entry-point" value="Group_BoardInfo_RZUSBSTICK"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_RZUSBSTICK"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/RZUSBSTICK/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#sparkfun_8u2" caption="Board Support - SPARKFUN8U2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_SPARKFUN8U2"/> + + <device-support value="atmega8u2"/> + <build type="define" name="BOARD" value="BOARD_SPARKFUN8U2"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/SPARKFUN8U2/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#stk525" caption="Board Support - STK525"> + <build type="doxygen-entry-point" value="Group_BoardInfo_STK525"/> + + <device-support value="at90usb1287"/> + <device-support value="at90usb1286"/> + <device-support value="at90usb647"/> + <device-support value="at90usb646"/> + <build type="define" name="BOARD" value="BOARD_STK525"/> + + <require idref="lufa.drivers.misc.at45db321c"/> + <require idref="lufa.drivers.peripheral.spi"/> + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.joystick"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/STK525/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK525/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK525/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK525/Joystick.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK525/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#stk526" caption="Board Support - STK526"> + <build type="doxygen-entry-point" value="Group_BoardInfo_STK526"/> + + <device-support value="at90usb162"/> + <device-support value="at90usb82"/> + <device-support value="atmega32u2"/> + <device-support value="atmega16u2"/> + <device-support value="atmega8u2"/> + <build type="define" name="BOARD" value="BOARD_STK526"/> + + <require idref="lufa.drivers.misc.at45db642d"/> + <require idref="lufa.drivers.peripheral.spi"/> + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.joystick"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/STK526/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK526/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK526/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK526/Joystick.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STK526/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#teensy" caption="Board Support - TEENSY"> + <build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_TEENSY"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#teensy2" caption="Board Support - TEENSY2"> + <build type="doxygen-entry-point" value="Group_BoardInfo_TEENSY2"/> + + <device-support value="at90usb646"/> + <build type="define" name="BOARD" value="BOARD_TEENSY2"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/TEENSY/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/TEENSY/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#tul" caption="Board Support - TUL"> + <build type="doxygen-entry-point" value="Group_BoardInfo_TUL"/> + + <device-support value="atmega32u4"/> + <build type="define" name="BOARD" value="BOARD_TUL"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/TUL/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/TUL/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/TUL/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#udip" caption="Board Support - UDIP"> + <build type="doxygen-entry-point" value="Group_BoardInfo_UDIP"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_UDIP"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/UDIP/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/UDIP/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/UDIP/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#uno" caption="Board Support - UNO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_UNO"/> + + <device-support value="atmega8u2"/> + <device-support value="atmega16u2"/> + <build type="define" name="BOARD" value="BOARD_UNO"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/UNO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/UNO/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#usb2ax" caption="Board Support - USB2AX"> + <build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_USB2AX"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#usb2ax_v3" caption="Board Support - USB2AX_V3"> + <build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V3"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_USB2AX_V3"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#usb2ax_v3_1" caption="Board Support - USB2AX_V31"> + <build type="doxygen-entry-point" value="Group_BoardInfo_USB2AX_V31"/> + + <device-support value="atmega32u2"/> + <build type="define" name="BOARD" value="BOARD_USB2AX_V31"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USB2AX/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#usbfoo" caption="Board Support - USBFOO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_USBFOO"/> + + <device-support value="atmega162"/> + <build type="define" name="BOARD" value="BOARD_USBFOO"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/USBFOO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBFOO/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBFOO/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#usbkey" caption="Board Support - USBKEY"> + <build type="doxygen-entry-point" value="Group_BoardInfo_USBKEY"/> + + <device-support value="at90usb1287"/> + <build type="define" name="BOARD" value="BOARD_USBKEY"/> + + <require idref="lufa.drivers.misc.at45db642d"/> + <require idref="lufa.drivers.peripheral.spi"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.joystick"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBKEY/Joystick.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBKEY/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#usbtiny_mkii" caption="Board Support - USBTINYMKII"> + <build type="doxygen-entry-point" value="Group_BoardInfo_USBTINYMKII"/> + + <device-support value="at90usb162"/> + <build type="define" name="BOARD" value="BOARD_USBTINYMKII"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/USBTINYMKII/LEDs.h"/> + </module> + + <module type="driver" id="lufa.drivers.board#xplain_rev1" caption="Board Support - XPLAIN (HW Rev 1)"> + <build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN_REV1"/> + + <device-support value="at90usb1287"/> + + <require idref="lufa.drivers.misc.at45db642d"/> + <require idref="lufa.drivers.peripheral.spi"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_XPLAIN_REV1"/> + </module> + + <module type="driver" id="lufa.drivers.board#xplain" caption="Board Support - XPLAIN (HW Rev 2+)"> + <build type="doxygen-entry-point" value="Group_BoardInfo_XPLAIN"/> + + <device-support value="at90usb1287"/> + + <require idref="lufa.drivers.misc.at45db642d"/> + <require idref="lufa.drivers.peripheral.spi"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/AVR8/XPLAIN/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_XPLAIN"/> + </module> + + <module type="driver" id="lufa.drivers.board#a3bu_xplained" caption="Board Support - A3BU_XPLAINED"> + <build type="doxygen-entry-point" value="Group_BoardInfo_A3BU_XPLAINED"/> + + <device-support value="atxmega256a3bu"/> + + <require idref="lufa.drivers.misc.at45db642d"/> + <require idref="lufa.drivers.peripheral.usart_spi"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Board.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Buttons.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/A3BU_XPLAINED/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_A3BU_XPLAINED"/> + </module> + + <module type="driver" id="lufa.drivers.board#b1_xplained" caption="Board Support - B1_XPLAINED"> + <build type="doxygen-entry-point" value="Group_BoardInfo_B1_XPLAINED"/> + + <device-support value="atxmega128b1"/> + + <require idref="lufa.drivers.misc.at45db642d"/> + <require idref="lufa.drivers.peripheral.usart_spi"/> + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.dataflash"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Board.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Buttons.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/Dataflash.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/B1_XPLAINED/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_B1_XPLAINED"/> + </module> + + <module type="driver" id="lufa.drivers.board#evk1100" caption="Board Support - EVK1100"> + <build type="doxygen-entry-point" value="Group_BoardInfo_EVK1100"/> + + <device-support value="at32uc3a0512"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.joystick"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/UC3/EVK1100/Board.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1100/Buttons.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1100/Joystick.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1100/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_EVK1100"/> + </module> + + <module type="driver" id="lufa.drivers.board#evk1101" caption="Board Support - EVK1101"> + <build type="doxygen-entry-point" value="Group_BoardInfo_EVK1101"/> + + <device-support value="at32uc3b0256"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.joystick"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/UC3/EVK1101/Board.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1101/Buttons.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1101/Joystick.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1101/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_EVK1101"/> + </module> + + <module type="driver" id="lufa.drivers.board#evk1104" caption="Board Support - EVK1104"> + <build type="doxygen-entry-point" value="Group_BoardInfo_EVK1104"/> + + <device-support value="at32uc3a3256"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/UC3/EVK1104/Board.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1104/Buttons.h"/> + <build type="header-file" value="Drivers/Board/UC3/EVK1104/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_EVK1104"/> + </module> + + <module type="driver" id="lufa.drivers.board#uc3a3_xplained" caption="Board Support - UC3A3_XPLAINED"> + <build type="doxygen-entry-point" value="Group_BoardInfo_UC3_A3_XPLAINED"/> + + <device-support value="at32uc3a3256"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Board.h"/> + <build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/Buttons.h"/> + <build type="header-file" value="Drivers/Board/UC3/UC3A3_XPLAINED/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_UC3A3_XPLAINED"/> + </module> + + <module type="driver" id="lufa.drivers.board#stange_isp" caption="Board Support - STANGE_ISP"> + <build type="doxygen-entry-point" value="Group_BoardInfo_STANGE_ISP"/> + + <device-support value="at90usb162"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/STANGE_ISP/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_STANGE_ISP"/> + </module> + + <module type="driver" id="lufa.drivers.board#c3_xplained" caption="Board Support - C3_XPLAINED"> + <build type="doxygen-entry-point" value="Group_BoardInfo_C3_XPLAINED"/> + + <device-support value="atxmega384c3"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Board.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/Buttons.h"/> + <build type="header-file" value="Drivers/Board/XMEGA/C3_XPLAINED/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_C3_XPLAINED"/> + </module> + + <module type="driver" id="lufa.drivers.board#u2s" caption="Board Support - U2S"> + <build type="doxygen-entry-point" value="Group_BoardInfo_U2S"/> + + <device-support value="atmega32u2"/> + + <require idref="lufa.drivers.board.buttons"/> + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/U2S/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/U2S/Buttons.h"/> + <build type="header-file" value="Drivers/Board/AVR8/U2S/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_U2S"/> + </module> + + <module type="driver" id="lufa.drivers.board#yun" caption="Board Support - YUN"> + <build type="doxygen-entry-point" value="Group_BoardInfo_YUN"/> + + <device-support value="atmega32u4"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/YUN/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/YUN/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_YUN"/> + </module> + + <module type="driver" id="lufa.drivers.board#yun" caption="Board Support - MICRO"> + <build type="doxygen-entry-point" value="Group_BoardInfo_MICRO"/> + + <device-support value="atmega32u4"/> + + <require idref="lufa.drivers.board.leds"/> + + <build type="header-file" value="Drivers/Board/AVR8/MICRO/Board.h"/> + <build type="header-file" value="Drivers/Board/AVR8/MICRO/LEDs.h"/> + + <build type="define" name="BOARD" value="BOARD_MICRO"/> + </module> + </select-by-config> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_misc.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_misc.xml index 8680ca2df..4311ae87b 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_misc.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_misc.xml @@ -1,57 +1,57 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_AT45DB321C"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/>
- </module>
-
- <module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_AT45DB321C"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/>
- </module>
-
- <module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_RingBuff"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/>
- </module>
-
- <module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_Terminal"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/>
- </module>
- </asf>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_AT45DB321C"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/> + </module> + + <module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_AT45DB321C"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/> + </module> + + <module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_RingBuff"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/> + </module> + + <module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_Terminal"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/> + </module> + </asf> </lufa>
\ No newline at end of file diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_peripheral.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_peripheral.xml index 3a982e565..76ea516db 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_peripheral.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_peripheral.xml @@ -1,198 +1,198 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver">
- <module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <build type="doxygen-entry-point" value="Group_Serial"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.drivers.misc.ansi"/>
-
- <build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/>
- <build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8">
- <device-support-alias value="lufa_xmega"/>
-
- <build type="doxygen-entry-point" value="Group_Serial"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.drivers.misc.ansi"/>
-
- <build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/>
- <build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_Serial"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.drivers.misc.ansi"/>
-
- <info type="gui-flag" value="hidden"/>
- </module>
- </select-by-device>
-
- <select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver">
- <module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <build type="doxygen-entry-point" value="Group_SPI"/>
-
- <require idref="lufa.common"/>
-
- <build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <build type="doxygen-entry-point" value="Group_SPI"/>
-
- <require idref="lufa.common"/>
-
- <build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_SPI"/>
-
- <require idref="lufa.common"/>
-
- <info type="gui-flag" value="hidden"/>
- </module>
- </select-by-device>
-
- <select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver">
- <module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <build type="doxygen-entry-point" value="Group_SerialSPI"/>
-
- <require idref="lufa.common"/>
-
- <build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <build type="doxygen-entry-point" value="Group_SerialSPI"/>
-
- <require idref="lufa.common"/>
-
- <build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_SerialSPI"/>
-
- <require idref="lufa.common"/>
-
- <info type="gui-flag" value="hidden"/>
- </module>
- </select-by-device>
-
- <select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver">
- <module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <build type="doxygen-entry-point" value="Group_TWI"/>
-
- <require idref="lufa.common"/>
-
- <build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/>
- <build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <build type="doxygen-entry-point" value="Group_TWI"/>
-
- <require idref="lufa.common"/>
-
- <build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/>
- <build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_TWI"/>
-
- <require idref="lufa.common"/>
-
- <info type="gui-flag" value="hidden"/>
- </module>
- </select-by-device>
-
- <select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver">
- <module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <build type="doxygen-entry-point" value="Group_ADC"/>
-
- <require idref="lufa.common"/>
-
- <build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/>
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <build type="doxygen-entry-point" value="Group_ADC"/>
-
- <require idref="lufa.common"/>
-
- <info type="gui-flag" value="hidden"/>
- </module>
-
- <module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_ADC"/>
-
- <require idref="lufa.common"/>
-
- <info type="gui-flag" value="hidden"/>
- </module>
- </select-by-device>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver"> + <module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <build type="doxygen-entry-point" value="Group_Serial"/> + + <require idref="lufa.common"/> + <require idref="lufa.drivers.misc.ansi"/> + + <build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/> + <build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8"> + <device-support-alias value="lufa_xmega"/> + + <build type="doxygen-entry-point" value="Group_Serial"/> + + <require idref="lufa.common"/> + <require idref="lufa.drivers.misc.ansi"/> + + <build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/> + <build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3"> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_Serial"/> + + <require idref="lufa.common"/> + <require idref="lufa.drivers.misc.ansi"/> + + <info type="gui-flag" value="hidden"/> + </module> + </select-by-device> + + <select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver"> + <module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <build type="doxygen-entry-point" value="Group_SPI"/> + + <require idref="lufa.common"/> + + <build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <build type="doxygen-entry-point" value="Group_SPI"/> + + <require idref="lufa.common"/> + + <build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3"> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_SPI"/> + + <require idref="lufa.common"/> + + <info type="gui-flag" value="hidden"/> + </module> + </select-by-device> + + <select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver"> + <module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <build type="doxygen-entry-point" value="Group_SerialSPI"/> + + <require idref="lufa.common"/> + + <build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <build type="doxygen-entry-point" value="Group_SerialSPI"/> + + <require idref="lufa.common"/> + + <build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3"> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_SerialSPI"/> + + <require idref="lufa.common"/> + + <info type="gui-flag" value="hidden"/> + </module> + </select-by-device> + + <select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver"> + <module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <build type="doxygen-entry-point" value="Group_TWI"/> + + <require idref="lufa.common"/> + + <build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/> + <build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <build type="doxygen-entry-point" value="Group_TWI"/> + + <require idref="lufa.common"/> + + <build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/> + <build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3"> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_TWI"/> + + <require idref="lufa.common"/> + + <info type="gui-flag" value="hidden"/> + </module> + </select-by-device> + + <select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver"> + <module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <build type="doxygen-entry-point" value="Group_ADC"/> + + <require idref="lufa.common"/> + + <build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/> + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <build type="doxygen-entry-point" value="Group_ADC"/> + + <require idref="lufa.common"/> + + <info type="gui-flag" value="hidden"/> + </module> + + <module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3"> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_ADC"/> + + <require idref="lufa.common"/> + + <info type="gui-flag" value="hidden"/> + </module> + </select-by-device> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb.xml index 7ff4b3949..263c411df 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb.xml @@ -1,32 +1,32 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_USB"/>
-
- <build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/>
- <build type="module-config" subtype="path" value="CodeTemplates"/>
- <build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Drivers/USB/USB.h"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.drivers.usb.class"/>
- <require idref="lufa.drivers.usb.core"/>
- </module>
- </asf>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_USB"/> + + <build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/> + <build type="module-config" subtype="path" value="CodeTemplates"/> + <build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Drivers/USB/USB.h"/> + + <require idref="lufa.common"/> + <require idref="lufa.drivers.usb.class"/> + <require idref="lufa.drivers.usb.core"/> + </module> + </asf> </lufa>
\ No newline at end of file diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_class.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_class.xml index cd18bf10e..67ab760d3 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_class.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_class.xml @@ -1,32 +1,32 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <info type="gui-flag" value="hidden"/>
- <build type="doxygen-entry-point" value="Group_USBClassDrivers"/>
-
- <require idref="lufa.drivers.usb.class.android"/>
- <require idref="lufa.drivers.usb.class.audio"/>
- <require idref="lufa.drivers.usb.class.cdc"/>
- <require idref="lufa.drivers.usb.class.hid"/>
- <require idref="lufa.drivers.usb.class.ms"/>
- <require idref="lufa.drivers.usb.class.midi"/>
- <require idref="lufa.drivers.usb.class.printer"/>
- <require idref="lufa.drivers.usb.class.rndis"/>
- <require idref="lufa.drivers.usb.class.si"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <info type="gui-flag" value="hidden"/> + <build type="doxygen-entry-point" value="Group_USBClassDrivers"/> + + <require idref="lufa.drivers.usb.class.android"/> + <require idref="lufa.drivers.usb.class.audio"/> + <require idref="lufa.drivers.usb.class.cdc"/> + <require idref="lufa.drivers.usb.class.hid"/> + <require idref="lufa.drivers.usb.class.ms"/> + <require idref="lufa.drivers.usb.class.midi"/> + <require idref="lufa.drivers.usb.class.printer"/> + <require idref="lufa.drivers.usb.class.rndis"/> + <require idref="lufa.drivers.usb.class.si"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core.xml index 58f8917ef..58a0b388f 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core.xml @@ -1,85 +1,85 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common">
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="header-file" value="Drivers/USB/Core/Device.h"/>
- <build type="header-file" value="Drivers/USB/Core/Endpoint.h"/>
- <build type="header-file" value="Drivers/USB/Core/Host.h"/>
- <build type="header-file" value="Drivers/USB/Core/Pipe.h"/>
- <build type="header-file" value="Drivers/USB/Core/OTG.h"/>
- <build type="header-file" value="Drivers/USB/Core/USBController.h"/>
- <build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/>
- <build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/>
- <build type="header-file" value="Drivers/USB/Core/PipeStream.h"/>
- <build type="c-source" value="Drivers/USB/Core/ConfigDescriptors.c"/>
- <build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/>
- <build type="c-source" value="Drivers/USB/Core/DeviceStandardReq.c"/>
- <build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/>
- <build type="c-source" value="Drivers/USB/Core/Events.c"/>
- <build type="header-file" value="Drivers/USB/Core/Events.h"/>
- <build type="c-source" value="Drivers/USB/Core/HostStandardReq.c"/>
- <build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/>
- <build type="c-source" value="Drivers/USB/Core/USBTask.c"/>
- <build type="header-file" value="Drivers/USB/Core/USBTask.h"/>
- <build type="header-file" value="Drivers/USB/Core/USBMode.h"/>
- <build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/>
- <build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/>
-
- <build type="c-source" value="Drivers/USB/Class/Common/HIDParser.c"/>
- <build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/>
- <build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/>
- </module>
-
- <select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver">
- <module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
-
- <require idref="lufa.drivers.usb.core.common"/>
- <require idref="lufa.drivers.usb.core.avr8"/>
- </module>
-
- <module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
-
- <require idref="lufa.drivers.usb.core.common"/>
- <require idref="lufa.drivers.usb.core.xmega"/>
- </module>
-
- <module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
-
- <require idref="lufa.drivers.usb.core.common"/>
- <require idref="lufa.drivers.usb.core.uc3"/>
- </module>
- </select-by-device>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common"> + <device-support-alias value="lufa_avr8"/> + <device-support-alias value="lufa_xmega"/> + <device-support-alias value="lufa_uc3"/> + + <build type="doxygen-entry-point" value="Group_USBManagement"/> + + <info type="gui-flag" value="hidden"/> + + <build type="header-file" value="Drivers/USB/Core/Device.h"/> + <build type="header-file" value="Drivers/USB/Core/Endpoint.h"/> + <build type="header-file" value="Drivers/USB/Core/Host.h"/> + <build type="header-file" value="Drivers/USB/Core/Pipe.h"/> + <build type="header-file" value="Drivers/USB/Core/OTG.h"/> + <build type="header-file" value="Drivers/USB/Core/USBController.h"/> + <build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/> + <build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/> + <build type="header-file" value="Drivers/USB/Core/PipeStream.h"/> + <build type="c-source" value="Drivers/USB/Core/ConfigDescriptors.c"/> + <build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/> + <build type="c-source" value="Drivers/USB/Core/DeviceStandardReq.c"/> + <build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/> + <build type="c-source" value="Drivers/USB/Core/Events.c"/> + <build type="header-file" value="Drivers/USB/Core/Events.h"/> + <build type="c-source" value="Drivers/USB/Core/HostStandardReq.c"/> + <build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/> + <build type="c-source" value="Drivers/USB/Core/USBTask.c"/> + <build type="header-file" value="Drivers/USB/Core/USBTask.h"/> + <build type="header-file" value="Drivers/USB/Core/USBMode.h"/> + <build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/> + <build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/> + + <build type="c-source" value="Drivers/USB/Class/Common/HIDParser.c"/> + <build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/> + <build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/> + </module> + + <select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver"> + <module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/> + + <require idref="lufa.drivers.usb.core.common"/> + <require idref="lufa.drivers.usb.core.avr8"/> + </module> + + <module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/> + + <require idref="lufa.drivers.usb.core.common"/> + <require idref="lufa.drivers.usb.core.xmega"/> + </module> + + <module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3"> + <device-support-alias value="lufa_uc3"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_USBManagement_UC3"/> + + <require idref="lufa.drivers.usb.core.common"/> + <require idref="lufa.drivers.usb.core.uc3"/> + </module> + </select-by-device> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml index 166b9257a..4688f05f9 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_avr8.xml @@ -1,43 +1,43 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
-
- <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Device_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Host_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/>
- <build type="c-source" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/>
- <build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8"> + <device-support-alias value="lufa_avr8"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/> + + <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Device_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Host_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/> + <build type="c-source" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/> + <build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml index 7e0540cda..2e7185f24 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_uc3.xml @@ -1,42 +1,42 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
-
- <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Device_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Host_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/Pipe_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/USBController_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/>
- <build type="c-source" value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/>
- <build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3"> + <device-support-alias value="lufa_uc3"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_USBManagement_UC3"/> + + <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Device_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Host_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/Pipe_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/USBController_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/> + <build type="c-source" value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/> + <build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml index 9e9f4f6a1..c79a0f5b5 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_drivers_usb_core_xmega.xml @@ -1,36 +1,36 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
-
- <build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/>
- <build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/>
- <build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/>
- <build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/>
- <build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/>
- <build type="c-source" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/>
- <build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/> + + <build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/> + <build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/> + <build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/> + <build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/> + <build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/> + <build type="c-source" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/> + <build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform.xml index 02c7463ee..4ee51f6ee 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform.xml @@ -1,60 +1,60 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <select-by-device id="lufa.platform" caption="LUFA Platform Specific Support">
- <module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8">
- <device-support-alias value="lufa_avr8"/>
-
- <build type="define" name="ARCH" value="ARCH_AVR8"/>
-
- <build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Platform/Platform.h"/>
-
- <require idref="lufa.common"/>
- </module>
-
- <module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA">
- <device-support-alias value="lufa_xmega"/>
-
- <build type="define" name="ARCH" value="ARCH_XMEGA"/>
-
- <build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Platform/Platform.h"/>
-
- <build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/>
-
- <require idref="lufa.platform.xmega"/>
- <require idref="lufa.common"/>
- </module>
-
- <module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3">
- <device-support-alias value="lufa_uc3"/>
-
- <build type="define" name="ARCH" value="ARCH_UC3"/>
-
- <build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
-
- <build type="include-path" value=".."/>
- <build type="header-file" subtype="api" value="Platform/Platform.h"/>
-
- <build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/>
-
- <require idref="lufa.platform.uc3"/>
- <require idref="lufa.common"/>
- </module>
- </select-by-device>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <select-by-device id="lufa.platform" caption="LUFA Platform Specific Support"> + <module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8"> + <device-support-alias value="lufa_avr8"/> + + <build type="define" name="ARCH" value="ARCH_AVR8"/> + + <build type="doxygen-entry-point" value="Group_PlatformDrivers"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Platform/Platform.h"/> + + <require idref="lufa.common"/> + </module> + + <module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA"> + <device-support-alias value="lufa_xmega"/> + + <build type="define" name="ARCH" value="ARCH_XMEGA"/> + + <build type="doxygen-entry-point" value="Group_PlatformDrivers"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Platform/Platform.h"/> + + <build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/> + + <require idref="lufa.platform.xmega"/> + <require idref="lufa.common"/> + </module> + + <module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3"> + <device-support-alias value="lufa_uc3"/> + + <build type="define" name="ARCH" value="ARCH_UC3"/> + + <build type="doxygen-entry-point" value="Group_PlatformDrivers"/> + + <build type="include-path" value=".."/> + <build type="header-file" subtype="api" value="Platform/Platform.h"/> + + <build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/> + + <require idref="lufa.platform.uc3"/> + <require idref="lufa.common"/> + </module> + </select-by-device> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_uc3.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_uc3.xml index a488c4b83..98017b08a 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_uc3.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_uc3.xml @@ -1,26 +1,26 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers">
- <device-support-alias value="lufa_uc3"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/>
-
- <build type="header-file" value="Platform/UC3/ClockManagement.h"/>
- <build type="header-file" value="Platform/UC3/InterruptManagement.h"/>
- <build type="c-source" value="Platform/UC3/InterruptManagement.c"/>
- <build type="asm-source" value="Platform/UC3/Exception.S"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers"> + <device-support-alias value="lufa_uc3"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/> + + <build type="header-file" value="Platform/UC3/ClockManagement.h"/> + <build type="header-file" value="Platform/UC3/InterruptManagement.h"/> + <build type="c-source" value="Platform/UC3/InterruptManagement.c"/> + <build type="asm-source" value="Platform/UC3/Exception.S"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_xmega.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_xmega.xml index 1674a77b0..e613fe520 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_xmega.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_platform_xmega.xml @@ -1,23 +1,23 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf xmlversion="1.0">
- <module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers">
- <device-support-alias value="lufa_xmega"/>
-
- <info type="gui-flag" value="hidden"/>
-
- <build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/>
-
- <build type="header-file" value="Platform/XMEGA/ClockManagement.h"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf xmlversion="1.0"> + <module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers"> + <device-support-alias value="lufa_xmega"/> + + <info type="gui-flag" value="hidden"/> + + <build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/> + + <build type="header-file" value="Platform/XMEGA/ClockManagement.h"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_toolchain.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_toolchain.xml index 031c8a2be..a76b6d0d3 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_toolchain.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/StudioIntegration/lufa_toolchain.xml @@ -1,43 +1,43 @@ -<!--
- LUFA Library
- Copyright (C) Dean Camera, 2013.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
--->
-
-<!-- Atmel Studio framework integration file -->
-
-<lufa>
- <asf>
- <select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults">
- <module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR">
- <info type="gui-flag" value="hidden"/>
- <device-support value="avr"/>
-
- <toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>
- <toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>
- </module>
- </select-by-device>
-
- <module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR">
- <info type="gui-flag" value="hidden"/>
- <device-support value="uc3"/>
-
- <toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/>
- <toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/>
- <toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/>
- <toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/>
- <toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/>
- <toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/>
- <toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/>
- <toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/>
- </module>
- </asf>
-</lufa>
+<!-- + LUFA Library + Copyright (C) Dean Camera, 2013. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +--> + +<!-- Atmel Studio framework integration file --> + +<lufa> + <asf> + <select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults"> + <module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR"> + <info type="gui-flag" value="hidden"/> + <device-support value="avr"/> + + <toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/> + <toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/> + </module> + </select-by-device> + + <module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR"> + <info type="gui-flag" value="hidden"/> + <device-support value="uc3"/> + + <toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/> + <toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/> + <toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/> + <toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/> + <toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/> + <toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/> + <toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/> + <toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/> + </module> + </asf> +</lufa> diff --git a/tmk_core/protocol/lufa/descriptor.c b/tmk_core/protocol/lufa/descriptor.c index 539a58d66..6f2407f58 100644 --- a/tmk_core/protocol/lufa/descriptor.c +++ b/tmk_core/protocol/lufa/descriptor.c @@ -231,9 +231,15 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .USBSpecification = VERSION_BCD(1,1,0), +#if VIRTSER_ENABLE + .Class = USB_CSCP_IADDeviceClass, + .SubClass = USB_CSCP_IADDeviceSubclass, + .Protocol = USB_CSCP_IADDeviceProtocol, +#else .Class = USB_CSCP_NoDeviceClass, .SubClass = USB_CSCP_NoDeviceSubclass, .Protocol = USB_CSCP_NoDeviceProtocol, +#endif .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, @@ -643,8 +649,112 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .TotalEmbeddedJacks = 0x01, .AssociatedJackID = {0x03} - } + }, #endif + +#ifdef VIRTSER_ENABLE + .CDC_Interface_Association = + { + .Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation}, + + .FirstInterfaceIndex = CCI_INTERFACE, + .TotalInterfaces = 2, + + .Class = CDC_CSCP_CDCClass, + .SubClass = CDC_CSCP_ACMSubclass, + .Protocol = CDC_CSCP_ATCommandProtocol, + + .IADStrIndex = NO_DESCRIPTOR, + }, + + .CDC_CCI_Interface = + { + .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, + + .InterfaceNumber = CCI_INTERFACE, + .AlternateSetting = 0, + + .TotalEndpoints = 1, + + .Class = CDC_CSCP_CDCClass, + .SubClass = CDC_CSCP_ACMSubclass, + .Protocol = CDC_CSCP_ATCommandProtocol, + + .InterfaceStrIndex = NO_DESCRIPTOR + }, + + .CDC_Functional_Header = + { + .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface}, + .Subtype = 0x00, + + .CDCSpecification = VERSION_BCD(1,1,0), + }, + + .CDC_Functional_ACM = + { + .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface}, + .Subtype = 0x02, + + .Capabilities = 0x02, + }, + + .CDC_Functional_Union = + { + .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface}, + .Subtype = 0x06, + + .MasterInterfaceNumber = CCI_INTERFACE, + .SlaveInterfaceNumber = CDI_INTERFACE, + }, + + .CDC_NotificationEndpoint = + { + .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, + + .EndpointAddress = CDC_NOTIFICATION_EPADDR, + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CDC_NOTIFICATION_EPSIZE, + .PollingIntervalMS = 0xFF + }, + + .CDC_DCI_Interface = + { + .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, + + .InterfaceNumber = CDI_INTERFACE, + .AlternateSetting = 0, + + .TotalEndpoints = 2, + + .Class = CDC_CSCP_CDCDataClass, + .SubClass = CDC_CSCP_NoDataSubclass, + .Protocol = CDC_CSCP_NoDataProtocol, + + .InterfaceStrIndex = NO_DESCRIPTOR + }, + + .CDC_DataOutEndpoint = + { + .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, + + .EndpointAddress = CDC_OUT_EPADDR, + .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CDC_EPSIZE, + .PollingIntervalMS = 0x05 + }, + + .CDC_DataInEndpoint = + { + .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, + + .EndpointAddress = CDC_IN_EPADDR, + .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = CDC_EPSIZE, + .PollingIntervalMS = 0x05 + }, +#endif + }; diff --git a/tmk_core/protocol/lufa/descriptor.h b/tmk_core/protocol/lufa/descriptor.h index 4fd81a0e8..316650a7b 100644 --- a/tmk_core/protocol/lufa/descriptor.h +++ b/tmk_core/protocol/lufa/descriptor.h @@ -104,6 +104,21 @@ typedef struct USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_Out_Jack_Endpoint_SPC; #endif +#ifdef VIRTSER_ENABLE + USB_Descriptor_Interface_Association_t CDC_Interface_Association; + + // CDC Control Interface + USB_Descriptor_Interface_t CDC_CCI_Interface; + USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; + USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; + USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; + USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; + + // CDC Data Interface + USB_Descriptor_Interface_t CDC_DCI_Interface; + USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; + USB_Descriptor_Endpoint_t CDC_DataInEndpoint; +#endif } USB_Descriptor_Configuration_t; @@ -141,8 +156,15 @@ typedef struct # define AS_INTERFACE NKRO_INTERFACE #endif +#ifdef VIRTSER_ENABLE +# define CCI_INTERFACE (AS_INTERFACE + 1) +# define CDI_INTERFACE (AS_INTERFACE + 2) +#else +# define CDI_INTERFACE AS_INTERFACE +#endif + /* nubmer of interfaces */ -#define TOTAL_INTERFACES AS_INTERFACE + 1 +#define TOTAL_INTERFACES (CDI_INTERFACE + 1) // Endopoint number and size @@ -180,11 +202,24 @@ typedef struct # define MIDI_STREAM_OUT_EPNUM (NKRO_IN_EPNUM + 2) # define MIDI_STREAM_IN_EPADDR (ENDPOINT_DIR_IN | MIDI_STREAM_IN_EPNUM) # define MIDI_STREAM_OUT_EPADDR (ENDPOINT_DIR_OUT | MIDI_STREAM_OUT_EPNUM) +#else +# define MIDI_STREAM_OUT_EPNUM NKRO_IN_EPNUM +#endif + +#ifdef VIRTSER_ENABLE +# define CDC_NOTIFICATION_EPNUM (MIDI_STREAM_OUT_EPNUM + 1) +# define CDC_IN_EPNUM (MIDI_STREAM_OUT_EPNUM + 2) +# define CDC_OUT_EPNUM (MIDI_STREAM_OUT_EPNUM + 3) +# define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM) +# define CDC_IN_EPADDR (ENDPOINT_DIR_IN | CDC_IN_EPNUM) +# define CDC_OUT_EPADDR (ENDPOINT_DIR_OUT | CDC_OUT_EPNUM) +#else +# define CDC_OUT_EPNUM MIDI_STREAM_OUT_EPNUM #endif -#if defined(__AVR_ATmega32U2__) && MIDI_STREAM_OUT_EPADDR > 4 -# error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI)" +#if defined(__AVR_ATmega32U2__) && CDC_OUT_EPNUM > 4 +# error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI, SERIAL)" #endif #define KEYBOARD_EPSIZE 8 @@ -193,6 +228,8 @@ typedef struct #define CONSOLE_EPSIZE 32 #define NKRO_EPSIZE 16 #define MIDI_STREAM_EPSIZE 64 +#define CDC_NOTIFICATION_EPSIZE 8 +#define CDC_EPSIZE 16 uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 9ca55dbc9..9b201374a 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -60,6 +60,10 @@ #include "bluetooth.h" #endif +#ifdef VIRTSER_ENABLE + #include "virtser.h" +#endif + uint8_t keyboard_idle = 0; /* 0: Boot Protocol, 1: Report Protocol(default) */ uint8_t keyboard_protocol = 1; @@ -127,6 +131,34 @@ USB_ClassInfo_MIDI_Device_t USB_MIDI_Interface = #define SYS_COMMON_3 0x30 #endif +#ifdef VIRTSER_ENABLE +USB_ClassInfo_CDC_Device_t cdc_device = +{ + .Config = + { + .ControlInterfaceNumber = CCI_INTERFACE, + .DataINEndpoint = + { + .Address = CDC_IN_EPADDR, + .Size = CDC_EPSIZE, + .Banks = 1, + }, + .DataOUTEndpoint = + { + .Address = CDC_OUT_EPADDR, + .Size = CDC_EPSIZE, + .Banks = 1, + }, + .NotificationEndpoint = + { + .Address = CDC_NOTIFICATION_EPADDR, + .Size = CDC_NOTIFICATION_EPSIZE, + .Banks = 1, + }, + }, +}; +#endif + /******************************************************************************* * Console @@ -311,6 +343,12 @@ void EVENT_USB_Device_ConfigurationChanged(void) ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE); ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE); #endif + +#ifdef VIRTSER_ENABLE + ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE); + ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_OUT_EPADDR, EP_TYPE_BULK, CDC_EPSIZE, ENDPOINT_BANK_SINGLE); + ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_IN_EPADDR, EP_TYPE_BULK, CDC_EPSIZE, ENDPOINT_BANK_SINGLE); +#endif } /* @@ -432,10 +470,15 @@ void EVENT_USB_Device_ControlRequest(void) break; } + +#ifdef VIRTSER_ENABLE + CDC_Device_ProcessControlRequest(&cdc_device); +#endif } /******************************************************************************* * Host driver +p ******************************************************************************/ static uint8_t keyboard_leds(void) { @@ -827,6 +870,61 @@ void MIDI_Task(void) #endif +/******************************************************************************* + * VIRTUAL SERIAL + ******************************************************************************/ + +#ifdef VIRTSER_ENABLE +void virtser_init(void) +{ + cdc_device.State.ControlLineStates.DeviceToHost = CDC_CONTROL_LINE_IN_DSR ; + CDC_Device_SendControlLineStateChange(&cdc_device); +} + +void virtser_recv(uint8_t c) __attribute__ ((weak)); +void virtser_recv(uint8_t c) +{ + // Ignore by default +} + +void virtser_task(void) +{ + uint16_t count = CDC_Device_BytesReceived(&cdc_device); + uint8_t ch; + if (count) + { + ch = CDC_Device_ReceiveByte(&cdc_device); + virtser_recv(ch); + } +} +void virtser_send(const uint8_t byte) +{ + uint8_t timeout = 255; + uint8_t ep = Endpoint_GetCurrentEndpoint(); + + if (cdc_device.State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR) + { + /* IN packet */ + Endpoint_SelectEndpoint(cdc_device.Config.DataINEndpoint.Address); + + if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) { + Endpoint_SelectEndpoint(ep); + return; + } + + while (timeout-- && !Endpoint_IsReadWriteAllowed()) _delay_us(40); + + Endpoint_Write_8(byte); + CDC_Device_Flush(&cdc_device); + + if (Endpoint_IsINReady()) { + Endpoint_ClearIN(); + } + + Endpoint_SelectEndpoint(ep); + } +} +#endif /******************************************************************************* * main @@ -918,6 +1016,10 @@ int main(void) sleep_led_init(); #endif +#ifdef VIRTSER_ENABLE + virtser_init(); +#endif + print("Keyboard start.\n"); while (1) { #ifndef BLUETOOTH_ENABLE @@ -936,6 +1038,11 @@ int main(void) #endif keyboard_task(); +#ifdef VIRTSER_ENABLE + virtser_task(); + CDC_Device_USBTask(&cdc_device); +#endif + #if !defined(INTERRUPT_CONTROL_ENDPOINT) USB_USBTask(); #endif diff --git a/tmk_core/protocol/midi/Config/LUFAConfig.h b/tmk_core/protocol/midi/Config/LUFAConfig.h index fa9404498..a1d748267 100755 --- a/tmk_core/protocol/midi/Config/LUFAConfig.h +++ b/tmk_core/protocol/midi/Config/LUFAConfig.h @@ -1,93 +1,93 @@ -/*
- LUFA Library
- Copyright (C) Dean Camera, 2012.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that the above copyright notice appear in
- all copies and that both that the copyright notice and this
- permission notice and warranty disclaimer appear in supporting
- documentation, and that the name of the author not be used in
- advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- The author disclaim all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-/** \file
- * \brief LUFA Library Configuration Header File
- *
- * This header file is used to configure LUFA's compile time options,
- * as an alternative to the compile time constants supplied through
- * a makefile.
- *
- * For information on what each token does, refer to the LUFA
- * manual section "Summary of Compile Tokens".
- */
-
-#ifndef _LUFA_CONFIG_H_
-#define _LUFA_CONFIG_H_
-
- #if (ARCH == ARCH_AVR8)
-
- /* Non-USB Related Configuration Tokens: */
-// #define DISABLE_TERMINAL_CODES
-
- /* USB Class Driver Related Tokens: */
-// #define HID_HOST_BOOT_PROTOCOL_ONLY
-// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}
-// #define HID_USAGE_STACK_DEPTH {Insert Value Here}
-// #define HID_MAX_COLLECTIONS {Insert Value Here}
-// #define HID_MAX_REPORTITEMS {Insert Value Here}
-// #define HID_MAX_REPORT_IDS {Insert Value Here}
-// #define NO_CLASS_DRIVER_AUTOFLUSH
-
- /* General USB Driver Related Tokens: */
-// #define ORDERED_EP_CONFIG
- #define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
- #define USB_DEVICE_ONLY
-// #define USB_HOST_ONLY
-// #define USB_STREAM_TIMEOUT_MS {Insert Value Here}
-// #define NO_LIMITED_CONTROLLER_CONNECT
-// #define NO_SOF_EVENTS
-
- /* USB Device Mode Driver Related Tokens: */
-// #define USE_RAM_DESCRIPTORS
- #define USE_FLASH_DESCRIPTORS
-// #define USE_EEPROM_DESCRIPTORS
-// #define NO_INTERNAL_SERIAL
- #define FIXED_CONTROL_ENDPOINT_SIZE 8
-// #define DEVICE_STATE_AS_GPIOR {Insert Value Here}
- #define FIXED_NUM_CONFIGURATIONS 1
-// #define CONTROL_ONLY_DEVICE
-// #define INTERRUPT_CONTROL_ENDPOINT
-// #define NO_DEVICE_REMOTE_WAKEUP
-// #define NO_DEVICE_SELF_POWER
-
- /* USB Host Mode Driver Related Tokens: */
-// #define HOST_STATE_AS_GPIOR {Insert Value Here}
-// #define USB_HOST_TIMEOUT_MS {Insert Value Here}
-// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
-// #define NO_AUTO_VBUS_MANAGEMENT
-// #define INVERTED_VBUS_ENABLE_LINE
-
- #else
-
- #error Unsupported architecture for this LUFA configuration file.
-
- #endif
-#endif
+/* + LUFA Library + Copyright (C) Dean Camera, 2012. + + dean [at] fourwalledcubicle [dot] com + www.lufa-lib.org +*/ + +/* + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that the above copyright notice appear in + all copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +/** \file + * \brief LUFA Library Configuration Header File + * + * This header file is used to configure LUFA's compile time options, + * as an alternative to the compile time constants supplied through + * a makefile. + * + * For information on what each token does, refer to the LUFA + * manual section "Summary of Compile Tokens". + */ + +#ifndef _LUFA_CONFIG_H_ +#define _LUFA_CONFIG_H_ + + #if (ARCH == ARCH_AVR8) + + /* Non-USB Related Configuration Tokens: */ +// #define DISABLE_TERMINAL_CODES + + /* USB Class Driver Related Tokens: */ +// #define HID_HOST_BOOT_PROTOCOL_ONLY +// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here} +// #define HID_USAGE_STACK_DEPTH {Insert Value Here} +// #define HID_MAX_COLLECTIONS {Insert Value Here} +// #define HID_MAX_REPORTITEMS {Insert Value Here} +// #define HID_MAX_REPORT_IDS {Insert Value Here} +// #define NO_CLASS_DRIVER_AUTOFLUSH + + /* General USB Driver Related Tokens: */ +// #define ORDERED_EP_CONFIG + #define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL) + #define USB_DEVICE_ONLY +// #define USB_HOST_ONLY +// #define USB_STREAM_TIMEOUT_MS {Insert Value Here} +// #define NO_LIMITED_CONTROLLER_CONNECT +// #define NO_SOF_EVENTS + + /* USB Device Mode Driver Related Tokens: */ +// #define USE_RAM_DESCRIPTORS + #define USE_FLASH_DESCRIPTORS +// #define USE_EEPROM_DESCRIPTORS +// #define NO_INTERNAL_SERIAL + #define FIXED_CONTROL_ENDPOINT_SIZE 8 +// #define DEVICE_STATE_AS_GPIOR {Insert Value Here} + #define FIXED_NUM_CONFIGURATIONS 1 +// #define CONTROL_ONLY_DEVICE +// #define INTERRUPT_CONTROL_ENDPOINT +// #define NO_DEVICE_REMOTE_WAKEUP +// #define NO_DEVICE_SELF_POWER + + /* USB Host Mode Driver Related Tokens: */ +// #define HOST_STATE_AS_GPIOR {Insert Value Here} +// #define USB_HOST_TIMEOUT_MS {Insert Value Here} +// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here} +// #define NO_AUTO_VBUS_MANAGEMENT +// #define INVERTED_VBUS_ENABLE_LINE + + #else + + #error Unsupported architecture for this LUFA configuration file. + + #endif +#endif diff --git a/tmk_core/tool/chibios/ch-bootloader-jump.patch b/tmk_core/tool/chibios/ch-bootloader-jump.patch index d88657621..c6eb2405c 100644 --- a/tmk_core/tool/chibios/ch-bootloader-jump.patch +++ b/tmk_core/tool/chibios/ch-bootloader-jump.patch @@ -3,114 +3,114 @@ index 51a79bb..42d07bd 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s +++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s @@ -105,6 +105,13 @@ - #define CRT0_CALL_DESTRUCTORS TRUE
- #endif
-
-+/**
-+ * @brief Magic number for jumping to bootloader.
-+ */
-+#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)
-+#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF
-+#endif
-+
- /*===========================================================================*/
- /* Code section. */
- /*===========================================================================*/
+ #define CRT0_CALL_DESTRUCTORS TRUE + #endif + ++/** ++ * @brief Magic number for jumping to bootloader. ++ */ ++#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__) ++#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF ++#endif ++ + /*===========================================================================*/ + /* Code section. */ + /*===========================================================================*/ @@ -124,6 +131,17 @@ - .thumb_func
- .global Reset_Handler
- Reset_Handler:
-+
-+#ifdef STM32_BOOTLOADER_ADDRESS
-+ /* jump to bootloader code */
-+ ldr r0, =__ram0_end__-4
-+ ldr r1, =MAGIC_BOOTLOADER_NUMBER
-+ ldr r2, [r0, #0]
-+ str r0, [r0, #0] /* erase stored magic */
-+ cmp r2, r1
-+ beq Bootloader_Jump
-+#endif /* STM32_BOOTLOADER_ADDRESS */
-+
- /* Interrupts are globally masked initially.*/
- cpsid i
-
+ .thumb_func + .global Reset_Handler + Reset_Handler: ++ ++#ifdef STM32_BOOTLOADER_ADDRESS ++ /* jump to bootloader code */ ++ ldr r0, =__ram0_end__-4 ++ ldr r1, =MAGIC_BOOTLOADER_NUMBER ++ ldr r2, [r0, #0] ++ str r0, [r0, #0] /* erase stored magic */ ++ cmp r2, r1 ++ beq Bootloader_Jump ++#endif /* STM32_BOOTLOADER_ADDRESS */ ++ + /* Interrupts are globally masked initially.*/ + cpsid i + @@ -242,6 +260,21 @@ endfiniloop: - ldr r1, =__default_exit
- bx r1
-
-+#ifdef STM32_BOOTLOADER_ADDRESS
-+/*
-+ * Jump-to-bootloader function.
-+ */
-+
-+ .align 2
-+ .thumb_func
-+Bootloader_Jump:
-+ ldr r0, =STM32_BOOTLOADER_ADDRESS
-+ ldr r1, [r0, #0]
-+ mov sp, r1
-+ ldr r0, [r0, #4]
-+ bx r0
-+#endif /* STM32_BOOTLOADER_ADDRESS */
-+
- #endif
-
- /** @} */
+ ldr r1, =__default_exit + bx r1 + ++#ifdef STM32_BOOTLOADER_ADDRESS ++/* ++ * Jump-to-bootloader function. ++ */ ++ ++ .align 2 ++ .thumb_func ++Bootloader_Jump: ++ ldr r0, =STM32_BOOTLOADER_ADDRESS ++ ldr r1, [r0, #0] ++ mov sp, r1 ++ ldr r0, [r0, #4] ++ bx r0 ++#endif /* STM32_BOOTLOADER_ADDRESS */ ++ + #endif + + /** @} */ diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s index 4812a29..dca9f88 100644 --- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s +++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s @@ -140,6 +140,13 @@ - #define CRT0_CPACR_INIT 0x00F00000
- #endif
-
-+/**
-+ * @brief Magic number for jumping to bootloader.
-+ */
-+#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)
-+#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF
-+#endif
-+
- /*===========================================================================*/
- /* Code section. */
- /*===========================================================================*/
+ #define CRT0_CPACR_INIT 0x00F00000 + #endif + ++/** ++ * @brief Magic number for jumping to bootloader. ++ */ ++#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__) ++#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF ++#endif ++ + /*===========================================================================*/ + /* Code section. */ + /*===========================================================================*/ @@ -164,6 +171,17 @@ - .thumb_func
- .global Reset_Handler
- Reset_Handler:
-+
-+#ifdef STM32_BOOTLOADER_ADDRESS
-+ /* jump to bootloader code */
-+ ldr r0, =__ram0_end__-4
-+ ldr r1, =MAGIC_BOOTLOADER_NUMBER
-+ ldr r2, [r0, #0]
-+ str r0, [r0, #0] /* erase stored magic */
-+ cmp r2, r1
-+ beq Bootloader_Jump
-+#endif /* STM32_BOOTLOADER_ADDRESS */
-+
- /* Interrupts are globally masked initially.*/
- cpsid i
-
+ .thumb_func + .global Reset_Handler + Reset_Handler: ++ ++#ifdef STM32_BOOTLOADER_ADDRESS ++ /* jump to bootloader code */ ++ ldr r0, =__ram0_end__-4 ++ ldr r1, =MAGIC_BOOTLOADER_NUMBER ++ ldr r2, [r0, #0] ++ str r0, [r0, #0] /* erase stored magic */ ++ cmp r2, r1 ++ beq Bootloader_Jump ++#endif /* STM32_BOOTLOADER_ADDRESS */ ++ + /* Interrupts are globally masked initially.*/ + cpsid i + @@ -305,6 +323,21 @@ endfiniloop: - /* Branching to the defined exit handler.*/
- b __default_exit
-
-+#ifdef STM32_BOOTLOADER_ADDRESS
-+/*
-+ * Jump-to-bootloader function.
-+ */
-+
-+ .align 2
-+ .thumb_func
-+Bootloader_Jump:
-+ ldr r0, =STM32_BOOTLOADER_ADDRESS
-+ ldr r1, [r0, #0]
-+ mov sp, r1
-+ ldr r0, [r0, #4]
-+ bx r0
-+#endif /* STM32_BOOTLOADER_ADDRESS */
-+
- #endif /* !defined(__DOXYGEN__) */
-
- /** @} */
+ /* Branching to the defined exit handler.*/ + b __default_exit + ++#ifdef STM32_BOOTLOADER_ADDRESS ++/* ++ * Jump-to-bootloader function. ++ */ ++ ++ .align 2 ++ .thumb_func ++Bootloader_Jump: ++ ldr r0, =STM32_BOOTLOADER_ADDRESS ++ ldr r1, [r0, #0] ++ mov sp, r1 ++ ldr r0, [r0, #4] ++ bx r0 ++#endif /* STM32_BOOTLOADER_ADDRESS */ ++ + #endif /* !defined(__DOXYGEN__) */ + + /** @} */ diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh index 27ab3cec6..c2a994ef0 100644 --- a/util/travis_compiled_push.sh +++ b/util/travis_compiled_push.sh @@ -7,6 +7,8 @@ rev=$(git rev-parse --short HEAD) git config --global user.name "Travis CI" git config --global user.email "jack.humb+travis.ci@gmail.com" +make all-keymaps keyboard=ergodox/ez AUTOGEN=true + find . -name ".build" | xargs rm -rf cd .. git clone https://$GH_TOKEN@github.com/jackhumbert/qmk.fm.git |