From 24279ba9d118a87a48e9849b90d3e7d3ed08707e Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 14 Aug 2023 11:52:42 +0100 Subject: [PATCH 01/14] feat: add squigglybob splitkb kyria rev2 keymap --- .../kyria/keymaps/squigglybob/config.h | 32 ++ .../kyria/keymaps/squigglybob/keymap.c | 339 ++++++++++++++++++ .../kyria/keymaps/squigglybob/readme.md | 249 +++++++++++++ .../kyria/keymaps/squigglybob/rules.mk | 4 + 4 files changed, 624 insertions(+) create mode 100755 keyboards/splitkb/kyria/keymaps/squigglybob/config.h create mode 100755 keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c create mode 100755 keyboards/splitkb/kyria/keymaps/squigglybob/readme.md create mode 100755 keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h new file mode 100755 index 000000000000..a39a8f31a604 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h @@ -0,0 +1,32 @@ +/* Copyright 2022 Thomas Baart + * + * 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 . + */ + +#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 + +#undef TAPPING_TOGGLE +#define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT +#define TAPPING_TERM 150 diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c new file mode 100755 index 000000000000..65b42e8c01c8 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c @@ -0,0 +1,339 @@ +/* Copyright 2019 Thomas Baart **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 . + */ +#include QMK_KEYBOARD_H + +enum layers { + _DVERTY = 0, + _QWERTY, + _DVORAK, + _NAV, + _SYM, + _SYM_DVERTY, + _FUNCTION, + _ADJUST, +}; + +// Aliases for readability +#define QWERTY DF(_QWERTY) +#define DVERTY DF(_DVERTY) +#define DVORAK DF(_DVORAK) + +#define SYM MO(_SYM) +#define SYM_DVERTY TT(_SYM_DVERTY) +#define NAV TT(_NAV) +#define FKEYS MO(_FUNCTION) +#define ADJUST MO(_ADJUST) + +#define SYM_OFF TG(_SYM_DVERTY) +#define NAV_OFF TG(_NAV) + +#define CTL_ESC MT(MOD_LCTL, KC_ESC) +#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE) +#define CTL_MINS MT(MOD_RCTL, KC_MINUS) +#define ALT_ENT MT(MOD_LALT, KC_ENT) +#define ALT KC_LEFT_ALT + +#define UK_BKSL KC_NUBS // UK backslash +#define UK_PIPE S(UK_BKSL) // UK pipe symbol +#define DV_AT S(KC_Q) // Dvorak @ symbol + +#define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT + +// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. +// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and +// produces the key `tap` when tapped (i.e. pressed and released) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY (default map) + * + * ,-------------------------------------------. ,-------------------------------------------. + * | 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| | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC, + CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN,CTL_QUOT, + KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, + ADJUST , KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP + ), + +/* + * Base Layer: DVERTY (a qwerty layout keyboard optimised for a system running UK dvorak) + * + * ,-------------------------------------------. ,-------------------------------------------. + * | 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| Sym | | Nav | Enter| RGUI | AltGr| Menu | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_DVERTY] = LAYOUT( + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC, + CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, CTL_QUOT, + KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_MINS,KC_CAPS, FKEYS , KC_EQL , KC_N, KC_M , KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, + ADJUST , KC_LGUI, ALT , KC_SPC ,NAV, SYM_DVERTY, KC_ENT , KC_RGUI,KC_RALT,KC_APP + ), + +/* + * Base Layer: Dvorak + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | ' " | , < | . > | P | Y | | F | G | C | R | L | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/- _| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | ; : | Q | J | K | X | [ { |CapsLk| |F-keys| ] } | B | M | W | V | Z | RShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + * | | | Enter| | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_DVORAK] = LAYOUT( + KC_TAB ,KC_QUOTE,KC_COMM, KC_DOT, KC_P , KC_Y , KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC, + CTL_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS, + KC_LSFT ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_B, KC_M , KC_W , KC_V , KC_Z , KC_RSFT, + ADJUST, KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP + ), + +/* + * 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 | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NAV] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, + _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, + _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, + _______, _______, _______, _______, NAV_OFF, _______, _______, _______, _______, _______ + ), + +/* + * Sym Layer: Numbers and symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_SYM] = LAYOUT( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , + KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, + KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, _______, _______, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Sym Layer: Numbers and symbols for Dverty layout + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ~ | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | CTRL | ! | " | £ | $ | % | | ^ | & | * | ( | ) | # | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | SHIFT | \ | = | + | [ | { | | | | | | } | ] | / | ? | | | @ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | / | ? | | layer| | | | | + * | | | | | | | off | | | | | + * `----------------------------------' `----------------------------------' + */ + [_SYM_DVERTY] = LAYOUT( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_PIPE , + CTL_ESC, KC_EXLM , KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSLS, + KC_LSFT , UK_BKSL, KC_RBRC, KC_RCBR, KC_MINS, KC_UNDS, _______, _______, _______, _______, KC_PLUS, KC_EQL, KC_LBRC, KC_LCBR, UK_PIPE, DV_AT, + _______, _______, _______, KC_LBRC, KC_LCBR, SYM_OFF, _______, _______, _______, _______ + ), + +/* + * Function Layer: Function keys + * + * ,-------------------------------------------. ,-------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | F7 | F8 | F9 | F10 | F11 | F12 | | | Shift| Ctrl | Alt | GUI | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_FUNCTION] = LAYOUT( + KC_F1, KC_F2 , KC_F3, KC_F4, KC_F5, KC_F6, _______, _______ , _______ , _______ , _______ , _______, + KC_F7, KC_F8, KC_F9 , KC_F10 , KC_F11 , KC_F12, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______, + _______, _______ , _______ , _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Default layer settings, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | |QWERTY| | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, DVERTY , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, + _______, _______, _______, DVORAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, + _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ + ), + +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +/* The default OLED and rotary encoder code can be found at the bottom of qmk_firmware/keyboards/splitkb/kyria/rev1/rev1.c + * These default settings can be overriden by your own settings in your keymap.c + * For your convenience, here's a copy of those settings so that you can uncomment them if you wish to apply your own modifications. + * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own. + */ + +/* DELETE THIS LINE TO UNCOMMENT (1/2) +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +bool oled_task_user(void) { + if (is_keyboard_master()) { + // QMK Logo and version information + // clang-format off + 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}; + // clang-format on + + oled_write_P(qmk_logo, false); + 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|default_layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWERTY\n"), false); + break; + case _DVORAK: + oled_write_P(PSTR("Dvorak\n"), false); + break; + case _COLEMAK_DH: + oled_write_P(PSTR("Colemak-DH\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case _SYM: + oled_write_P(PSTR("Sym\n"), false); + break; + case _FUNCTION: + oled_write_P(PSTR("Function\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Write host Keyboard LED Status to OLEDs + 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); + } else { + // clang-format off + 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 + }; + // clang-format on + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return false; +} +#endif +DELETE THIS LINE TO UNCOMMENT (2/2) */ diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/readme.md b/keyboards/splitkb/kyria/keymaps/squigglybob/readme.md new file mode 100755 index 000000000000..7401609f356b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/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. “B 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) + +
+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 Space 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 Spaces 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 RShift key into a RShift/Enter 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 LAlt/Enter. 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. Ctrl/' " not only preserves symmetry in the keymap with Ctrl/Esc 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| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +
+ +## 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 +- Scroll Lock is on the same key as Caps Lock because they're both locks +- Delete is on the same key as Backspace because they both erase characters +- Home is the leftmost position on the current line so it is above . Same logic applies for End. +- Media Previous = ⏮, Media Next = ⏭ +- Page Up, Page Down and Volume Up, Volume Down are positioned like the main Up and Down 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 , . / at their usual spots with the addition of Shift+/=? to the right of the / key to remove the need to press simultaneously Sym and a Shift key to access `?`. + +Now, if you look at the left side, you'll notice that the mirror of , is ;, the mirror of . is : and the mirror of / is \\. The same logic used for Shift+/=? also applies to Shift+\\=|. + +In case you wish to combine Shift with a symbol key anyways, you can hold down Shift on the base layer with your pinky, activate Sym with your right thumb and while still holding down the Shift key, tap your desired symbol key. Same thing if you need Ctrl+Digit. + +## 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 Alt modifier, despite being situated on the right half of the keyboard is *not* `KC_RALT`, it is `KC_LALT`. `KC_RALT` is actually the AltGr key which generally acts very differently to the left Alt key. Keyboard shortcuts involving AltGr+F# are rare and infrequent as opposed to the much more common Alt+F# 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 D on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is C 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 PgUp or PgDn 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/squigglybob/rules.mk b/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk new file mode 100755 index 000000000000..35f8ec90c6f7 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/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 From a84ee6350238ffc9c594edc2d215dacb44c0075b Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 14 Aug 2023 12:07:11 +0100 Subject: [PATCH 02/14] feat: remove double tap to sym/nav; feat: add tap hold for shift and control under thumbs --- .../splitkb/kyria/keymaps/squigglybob/config.h | 3 --- .../splitkb/kyria/keymaps/squigglybob/keymap.c | 15 +++++++-------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h index a39a8f31a604..96b473c4890d 100755 --- a/keyboards/splitkb/kyria/keymaps/squigglybob/config.h +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h @@ -24,9 +24,6 @@ # define RGBLIGHT_LIMIT_VAL 150 #endif -// Lets you roll mod-tap keys -#define IGNORE_MOD_TAP_INTERRUPT - #undef TAPPING_TOGGLE #define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT #define TAPPING_TERM 150 diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c index 65b42e8c01c8..7260cca5ee2d 100755 --- a/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c @@ -24,18 +24,17 @@ enum layers { #define DVORAK DF(_DVORAK) #define SYM MO(_SYM) -#define SYM_DVERTY TT(_SYM_DVERTY) -#define NAV TT(_NAV) +#define SYM_DVERTY MO(_SYM_DVERTY) +#define NAV MO(_NAV) #define FKEYS MO(_FUNCTION) #define ADJUST MO(_ADJUST) -#define SYM_OFF TG(_SYM_DVERTY) -#define NAV_OFF TG(_NAV) - #define CTL_ESC MT(MOD_LCTL, KC_ESC) #define CTL_QUOT MT(MOD_RCTL, KC_QUOTE) #define CTL_MINS MT(MOD_RCTL, KC_MINUS) #define ALT_ENT MT(MOD_LALT, KC_ENT) +#define CTL_ENT MT(MOD_LCTL, KC_ENT) +#define SFT_ENT MT(MOD_LSFT, KC_SPC) #define ALT KC_LEFT_ALT #define UK_BKSL KC_NUBS // UK backslash @@ -130,8 +129,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAV] = LAYOUT( _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, - _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, - _______, _______, _______, _______, NAV_OFF, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), /* @@ -173,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_PIPE , CTL_ESC, KC_EXLM , KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSLS, KC_LSFT , UK_BKSL, KC_RBRC, KC_RCBR, KC_MINS, KC_UNDS, _______, _______, _______, _______, KC_PLUS, KC_EQL, KC_LBRC, KC_LCBR, UK_PIPE, DV_AT, - _______, _______, _______, KC_LBRC, KC_LCBR, SYM_OFF, _______, _______, _______, _______ + _______, _______, _______, KC_LBRC, KC_LCBR, _______, _______, _______, _______, _______ ), /* From 82e6d443c46ef4106f4c567277d99d8d1ca7f258 Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 14 Aug 2023 12:38:21 +0100 Subject: [PATCH 03/14] fix: use custom oled statuses; feat: shift and ctrl are under the thumbs --- .../splitkb/kyria/keymaps/squigglybob/config.h | 2 +- .../splitkb/kyria/keymaps/squigglybob/keymap.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h index 96b473c4890d..5e1523f128e3 100755 --- a/keyboards/splitkb/kyria/keymaps/squigglybob/config.h +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h @@ -26,4 +26,4 @@ #undef TAPPING_TOGGLE #define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT -#define TAPPING_TERM 150 +#define TAPPING_TERM 175 diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c index 7260cca5ee2d..3020adfd184d 100755 --- a/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c @@ -34,7 +34,7 @@ enum layers { #define CTL_MINS MT(MOD_RCTL, KC_MINUS) #define ALT_ENT MT(MOD_LALT, KC_ENT) #define CTL_ENT MT(MOD_LCTL, KC_ENT) -#define SFT_ENT MT(MOD_LSFT, KC_SPC) +#define SFT_SPC MT(MOD_LSFT, KC_SPC) #define ALT KC_LEFT_ALT #define UK_BKSL KC_NUBS // UK backslash @@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC, CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, CTL_QUOT, KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_MINS,KC_CAPS, FKEYS , KC_EQL , KC_N, KC_M , KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, - ADJUST , KC_LGUI, ALT , KC_SPC ,NAV, SYM_DVERTY, KC_ENT , KC_RGUI,KC_RALT,KC_APP + ADJUST , KC_LGUI, ALT , SFT_SPC ,NAV, SYM_DVERTY, CTL_ENT , KC_RGUI,KC_RALT,KC_APP ), /* @@ -245,7 +245,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own. */ -/* DELETE THIS LINE TO UNCOMMENT (1/2) #ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } @@ -260,7 +259,7 @@ bool oled_task_user(void) { // clang-format on oled_write_P(qmk_logo, false); - oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + oled_write_P(PSTR("Kyria rev2\n\n"), false); // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -271,12 +270,15 @@ bool oled_task_user(void) { case _DVORAK: oled_write_P(PSTR("Dvorak\n"), false); break; - case _COLEMAK_DH: - oled_write_P(PSTR("Colemak-DH\n"), false); + case _DVERTY: + oled_write_P(PSTR("Dverty\n"), false); break; case _NAV: oled_write_P(PSTR("Nav\n"), false); break; + case _SYM_DVERTY: + oled_write_P(PSTR("Sym\n"), false); + break; case _SYM: oled_write_P(PSTR("Sym\n"), false); break; @@ -335,4 +337,3 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return false; } #endif -DELETE THIS LINE TO UNCOMMENT (2/2) */ From fb471df34b6a3e42363c861cedc5fdf99da6f043 Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 14 Aug 2023 14:47:17 +0100 Subject: [PATCH 04/14] refactor: make kyria rev2 squigglybob keymap specific to rev2 --- keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/config.h | 0 keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/keymap.c | 0 keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/readme.md | 0 keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/rules.mk | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/config.h (100%) rename keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/keymap.c (100%) rename keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/readme.md (100%) rename keyboards/splitkb/kyria/{ => rev2}/keymaps/squigglybob/rules.mk (100%) diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h similarity index 100% rename from keyboards/splitkb/kyria/keymaps/squigglybob/config.h rename to keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c similarity index 100% rename from keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c rename to keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/readme.md b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/readme.md similarity index 100% rename from keyboards/splitkb/kyria/keymaps/squigglybob/readme.md rename to keyboards/splitkb/kyria/rev2/keymaps/squigglybob/readme.md diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk similarity index 100% rename from keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk rename to keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk From 9d082989b49f3019b1efd9cad55bbd3fdb22c8e0 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Mon, 14 Aug 2023 16:02:27 +0100 Subject: [PATCH 05/14] Update keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk Co-authored-by: Duncan Sutherland --- keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk | 3 --- 1 file changed, 3 deletions(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk index 35f8ec90c6f7..7116d45412cc 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk @@ -1,4 +1 @@ -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 From 5772de9672fe938a7d2bdf9cbb8948be0fe42b78 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Mon, 14 Aug 2023 16:03:00 +0100 Subject: [PATCH 06/14] Update config.h to take out default rgb setting Co-authored-by: Duncan Sutherland --- keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h index 5e1523f128e3..d1bd1bf31cd5 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h @@ -18,7 +18,6 @@ #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 From 660e5386505509ee11512e4912af33545a00145d Mon Sep 17 00:00:00 2001 From: Nath Date: Mon, 14 Aug 2023 17:30:14 +0100 Subject: [PATCH 07/14] feat: remove encoder support --- .../kyria/rev2/keymaps/squigglybob/keymap.c | 22 ------------------- .../kyria/rev2/keymaps/squigglybob/rules.mk | 1 + 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c index 3020adfd184d..b4ddf7e83d13 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c @@ -315,25 +315,3 @@ bool oled_task_user(void) { return false; } #endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - - if (index == 0) { - // Volume control - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } else if (index == 1) { - // Page up/Page down - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } - return false; -} -#endif diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk index 7116d45412cc..6d0372493a10 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk @@ -1 +1,2 @@ OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = no \ No newline at end of file From 03acb93267578da7a396541583f85c58c2e61264 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Mon, 14 Aug 2023 18:02:56 +0100 Subject: [PATCH 08/14] Update squigglybob/rules.mk to remove OLED_DRIVER rule Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk index 6d0372493a10..7f062d256a05 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk @@ -1,2 +1 @@ -OLED_DRIVER = SSD1306 # Enables the use of OLED displays ENCODER_ENABLE = no \ No newline at end of file From 3da5589ecea558893cc4ccf2128263db3eb10b45 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Tue, 15 Aug 2023 13:41:57 +0100 Subject: [PATCH 09/14] Update keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h Co-authored-by: jack <0x6a73@protonmail.com> --- .../splitkb/kyria/rev2/keymaps/squigglybob/config.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h index d1bd1bf31cd5..814b79271729 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h @@ -17,7 +17,15 @@ #pragma once #ifdef RGBLIGHT_ENABLE -# define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING # define RGBLIGHT_SAT_STEP 8 # define RGBLIGHT_VAL_STEP 8 # define RGBLIGHT_LIMIT_VAL 150 From 00d44712c244bf1cc306158c79270fe13dcb4773 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Tue, 15 Aug 2023 13:42:05 +0100 Subject: [PATCH 10/14] Update keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h index 814b79271729..5ed5c847939c 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h @@ -31,6 +31,5 @@ # define RGBLIGHT_LIMIT_VAL 150 #endif -#undef TAPPING_TOGGLE #define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT #define TAPPING_TERM 175 From 83913b876b41a6f0c98137b13582467d7ab23c65 Mon Sep 17 00:00:00 2001 From: squigglybob Date: Tue, 15 Aug 2023 13:42:22 +0100 Subject: [PATCH 11/14] Update keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c index b4ddf7e83d13..4d6c203a54cb 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c @@ -41,8 +41,6 @@ enum layers { #define UK_PIPE S(UK_BKSL) // UK pipe symbol #define DV_AT S(KC_Q) // Dvorak @ symbol -#define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT - // Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. // The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and // produces the key `tap` when tapped (i.e. pressed and released) From 2349c2e1b9cbf894da10f8cb022043ad123ee7ad Mon Sep 17 00:00:00 2001 From: Nath Date: Tue, 15 Aug 2023 17:32:05 +0100 Subject: [PATCH 12/14] fix: update doc string in keymap.c to match keymap --- .../kyria/rev2/keymaps/squigglybob/keymap.c | 4 +- .../kyria/rev2/keymaps/squigglybob/readme.md | 249 ------------------ 2 files changed, 2 insertions(+), 251 deletions(-) delete mode 100755 keyboards/splitkb/kyria/rev2/keymaps/squigglybob/readme.md diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c index 4d6c203a54cb..2b5df2a8f5a6 100755 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c +++ b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c @@ -78,8 +78,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| * | LShift | Z | X | C | V | B | { [ |CapsLk| |F-keys| } ] | N | M | , < | . > | / ? | RShift | * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * |Adjust| LGUI | LAlt | Space| Sym | | Nav | Enter| RGUI | AltGr| Menu | - * | | | | | | | | | | | | + * |Adjust| LGUI | LAlt |Space/| Nav | | Sym |Enter/| RGUI | AltGr| Menu | + * | | | |LShift| | | | Ctrl | | | | * `----------------------------------' `----------------------------------' */ [_DVERTY] = LAYOUT( diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/readme.md b/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/readme.md deleted file mode 100755 index 7401609f356b..000000000000 --- a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/readme.md +++ /dev/null @@ -1,249 +0,0 @@ -# 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. “B 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) - -
-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 Space 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 Spaces 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 RShift key into a RShift/Enter 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 LAlt/Enter. 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. Ctrl/' " not only preserves symmetry in the keymap with Ctrl/Esc 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| | | | | | | | | - `----------------------------------' `----------------------------------' -``` - -
- -## 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 -- Scroll Lock is on the same key as Caps Lock because they're both locks -- Delete is on the same key as Backspace because they both erase characters -- Home is the leftmost position on the current line so it is above . Same logic applies for End. -- Media Previous = ⏮, Media Next = ⏭ -- Page Up, Page Down and Volume Up, Volume Down are positioned like the main Up and Down 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 , . / at their usual spots with the addition of Shift+/=? to the right of the / key to remove the need to press simultaneously Sym and a Shift key to access `?`. - -Now, if you look at the left side, you'll notice that the mirror of , is ;, the mirror of . is : and the mirror of / is \\. The same logic used for Shift+/=? also applies to Shift+\\=|. - -In case you wish to combine Shift with a symbol key anyways, you can hold down Shift on the base layer with your pinky, activate Sym with your right thumb and while still holding down the Shift key, tap your desired symbol key. Same thing if you need Ctrl+Digit. - -## 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 Alt modifier, despite being situated on the right half of the keyboard is *not* `KC_RALT`, it is `KC_LALT`. `KC_RALT` is actually the AltGr key which generally acts very differently to the left Alt key. Keyboard shortcuts involving AltGr+F# are rare and infrequent as opposed to the much more common Alt+F# 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 D on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is C 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 PgUp or PgDn 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. From c25804d8e1f0559506a93a1e3c5fe428f79c899e Mon Sep 17 00:00:00 2001 From: Nath Date: Tue, 15 Aug 2023 17:33:23 +0100 Subject: [PATCH 13/14] refactor: move squigglybob keymap folder back to splitkb/kyria/rev2 --- keyboards/splitkb/kyria/{rev2 => }/keymaps/squigglybob/config.h | 0 keyboards/splitkb/kyria/{rev2 => }/keymaps/squigglybob/keymap.c | 0 keyboards/splitkb/kyria/{rev2 => }/keymaps/squigglybob/rules.mk | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename keyboards/splitkb/kyria/{rev2 => }/keymaps/squigglybob/config.h (100%) rename keyboards/splitkb/kyria/{rev2 => }/keymaps/squigglybob/keymap.c (100%) rename keyboards/splitkb/kyria/{rev2 => }/keymaps/squigglybob/rules.mk (100%) diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h b/keyboards/splitkb/kyria/keymaps/squigglybob/config.h similarity index 100% rename from keyboards/splitkb/kyria/rev2/keymaps/squigglybob/config.h rename to keyboards/splitkb/kyria/keymaps/squigglybob/config.h diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c b/keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c similarity index 100% rename from keyboards/splitkb/kyria/rev2/keymaps/squigglybob/keymap.c rename to keyboards/splitkb/kyria/keymaps/squigglybob/keymap.c diff --git a/keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk b/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk similarity index 100% rename from keyboards/splitkb/kyria/rev2/keymaps/squigglybob/rules.mk rename to keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk From 75fae8fe998e710e0e78800a9382aa393247254f Mon Sep 17 00:00:00 2001 From: Nath Date: Wed, 16 Aug 2023 11:03:16 +0100 Subject: [PATCH 14/14] feat: enable rgblight --- keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk b/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk index 7f062d256a05..7de296873afb 100755 --- a/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk +++ b/keyboards/splitkb/kyria/keymaps/squigglybob/rules.mk @@ -1 +1,2 @@ -ENCODER_ENABLE = no \ No newline at end of file +ENCODER_ENABLE = no +RGBLIGHT_ENABLE = yes