diff options
Diffstat (limited to 'keyboards/splitkb')
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamas/config.h | 46 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamas/keymap.c | 277 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamas/rules.mk | 7 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamas2/config.h | 141 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamas2/keymap.c | 336 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamas2/rules.mk | 13 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamasMirror/config.h | 38 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamasMirror/keymap.c | 543 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamasMirror/readme.md | 249 | ||||
-rw-r--r-- | keyboards/splitkb/kyria/keymaps/taamasMirror/rules.mk | 4 |
10 files changed, 1654 insertions, 0 deletions
diff --git a/keyboards/splitkb/kyria/keymaps/taamas/config.h b/keyboards/splitkb/kyria/keymaps/taamas/config.h new file mode 100644 index 0000000000..467131dd27 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamas/config.h @@ -0,0 +1,46 @@ +/* Copyright 2019 Thomas Baart <thomas@splitkb.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/>. + */ + +#pragma once + +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 150 +#endif + +// Lets you roll mod-tap keys +// Which is something I don't want: a +// quick Alt+a don't work if this is defined +//#define IGNORE_MOD_TAP_INTERRUPT + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK + +// Mouse settings +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 50 +#define MOUSEKEY_MAX_SPEED 20 +#define MOUSEKEY_TIME_TO_MAX 20 + +#define ENCODER_RESOLUTION 2 diff --git a/keyboards/splitkb/kyria/keymaps/taamas/keymap.c b/keyboards/splitkb/kyria/keymaps/taamas/keymap.c new file mode 100644 index 0000000000..1200cf35cf --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamas/keymap.c @@ -0,0 +1,277 @@ +/* Copyright 2019 Thomas Baart <thomas@splitkb.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 QMK_KEYBOARD_H +#include <keymap_spanish.h> + +enum layers { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST, + _GAMING, + _NUM_L +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | ' ? | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ESC | A | S | D | F | G | | H | J | K | L | Ñ | ´ ¨ | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | < > | Z | X | C | V | B | NumsL|NLAlt | |KeyLck|CapsLk| N | M | , ; | . : | - _ | " | + * | LShift | | | | | | | | |CtrAlt|SperSh| | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Del | | Space| Enter| Esc | | Bksp | App | ` | Tab | Space| + * |LShift| Lower| | Ctrl | Alt | |LShift| Super| AltGr| Raise| RCtrl| + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, ES_QUOT, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, ES_NTIL, ES_ACUT, + MT(MOD_LSFT, ES_LABK), KC_Z, KC_X, KC_C, KC_V, KC_B, OSL(_NUM_L), LM(_NUM_L, MOD_LALT), LCA_T(KC_LOCK), SGUI_T(KC_CAPS), KC_N, KC_M, ES_COMM, ES_DOT, ES_MINS, ES_DQUO, + MT(MOD_LSFT, KC_DEL), MO(_LOWER), KC_SPC, MT(MOD_LCTL, KC_ENT), MT(MOD_LALT, KC_ESC), + MT(MOD_LSFT, KC_BSPC), MT(MOD_LGUI, KC_APP), MT(MOD_RALT, ES_GRV), LT(_RAISE, KC_TAB), RCTL_T(KC_SPC) + ), + +/* + * Lower Layer: Symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | + | @ | ( | ) | $ | | & | 7 | 8 | 9 | ¡ | ! | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | * | / | { | } | # | | 0 | 4 | 5 | 6 | ¿ | ? | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | \ | ^ | % | [ | ] | ~ | | | | | | | | 1 | 2 | 3 | = | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + _______, ES_PLUS, ES_AT, ES_LPRN, ES_RPRN, ES_DLR, ES_AMPR, KC_7, KC_8, KC_9, ES_IEXL, ES_EXLM, + _______, ES_ASTR, ES_SLSH, ES_LCBR, ES_RCBR, ES_HASH, ES_0, KC_4, KC_5, KC_6, ES_IQUE, ES_QUES, + ES_BSLS, ES_CIRC, ES_PERC, ES_LBRC, ES_RBRC, ES_TILD, _______, _______, _______, _______, ES_PIPE, KC_1, KC_2, KC_3, ES_EQL, KC_MINS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Raise Layer: Number keys, media, navigation + * + * ,-------------------------------------------. ,--------------------------------------------. + * | |WheelU|Mouse1|MouseU|Mouse2|Mouse3| | Prev | Stop | Play | Next | WheelU| Gaming | + * |--------+------+------+------+------+------| |------+------+------+------+-------+------- | + * | |WheelD|MouseL|MouseD|MouseR| VolUp| | Left | Down | Up | Right| WheelD| Mouse3 | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+-------+------- | + * | | Acc0 | Acc1 | Acc2 | Mute | VolDn| BriD | BriU | | | | MLeft| Mdown| MUp |MRight| Mouse1| Mouse2 | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+-----------------------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_WH_U, TO(_GAMING), + _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_WH_D, KC_BTN3, + _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_MUTE, KC_VOLD, KC_BRID, KC_BRIU, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, KC_BTN2, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | |RecMc1|PMac1 |RecMc2|PMac2 |RecStp| | | F7 | F8 | F9 | F12 |QmkMake | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | TOG | SAI | HUI | VAI | MOD | | | F4 | F5 | F6 | F11 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | SAD | HUD | VAD | RMOD | | | | | | | F1 | F2 | F3 | F10 | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, DM_REC1, DM_PLY1, DM_REC2, DM_PLY2, DM_RSTP, _______, KC_F7, KC_F8, KC_F9, KC_F12, QK_MAKE, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Gaming Layer: For left hand on keyboard and right hand on mouse + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | Q | W | E | R | | | | | | | Qwerty | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ESC | Ctrl | A | S | D | F | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | Shft | Z | X | C | V | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | NumsL| | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_GAMING] = LAYOUT( + _______, _______, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, TO(_QWERTY), + KC_ESC, KC_LCTRL, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, + _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MO(_NUM_L), _______, _______, _______, + _______, _______, _______, _______, _______ + ), + +/* + * Numbers on left Layer + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | 7 | 8 | 9 | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | 0 | 4 | S | 6 | . | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | 1 | 2 | 3 | , | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NUM_L] = LAYOUT( + _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______, + _______, KC_0, KC_4, KC_5, KC_6, ES_DOT, _______, _______, _______, _______, _______, _______, + _______, _______, KC_1, KC_2, KC_3, ES_COMM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _GAMING: + oled_write_P(PSTR("Gaming\n"), false); + break; + case _NUM_L: + oled_write_P(PSTR("Numbers Left\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Tab + if (clockwise) { + tap_code(KC_TAB); + } else { + tap_code(KC_TAB); + } + } + else if (index == 1) { + // Volume control + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/taamas/rules.mk b/keyboards/splitkb/kyria/keymaps/taamas/rules.mk new file mode 100644 index 0000000000..cc1216466e --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamas/rules.mk @@ -0,0 +1,7 @@ +OLED_ENABLE = no +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MOUSEKEY_ENABLE = yes +KEY_LOCK_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes diff --git a/keyboards/splitkb/kyria/keymaps/taamas2/config.h b/keyboards/splitkb/kyria/keymaps/taamas2/config.h new file mode 100644 index 0000000000..b276b5a59d --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamas2/config.h @@ -0,0 +1,141 @@ +/* +Copyright 2022 Thomas Baart <thomas@splitkb.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/>. +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8D1D +#define PRODUCT_ID 0x9D9D +#define DEVICE_VER 0x0002 +#define MANUFACTURER splitkb +#define PRODUCT Kyria rev2 + +/* key matrix size */ +/* Rows are doubled up */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +// wiring +#define MATRIX_ROW_PINS \ + { F6, F7, B1, B3 } +#define MATRIX_COL_PINS \ + { B2, B6, B5, B4, E6, D7, C6, D4 } +#define MATRIX_ROW_PINS_RIGHT \ + { D4, C6, D7, E6 } +#define MATRIX_COL_PINS_RIGHT \ + { B4, B5, B6, B2, B3, B1, F7, F6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +// Side detection +// col 4 row 3 on right-hand-side +#define SPLIT_HAND_MATRIX_GRID E6, B3 // row first because the board is col2row +#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT +#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `rev2.c` + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ + +#if defined(CONVERT_TO_PROTON_C) +# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. +# define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve. +# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1 +# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 +# define SERIAL_USART_TX_PIN D3 +# define SERIAL_USART_RX_PIN D2 + +# define RGB_DI_PIN PAL_LINE(GPIOA, 3) +# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 +# define WS2812_PWM_CHANNEL 4 // default: 2 +# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 +# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. +# define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. +# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU. +#else +# define RGB_DI_PIN D3 +# define SOFT_SERIAL_PIN D2 +#endif + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +# define SPLIT_OLED_ENABLE +#endif + +/* RGB matrix support */ +#ifdef RGB_MATRIX_ENABLE +# define SPLIT_TRANSPORT_MIRROR +# define DRIVER_LED_TOTAL RGBLED_NUM // Number of LEDs +# define RGB_MATRIX_SPLIT { 10, 10 } +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170 +# define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif + +// Personal or edited stuff here + +// Lets you roll mod-tap keys +// Which is something I don't want: a +// quick Alt+a don't work if this is defined +//#define IGNORE_MOD_TAP_INTERRUPT + +// Encoder settings + +#define ENCODER_RESOLUTION 2 + +// Mouse settings + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 50 +#define MOUSEKEY_MAX_SPEED 20 +#define MOUSEKEY_TIME_TO_MAX 20 + +// Led settings + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 16 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 + #define RGBLIGHT_SLEEP + //#define RGBLIGHT_SPLIT + #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT // default RGBLIGHT_MODE_STATIC_LIGHT + #define RGBLIGHT_DEFAULT_HUE 180 // default 0 + #define RGBLIGHT_DEFAULT_SAT 255 // default 255 + #define RGBLIGHT_DEFAULT_VAL 100 // default RGBLIGHT_LIMIT_VAL + #define RGBLIGHT_DEFAULT_SPD 0 // default 0 + + //#define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_SNAKE + + /*#define RGBLIGHT_LED_MAP \ + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \ + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}*/ +#endif + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// Does not work for Elite C rev4 +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/splitkb/kyria/keymaps/taamas2/keymap.c b/keyboards/splitkb/kyria/keymaps/taamas2/keymap.c new file mode 100644 index 0000000000..08333a2aee --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamas2/keymap.c @@ -0,0 +1,336 @@ +/* Copyright 2019 Thomas Baart <thomas@splitkb.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 QMK_KEYBOARD_H +#include <keymap_spanish.h> +#include <time.h> + +enum layers { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST, + _GAMING, + _NUM_L +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | ' ? | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ESC | A | S | D | F | G | | H | J | K | L | Ñ | ´ ¨ | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | < > | Z | X | C | V | B | NumsL|NLAlt | |KeyLck|CapsLk| N | M | , ; | . : | - _ | " | + * | LShift | | | | | | | | |CtrAlt|SperSh| | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Del | | Space| Enter| Esc | | Bksp | App | ` | Tab | Space| + * |LShift| Lower| | Ctrl | Alt | |LShift| Super| AltGr| Raise| RCtrl| + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, ES_QUOT, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, ES_NTIL, ES_ACUT, + MT(MOD_LSFT, ES_LABK), KC_Z, KC_X, KC_C, KC_V, KC_B, OSL(_NUM_L), LM(_NUM_L, MOD_LALT), LCA_T(KC_LOCK), SGUI_T(KC_CAPS), KC_N, KC_M, ES_COMM, ES_DOT, ES_MINS, ES_DQUO, + MT(MOD_LSFT, KC_DEL), MO(_LOWER), KC_SPC, MT(MOD_LCTL, KC_ENT), MT(MOD_LALT, KC_ESC), + MT(MOD_LSFT, KC_BSPC), MT(MOD_LGUI, KC_APP), MT(MOD_RALT, ES_GRV), LT(_RAISE, KC_TAB), RCTL_T(KC_SPC) + ), + +/* + * Lower Layer: Symbols and numbers + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | + | @ | ( | ) | $ | | & | 7 | 8 | 9 | ¡ | ! | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | * | / | { | } | # | | 0 | 4 | 5 | 6 | ¿ | ? | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | \ | ^ | % | [ | ] | ~ | | | | | | | | 1 | 2 | 3 | = | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + _______, ES_PLUS, ES_AT, ES_LPRN, ES_RPRN, ES_DLR, ES_AMPR, KC_7, KC_8, KC_9, ES_IEXL, ES_EXLM, + _______, ES_ASTR, ES_SLSH, ES_LCBR, ES_RCBR, ES_HASH, ES_0, KC_4, KC_5, KC_6, ES_IQUE, ES_QUES, + ES_BSLS, ES_CIRC, ES_PERC, ES_LBRC, ES_RBRC, ES_TILD, _______, _______, _______, _______, ES_PIPE, KC_1, KC_2, KC_3, ES_EQL, KC_MINS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Raise Layer: Media, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | |WheelU|Mouse1|MouseU|Mouse2|Mouse3| | Prev | Stop | Play | Next |WheelU| Gaming | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | |WheelD|MouseL|MouseD|MouseR| VolUp| | Left | Down | Up | Right|WheelD| Mouse3 | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | Acc0 | Acc1 | Acc2 | Mute | VolDn| BriD | BriU | | | | MLeft| Mdown| MUp |MRight|Mouse1| Mouse2 | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_WH_U, TO(_GAMING), + _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_WH_D, KC_BTN3, + _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_MUTE, KC_VOLD, KC_BRID, KC_BRIU, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, KC_BTN2, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | |RecMc1|PMac1 |RecMc2|PMac2 |RecStp| | | F7 | F8 | F9 | F12 |QmkMake | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | TOG | SAI | HUI | VAI | MOD | | | F4 | F5 | F6 | F11 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | SAD | HUD | VAD | RMOD | | | | | | | F1 | F2 | F3 | F10 | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, DM_REC1, DM_PLY1, DM_REC2, DM_PLY2, DM_RSTP, _______, KC_F7, KC_F8, KC_F9, KC_F12, QK_MAKE, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Gaming Layer: For left hand on keyboard and right hand on mouse + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | Q | W | E | R | | | | | | | Qwerty | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ESC | Ctrl | A | S | D | F | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | Shft | Z | X | C | V | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | NumsL| | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_GAMING] = LAYOUT( + _______, _______, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, TO(_QWERTY), + KC_ESC, KC_LCTRL, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, + _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, MO(_NUM_L), _______, _______, _______, + _______, _______, _______, _______, _______ + ), + +/* + * Numbers on left Layer + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | 7 | 8 | 9 | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | 0 | 4 | S | 6 | . | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | 1 | 2 | 3 | , | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NUM_L] = LAYOUT( + _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______, + _______, KC_0, KC_4, KC_5, KC_6, ES_DOT, _______, _______, _______, _______, _______, _______, + _______, _______, KC_1, KC_2, KC_3, ES_COMM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x9c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0xdc, 0xc0, 0x00, 0x00, 0x00, 0x30, + 0xe0, 0x00, 0xf0, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xfb, 0xeb, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf0, 0xf0, 0xb0, 0xf0, 0x70, 0x30, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x0e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0xff, 0xf8, 0xf1, 0xff, 0xfd, 0xfd, 0xfe, 0xfd, 0x7e, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x80, 0xc0, 0x80, 0x00, 0xc8, 0xc8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xd0, 0xd0, 0xd0, 0xc0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, + 0xe0, 0xe3, 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x1f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x1f, 0x1c, 0x1f, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x60, 0xe2, 0xf0, 0xf0, 0xf0, 0xf8, 0xdc, + 0xc0, 0xe0, 0xe0, 0x0d, 0x0f, 0x77, 0x7f, 0x1f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, + 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xc0, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x11, 0xd0, 0x00, 0x01, 0x81, 0x81, 0x80, 0x80, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, + 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xe7, 0xc7, 0x87, 0xc3, 0xf1, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x0f, 0x0f, 0xff, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x83, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0xff, 0xfe, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, + 0x20, 0x20, 0x30, 0x70, 0xf0, 0xfe, 0xcf, 0x07, 0x0e, 0x00, 0x00, 0x00, 0x60, 0xd0, 0xf4, 0xe0, + 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev2.1\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Symbols\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Mouse & Media\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _GAMING: + oled_write_P(PSTR("Gaming\n"), false); + break; + case _NUM_L: + oled_write_P(PSTR("Numbers Left\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +int ledI = 0; +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Tab + if (clockwise) { + tap_code(KC_TAB); + } else { + tap_code(KC_TAB); + } + } + else if (index == 1) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/taamas2/rules.mk b/keyboards/splitkb/kyria/keymaps/taamas2/rules.mk new file mode 100644 index 0000000000..041bc77bf4 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamas2/rules.mk @@ -0,0 +1,13 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays + +ENCODER_ENABLE = yes # Enables the use of one or more encoders + +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support +RGB_MATRIX_SUPPORTED = yes + +MOUSEKEY_ENABLE = yes +KEY_LOCK_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes diff --git a/keyboards/splitkb/kyria/keymaps/taamasMirror/config.h b/keyboards/splitkb/kyria/keymaps/taamasMirror/config.h new file mode 100644 index 0000000000..d156e4fd77 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamasMirror/config.h @@ -0,0 +1,38 @@ +/* Copyright 2019 Thomas Baart <thomas@splitkb.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/>. + */ + +#pragma once + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 150 +#endif + +// Lets you roll mod-tap keys +#define IGNORE_MOD_TAP_INTERRUPT + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK + +// Mouse settings +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 50 +#define MOUSEKEY_MAX_SPEED 20 +#define MOUSEKEY_TIME_TO_MAX 20 diff --git a/keyboards/splitkb/kyria/keymaps/taamasMirror/keymap.c b/keyboards/splitkb/kyria/keymaps/taamasMirror/keymap.c new file mode 100644 index 0000000000..5e53a718da --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamasMirror/keymap.c @@ -0,0 +1,543 @@ +/* Copyright 2019 Thomas Baart <thomas@splitkb.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 QMK_KEYBOARD_H +#include <keymap_spanish.h> + +enum layers { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST, + _GAMING, + _GAMING_NUMS +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ' ? | P | O | I | U | Y | | T | R | E | W | Q | Tab | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ´ ¨ | Ñ | L | K | J | H | | G | F | D | S | A | ESC | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | " | - _ | . : | , ; | M | N | $ | | | |CpsLck| B | V | C | X | Z | < > | + * | | | | | | |SperSh|RCtrl | |Gaming|CtrAlt| | | | | | LShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | AltGr| Tab | ` | App | Bksp | | Esc | Enter| Space| |Del | + * | | Raise| AltGr| Super|LShift| | Alt | Ctrl | | Lower|LShift| + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + ES_QUOT, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_T, KC_R, KC_E, KC_W, KC_Q, KC_TAB, + ES_ACUT, ES_NTIL, KC_L, KC_K, KC_J, KC_H, KC_G, KC_F, KC_D, KC_S, KC_A, KC_ESC, + ES_DQUO, ES_MINS, ES_DOT, ES_COMM, KC_M, KC_N, SGUI_T(ES_DLR), KC_RCTL, TO(_GAMING), LCA_T(KC_CAPS), KC_B, KC_V, KC_C, KC_X, KC_Z, MT(MOD_LSFT, ES_LABK), + KC_RALT, LT(_RAISE, KC_TAB), MT(MOD_RALT, ES_GRV), MT(MOD_LGUI, KC_APP), MT(MOD_LSFT, KC_BSPC), + MT(MOD_LALT, KC_ESC), MT(MOD_LCTL, KC_ENT), KC_SPC, MO(_LOWER), MT(MOD_LSFT, KC_DEL) + ), + +/* + * Lower Layer: Symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ! | ¡ | 9 | 8 | 7 | & | | $ | ) | ( | @ | + | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ? | ¿ | 6 | 5 | 4 | 0 | | # | } | { | / | * | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | - _ | = | 3 | 2 | 1 | | | | | | | | ~ | ] | [ | % | ^ | \ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + ES_EXLM, ES_IEXL, KC_9, KC_8, KC_7, ES_AMPR, ES_DLR, ES_RPRN, ES_LPRN, ES_AT, ES_PLUS, _______, + ES_QUES, ES_IQUE, KC_6, KC_5, KC_4, ES_0, ES_HASH, ES_RCBR, ES_LCBR, ES_SLSH, ES_ASTR, _______, + KC_MINS, ES_EQL, KC_3, KC_2, KC_1, ES_PIPE, _______, _______, _______, _______, ES_TILD, ES_RBRC, ES_LBRC, ES_PERC, ES_CIRC, ES_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Raise Layer: Number keys, media, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | Next | Play | Stop | Prev | |Mouse3|Mouse2|MouseU|Mouse1|WheelU| | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | Right| Up | Down | Left | | VolUp|MouseR|MouseD|MouseL|WheelD| | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | |MRight| MUp | Mdown| MLeft| | | | BriU | BriD | VolDn| Mute | Acc2 | Acc1 | Acc0 | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, KC_MNXT, KC_MPLY, KC_MSTP, KC_MPRV, KC_BTN3, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, _______, + _______, _______, KC_RGHT, KC_UP, KC_DOWN, KC_LEFT, KC_VOLU, KC_MS_R, KC_MS_D, KC_MS_L, KC_WH_D, _______, + _______, _______, KC_MS_R, KC_MS_U, KC_MS_D, KC_MS_L, _______, _______, KC_BRIU, KC_BRID, KC_VOLD, KC_MUTE, KC_ACL2, KC_ACL1, KC_ACL0, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F10 | F9 | F8 | F7 | F6 | | F5 | F4 | F3 | F2 | F1 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | F12 | F11 | | | | | MOD | VAI | HUI | SAI | TOG | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | RMOD | VAD | HUD | SAD | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F10, KC_F9, KC_F8, KC_F7, KC_F6, KC_F5, KC_F4, KC_F3, KC_F2, KC_F1, _______, + _______, KC_F12, KC_F11, _______, _______, _______, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_TOG, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Gaming Layer: For left hand on keyboard and right hand on mouse + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | R | E | W | Q | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | F | D | S | A | Ctrl | ESC | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | |Qwerty| | V | C | X | Z | Shft | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | Gnums| | + * `----------------------------------' `----------------------------------' + */ + [_GAMING] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_R, KC_E, KC_W, KC_Q, _______, _______, + _______, _______, _______, _______, _______, _______, KC_F, KC_D, KC_S, KC_A, KC_LCTRL, KC_ESC, + _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY), _______, KC_V, KC_C, KC_X, KC_Z, KC_LSFT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, MO(_GAMING_NUMS), _______ + ), + +/* + * Gaming Layer Two: For numbers + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | 9 | 8 | 7 | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | . | 6 | S | 4 | 0 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | , | 3 | 2 | 1 | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_GAMING_NUMS] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, KC_9, KC_8, KC_7, _______, _______, + _______, _______, _______, _______, _______, _______, ES_DOT, KC_6, KC_5, KC_4, KC_0, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ES_COMM, KC_3, KC_2, KC_1, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +//static void render_kyria_logo(void) { +// static const char PROGMEM kyria_logo[] = { +// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, +// 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +// }; +// oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +//} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { +// 'Undertale', 128x64px +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +//0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, +//0xf0, 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xf0, 0xf0, 0xfc, 0xfc, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xf0, 0xf0, +//0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, +//0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x10, 0x38, 0x3c, 0x1c, 0x18, 0x8a, 0xc2, 0xc6, 0xc6, +//0xe6, 0xe4, 0xe4, 0xe4, 0xe0, 0xe0, 0xe4, 0xe4, 0xe6, 0xc6, 0xc6, 0xc6, 0x82, 0x18, 0x1c, 0x3c, +//0x38, 0x10, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +//0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x1c, 0x1e, 0x3f, 0x7b, 0xfb, 0xfb, 0xfb, 0xf3, 0x80, 0x00, 0x3e, 0xff, 0xff, 0xff, 0xdf, 0xbf, +//0x3f, 0xa0, 0x20, 0xbf, 0x3f, 0xbf, 0xb7, 0xb7, 0xb7, 0xbf, 0xdf, 0xff, 0xff, 0xff, 0x3e, 0x00, +//0x80, 0xf3, 0xfb, 0xfb, 0xfb, 0x7b, 0x3f, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0xff, 0xff, 0xfc, 0xfc, +//0xfc, 0xfc, 0xf0, 0xf0, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xf0, 0xf0, 0xff, 0xff, +//0xff, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, +//0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30, 0xf0, 0xf0, 0xf0, 0xf0, 0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, +//0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x9c, 0xee, 0xf0, 0xf0, 0xe1, 0xe3, 0xe7, 0xc7, +//0xce, 0x4d, 0x4d, 0x4d, 0x0e, 0x4f, 0x4f, 0x4f, 0xcf, 0xc7, 0xe7, 0xe3, 0xe1, 0xf0, 0xf0, 0xee, +//0x9c, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, +//0xcf, 0xcf, 0x00, 0x00, 0xf3, 0xf3, 0x0f, 0x0f, 0xcf, 0xcf, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, +//0x3f, 0x3f, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, +//0x3f, 0x3f, 0x3f, 0x3f, 0xcf, 0xcf, 0x0f, 0x0f, 0x00, 0x00, 0xc3, 0xc3, 0xcf, 0xcf, 0xff, 0xff, +//0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +//0xe0, 0xf8, 0xfc, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +//0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x3f, 0x3f, +//0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xf0, 0xf0, 0xf3, 0xf3, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, +//0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x3f, 0x3f, +//0xcf, 0xcf, 0xc0, 0xc0, 0xf3, 0xf3, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x0f, 0x0f, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +//0x00, 0x03, 0x87, 0xcf, 0xfe, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, +//0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, +//0x0f, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, +//0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x09, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +// +// 'hugo_64', 128x64px +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1f, 0x1f, 0x0f, +//0x07, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +//0x03, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfe, 0x7c, 0x7e, 0x38, 0x3c, 0x20, 0x00, 0x00, 0x40, 0x20, +//0x00, 0xe0, 0x20, 0x70, 0x18, 0x70, 0x40, 0x00, 0x14, 0xf7, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfb, 0xff, 0xf7, 0xff, 0xef, 0x9f, 0x07, +//0x0f, 0x97, 0x27, 0x43, 0x07, 0x83, 0x83, 0x04, 0x80, 0x03, 0x03, 0x03, 0x03, 0x07, 0x87, 0x7f, +//0xff, 0x7f, 0xff, 0x3f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xff, 0xcf, 0xff, 0xfb, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x40, 0xe0, 0xf0, 0xe8, 0xf8, 0xb0, 0xf0, 0xe0, 0xb0, 0x61, 0x70, 0xe0, 0x60, 0x70, 0x2c, +//0x80, 0xf8, 0xf8, 0xf8, 0xe0, 0x90, 0x80, 0x70, 0xa0, 0xfd, 0xfc, 0xe8, 0xfe, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0x00, 0x11, +//0x42, 0x20, 0x40, 0x09, 0x02, 0x20, 0x05, 0x60, 0x01, 0x28, 0x86, 0x20, 0x02, 0x40, 0x04, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x87, 0xe3, 0xf7, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe0, 0x00, 0x00, 0x10, 0x18, 0x30, 0x80, +//0x04, 0x53, 0x6b, 0x2f, 0xdf, 0x55, 0xbf, 0xeb, 0x76, 0x9f, 0x54, 0x7f, 0x09, 0x9e, 0x2e, 0x19, +//0x01, 0x81, 0x01, 0x20, 0x81, 0x05, 0x95, 0x2a, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0x0d, 0x0f, 0x1f, 0x03, 0x0b, 0x8f, 0x3f, 0x47, 0x5b, 0xc7, 0xf1, 0xbf, 0x4f, 0x32, 0x84, 0x01, +//0x18, 0x00, 0x00, 0x42, 0x04, 0x80, 0x01, 0x00, 0x00, 0x19, 0x00, 0x00, 0x80, 0x02, 0x64, 0x00, +//0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x01, 0xaf, 0xff, 0xff, +//0xff, 0xff, 0x63, 0x03, 0x01, 0x03, 0x01, 0x13, 0x03, 0x0b, 0x03, 0x2e, 0x3e, 0xd4, 0xdb, 0xfe, +//0x7e, 0xc0, 0x80, 0x00, 0x01, 0x02, 0x02, 0x04, 0x04, 0x09, 0x06, 0x02, 0x0d, 0x06, 0x1a, 0x1d, +//0x1d, 0x19, 0x18, 0x09, 0x19, 0x0d, 0x00, 0x08, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x09, 0x01, 0x04, 0x08, 0x20, 0x00, 0x42, +//0x80, 0x02, 0x20, 0x81, 0x00, 0x10, 0x00, 0x00, 0x92, 0x00, 0x80, 0x40, 0x40, 0x81, 0x80, 0x44, +//0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, +//0x07, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, +//0x05, 0x0f, 0x1e, 0x19, 0x34, 0xa8, 0x80, 0x20, 0x00, 0x80, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x36, 0x0d, 0x37, 0x3f, 0x3f, 0x7f, 0x3d, +//0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +// 'hackathonios', 128x64px +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x00, +//0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, +//0x20, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x4c, 0x5f, 0x07, 0x87, 0xbf, 0x1f, 0x1f, 0xbf, 0x3f, +//0x1f, 0x7f, 0x5f, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40, 0x50, 0x60, 0xa0, 0x50, +//0x80, 0x60, 0x00, 0x00, 0xa0, 0x40, 0x80, 0x60, 0xc0, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, +//0x00, 0x01, 0x05, 0x00, 0x00, 0x04, 0x80, 0xc0, 0x06, 0x4f, 0x9f, 0x1f, 0xff, 0xff, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0x03, 0x01, 0x40, 0x80, 0x28, 0x80, 0x20, 0x00, 0x03, 0xef, 0xff, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x03, 0x01, 0x90, 0x20, 0x90, +//0x00, 0x01, 0x03, 0x07, 0x0f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x02, 0x03, 0x01, 0x00, 0x80, +//0x80, 0x03, 0xc5, 0xc0, 0xc0, 0xe7, 0x41, 0x02, 0x00, 0x01, 0x80, 0x80, 0xc0, 0x00, 0x14, 0x08, +//0x10, 0x00, 0x00, 0x1c, 0x15, 0xc4, 0x05, 0x10, 0x00, 0x00, 0x00, 0x40, 0x40, 0x60, 0xf0, 0xf8, +//0xf0, 0xf8, 0xf8, 0xfe, 0xfe, 0xf8, 0xfa, 0xc0, 0x80, 0x02, 0x02, 0x58, 0xff, 0xff, 0x7f, 0x7f, +//0x7f, 0xff, 0x3f, 0x1f, 0x3f, 0x1f, 0x1c, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x07, 0x07, 0x07, +//0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x1f, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, +//0x0b, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xfc, 0xfc, 0xff, 0xff, +//0xfa, 0xfe, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0x7f, 0x1e, 0x04, 0x03, +//0x03, 0x04, 0x60, 0x03, 0x08, 0x42, 0x10, 0x01, 0x00, 0x20, 0x40, 0x21, 0x04, 0x00, 0x02, 0x08, +//0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x10, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x10, 0x08, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xf0, 0x40, 0x00, 0x02, +//0xf0, 0x3a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x40, 0xa0, 0xa0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0xe7, 0x6f, 0xaf, 0x8e, +//0xef, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xfe, 0xff, 0xdb, 0xa1, 0x00, 0x00, 0x80, 0x00, +//0x00, 0x10, 0x02, 0x80, 0x10, 0x00, 0x04, 0x41, 0x88, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x20, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0xe1, 0x35, 0x60, 0x90, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x04, 0x00, 0x04, +//0x3c, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x83, 0x50, 0x26, +//0x04, 0x04, 0x04, 0x10, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +//0x0f, 0x0d, 0x1b, 0x15, 0x07, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xfd, 0x09, 0x86, 0xff, +//0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xff, 0xdf, 0x3f, 0xe6, 0xea, 0x13, 0xa0, 0x90, 0x4b, 0x24, +//0x04, 0x40, 0x40, 0x06, 0x12, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x20, 0x02, 0x54, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0xa4, 0x86, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x70, 0xe8, 0x2b, 0x00, 0x00, 0xab, 0x00, 0x80, 0x50, 0xa0, 0x90, 0x20, 0x10, 0xa0, 0x90, 0x20, +//0x00, 0x50, 0x00, 0xa0, 0x10, 0xc0, 0x20, 0x80, 0x40, 0x20, 0x40, 0x11, 0x10, 0x10, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x07, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x28, 0xf4, 0xda, 0x17, 0x5e, 0x66, 0x1f, +//0x1f, 0x7f, 0x9f, 0x1f, 0x0f, 0x1f, 0x0f, 0x07, 0x07, 0x2f, 0x46, 0x1a, 0x8c, 0x19, 0x19, 0x08, +//0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, +//0x54, 0xc8, 0x0c, 0x14, 0x22, 0x40, 0x08, 0x50, 0x40, 0x14, 0x08, 0xc4, 0x68, 0x94, 0x28, 0x44, +//0x09, 0x62, 0xe2, 0x95, 0x2a, 0xd6, 0x6a, 0x90, 0x84, 0x20, 0x00, 0x18, 0x08, 0x94, 0x6c, 0x4b, +//0x43, 0x02, 0x01, 0x00, 0x04, 0x0a, 0x00, 0x1d, 0x6a, 0x15, 0x8a, 0x65, 0x0d, 0xc0, 0x06, 0x01, +//0x02, 0x48, 0x11, 0x86, 0x49, 0x92, 0x89, 0x35, 0x1a, 0x40, 0xa8, 0x00, 0x00, 0x01, 0x02, 0x00, +//0x10, 0x20, 0x9c, 0xb4, 0x4c, 0xb0, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x0f, 0x00, 0x00, 0x28, 0x4a, +//0x55, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x24, 0x63, 0x88, 0x50, 0x00, 0x00, 0x06, +//0x11, 0x89, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0x00, 0x00, 0x90, 0x40, 0x01, 0x00, 0x88, +//0xde, 0x1b, 0x02, 0x00, 0x09, 0x20, 0x65, 0x00, 0x02, 0x00, 0x00, 0x04, 0x09, 0xaa, 0x43, 0x98, +//0x40, 0x97, 0x0e, 0x09, 0x1a, 0x65, 0x9a, 0xa4, 0x14, 0x81, 0x00, 0x00, 0x00, 0x02, 0x58, 0xa5, +//0x52, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x41, 0x3c, 0x82, 0xa4, 0x05, 0x54, 0x01, 0x10, +//0x00, 0x00, 0x14, 0xa1, 0x52, 0x0a, 0xa5, 0x50, 0x18, 0x82, 0x10, 0x00, 0x06, 0x40, 0x00, 0x20 +// 'Trío', 128x64px +0x65, 0xa7, 0x67, 0xa5, 0x16, 0xe1, 0x5b, 0xb4, 0xa7, 0x7d, 0x96, 0x75, 0x3c, 0xa7, 0x15, 0xdf, +0xce, 0x3a, 0xf7, 0x5d, 0x4e, 0xbb, 0xf5, 0xaf, 0xdc, 0xb7, 0x5d, 0xd7, 0xcd, 0xbf, 0x66, 0xdb, +0x6f, 0xf3, 0x7a, 0x77, 0xeb, 0xb6, 0x9b, 0xfd, 0xbe, 0xd6, 0xef, 0x7a, 0xd9, 0x77, 0x7d, 0xce, +0xf7, 0x2e, 0x61, 0xff, 0x6f, 0x96, 0xdf, 0x36, 0xa5, 0x3f, 0xa6, 0x67, 0xe6, 0x25, 0x86, 0x3d, +0x2e, 0xd6, 0x2f, 0x76, 0x65, 0x5a, 0x87, 0x29, 0xe4, 0x27, 0x66, 0x3b, 0xaf, 0x90, 0x4b, 0x55, +0xa9, 0x54, 0x89, 0x1a, 0xea, 0x25, 0x54, 0xa7, 0x36, 0xa8, 0x49, 0xb6, 0x29, 0x94, 0x5a, 0x29, +0xc4, 0x19, 0x79, 0x22, 0x92, 0x64, 0x23, 0x58, 0x46, 0x10, 0x6d, 0x09, 0xa3, 0x64, 0x9a, 0x43, +0xa2, 0x84, 0x93, 0x0c, 0x59, 0x6c, 0x11, 0x85, 0x92, 0x01, 0x06, 0x84, 0x09, 0x09, 0x04, 0x20, +0x05, 0x41, 0x0c, 0x21, 0x04, 0x9b, 0x15, 0x82, 0x23, 0x86, 0x00, 0x9b, 0x81, 0x2c, 0x95, 0x11, +0x89, 0xa5, 0x16, 0x0e, 0x42, 0x47, 0xa9, 0x6d, 0x65, 0x95, 0x7b, 0x25, 0xce, 0x21, 0xd9, 0x26, +0x2a, 0xa3, 0x36, 0x05, 0x22, 0xa9, 0x53, 0xa8, 0x11, 0x94, 0x42, 0xdd, 0xa5, 0xd4, 0x86, 0x75, +0x79, 0xc5, 0xaa, 0x15, 0x19, 0x1a, 0x0f, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0a, 0x0b, 0x02, 0x15, +0x19, 0x0a, 0xca, 0xe9, 0xc9, 0x86, 0x19, 0x24, 0xea, 0x30, 0x3c, 0x1d, 0x0e, 0x0e, 0x07, 0x02, +0x02, 0x02, 0x03, 0x00, 0x47, 0x09, 0x3c, 0x60, 0xe1, 0x00, 0x12, 0x25, 0x09, 0x02, 0x20, 0x05, +0x00, 0x25, 0x00, 0x55, 0x80, 0x02, 0x11, 0x05, 0x04, 0x20, 0x29, 0x55, 0x25, 0x18, 0x36, 0x00, +0x14, 0x18, 0x28, 0x12, 0x09, 0x30, 0x01, 0x12, 0x12, 0x04, 0x02, 0x00, 0x08, 0x11, 0x00, 0x18, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x04, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0xf8, 0xfc, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0xf0, 0xf0, 0xe0, 0x40, 0x00, 0x00, 0x00, +0x60, 0xe0, 0xa7, 0x7f, 0xfe, 0xd8, 0xf8, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x60, 0x40, 0xe0, 0xa0, +0x80, 0xc0, 0xe0, 0xf0, 0xc0, 0x80, 0x80, 0x00, 0x01, 0x38, 0xf0, 0xe0, 0xe0, 0xe0, 0xc0, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x04, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x04, 0x0e, 0x07, 0x06, 0x0d, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, +0x07, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, +0x07, 0x0f, 0x0f, 0x2f, 0x27, 0x21, 0x0b, 0x09, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, +0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x40, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xa0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0a, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x60, 0xe0, 0xf0, 0xe0, 0xf8, 0xf8, 0xf4, 0x3c, 0x5a, 0xc4, 0x00, 0xc0, 0x80, 0x00, 0x00, 0x00, +0x80, 0x80, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x03, 0x03, 0x07, 0x01, 0x09, 0x0d, 0x0e, 0x1f, 0x0f, 0x05, 0x02, 0x03, 0x01, 0x00, 0x00, +0x03, 0x83, 0x15, 0x6f, 0xfb, 0xff, 0xf2, 0xf0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x84, 0x21, 0xab, 0x7d, 0xaf, 0xff, 0xff, 0xf0, 0xc0, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _GAMING: + oled_write_P(PSTR("Gaming\n"), false); + break; + case _GAMING_NUMS: + oled_write_P(PSTR("Gaming#\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Tab + if (clockwise) { + tap_code(KC_TAB); + } else { + tap_code(KC_TAB); + } + } + else if (index == 1) { + // Volume control + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/taamasMirror/readme.md b/keyboards/splitkb/kyria/keymaps/taamasMirror/readme.md new file mode 100644 index 0000000000..7401609f35 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamasMirror/readme.md @@ -0,0 +1,249 @@ +# Kyria's Default Keymap + +![KLE render of the default Kyria keymap with QWERTY as the base layer. Layers are shown in sublegends.](https://i.ibb.co/RQZx2dY/default-kyria2.jpg) + + +The default keymap contains 5 layers which allows it to include all keys found on an ANSI layout TKL keyboard plus media keys. +Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported. + +The five different layers are the following: +1. Base layer (QWERTY, Colemak-DH or Dvorak) +2. Navigation layer +3. Symbols/Numbers layer +4. Function layer +5. Adjust layer + +## Base layer(s) +``` +Base Layer: - + +,-------------------------------------------. ,-------------------------------------------. +| Tab | - | - | - | - | - | | - | - | - | - | - | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| - | - | - | - | - | | - | - | - | - | - |Ctrl/ - | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | - | - | - | - | - | [ { |CapsLk| |F-Keys| ] } | - | - | - | - | - | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` +Three different well-known keyboard layouts are provided to fill in the placeholder `-` keys: QWERTY, Colemak-DH, and Dvorak. The default layer can be changed at runtime, more info on that in the section on the [adjust layer](#adjust-layer). + +For the rest of this write-up, the base layer will be assumed to be QWERTY and will be used as a reference to describe physical keys, e.g. “<kbd>B</kbd> key” vs, the much more verbose, “lower inner index key”. + +``` +Base Layer: QWERTY + +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Aside from variations in the alpha cluster, the rest of the base keys remain the same and are designed to feel familiar. + +![Step-by-step animation of the transformation of an ortholinear TKL to a Kyria](https://i.imgur.com/uVDCOek.gif) + +<details> +After making transformations to the classic ANSI US QWERTY TKL 60% to arrive to the layout of the Kyria, as illustrated in the animation above, the result looks like this: + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| Cap Lk | A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | LCtrl| LGUI | LAlt | Space| | | | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +First thing to notice is the presence of blank keys. To fill in the blank keys above the <kbd>Space</kbd> keys, we can take inspiration from other split keyboards featuring an extra inner index column on each half. A common mapping for those kind of keys are the bracket keys that got removed in the fourth step of the animated transformation. The thumb keys besides <kbd>Space</kbd>s is prime real estate for dedicated layer-switching keys. It doesn't matter on which side is assigned the sym-layer-switch key but it helps to keep the nav-layer-switch on the left in order to keep the arrow keys on the right side like on a classic keyboard, so we'll put nav on the left and sym on the right. We'll address the remaining blank thumb keys later. + +The base layer is starting to form but there remains some flaws. One glaring issue is the position of Control. Control is a very commonly used function but the key on which it sits right now is way too tucked in under the hand to be able to press it comfortably with either the thumb or the pinky from resting position. In fact, installing a rotary encoder there is a common move among Kyria users and I guarantee you that activating Control by holding down a rotary encoder does not spark joy. Instead, let's employ a popular trick that involves remapping the current Caps Lock key, which is positioned at a comfortable position on the keyboard, to Control. + +We can go further though; a variant of this trick makes the Control key produce Escape when tapped. This is called a “modtap”. There is no use to tapping Control by itself without chording it with another key and there is no use to holding down the Esc key so why not combine the two into a single key? + +All of this leaves us with three blank keys. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { | | | | ] } | N | M | , < | . > | / ? | RShift | +`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------' + | | LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +These keys are not easily reachable while touch typing (that is, not reachable without picking up your hand) and should thus be associated with functions that you are not likely to be typed within a stream of text. The idea is that if you have to pick up your hand to hit a key, you want it to be at a time when you are likely to be pausing your interaction with the machine, rather than in the midst of a flurry of typing. They're thus well suited for accessing the adjust layer and the function layer. We can also toss in Caps Lock even though it is an editing-type function that gets used within a stream of text because shouting in ALL-CAPS should be a deliberate action. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +The next glaring issue is the absence of an Enter key on the current base layer this far. Enter is a very frequently used key so it deserves to be placed at a good spot in the keymap. The best way to insert it in the keymap with minimal changes to the current layout is to use modtaps. A tempting solution is to turn the <kbd>RShift</kbd> key into a <kbd>RShift/Enter</kbd> modtap but that can result in chat messages sent too frustratingly early when you're not used to it. Using GUI is also sub-optimal because tapping the GUI modifier actually has a use as opposed to taps of the Control or the Shift key. Pressing and releasing the GUI key by itself opens the App menu in many desktop environments. The natural choice is thus <kbd>LAlt/Enter</kbd>. That way, Enter is 1u away from resting thumb position and is unlikely to get accidentally activated because Alt is very rarely used in the midst of prose. + +Finally, we're one Quality-Of-Life update away from the actual base layer. <kbd>Ctrl/' "</kbd> not only preserves symmetry in the keymap with <kbd>Ctrl/Esc</kbd> but also helps balance the load between your pinkies and invites you to use both hands instead of contortions. Perhaps more importantly, it also frees you from the necessity of picking up your hand, breaking touch typing position and pressing a pinky key with your ring finger in order to execute Ctrl+A or Ctrl+Z. That becomes even more important on a board with such an aggressive pinky columnar stagger like the Kyria. + + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +</details> + +## Navigation layer + +``` +Nav Layer: Media, navigation + +,-------------------------------------------. ,-------------------------------------------. +| | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +This is where you'll find all the keys that are generally between the main block of a classic keyboard and the numpad in addition to media controls and modifiers on easy access on the home row for fast and comfortable chording with navigation keys. + +Useful mnemonics: +- “GACS” to remember the order of the modifiers on the left-hand home row +- <kbd>Scroll Lock</kbd> is on the same key as <kbd>Caps Lock</kbd> because they're both locks +- <kbd>Delete</kbd> is on the same key as <kbd>Backspace</kbd> because they both erase characters +- <kbd>Home</kbd> is the leftmost position on the current line so it is above <kbd>←</kbd>. Same logic applies for <kbd>End</kbd>. +- <kbd>Media Previous</kbd> = ⏮, <kbd>Media Next</kbd> = ⏭ +- <kbd>Page Up</kbd>, <kbd>Page Down</kbd> and <kbd>Volume Up</kbd>, <kbd>Volume Down</kbd> are positioned like the main <kbd>Up</kbd> and <kbd>Down</kbd> keys. + +## Sym layer +``` +Sym Layer: Numbers, symbols + +,-------------------------------------------. ,-------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +The top row is the unshifted num row, the home row of the layer is the shifted num row and the bottom row contains the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are as well as redundant symbols that are already present on the base layer but are reproduced here to avoid juggling back and forth between base, shift, and sym when typing a string of symbols. + +The layout of the first two rows needs no introduction, you're already used to them but it's worth looking into the structure of the bottom row. + +The two halves are mirrored in a sense. On the right, you can find <kbd>,</kbd> <kbd>.</kbd> <kbd>/</kbd> at their usual spots with the addition of <kbd>Shift</kbd>+<kbd>/</kbd>=<kbd>?</kbd> to the right of the <kbd>/</kbd> key to remove the need to press simultaneously <kbd>Sym</kbd> and a <kbd>Shift</kbd> key to access `?`. + +Now, if you look at the left side, you'll notice that the mirror of <kbd>,</kbd> is <kbd>;</kbd>, the mirror of <kbd>.</kbd> is <kbd>:</kbd> and the mirror of <kbd>/</kbd> is <kbd>\\</kbd>. The same logic used for <kbd>Shift</kbd>+<kbd>/</kbd>=<kbd>?</kbd> also applies to <kbd>Shift</kbd>+<kbd>\\</kbd>=<kbd>|</kbd>. + +In case you wish to combine <kbd>Shift</kbd> with a symbol key anyways, you can hold down <kbd>Shift</kbd> on the base layer with your pinky, activate <kbd>Sym</kbd> with your right thumb and while still holding down the <kbd>Shift</kbd> key, tap your desired symbol key. Same thing if you need <kbd>Ctrl</kbd>+<kbd>Digit</kbd>. + +## Function layer +``` +Function Layer: Function keys + +,-------------------------------------------. ,-------------------------------------------. +| | F9 | F10 | F11 | F12 | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | F1 | F2 | F3 | F4 | | | | | | | | | | | | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +In a similar fashion to the nav layer, pressing down `FKEYS` with the right thumb enables a numpad of function keys on the opposite hand and modifiers on the right-hand home row. Once again, mirror symmetry is leveraged in this keymap for the order of the right-hand modifiers. + +The <kbd>Alt</kbd> modifier, despite being situated on the right half of the keyboard is *not* `KC_RALT`, it is `KC_LALT`. `KC_RALT` is actually the <kbd>AltGr</kbd> key which generally acts very differently to the left <kbd>Alt</kbd> key. Keyboard shortcuts involving <kbd>AltGr</kbd>+<kbd>F#</kbd> are rare and infrequent as opposed to the much more common <kbd>Alt</kbd>+<kbd>F#</kbd> shortcuts. Consequently, `KC_LALT` was chosen for the function layer. + +Since there are more than 10 function keys, the cluster of F-keys does not follow the usual 3×3+1 numpad arrangement. + + +## Adjust layer +``` +Adjust Layer: Default layer settings, RGB + +,-------------------------------------------. ,-------------------------------------------. +| | | |QWERTY| | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Default layer settings on the left and various RGB underglow controls on the right. + +The default layer settings are lined up on the middle finger column because the home middle finger key is <kbd>D</kbd> on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is <kbd>C</kbd> on QWERTY (like the “C” in “Colemak”). I can hear you say that “QWERTY” doesn't start with “E” but Dvorak and Colemak were already aligned in a column so the QWERTY may as well join the formation. + +NOTE: The default layer settings set by those keys are *NOT* stored in EEPROM and thus do not persist through boots. If you wish to change the default layer in a non-volatile manner, either change the order of the layers in the firmware, for example like so if you want to set Dvorak as the new default: +```c +enum layers { + _DVORAK = 0, + _QWERTY, + _COLEMAK_DH, + _NAV, + _SYM, + _FUNCTION, + _ADJUST +}; +``` +or re-define the `QWERTY`, `COLEMAK` and `DVORAK` keys to point to custom keycodes starting on `SAFE_RANGE` and calling the `set_single_persistent_default_layer` function inside of `process_record_user`. + +## Hardware Features + +### Rotary Encoder +The left rotary encoder is programmed to control the volume whereas the right encoder sends <kbd>PgUp</kbd> or <kbd>PgDn</kbd> on every turn. + +### OLEDs +The OLEDs display the current layer at the top of the active layers stack, the Kyria logo and lock status (caps lock, num lock, scroll lock). + +### Underglow +The underglow LEDs should be red. + +## Going further… + +This default keymap can be used as is, unchanged, as a daily driver for your Kyria but you're invited to treat your keymap like a bonsai. At the beginning, it's just like the default keymap but from time to time, you can tweak it a little. Cut a little key here, let another combo grow there. Slowly but surely it will be a unique keymap that will fit you like a glove. + +Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration. diff --git a/keyboards/splitkb/kyria/keymaps/taamasMirror/rules.mk b/keyboards/splitkb/kyria/keymaps/taamasMirror/rules.mk new file mode 100644 index 0000000000..35f8ec90c6 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/taamasMirror/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow |