1
0
Fork 0

[Keymap Removal] keyboard with most keymaps (#23081)

* splitkb/kyria

* lily58

* gmmk/pro/rev1/ansi

* lets_split
This commit is contained in:
Joel Challis 2024-02-15 08:23:23 +00:00 committed by GitHub
parent a9f1105f98
commit 4a128c6062
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
260 changed files with 0 additions and 25415 deletions

View file

@ -1,20 +0,0 @@
/* 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
#define TAPPING_TERM 175
#define TAPPING_TOGGLE 2

View file

@ -1,37 +0,0 @@
// Copyright 2021 Your Name (@artflag)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// Tap Dance declarations
enum {
CT_CLN, // Reverses colon and semicolon and triggers semicolon on tap dance.
};
void dance_cln_finished(tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
register_code16(KC_COLN);
} else {
register_code(KC_SCLN);
}
}
void dance_cln_reset(tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
unregister_code16(KC_COLN);
} else {
unregister_code(KC_SCLN);
}
}
// All tap dance functions would go here.
tap_dance_action_t tap_dance_actions[] = {
[CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, TD(CT_CLN), KC_BSPC, KC_LGUI, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_TAB, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_BSLS, TT(2), KC_LBRC, KC_RBRC, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_GRV, KC_LCTL, KC_LALT, KC_SPC, SC_LSPO, TT(1), TT(1), SC_RSPC, KC_ENT, KC_MINS, KC_EQL),
[1] = LAYOUT(KC_TRNS, KC_NO, KC_7, KC_8, KC_9, KC_NO, KC_NO, KC_NO, KC_UP, KC_PGUP, KC_PSLS, KC_TRNS, KC_TRNS, KC_0, KC_4, KC_5, KC_6, KC_PDOT, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PAST, KC_PPLS, KC_TRNS, KC_NO, KC_1, KC_2, KC_3, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_HOME, KC_END, KC_PGDN, KC_EXLM, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT(KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_MPLY, KC_VOLU, KC_BRIU, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_MSTP, KC_VOLD, KC_BRID, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO)
};

View file

@ -1,26 +0,0 @@
# Simple workman layout
## Features
- Workman layout
- semicolon and colon are flipped. Colon on tap, semicolon on double tap.
## Using the layout
1. Use https://config.qmk.fm/#/splitkb/kyria/rev2/LAYOUT to edit `workman-artflag.json`.
1. Convert to `keymap.c`:
```bash
cd keyboards/splitkb/kyria/keymaps/ArtFlag
qmk json2c workman-artflag.json > keymap.c
cd ../../../../..
```
1. Git diff to bring back the code for tap dancing.
1. Compile and flash:
```bash
qmk compile && qmk flash
```

View file

@ -1 +0,0 @@
TAP_DANCE_ENABLE = yes

View file

@ -1,167 +0,0 @@
{
"version": 1,
"notes": "",
"documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
"keyboard": "splitkb/kyria/rev2",
"keymap": "workman-artflag",
"layout": "LAYOUT",
"layers": [
[
"KC_ESC",
"KC_Q",
"KC_D",
"KC_R",
"KC_W",
"KC_B",
"KC_J",
"KC_F",
"KC_U",
"KC_P",
"KC_SCLN",
"KC_BSPC",
"KC_LGUI",
"KC_A",
"KC_S",
"KC_H",
"KC_T",
"KC_G",
"KC_Y",
"KC_N",
"KC_E",
"KC_O",
"KC_I",
"KC_QUOT",
"KC_TAB",
"KC_Z",
"KC_X",
"KC_M",
"KC_C",
"KC_V",
"KC_BSLS",
"TT(2)",
"KC_LBRC",
"KC_RBRC",
"KC_K",
"KC_L",
"KC_COMM",
"KC_DOT",
"KC_SLSH",
"KC_GRV",
"KC_LCTL",
"KC_LALT",
"KC_SPC",
"SC_LSPO",
"TT(1)",
"TT(1)",
"SC_RSPC",
"KC_ENT",
"KC_MINS",
"KC_EQL"
],
[
"KC_TRNS",
"KC_NO",
"KC_7",
"KC_8",
"KC_9",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_UP",
"KC_PGUP",
"KC_PSLS",
"KC_TRNS",
"KC_TRNS",
"KC_0",
"KC_4",
"KC_5",
"KC_6",
"KC_PDOT",
"KC_NO",
"KC_LEFT",
"KC_DOWN",
"KC_RGHT",
"KC_PAST",
"KC_PPLS",
"KC_TRNS",
"KC_NO",
"KC_1",
"KC_2",
"KC_3",
"KC_PCMM",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_DEL",
"KC_HOME",
"KC_END",
"KC_PGDN",
"KC_EXLM",
"KC_PMNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS"
],
[
"KC_NO",
"KC_NO",
"KC_F9",
"KC_F10",
"KC_F11",
"KC_F12",
"KC_NO",
"KC_MPLY",
"KC_VOLU",
"KC_BRIU",
"KC_NO",
"KC_MUTE",
"KC_NO",
"KC_NO",
"KC_F5",
"KC_F6",
"KC_F7",
"KC_F8",
"KC_NO",
"KC_MSTP",
"KC_VOLD",
"KC_BRID",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_F1",
"KC_F2",
"KC_F3",
"KC_F4",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_NO",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_TRNS",
"KC_NO",
"KC_NO",
"KC_NO"
]
],
"author": ""
}

View file

@ -1,56 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP
#endif
// EC11K encoders have a different resolution than other EC11 encoders.
// When using the default resolution of 4, if you notice your encoder skipping
// every other tick, lower the resolution to 2.
#define ENCODER_RESOLUTION 2
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
#define TAPPING_TERM 200
// Allows to use either side as the master. Look at the documentation for info:
// https://docs.qmk.fm/#/config_options?id=setting-handedness
#define EE_HANDS
// Allows media codes to properly register in macros and rotary encoder code
#define TAP_CODE_DELAY 10

View file

@ -1,307 +0,0 @@
/* 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
enum layers {
QWERTY,
LOWER,
RAISE,
NAV,
ADJUST
};
enum custom_keycodes {
KC_LBR = SAFE_RANGE,
KC_RBR
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | TAB | Q | W | E | R | T | | Y | U | I | O | P | RCTL |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | LCTL | A | S | D | F | G | | H | J | K | L | ; : | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LSFT | Z | X | C | V | B | Del | Raise| |Adjust| Esc | N | M | , < | . > | / ? | LSFT |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | LALT | | Bspc | Lower| | Enter| Space| [ { | ] } | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[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_RCTL,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, MO(RAISE), MO(ADJUST), KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
XXXXXXX, KC_LALT, XXXXXXX, KC_BSPC, MO(LOWER), KC_ENT, KC_SPC, KC_LBR, KC_RBR, XXXXXXX
),
/*
* Lower Layer: Numbers, functions, symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | ( | ) | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[LOWER] = LAYOUT(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LPRN, KC_RPRN, _______
),
/*
* Raise Layer: Functions, Numbers
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | F7 | F8 | F9 | | | | 7 & | 8 * | 9 ( | - _ | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | F4 | F5 | F6 | | | | 4 * | 5 % | 6 ^ | = + | RCTL |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | F1 | F2 | F3 | | | | | | | | 1 ! | 2 @ | 3 # | \ | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | 0 ) | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[RAISE] = LAYOUT(
_______, _______, KC_F7, KC_F8, KC_F9, _______, _______, KC_7, KC_8, KC_9, _______, _______,
_______, _______, KC_F4, KC_F5, KC_F6, _______, _______, KC_4, KC_5, KC_6, _______, KC_RCTL,
_______, _______, KC_F1, KC_F2, KC_F3, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______
),
/*
* Navigation Layer
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | Up | | | RGBTOG |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | Left | Down | Right| | RGBOFF |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | RGBON |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | Reset|Debug | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_HUI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
_______, _______, _______, _______, _______, _______, _______, QK_BOOT, DB_TOGG, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LBR: {
if (record->event.pressed) {
if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
register_code(KC_9);
} else {
register_code(KC_LBRC);
}
} else { // Release the key
if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
unregister_code(KC_9);
} else {
unregister_code(KC_LBRC);
}
}
return false;
break;
}
case KC_RBR: {
if (record->event.pressed) {
if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
register_code(KC_0);
} else {
register_code(KC_RBRC);
}
} else { // Release the key
if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
unregister_code(KC_0);
} else {
unregister_code(KC_RBRC);
}
}
return false;
break;
}
}
return true;
}
void leader_end_user(void) {
if (leader_sequence_one_key(KC_F)) { // Shift + Ctrl + F
tap_code16(S(C(KC_F)));
}
}
#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[] = {
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 NAV:
oled_write_P(PSTR("Navigation\n"), false);
break;
case ADJUST:
oled_write_P(PSTR("Adjust\n"), false);
break;
default:
oled_write_P(PSTR("Undefined\n"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_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
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
switch (get_highest_layer(layer_state)) {
case QWERTY:
if (clockwise) { // Ctrl + I
tap_code16(C(KC_I));
} else { // Shift + F3
tap_code16(S(KC_F3));
}
break;
case LOWER:
// History scrubbing. For Adobe products, hold shift while moving
// backward to go forward instead.
if (clockwise) {
tap_code16(C(KC_Y));
} else {
tap_code16(C(KC_Z));
}
break;
case RAISE:
if (clockwise) { // Subscript: CTRL + =
tap_code16(C(KC_EQL));
}
break;
default:
// Nothing
break;
}
} else if (index == 1) {
switch (get_highest_layer(layer_state)) {
case QWERTY:
// Scroll by letter horizontally
if (clockwise) {
tap_code16(KC_RGHT);
} else {
tap_code16(KC_LEFT);
}
case LOWER:
// Nothing
break;
case RAISE:
// Find previous/Find next
if (clockwise) {
tap_code(KC_F3);
} else {
tap_code16(S(KC_F3));
}
default:
// Nothing
break;
}
}
return true;
}
#endif

View file

@ -1,5 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
LEADER_ENABLE = yes # Enable the Leader Key feature
MOUSEKEY_ENABLE = no

View file

@ -1,43 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/benji/glcdfont.c"
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 150
#endif
// 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

View file

@ -1,228 +0,0 @@
#include "progmem.h"
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF0, 0xA0, 0x00, 0xC0, 0xFE,
0xC0, 0x00, 0x40, 0xF8, 0x00, 0x00,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
0x00, 0x00, 0x40, 0xC0, 0xC0, 0xC0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0,
0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
0x40, 0x40, 0x40, 0xC0, 0xC0, 0x40,
0x00, 0x00, 0x00, 0x40, 0xC0, 0xC0,
0xC0, 0x40, 0x00, 0x00, 0x00, 0x00,
0x80, 0x80, 0xC0, 0xC0, 0x40, 0x40,
0xC0, 0xC0, 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, 0xC0, 0xF0, 0xF8, 0xFC, 0x3E,
0x1E, 0x06, 0x01, 0x00, 0x00, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x07, 0x0C,
0x1F, 0x3F, 0x7E, 0xFF, 0xFF, 0xFF,
0xFF, 0xFE, 0x7F, 0x3F, 0x0E, 0x0E,
0x0F, 0x02, 0x00, 0x00, 0xC0, 0xF0,
0x3C, 0x0F, 0x03, 0x0F, 0x3F, 0xFF,
0xFC, 0x3C, 0x07, 0x07, 0x0F, 0x3F,
0xFF, 0xFC, 0xE0, 0x80, 0x00, 0x60,
0xF8, 0xFF, 0x37, 0x30, 0x00, 0x03,
0x1F, 0x7F, 0xFF, 0xF8, 0xE0, 0x80,
0x08, 0x7F, 0xFF, 0xFF, 0xFF, 0x80,
0x00, 0x00, 0x00, 0xF8, 0xF0, 0xF8,
0xB0, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0x88, 0x00, 0x00, 0x3E, 0x7F,
0xFF, 0xFF, 0xC1, 0x00, 0x00, 0x00,
0x00, 0x81, 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, 0x03, 0x0F, 0x1F, 0x3F, 0x3C,
0x78, 0x70, 0x60, 0x00, 0x00, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
0x0F, 0x7F, 0x0F, 0x00, 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, 0x01, 0x03, 0x0F,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x03, 0x00, 0x00, 0x01, 0x01, 0x01,
0x01, 0x01, 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, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

View file

@ -1,248 +0,0 @@
/* 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
enum layers {
_QWERTY = 0,
_LOWER,
_RAISE,
_ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | | \ |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |Ctrl/BS | A | S | D | F | G | | H | J | K | L | ; : | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B |LShift|LShift| |LShift|LShift| N | M | , < | . > | / ? | - _ |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | GUI | Del | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr|
* | | | Alt | Lower| Raise| | Lower| Raise| | | |
* `----------------------------------' `----------------------------------'
*/
[_QWERTY] = LAYOUT(
LT(_RAISE, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LSFT, KC_LSFT, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
KC_LGUI, KC_DEL, MT(MOD_LALT, KC_ENT), LT(_LOWER, KC_SPC), KC_LGUI, LT(_LOWER, KC_ENT), LT(_RAISE, KC_SPC), KC_TAB, KC_BSPC, KC_RALT
),
/*
* Lower Layer: Symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | ! | @ | { | } | | | | | | | | | | \ |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | ; | = | | = | ; | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_LOWER] = LAYOUT(
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_BSLS,
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
_______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______
),
/*
* Raise Layer: Number keys, media, navigation
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | |Mbtn1 |Mbtn2 |Mbtn3 | | | Mbtn4|Mbtn5 | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_RAISE] = LAYOUT(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
_______, KC_BTN1, KC_BTN2, KC_BTN3, _______, KC_BTN4, KC_BTN5, _______, _______, _______
),
/*
* Adjust Layer: Function keys, RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * 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[] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,48,24,108,244,130,194,193,25,125,119,97,1,193,226,178,52,44,24,48,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,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,192,64,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,136,24,48,56,28,221,193,156,62,127,127,127,62,156,193,221,156,14,6,4,140,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,64,64,64,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,192,48,76,230,243,253,254,252,190,255,223,255,255,159,158,254,249,243,230,76,48,192,0,0,0,0,0,0,0,0,0,1,6,12,26,22,38,35,65,64,67,119,95,76,65,33,32,23,27,12,6,1,0,0,0,0,0,0,0,0,0,0,192,48,12,6,3,1,0,192,224,240,248,252,254,255,224,128,0,1,3,6,12,48,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,31,96,130,7,15,7,3,2,6,13,255,255,255,7,2,2,3,7,7,7,131,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,128,0,0,0,127,255,255,255,255,255,255,255,255,227,99,62,0,0,128,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,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,3,6,4,8,9,19,17,17,19,17,19,18,10,8,4,6,3,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,1,3,6,4,8,8,17,17,17,17,17,17,17,8,8,4,6,3,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,128,96,48,152,72,228,52,34,10,74,74,58,178,50,116,228,200,24,176,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,96,48,152,200,228,228,242,242,242,242,242,242,242,228,228,200,152,48,96,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,254,1,0,0,192,240,248,248,248,248,184,152,140,204,249,231,255,191,159,223,6,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,1,0,63,127,249,240,240,241,251,159,191,159,251,241,240,240,249,127,63,0,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,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,12,24,49,39,79,79,143,143,143,143,149,149,149,67,65,33,49,24,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,24,48,32,64,71,159,135,159,135,159,135,159,135,159,71,64,32,48,24,12,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,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,232,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_kyria_logo();
render_qmk_logo();
oled_write_P(PSTR("Kyria rev B3nJ.P0tt3r\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("Chandra\n"), false);
break;
case _LOWER:
oled_write_P(PSTR("Jace\n"), false);
break;
case _RAISE:
oled_write_P(PSTR("Karn\n"), false);
break;
case _ADJUST:
oled_write_P(PSTR("Teferi\n"), false);
break;
default:
oled_write_P(PSTR("Ashiok\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
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
switch (get_highest_layer(layer_state)) {
case _RAISE:
// Volume control
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
case _LOWER:
// Page up/Page down
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
break;
case _QWERTY:
// Page up/Page down
if (clockwise) {
tap_code(KC_DOWN);
} else {
tap_code(KC_UP);
}
break;
default:
break;
}
}
return true;
}
#endif

View file

@ -1,246 +0,0 @@
# Kyria's Default Keymap
[insert pretty KLE visualization once the keymap is vetted]
The default keymap contains 5 layers which allows it to include all keys found on a ISO 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 ISO keys (<kbd>\ |</kbd> and <kbd># ~</kbd>, which are respectively `KC_NUBS` and `KC_NUHS`), the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are and 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>.
As for the ISO keys, they are positioned more or less like they would on a classic keyboard: `KC_NUBS` on the left and `KC_NUHS` on the right.
## 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.
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 like no other, that will fit you like a glove.
Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration.

View file

@ -1,3 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow

View file

@ -1,54 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
#define TAPPING_TERM 200
// Turn off on slave
#define WAIT_FOR_USB
// 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
// Allows to use either side as the master. Look at the documentation for info:
// https://docs.qmk.fm/#/config_options?id=setting-handedness
#define EE_HANDS

View file

@ -1,314 +0,0 @@
/* 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
typedef union {
uint32_t raw;
struct {
bool osIsWindows;
};
} user_config_t;
user_config_t user_config;
enum layers {
_QWERTY = 0,
_COLEMAK,
_NAV,
_SYMBOLS,
_NUM,
_ADJUST
};
enum custom_keycodes {
Qwerty = SAFE_RANGE,
Colemak,
Undo,
Cut,
Copy,
Paste,
NxtWord,
PrvWord
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | TAB | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | NAV | A | S | D | F | G | | H | J | K | L | ; : | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B |Enter | ESC | |ADJUST|Space | N | M | , < | . > | / ? | Del |
* `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
* | LCTL | GUI | RALT | | NUM | | NUM | | SYMB | NAV |LEADER|
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_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,
MO(_NAV), KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN, KC_QUOT,
KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , XXXXXXX, KC_ESC , MO(_ADJUST), XXXXXXX, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, RSFT_T(KC_DEL),
KC_LCTL, KC_LGUI, KC_RALT, KC_ENT ,TT(_NUM),TT(_NUM), KC_SPC, MO(_SYMBOLS), MO(_NAV), QK_LEAD
),
/*
* Base Layer: Colemak
*
* ,-------------------------------------------. ,-------------------------------------------.
* | TAB | Q | W | F | P | G | | J | L | U | Y | ; : | Bksp |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | NAV | A | R | S | T | D | | H | N | E | I | O | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B |Enter | ESC | |ADJUST|Space | K | M | , < | . > | / ? | Del |
* `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
* | LCTL | GUI | RALT | | NUM | | NUM | | SYMB | NAV |LEADER|
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_COLEMAK] = LAYOUT(
KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J, KC_L , KC_U , KC_Y ,KC_SCLN, KC_BSPC,
MO(_NAV), KC_A , KC_R , KC_S , KC_T , KC_D , KC_H, KC_N , KC_E , KC_I , KC_O , KC_QUOT,
KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , XXXXXXX, KC_ESC , MO(_ADJUST), XXXXXXX, KC_K, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, RSFT_T(KC_DEL),
KC_LCTL, KC_LGUI, KC_RALT, KC_ENT ,TT(_NUM),TT(_NUM), KC_SPC, MO(_SYMBOLS), MO(_NAV), QK_LEAD
),
/*
* Navigation Layer: Cursor, Text Navigation
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | |WheelU| | | | |PrvWord| Up |NxtWord| | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | LCTL |WheelD|LSFT | Bksp | | Bksp | Left | Down |Right | Del | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | Undo | Cut | Copy |Paste | | | | | | | | Home | | End | | |
* `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
* | | | | |Space | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NAV] = LAYOUT(
_______, _______, _______, KC_WH_U, _______, _______, _______, PrvWord, KC_UP , NxtWord, _______, _______,
_______, _______, KC_LCTL, KC_WH_D, KC_LSFT, KC_BSPC, KC_BSPC, KC_LEFT, KC_DOWN,KC_RIGHT, KC_DEL , _______,
_______, Undo , Cut , Copy , Paste , _______, XXXXXXX, _______, _______, XXXXXXX, _______, KC_HOME, _______, KC_END , _______, _______,
_______, _______, _______, _______, KC_SPC , _______, _______, _______, _______, _______
),
/*
* Symbol Layer
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ` ~ | ! | @ | # | $ | % | | ^ | { | } | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | ~ | | | - _ | = + | & | | * | ( | ) | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | _ | + | | | | | | | | [ { | ] } | | \ | | |
* `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_SYMBOLS] = LAYOUT(
KC_GRV, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_LCBR, KC_RCBR, _______,ALGR(KC_5),_______,
KC_TILD, _______, _______, KC_MINS, KC_EQL , KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, KC_PIPE, _______,
_______, _______, _______, KC_UNDS, KC_PLUS, _______, XXXXXXX, _______, _______, XXXXXXX, _______, KC_LBRC, KC_RBRC, _______, KC_BSLS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Num Layer
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | / | 7 & | 8 * | 9 ( | - | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | | * | 4 $ | 5 % | 6 ^ | + | Space |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = | Enter |
* `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
* | | | | | | | | | | , | . |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NUM] = LAYOUT(
_______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_PSLS, KC_7 , KC_8 , KC_9 , KC_PMNS, _______,
_______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_PAST, KC_4 , KC_5 , KC_6 , KC_PLUS, KC_SPC ,
_______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX, KC_0 , KC_1 , KC_2 , KC_3 , KC_PEQL, KC_ENT ,
_______, _______, _______, _______, _______, _______, _______, _______, KC_PCMM, KC_DOT
),
/*
* Adjust Layer: Media
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F9 | F10 | F11 | F12 | | | SAI | | Vol+ | | Play | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | F5 | F6 | F7 | F8 | | | HUI | Prev | Vol- | Nxt | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | F1 | F2 | F3 | F4 | | | | | | | VAI | Mute | | | | |
* `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
* |Qwerty|Colemak| | | | | RGB | | RGB | | |
* | Dflt | Dflt | | | | |Toggle| | Mode | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
_______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, RGB_SAI, _______, KC_VOLU, _______, KC_MPLY, _______,
_______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, RGB_HUI, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______,
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, XXXXXXX, _______, _______, XXXXXXX, RGB_VAI, KC_MUTE, _______, _______, _______, _______,
Qwerty , Colemak, _______, _______, _______, RGB_TOG, _______, RGB_MOD, _______, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
void keyboard_post_init_user(void) {
// Call the post init code.
// Read the user config from EEPROM
user_config.raw = eeconfig_read_user();
// Default RGB settings, without saving settings
rgblight_enable_noeeprom();
rgblight_sethsv_noeeprom(HSV_CYAN);
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case Qwerty:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
break;
case Colemak:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
break;
case Undo:
if (record->event.pressed) {
if (user_config.osIsWindows == 1) {
tap_code16(C(KC_Z));
} else if (user_config.osIsWindows == 0) {
tap_code16(G(KC_Z));
}
}
break;
case Cut:
if (record->event.pressed) {
if (user_config.osIsWindows == 1) {
tap_code16(C(KC_X));
} else if (user_config.osIsWindows == 0) {
tap_code16(G(KC_X));
}
}
break;
case Copy:
if (record->event.pressed) {
if (user_config.osIsWindows == 1) {
tap_code16(C(KC_C));
} else if (user_config.osIsWindows == 0) {
tap_code16(G(KC_C));
}
}
break;
case Paste:
if (record->event.pressed) {
if (user_config.osIsWindows == 1) {
tap_code16(C(KC_V));
} else if (user_config.osIsWindows == 0) {
tap_code16(G(KC_V));
}
}
break;
case PrvWord:
if (record->event.pressed) {
if (user_config.osIsWindows == 1) {
tap_code16(C(KC_LEFT));
} else if (user_config.osIsWindows == 0) {
tap_code16(A(KC_LEFT));
}
}
break;
case NxtWord:
if (record->event.pressed) {
if (user_config.osIsWindows == 1) {
tap_code16(C(KC_RGHT));
} else if (user_config.osIsWindows == 0) {
tap_code16(A(KC_RGHT));
}
}
break;
}
return true;
};
void leader_end_user(void) {
// Set current OS indicator to macOs
if (leader_sequence_one_key(KC_M)) {
user_config.osIsWindows = false;
eeconfig_update_user(user_config.raw);
}
// Set current OS indicator to Windows
if (leader_sequence_one_key(KC_W)) {
user_config.osIsWindows = true;
eeconfig_update_user(user_config.raw);
}
// Screenshot
if (leader_sequence_one_key(KC_S)) {
if (user_config.osIsWindows == 1) {
tap_code16(S(G(KC_S)));
} else if (user_config.osIsWindows == 0) {
tap_code16(S(G(KC_4)));
}
}
// Video
if (leader_sequence_one_key(KC_V)) {
if (user_config.osIsWindows == 0) {
tap_code16(S(G(KC_5)));
}
}
// Sleep
if (leader_sequence_one_key(KC_P)) {
if (user_config.osIsWindows == 1) {
SEND_STRING(SS_LGUI("x") "u" "h");
} else if (user_config.osIsWindows == 0) {
tap_code16(A(G(KC_PWR)));
}
}
}

View file

@ -1,4 +0,0 @@
# OLED_ENABLE = yes
# ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
LEADER_ENABLE = yes # Enables the Leader shortcut funtionality

View file

@ -1,47 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
// encoder resolution from default 4 to 2
#define ENCODER_RESOLUTION 2
// 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
//allows for either side as the master.
#define EE_HANDS

View file

@ -1,247 +0,0 @@
/* 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
enum layers {
_QWERTY = 0,
_LOWER,
_RAISE,
_NAV,
_ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; : | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | - _ |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | GUI | | Tab | Enter| | Bksp | Space| Alt | Home | End |
* | | | LCTL | Lower| | | | Raise| | | |
* `----------------------------------' `----------------------------------'
*/
[_QWERTY] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
_______, KC_LGUI , KC_LCTL, LT(_LOWER, KC_TAB), LT(_NAV, KC_ENT), KC_BSPC, LT(_RAISE, KC_SPC), KC_RALT, KC_HOME, KC_END
),
/*
* Lower Layer: Number keys, media
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | 7 | 8 | 9 | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | Prev | Play | Next | VolUp| | | 4 | 5 | 6 | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | Mute | VolDn| | | | | | 0 | 1 | 2 | 3 | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_LOWER] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, KC_7 , KC_8 , KC_9 , _______, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_4 , KC_5 , KC_6 , _______, _______,
_______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Raise Layer: Symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | @ | ! | { | } | | | ` | ~ | & | * | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | # | $ | ( | ) | | | _ | - | = | | | ' " | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | % | ^ | [ | ] | | | | | | | | + | \ | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_RAISE] = LAYOUT(
_______, KC_AT , KC_EXLM, KC_LCBR, KC_RCBR, _______, KC_GRV , KC_TILD, KC_AMPR, KC_ASTR, _______, _______,
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, _______, KC_UNDS, KC_MINS, KC_EQL , KC_PIPE, KC_QUOT, _______,
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_BSLS, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * Navigation Layer
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | home |pg dn |pg up | end | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | left | down | up | right| | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
[_NAV] = LAYOUT(
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Adjust Layer: Function keys, RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | | | F11 | F12 | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = 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, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * 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[] = {
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 _NAV:
oled_write_P(PSTR("Nav\n"), false);
break;
case _ADJUST:
oled_write_P(PSTR("Adjust\n"), false);
break;
default:
oled_write_P(PSTR("Undefined\n"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_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
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
// Volume control
if (clockwise) {
tap_code(KC_VOLD);
} else {
tap_code(KC_VOLU);
}
}
else if (index == 1) {
// Page up/Page down
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
return true;
}
#endif

View file

@ -1,4 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUTO_SHIFT_ENABLE = yes # Enable auto shift

View file

@ -1,45 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#define OLED_TIMEOUT 300000
#endif
// 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
#define SPLIT_USB_TIMEOUT 1000
#define MASTER_RIGHT
#define ENCODER_DIRECTION_FLIP
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define NO_ACTION_ONESHOT
#define OLED_FONT_END 127
#ifdef RGBLIGHT_ENABLE
#define RGBLIGHT_LED_MAP {0,1,2,9,8,7,4,3,5,6,19,18,17,10,11,12,15,16,14,13} // Orients Kyria LEDs to a circle around both halves.
//#define RBGLIGHT_LED_MAP {9,8,6,7,5,3,2,4,1,0,10,12,13,11,14,16,17,15,18,19} // Orients Kyria LEDs for a left half-right half columnar progression.
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_SLEEP
#endif

View file

@ -1,377 +0,0 @@
/* 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 <stdio.h>
bool is_alt_tab_active = false;
uint16_t alt_tab_timer = 0;
char wpm_str[10];
enum layers {
_QWERTY,
_2WERTY, //pronounced "twerty," obviously
_LOWER,
_RAISE,
_ADJUST,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | BKSP |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | CTRL | Z | X | C | V | B |Enter |Ctrl | |Ctrl |(2u) | N | M | , < | . > | / ? | - _ |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | TG(1)| Alt | Win | Shift| Back | | Enter| Space| Win | Alt |TG(3) |
* | | | | Lower| space| | Lower| Raise| | | |
* `----------------------------------' `----------------------------------'
*/
[_QWERTY] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_LCTL, KC_RCTL, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
TG(1), KC_LALT, KC_LGUI, KC_LSFT, KC_BSPC, LT(3, KC_ENT), LT(2, KC_SPC), KC_RGUI, KC_RALT, TG(2)
),
/*
* This layer exists to change encoder functions.
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_2WERTY] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Lower Layer: numpad and arrow
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | 7 | 8 | 9 | 0 | | PGUP | | UP | | | Del
|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | CAPS | | 4 | 5 | 6 | Tab | | PGDN | Left | Down | Right| | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | 1 | 2 | 3 | Ent | | | | | | | LBRC | RBRC | | |\ | += |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | Tab | Ent | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_LOWER] = LAYOUT(
_______, _______, KC_7, KC_8, KC_9, KC_0, KC_PGUP, _______, KC_UP, _______, _______, KC_DEL,
KC_CAPS, _______, KC_4, KC_5, KC_6, KC_TAB, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_LSFT, KC_0, KC_1, KC_2, KC_3, KC_ENT, KC_TRNS, KC_TRNS, MO(4), _______, KC_LBRC, KC_RBRC, _______, _______, KC_BSLS, KC_EQL,
KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______
),
/*
* Raise Layer: F keys and media
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | F9 | F10 | F11 | F12 | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | Prev | Play | Next | VolUp| | F5 | F6 | F7 | F8 | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | Mute | VolDn| | | | | | F1 | F2 | F3 | F4 | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_RAISE] = LAYOUT(
_______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______,
_______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS
),
/*
* Adjust Layer: Function keys, RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | VAI | SAI | HUI | SPI | MOD | | | | | F11 | F12 | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | VID | SAD | HUD | SPD | RMOD | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RGB_SPI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
_______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_SPD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * 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_status(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
oled_write_P(PSTR("QWERTY"), false);
break;
case _2WERTY:
oled_write_P(PSTR("2WERTY"), false);
break;
case _LOWER:
oled_write_P(PSTR("Numpad"), false);
break;
case _RAISE:
oled_write_P(PSTR("F Keys"), false);
break;
case _ADJUST:
oled_write_P(PSTR("RGB "), false);
break;
default:
oled_write_P(PSTR("Undefined"), false);
}
//Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
}
// WPM-responsive animation stuff here
#define IDLE_FRAMES 5
#define IDLE_SPEED 40 // below this wpm value your animation will idle
// #define PREP_FRAMES 1 // uncomment if >1
#define TAP_FRAMES 2
#define TAP_SPEED 60 // above this wpm value typing animation to triggere
#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
uint8_t current_idle_frame = 0;
// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
uint8_t current_tap_frame = 0;
// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
static void render_anim(void) {
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
},
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
},
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0,129,130,130,132, 8, 16, 32, 64,128, 0, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64,160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
},
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
},
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
}
};
static const char PROGMEM prep[][ANIM_SIZE] = {
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132,195,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
}
};
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0,248,248,248,248, 0, 0, 0, 0, 0,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67,135, 7, 1, 0,184,188,190,159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132, 67,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61,124,252,252,252,252,252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 63, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 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, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
},
{
0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,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,128,128,128,
0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3,122,122,121,121,121,121, 57, 49, 2, 2, 4, 4, 8, 8, 8,136,136,135,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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,120,124,254,255, 63, 7, 0, 0, 0, 0,255,255,127,127, 63, 62, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
},
};
//assumes 1 frame prep stage
void animation_phase(void) {
if(get_current_wpm() <=IDLE_SPEED){
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
}
if(get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED){
// oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
}
if(get_current_wpm() >=TAP_SPEED){
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
}
}
if(get_current_wpm() != 000) {
oled_on(); // not essential but turns on animation OLED with any alpha keypress
if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animation_phase();
}
anim_sleep = timer_read32();
} else {
if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
oled_off();
} else {
if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animation_phase();
}
}
}
}
// static void render_skull(void) { // Helen Tseong (http://shewolfe.co/), the original artist behind the skull, sadly only allowing use of the skull for my personal use. Her (excellent) works are copyright her, and I claim no ownership. Reach out to her for permission!
// static const char PROGMEM skull[] = {
// };
// oled_write_raw_P(skull, 801);
// }
bool oled_task_user(void) {
if (is_keyboard_master()) {
//render_skull();
//oled_set_cursor(7,6);
render_status();
// Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_anim();
oled_set_cursor(0,6);
uint8_t n = get_current_wpm();
wpm_str[3] = '\0';
wpm_str[2] = '0' + n % 10;
wpm_str[1] = '0' + (n /= 10) % 10;
wpm_str[0] = '0' + n / 10 ;
oled_write_P(PSTR(" WPM: "), false);
oled_write(wpm_str, false);
}
return false;
}
#endif
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
switch(get_highest_layer(layer_state)){
case 1:
if (clockwise) {
tap_code16(C(KC_TAB));
} else {
tap_code16(S(C(KC_TAB)));
}
break;
default:
if (clockwise) {
if (!is_alt_tab_active) {
is_alt_tab_active = true;
register_code(KC_LALT);
}
alt_tab_timer = timer_read();
tap_code16(KC_TAB);
} else {
tap_code16(S(KC_TAB));
}
break;
}
return true;
}
void matrix_scan_user(void) {
if (is_alt_tab_active) {
if (timer_elapsed(alt_tab_timer) > 1250) {
unregister_code(KC_LALT);
is_alt_tab_active = false;
}
}
}
#endif

View file

@ -1,16 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WPM_ENABLE = yes
MOUSEKEY_ENABLE = no
TAP_DANCE_ENABLE = no
STENO_ENABLE = no
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
SPACE_CADET_ENABLE = no
KEY_LOCK_ENABLE = no
AUDIO_ENABLE = no
CONSOLE_ENABLE = no
VELOCIKEY_ENABLE = no

View file

@ -1,40 +0,0 @@
/* Copyright 2021 John Ezra
*
* 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
#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c"
#define OLED_FONT_END 255
#define OLED_TIMEOUT 30000
#define OLED_DISPLAY_128X64
#ifdef RGBLIGHT_ENABLE
#define RGBLIGHT_HUE_STEP 5
#define RGBLIGHT_SAT_STEP 5
#define RGBLIGHT_VAL_STEP 5
#define RGBLIGHT_LIMIT_VAL 150
#endif
#undef DEBOUNCE
#define DEBOUNCE 1
#define TAPPING_TERM 125
#define SPLIT_WPM_ENABLE
#define USB_POLLING_INTERVAL_MS 1
#define DEBUG_MATRIX_SCAN_RATE

View file

@ -1,276 +0,0 @@
/* Copyright 2021 John Ezra
*
* 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 "progmem.h"
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0xF0, 0x08, 0x24, 0x52, 0xE2,
0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
0x24, 0x22, 0x42, 0x82, 0x02, 0x02,
0x22, 0x22, 0x02, 0x02, 0xFE, 0x00,
0x00, 0xF0, 0x08, 0x04, 0x02, 0x82,
0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
0x04, 0x82, 0x42, 0x22, 0x12, 0x22,
0x42, 0x82, 0x02, 0x02, 0xFE, 0x00,
0x00, 0xF0, 0x08, 0x84, 0x42, 0x42,
0x82, 0x82, 0x42, 0x42, 0x42, 0x82,
0x04, 0x82, 0xC2, 0xE2, 0xF2, 0xE2,
0xC2, 0x82, 0x02, 0x02, 0xFE, 0x00,
0x00, 0xF0, 0x08, 0x44, 0x42, 0xF2,
0x42, 0x42, 0x42, 0xF2, 0x42, 0x42,
0x04, 0x82, 0xE2, 0x92, 0x92, 0x92,
0xE2, 0x82, 0x02, 0x02, 0xFE, 0x00,
0x00, 0xF0, 0x08, 0x84, 0x82, 0x02,
0x82, 0x02, 0x02, 0x82, 0x82, 0x02,
0x02, 0x02, 0x82, 0x82, 0x02, 0x02,
0xE2, 0x12, 0x12, 0xE2, 0x02, 0x62,
0x92, 0x92, 0x22, 0x02, 0xFE, 0x00,
0x00, 0xF0, 0x08, 0x04, 0xF2, 0x02,
0x02, 0x02, 0xF2, 0x02, 0x82, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x22,
0xF2, 0x02, 0x02, 0xE2, 0x12, 0x12,
0x12, 0xE2, 0x02, 0x02, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0xFE, 0x00, 0x00, 0xF0, 0x08,
0x02, 0xFE, 0x00, 0x00, 0xF0, 0xF8,
0x00, 0x7F, 0x40, 0x44, 0x4A, 0x47,
0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
0x44, 0x44, 0x40, 0x40, 0x7F, 0x00,
0x00, 0x7F, 0x40, 0x40, 0x41, 0x40,
0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
0x4F, 0x41, 0x41, 0x40, 0x7F, 0x00,
0x00, 0x7F, 0x40, 0x41, 0x42, 0x42,
0x42, 0x41, 0x41, 0x42, 0x42, 0x41,
0x40, 0x40, 0x40, 0x4B, 0x4B, 0x4B,
0x40, 0x40, 0x40, 0x40, 0x7F, 0x00,
0x00, 0x7F, 0x40, 0x42, 0x42, 0x4F,
0x42, 0x42, 0x42, 0x4F, 0x42, 0x42,
0x40, 0x4F, 0x4F, 0x4F, 0x48, 0x4F,
0x4F, 0x4F, 0x40, 0x40, 0x7F, 0x00,
0x00, 0x7F, 0x40, 0x4F, 0x40, 0x4F,
0x40, 0x4F, 0x44, 0x4A, 0x4A, 0x4F,
0x48, 0x47, 0x48, 0x48, 0x45, 0x40,
0x47, 0x48, 0x48, 0x47, 0x40, 0x44,
0x48, 0x48, 0x47, 0x40, 0x7F, 0x00,
0x00, 0x7F, 0x40, 0x40, 0x47, 0x48,
0x47, 0x48, 0x47, 0x40, 0x4E, 0x40,
0x4F, 0x41, 0x41, 0x4E, 0x40, 0x48,
0x4F, 0x48, 0x40, 0x47, 0x48, 0x48,
0x48, 0x47, 0x40, 0x40, 0x7F, 0x00,
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, 0x7F, 0x00, 0x00, 0x7F, 0x40,
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
0x00, 0xF0, 0xF8, 0xDC, 0xAE, 0x1E,
0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
0xDC, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
0xDE, 0xDE, 0xFE, 0xFE, 0xFE, 0x00,
0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0x7E,
0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E,
0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00,
0x00, 0xF0, 0xF8, 0x7C, 0xBE, 0xBE,
0x7E, 0x7E, 0xBE, 0xBE, 0xBE, 0x7E,
0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E,
0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00,
0x00, 0xF0, 0xF8, 0xBC, 0xBE, 0x0E,
0xBE, 0xBE, 0xBE, 0x0E, 0xBE, 0xBE,
0xFC, 0x7E, 0x1E, 0x6E, 0x6E, 0x6E,
0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00,
0x00, 0xF0, 0xF8, 0x7C, 0x7E, 0xFE,
0x7E, 0xFE, 0xFE, 0x7E, 0x7E, 0xFE,
0xFE, 0xFE, 0x7E, 0x7E, 0xFE, 0xFE,
0x1E, 0xEE, 0xEE, 0x1E, 0xFE, 0x9E,
0x6E, 0x6E, 0xDE, 0xFE, 0xFE, 0x00,
0x00, 0xF0, 0xF8, 0xFC, 0x0E, 0xFE,
0xFE, 0xFE, 0x0E, 0xFE, 0x7E, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xDE,
0x0E, 0xFE, 0xFE, 0x1E, 0xEE, 0xEE,
0xEE, 0x1E, 0xFE, 0xFE, 0xFE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFE, 0xFE, 0x00, 0x00, 0xF0, 0x08,
0xFE, 0xFE, 0x00, 0x00, 0xF0, 0xF8,
0x00, 0x7F, 0x7F, 0x7B, 0x75, 0x78,
0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
0x7B, 0x7B, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
0x7E, 0x7E, 0x70, 0x70, 0x70, 0x70,
0x70, 0x7E, 0x7E, 0x7F, 0x7F, 0x00,
0x00, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D,
0x7D, 0x7E, 0x7E, 0x7D, 0x7D, 0x7E,
0x7F, 0x7F, 0x7F, 0x74, 0x74, 0x74,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x7F, 0x7F, 0x7D, 0x7D, 0x70,
0x7D, 0x7D, 0x7D, 0x70, 0x7D, 0x7D,
0x7F, 0x70, 0x70, 0x70, 0x77, 0x70,
0x70, 0x70, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x7F, 0x7F, 0x70, 0x7F, 0x70,
0x7F, 0x70, 0x7B, 0x75, 0x75, 0x70,
0x77, 0x78, 0x77, 0x77, 0x7A, 0x7F,
0x78, 0x77, 0x77, 0x78, 0x7F, 0x7B,
0x77, 0x77, 0x78, 0x7F, 0x7F, 0x00,
0x00, 0x7F, 0x7F, 0x7F, 0x78, 0x77,
0x78, 0x77, 0x78, 0x7F, 0x71, 0x7F,
0x70, 0x7E, 0x7E, 0x71, 0x7F, 0x77,
0x70, 0x77, 0x7F, 0x78, 0x77, 0x77,
0x77, 0x78, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x40,
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
};

View file

@ -1,261 +0,0 @@
/* Copyright 2021 John Ezra
*
* 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
enum kyria_layers {
_HNTS,
_GAME,
_NUMPAD,
_LOWER,
_RAISE,
_ADJUST
};
enum kyria_keycodes {
HNTS = SAFE_RANGE,
ESC_NUM,
LOWER,
RAISE,
MSS_CTL,
CPY_PST,
UNDO,
FIND
};
#define HNTS DF(_HNTS)
#define GAME TG(_GAME)
#define NUMPAD TG(_NUMPAD)
#define MSS_CTL MT(MOD_LCTL, C(KC_UP))
#define BSP_CMD MT(MOD_LGUI, KC_BSPC)
#define TAB_CMD MT(MOD_LGUI, KC_TAB)
#define SFT_ENT MT(MOD_LSFT, KC_ENT)
#define ALT_ESC MT(MOD_LALT, KC_ESC)
#define ALT_TAB A(KC_TAB)
#define UNDO G(KC_Z)
#define FIND G(KC_F)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Default: HNTS
*
* ,-----------------------------------------------. ,-----------------------------------------------.
* | Find | Z | R | L | D | W | | Y | P | U | X | Q | | \ |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* |Cpy/Pst| H | N | T | S | C | | B | I | E | O | A | ` ~ |
* |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
* | Undo | K | V | M | F | G | Esc |MssnCtl| |MssnCtl| Esc | J | ; : | , < | . > | / ? | ' " |
* `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
* | Numpad| Enter | Lower | Space | BSPC | | Tab | Shift | Raise | Del | Caps |
* `---------------------------------------' `---------------------------------------'
*/
[_HNTS] = LAYOUT(
FIND, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_BSLS,
CPY_PST, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_GRV,
UNDO, KC_K, KC_V, KC_M, KC_F, KC_G, ALT_ESC, MSS_CTL, MSS_CTL, ALT_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
NUMPAD, SFT_ENT, LOWER, KC_SPC, BSP_CMD, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS
),
/*
* Game: Gaming Layer
*
* ,-----------------------------------------------. ,-----------------------------------------------.
* | 0 | Z | R | L | D | W | | Y | P | U | X | Q | Esc |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* | 1 | H | N | T | S | C | | B | I | E | O | A | Enter |
* |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
* | 2 | K | V | M | F | G | 8 | 9 | |Default| Esc | J | ; : | , < | . > | / ? |Alt+Tab|
* `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
* | 3 | 4 | 5 | 6 | 7 | | Tab | Shift | Raise | Del | Caps |
* `---------------------------------------' `---------------------------------------'
*/
[_GAME] = LAYOUT(
KC_0, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_ESC,
KC_1, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_ENT,
KC_2, KC_K, KC_V, KC_M, KC_F, KC_G, KC_8, KC_9, GAME, ALT_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, ALT_TAB,
KC_3, KC_4, KC_5, KC_6, KC_7, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS
),
/*
* Numpad
*
* ,-----------------------------------------------. ,-----------------------------------------------.
* | * | + | 7 | 8 | 9 | 0 | | | | | | | |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* | / | - | 4 | 5 | 6 | ( | | | Left | Up | Down | Right | |
* |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
* | = | . | 1 | 2 | 3 | ) | | | | | | | | | | | |
* `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
* | | | | | | | | | | | |
* `---------------------------------------' `---------------------------------------'
*/
[_NUMPAD] = LAYOUT(
KC_ASTR, KC_PLUS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______,
KC_SLSH, KC_MINS, KC_4, KC_5, KC_6, KC_LPRN, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______,
KC_EQL, KC_DOT, KC_1, KC_2, KC_3, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Lower: Symbols & Media
*
* ,-----------------------------------------------. ,-----------------------------------------------.
* | Tab | * | / | + | - | = | | | | { | } | @ | ! | ` |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* | Enter | Left | Up | Down | Right | | | \ | ( | ) | $ | # | ~ |
* |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
* | Esc | Vol- | Vol+ | Prev | Play | Next | | | | | | _ | [ | ] | ^ | % | & |
* `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
* | | | | | | | | | | | |
* `---------------------------------------' `---------------------------------------'
*/
[_LOWER] = LAYOUT(
KC_TAB, KC_ASTR, KC_SLSH, KC_PLUS, KC_MINS, KC_EQL, KC_PIPE, KC_LCBR, KC_RCBR, KC_AT, KC_EXLM, KC_GRV,
KC_ENT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, KC_BSLS, KC_LPRN, KC_RPRN, KC_DLR, KC_HASH, KC_TILD,
KC_ESC, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_UNDS, KC_LBRC, KC_RBRC, KC_CIRC, KC_PERC, KC_AMPR,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Raise: Numbers
*
* ,-----------------------------------------------. ,-----------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
* |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
* | | | | | | | | | | | | | Left | Up | Down | Right | Esc |
* `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
* | | | | | | | | | | | |
* `---------------------------------------' `---------------------------------------'
*/
[_RAISE] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_ESC,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Adjust: Function Keys & RGB
*
* ,-----------------------------------------------. ,-----------------------------------------------.
* | Reset | | | | | | | | NKRO |CG SWAP| | | HNTS |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* | | TOG | SAI | HUI | VAI | MOD | | |Bright+|Bright-| | | |
* |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
* | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
* `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
* | | | | | | | | | | | |
* `---------------------------------------' `---------------------------------------'
*/
[_ADJUST] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, NK_TOGG, CG_TOGG, _______, GAME, HNTS,
_______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_BRIU, KC_BRID, _______, _______, _______,
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case CPY_PST: // Hold to Copy, Hold with GUI to Cut, Tap to Paste
{
static uint16_t copy_paste_timer;
if (record->event.pressed) {
copy_paste_timer = timer_read();
} else {
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {
if (get_mods() & MOD_MASK_GUI) {
tap_code16(LGUI(KC_X));
} else {
tap_code16(LGUI(KC_C));
}
} else {
tap_code16(LGUI(KC_V));
}
}
}
break;
case MSS_CTL:
if (record->event.pressed && record->tap.count) {
tap_code16(C(KC_UP));
return false;
}
break;
case UNDO: // Tap to Undo, Tap with GUI to Redo
if (get_mods() & MOD_MASK_GUI) {
if (record->event.pressed) {
tap_code(KC_Y);
}
return false;
}
break;
case FIND: // Tap to Find, Tap with GUI to Select All
if (get_mods() & MOD_MASK_GUI) {
if (record->event.pressed) {
tap_code(KC_A);
}
return false;
}
break;
}
return true;
};
const key_override_t ctrl_h = ko_make_basic(MOD_MASK_CTRL, KC_H, C(KC_LEFT)); //MocOS Desktop Navigation
const key_override_t ctrl_n = ko_make_basic(MOD_MASK_CTRL, KC_N, C(KC_UP)); //MocOS Desktop Navigation
const key_override_t ctrl_t = ko_make_basic(MOD_MASK_CTRL, KC_T, C(KC_DOWN)); //MocOS Desktop Navigation
const key_override_t ctrl_s = ko_make_basic(MOD_MASK_CTRL, KC_S, C(KC_RGHT)); //MocOS Desktop Navigation
const key_override_t bsp_del = ko_make_basic(MOD_MASK_SHIFT, BSP_CMD, KC_DEL); // Shift+Bksp sends Delete
const key_override_t **key_overrides = (const key_override_t *[]){
&ctrl_h,
&ctrl_n,
&ctrl_t,
&ctrl_s,
&bsp_del,
NULL
};

View file

@ -1,490 +0,0 @@
/* Copyright 2021 John Ezra
*
* 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/>.
*/
//Sets up what the OLED screens display.
#include QMK_KEYBOARD_H
int timer = 0;
char wpm_counter[5];
int x = 31;
int currwpm = 0;
int vert_count = 0;
//============= USER CONFIG PARAMS ===============
float max_wpm = 150.0f; //WPM value at the top of the graph window
int graph_refresh_interval = 100; //in milliseconds
int graph_area_fill_interval = 3; //determines how dense the horizontal lines under the graph line are; lower = more dense
int vert_interval = 3; //determines frequency of vertical lines under the graph line
bool vert_line = false; //determines whether to draw vertical lines
int graph_line_thickness = 2; //determines thickness of graph line in pixels
//============= END USER PARAMS ===============
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
static void render_qmk_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x7e, 0xf0, 0xf0, 0xfe, 0xf0, 0x70, 0x7e,
0x70, 0xf0, 0xfe, 0xf0, 0xf0, 0x7e, 0x70, 0x70, 0xf0, 0xe0, 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, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x92, 0x92, 0x92, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x92, 0x92, 0x92, 0x00, 0x00,
0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0xfe, 0xfe, 0x1c, 0x38, 0x70, 0xe0,
0x70, 0x38, 0x1c, 0xfe, 0xfe, 0x00, 0xfe, 0xfe, 0xe0, 0xf0, 0xb8, 0x1c, 0x0e, 0x06, 0x00, 0x00,
0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0xe6, 0xe6, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30,
0x60, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0xe0, 0xc0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00, 0xf0, 0xf0,
0x00, 0xc0, 0xe0, 0x70, 0xe0, 0xc0, 0x00, 0xf0, 0xf0, 0x00, 0x20, 0xb0, 0x90, 0xb0, 0xf0, 0xe0,
0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x60, 0x00, 0xc0, 0xe0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00,
0x00, 0x24, 0x24, 0x24, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xf1, 0xe3, 0xe3, 0x00, 0x00,
0x00, 0xe3, 0xe3, 0xf1, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x24, 0x24, 0x24, 0x00, 0x00,
0x03, 0x07, 0x0e, 0x0c, 0x0c, 0x1c, 0x1e, 0x17, 0x13, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x00,
0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x0f,
0x0f, 0x07, 0x01, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x01, 0x00, 0x07, 0x0f, 0x0c, 0x04, 0x0f, 0x0f,
0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0d, 0x09, 0x09, 0x0d, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f,
0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x07, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
}
// Loop to create line by line rendering for Horizontal display
// Input is oled_render_image(how many rows tall, how many pixels wide, what to render, X pos, Y pos, Frame offset)
void oled_render_image(int lines, int px, const char render_line[][px], int X_pos, int Y_pos, int frame) {
for (uint8_t i = 0; i < lines; i++){
oled_set_cursor(X_pos, Y_pos + i);
oled_write_raw_P(render_line[i + frame], px);
}
}
static void render_layers(void) {
static const char PROGMEM layer_background_r1[1][38] = {
{0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42,
0x42, 0x42, 0x22, 0x22, 0x22, 0x42, 0x42, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0xfe}
};
static const char PROGMEM layer_background_r2[1][38] = {
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x20, 0x20, 0x20, 0x40,
0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x11, 0x11, 0x11, 0xaa, 0xaa,
0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}
};
static const char PROGMEM layer_background_r3[1][38] = {
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x44,
0x44, 0x44, 0x88, 0x88, 0x88, 0x44, 0x44, 0x44, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0xaa, 0xaa,
0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}
};
static const char PROGMEM layer_background_r4[1][38] = {
{0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x44,
0x44, 0x44, 0x48, 0x48, 0x48, 0x44, 0x44, 0x44, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40,
0x40, 0x40, 0x40, 0x40, 0x40, 0x7f}
};
static const char PROGMEM base[1][38] = {
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3e, 0x3e, 0x3e, 0x7c,
0x7c, 0x7c, 0xf8, 0xf8, 0xf8, 0x7c, 0x7c, 0x7c, 0x3e, 0x3e, 0x3e, 0x1f, 0x1f, 0x1f, 0xae, 0xae,
0xae, 0x44, 0x44, 0x44, 0x00, 0xff}
};
static const char PROGMEM lower[2][38] = {
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe2, 0xe2, 0xe2, 0xc4,
0xc4, 0xc4, 0x88, 0x88, 0x88, 0xc4, 0xc4, 0xc4, 0xe2, 0xe2, 0xe2, 0xf1, 0xf1, 0xf1, 0xea, 0xea,
0xea, 0x44, 0x44, 0x44, 0x00, 0xff},
{0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x43, 0x43, 0x43, 0x47,
0x47, 0x47, 0x4f, 0x4f, 0x4f, 0x47, 0x47, 0x47, 0x43, 0x43, 0x43, 0x41, 0x41, 0x41, 0x40, 0x40,
0x40, 0x40, 0x40, 0x40, 0x40, 0x7f}
};
static const char PROGMEM raise[][38] = {
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe0, 0xe0, 0xe0, 0xc0,
0xc0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xf1, 0xf1, 0xf1, 0xea, 0xea,
0xea, 0x44, 0x44, 0x44, 0x00, 0xff},
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x23, 0x23, 0x23, 0x47,
0x47, 0x47, 0x8f, 0x8f, 0x8f, 0x47, 0x47, 0x47, 0x23, 0x23, 0x23, 0x11, 0x11, 0x11, 0xaa, 0xaa,
0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}
};
static const char PROGMEM adjust[][38] = {
{0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0xc2,
0xc2, 0xc2, 0xe2, 0xe2, 0xe2, 0xc2, 0xc2, 0xc2, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0xfe},
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f,
0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0xae, 0xae,
0xae, 0x44, 0x44, 0x44, 0x00, 0xff}
};
static const char PROGMEM custom[][38] = {
{0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42,
0xc2, 0x42, 0xa2, 0x62, 0xa2, 0x42, 0xc2, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0xfe},
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x75, 0xaa, 0x55,
0xea, 0x55, 0xaa, 0xd5, 0xaa, 0x55, 0xea, 0x55, 0xaa, 0x75, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee,
0xaa, 0x44, 0x44, 0x44, 0x00, 0xff},
{0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x77, 0xaa, 0x55,
0xee, 0x55, 0xaa, 0xdd, 0xaa, 0x55, 0xee, 0x55, 0xaa, 0x77, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee,
0xaa, 0x44, 0x44, 0x44, 0x00, 0xff},
{0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x43, 0x42, 0x45,
0x46, 0x45, 0x4a, 0x4d, 0x4a, 0x45, 0x46, 0x45, 0x42, 0x43, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40,
0x40, 0x40, 0x40, 0x40, 0x40, 0x7f}
};
switch (get_highest_layer(layer_state)) {
case 0:
oled_render_image(1, 38, layer_background_r1, 15, 4, 0);
oled_render_image(1, 38, layer_background_r2, 15, 5, 0);
oled_render_image(1, 38, base, 15, 6, 0);
oled_render_image(1, 38, layer_background_r4, 15, 7, 0);
break;
case 3:
oled_render_image(2, 38, lower, 15, 6, 0);
break;
case 4:
oled_render_image(1, 38, layer_background_r1, 15, 4, 0);
oled_render_image(2, 38, raise, 15, 5, 0);
oled_render_image(1, 38, layer_background_r4, 15, 7, 0);
break;
case 5:
oled_render_image(2, 38, adjust, 15, 4, 0);
oled_render_image(1, 38, layer_background_r3, 15, 6, 0);
oled_render_image(1, 38, layer_background_r4, 15, 7, 0);
break;
default:
oled_render_image(4, 38, custom, 15, 4, 0);
break;
}
}
void render_mod_state(uint8_t modifiers) {
static const char PROGMEM gui_off [][3]= {{0x80, 0x81, 0}, {0xa0, 0xa1, 0}};
static const char PROGMEM gui_on [][3]= {{0xc0, 0xc1, 0}, {0xe0, 0xe1, 0}};
static const char PROGMEM alt_off [][3]= {{0x82, 0x83, 0}, {0xa2, 0xa3, 0}};
static const char PROGMEM alt_on [][3]= {{0xc2, 0xc3, 0}, {0xe2, 0xe3, 0}};
static const char PROGMEM ctrl_off [][3]= {{0x84, 0x85, 0}, {0xa4, 0xa5, 0}};
static const char PROGMEM ctrl_on [][3]= {{0xc4, 0xc5, 0}, {0xe4, 0xe5, 0}};
static const char PROGMEM shift_off [][3]= {{0x86, 0x87, 0}, {0xa6, 0xa7, 0}};
static const char PROGMEM shift_on [][3]= {{0xc6, 0xc7, 0}, {0xe6, 0xe7, 0}};
// fillers between the modifier icons bleed into the icon frames
static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}};
static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}};
static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}};
static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}};
// render icons
if(modifiers & MOD_MASK_GUI) {
oled_set_cursor(0, 4);
oled_write_P(gui_on[0], false);
oled_set_cursor(0, 5);
oled_write_P(gui_on[1], false);
} else {
oled_set_cursor(0, 4);
oled_write_P(gui_off[0], false);
oled_set_cursor(0, 5);
oled_write_P(gui_off[1], false);
}
if(modifiers & MOD_MASK_ALT) {
oled_set_cursor(3, 4);
oled_write_P(alt_on[0], false);
oled_set_cursor(3, 5);
oled_write_P(alt_on[1], false);
} else {
oled_set_cursor(3, 4);
oled_write_P(alt_off[0], false);
oled_set_cursor(3, 5);
oled_write_P(alt_off[1], false);
}
if(modifiers & MOD_MASK_CTRL) {
oled_set_cursor(0, 6);
oled_write_P(ctrl_on[0], false);
oled_set_cursor(0, 7);
oled_write_P(ctrl_on[1], false);
} else {
oled_set_cursor(0, 6);
oled_write_P(ctrl_off[0], false);
oled_set_cursor(0, 7);
oled_write_P(ctrl_off[1], false);
}
if(modifiers & MOD_MASK_SHIFT) {
oled_set_cursor(3, 6);
oled_write_P(shift_on[0], false);
oled_set_cursor(3, 7);
oled_write_P(shift_on[1], false);
} else {
oled_set_cursor(3, 6);
oled_write_P(shift_off[0], false);
oled_set_cursor(3, 7);
oled_write_P(shift_off[1], false);
}
// render fillers
if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
oled_set_cursor(2, 4);
oled_write_P(on_on[0], false);
oled_set_cursor(2, 5);
oled_write_P(on_on[1], false);
} else if(modifiers & MOD_MASK_GUI) {
oled_set_cursor(2, 4);
oled_write_P(on_off[0], false);
oled_set_cursor(2, 5);
oled_write_P(on_off[1], false);
} else if(modifiers & MOD_MASK_ALT) {
oled_set_cursor(2, 4);
oled_write_P(off_on[0], false);
oled_set_cursor(2, 5);
oled_write_P(off_on[1], false);
} else {
oled_set_cursor(2, 4);
oled_write_P(off_off[0], false);
oled_set_cursor(2, 5);
oled_write_P(off_off[1], false);
}
if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
oled_set_cursor(2, 6);
oled_write_P(on_on[0], false);
oled_set_cursor(2, 7);
oled_write_P(on_on[1], false);
} else if(modifiers & MOD_MASK_CTRL) {
oled_set_cursor(2, 6);
oled_write_P(on_off[0], false);
oled_set_cursor(2, 7);
oled_write_P(on_off[1], false);
} else if(modifiers & MOD_MASK_SHIFT) {
oled_set_cursor(2, 6);
oled_write_P(off_on[0], false);
oled_set_cursor(2, 7);
oled_write_P(off_on[1], false);
} else {
oled_set_cursor(2, 6);
oled_write_P(off_off[0], false);
oled_set_cursor(2, 7);
oled_write_P(off_off[1], false);
}
}
void render_bootmagic_status(void) {
static const char PROGMEM nkro_off [][3]= {{0x88, 0x89, 0}, {0xa8, 0xa9, 0}};
static const char PROGMEM nkro_on [][3]= {{0xc8, 0xc9, 0}, {0xe8, 0xe9, 0}};
static const char PROGMEM mac_os_off [][6]= {{0x90, 0x91, 0x92, 0x93, 0x94, 0}, {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0}};
static const char PROGMEM mac_os_on [][6]= {{0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0}, {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0}};
static const char PROGMEM windows_off [][6]= {{0x95, 0x96, 0x97, 0x98, 0x99, 0}, {0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0}};
static const char PROGMEM windows_on [][6]= {{0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0}, {0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0}};
if (keymap_config.nkro) {
oled_set_cursor(5, 4);
oled_write_P(nkro_on[0], false);
oled_set_cursor(5, 5);
oled_write_P(nkro_on[1], false);
} else {
oled_set_cursor(5, 4);
oled_write_P(nkro_off[0], false);
oled_set_cursor(5, 5);
oled_write_P(nkro_off[1], false);
}
if (keymap_config.swap_lctl_lgui) {
oled_set_cursor(10, 6);
oled_write_P(windows_on[0], false);
oled_set_cursor(10, 7);
oled_write_P(windows_on[1], false);
oled_set_cursor(10, 4);
oled_write_P(mac_os_off[0], false);
oled_set_cursor(10, 5);
oled_write_P(mac_os_off[1], false);
} else {
oled_set_cursor(10, 4);
oled_write_P(mac_os_on[0], false);
oled_set_cursor(10, 5);
oled_write_P(mac_os_on[1], false);
oled_set_cursor(10, 6);
oled_write_P(windows_off[0], false);
oled_set_cursor(10, 7);
oled_write_P(windows_off[1], false);
}
}
void render_lock_status(void) {
static const char PROGMEM caps_off [][3]= {{0x8a, 0x8b, 0}, {0xaa, 0xab, 0}};
static const char PROGMEM caps_on [][3]= {{0xca, 0xcb, 0}, {0xea, 0xeb, 0}};
static const char PROGMEM num_off [][3]= {{0x8c, 0x8d, 0}, {0xac, 0xad, 0}};
static const char PROGMEM num_on [][3]= {{0xcc, 0xcd, 0}, {0xec, 0xed, 0}};
static const char PROGMEM scrl_off [][3]= {{0x8e, 0x8f, 0}, {0xae, 0xaf, 0}};
static const char PROGMEM scrl_on [][3]= {{0xce, 0xcf, 0}, {0xee, 0xef, 0}};
static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}};
static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}};
static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}};
static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}};
led_t led_usb_state = host_keyboard_led_state();
if (led_usb_state.caps_lock) {
oled_set_cursor(8, 4);
oled_write_P(caps_on[0], false);
oled_set_cursor(8, 5);
oled_write_P(caps_on[1], false);
} else {
oled_set_cursor(8, 4);
oled_write_P(caps_off[0], false);
oled_set_cursor(8, 5);
oled_write_P(caps_off[1], false);
}
if (led_usb_state.num_lock) {
oled_set_cursor(5, 6);
oled_write_P(num_on[0], false);
oled_set_cursor(5, 7);
oled_write_P(num_on[1], false);
} else {
oled_set_cursor(5, 6);
oled_write_P(num_off[0], false);
oled_set_cursor(5, 7);
oled_write_P(num_off[1], false);
}
if (led_usb_state.scroll_lock) {
oled_set_cursor(8, 6);
oled_write_P(scrl_on[0], false);
oled_set_cursor(8, 7);
oled_write_P(scrl_on[1], false);
} else {
oled_set_cursor(8, 6);
oled_write_P(scrl_off[0], false);
oled_set_cursor(8, 7);
oled_write_P(scrl_off[1], false);
}
// render fillers
if ((led_usb_state.caps_lock) && (keymap_config.nkro)) {
oled_set_cursor(7, 4);
oled_write_P(on_on[0], false);
oled_set_cursor(7, 5);
oled_write_P(on_on[1], false);
} else if(keymap_config.nkro) {
oled_set_cursor(7, 4);
oled_write_P(on_off[0], false);
oled_set_cursor(7, 5);
oled_write_P(on_off[1], false);
} else if(led_usb_state.caps_lock) {
oled_set_cursor(7, 4);
oled_write_P(off_on[0], false);
oled_set_cursor(7, 5);
oled_write_P(off_on[1], false);
} else {
oled_set_cursor(7, 4);
oled_write_P(off_off[0], false);
oled_set_cursor(7, 5);
oled_write_P(off_off[1], false);
}
if ((led_usb_state.num_lock) && (led_usb_state.scroll_lock)) {
oled_set_cursor(7, 6);
oled_write_P(on_on[0], false);
oled_set_cursor(7, 7);
oled_write_P(on_on[1], false);
} else if(led_usb_state.num_lock) {
oled_set_cursor(7, 6);
oled_write_P(on_off[0], false);
oled_set_cursor(7, 7);
oled_write_P(on_off[1], false);
} else if(led_usb_state.scroll_lock) {
oled_set_cursor(7, 6);
oled_write_P(off_on[0], false);
oled_set_cursor(7, 7);
oled_write_P(off_on[1], false);
} else {
oled_set_cursor(7, 6);
oled_write_P(off_off[0], false);
oled_set_cursor(7, 7);
oled_write_P(off_off[1], false);
}
}
void render_wpm_graph(void) {
currwpm = get_current_wpm(); //get current WPM value
if(timer_elapsed(timer) > graph_refresh_interval){ //check if it's been long enough before refreshing graph
x = 63 - ((currwpm / max_wpm) * 63); // main calculation to plot graph line
for(int i = 0; i <= graph_line_thickness - 1; i++){ //first draw actual value line
oled_write_pixel(1, x + i, true);
}
if(vert_line){ //then fill in area below the value line
if(vert_count == vert_interval){
vert_count = 0;
while(x <= 63){
oled_write_pixel(1, x, true);
x++;
}
} else {
for(int i = 63; i > x; i--){
if(i % graph_area_fill_interval == 0){
oled_write_pixel(1, i, true);
}
}
vert_count++;
}
} else {
for(int i = 63; i > x; i--){
if(i % graph_area_fill_interval == 0){
oled_write_pixel(1, i, true);
}
}
}
oled_pan(false); //then move the entire graph one pixel to the right
timer = timer_read(); //refresh the timer for the next iteration
}
char buf[4]; //format current WPM value into a printable string
oled_set_cursor(14, 0);
oled_write("WPM:", false);
buf[0] = currwpm >= 100 ? ((currwpm/100) + '0') : ' ';
buf[1] = currwpm >= 10 ? (((currwpm/10) % 10) + '0') : ' ';
buf[2] = (currwpm % 10) + '0';
buf[3] = 0;
oled_write(buf, false);
}
void render_status_main(void) {
render_qmk_logo();
render_layers();
render_mod_state(get_mods());
render_bootmagic_status();
render_lock_status();
}
void render_status_secondary(void) {
render_wpm_graph();
}
bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_status_secondary();
}
return false;
}
#endif

View file

@ -1,20 +0,0 @@
### This Keymap uses the nanoBoot bootloader to maximize available firmware space.
As is, the firmware will be too large if using the standard bootloader. Removing `DEBOUNCE_TYPE = sym_eager_pk` from the `rules.mk` should get the size under the limit.
If nanoBoot is not going to be used, delete or comment out the following from your `rules.mk`:
```make
BOOTLOADER = hid
BOOTLOADER_SIZE = 512
PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
```
nanoBoot can be found here: [nanoBoot](https://github.com/sigprof/nanoBoot) I used the string-descriptors branch as it was the latest update.
To ISP Flash nanoBoot: `avrdude -p atmega32u4 -c avrisp -U flash:w:/Users/DempseyTech/nanoBoot/nanoBoot.hex:i -P /dev/cu.usbmodem123451 -U lfuse:w:0x7F:m -U hfuse:w:0xD6:m -U efuse:w:0xC7:m`
You will need to change the path in the CLI command to match your file structure.
QMK Toolbox will not recognize controllers using nanoBoot, instead use the CLI to flash.
To Flash: `qmk flash -kb splitkb/kyria/rev1 -km john-ezra -bl hid_bootloader`

View file

@ -1,18 +0,0 @@
OLED_ENABLE = yes # Enables the use of OLED displays
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
NKRO_ENABLE = yes # Enable N-Key Rollover
ENCODER_ENABLE = no # Disable Rotary Encoder
SPACE_CADET_ENABLE = no # Disable Space Cadet Shift
GRAVE_ESC_ENABLE = no # Disable Grave Escape
MOUSEKEY_ENABLE = no # Disable Mousekeys
WPM_ENABLE = yes # Enable WPM Counter (Works with default wpm files, but works better with vectorstorm updated wpm.c and wpm.h -> https://github.com/vectorstorm/qmk_firmware/tree/wpm_exact)
KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides
CONSOLE_ENABLE = no
DEBOUNCE_TYPE = sym_eager_pk
BOOTLOADER = hid # This Keymap Uses nanoBoot, more info in readme
BOOTLOADER_SIZE = 512
PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
SRC += oled.c

View file

@ -1,63 +0,0 @@
/* Copyright 2021 Luis Moreno <acevice69@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
// Set handedness by EEPROM
#define EE_HANDS
// Tapping / One Shot settings
#define TAPPING_TOGGLE 2
#define TAPPING_TERM 175
#define ONESHOT_TAP_TOGGLE 2
#define ONESHOT_TIMEOUT 2250
// OLED settings -if applicable-
#ifdef OLED_DRIVER_ENABLE
#define OLED_DISPLAY_128X64
#endif
// Encoder settings -if applicable-
#ifdef ENCODER_ENABLE
#define ENCODER_RESOLUTION 4
#endif
// RGB settings -if applicable-
#ifdef RGBLIGHT_ENABLE
#define RGBLIGHT_EFFECT_BREATHING
#undef RGBLIGHT_EFFECT_RAINBOW_MOOD
#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL
#undef RGBLIGHT_EFFECT_SNAKE
#undef RGBLIGHT_EFFECT_KNIGHT
#undef RGBLIGHT_EFFECT_CHRISTMAS
#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
#undef RGBLIGHT_EFFECT_RGB_TEST
#undef RGBLIGHT_EFFECT_ALTERNATING
#undef RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 2
#define RGBLIGHT_SAT_STEP 2
#define RGBLIGHT_VAL_STEP 2
#define RGBLIGHT_LIMIT_VAL 230
#define RGBLIGHT_SLEEP
#define RGBLIGHT_SPLIT
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING + 2
#define RGBLIGHT_DEFAULT_HUE 201
#define RGBLIGHT_DEFAULT_SAT 255
#endif

View file

@ -1,852 +0,0 @@
/* Copyright 2021 Luis Moreno <acevice69@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "keymap_spanish.h"
// Insert key state definition (Insert/Overwrite Mode)
static bool ins_state = true;
// Git Commands
static const char *sendstring_commands[] = {
// Config
"config //global",
// Create
"init",
"clone",
// Local changes
"status",
"diff",
"add",
"rm",
"mv",
"commit",
"stash",
"reset",
"revert",
// Branches and Tags
"branch /b @",
"switch",
"checkout",
"tag",
// Update & Publish
"remote",
"fetch",
"pull",
"push",
// Merge & Rebase
"merge",
"rebase",
// Commit history
"logg"
};
// Layers definition
enum layers {
_QWERTY_ES,
_COLEMAK_ES,
_SYMBOL,
_FN_NUMPAD,
_NAVIGATION,
_GIT_CMDS,
_SETTINGS
};
// Encoder Modes definition
#ifdef ENCODER_ENABLE
#define ENC_ALT_MAX_TIME 1250
typedef enum {
ENC_MODE_CHAR_LINE,
ENC_MODE_WORD_PAGE,
ENC_MODE_TABBING,
ENC_MODE_VOLUME,
ENC_MODE_LAST
} encoder_mode_t;
static encoder_mode_t enc_mode;
void encoder_cycle_mode(bool up);
#endif
// Tap Dance declarations/definitions
#ifdef TAP_DANCE_ENABLE
#define ACTION_TAP_DANCE_FN_ADVANCED_USER(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, user_user_data) \
{ .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = (void *)user_user_data, }
#define MAX_MOD 3 // Max number of modifiers: 0-Base, 1-Shift, 2-Ctrl
typedef enum {
TD_NONE,
TD_UNKNOWN,
TD_SINGLE_TAP,
TD_SINGLE_HOLD,
TD_DOUBLE_TAP
} td_state_t;
typedef struct {
bool is_press_action;
td_state_t state;
} td_tap_t;
typedef struct {
uint16_t keycode; // Keycode:
// - Tap if keycode != KC_NO
uint8_t layer[MAX_MOD]; // Layer with modifiers (0-Base, 1-Shift, 2-Ctrl):
// - Tap if keycode == KC_NO
// - Single Hold: Activate while holding
// - Double Tap: (Un)lock Layer
} td_user_data_t;
enum td_actions {
TAB,
ESC,
SPC,
ENT,
LWR,
RAI
};
static td_tap_t td_tap_state = {
.is_press_action = true,
.state = TD_NONE
};
td_state_t td_current (tap_dance_state_t *state);
void td_kc_ly_finished(tap_dance_state_t *state, void *user_data);
void td_kc_ly_reset (tap_dance_state_t *state, void *user_data);
tap_dance_action_t tap_dance_actions[] = {
[TAB] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_CAPS),
[ESC] = ACTION_TAP_DANCE_FN_ADVANCED_USER(NULL, td_kc_ly_finished, td_kc_ly_reset,
&((td_user_data_t) { KC_ESC, { _NAVIGATION, _QWERTY_ES, _QWERTY_ES }})),
[SPC] = ACTION_TAP_DANCE_FN_ADVANCED_USER(NULL, td_kc_ly_finished, td_kc_ly_reset,
&((td_user_data_t) { KC_SPC, { _SYMBOL , _QWERTY_ES, _QWERTY_ES }})),
[ENT] = ACTION_TAP_DANCE_FN_ADVANCED_USER(NULL, td_kc_ly_finished, td_kc_ly_reset,
&((td_user_data_t) { KC_ENT, { _SYMBOL , _QWERTY_ES, _QWERTY_ES }})),
[LWR] = ACTION_TAP_DANCE_FN_ADVANCED_USER(NULL, td_kc_ly_finished, td_kc_ly_reset,
&((td_user_data_t) { KC_NO, { _NAVIGATION, _GIT_CMDS , _QWERTY_ES }})),
[RAI] = ACTION_TAP_DANCE_FN_ADVANCED_USER(NULL, td_kc_ly_finished, td_kc_ly_reset,
&((td_user_data_t) { KC_NO, { _FN_NUMPAD , _GIT_CMDS , _QWERTY_ES }}))
};
#endif
// Keycode definitions
enum custom_keycodes {
CK_QUOT = SAFE_RANGE, // Single/Double quote
CK_BSDI, // Backspace/Delete/Insert
CK_ENCM, // Encoder Mode (-)
CK_ENCP, // Encoder Mode (+)
CK_LYDF, // Activate Default Layer
G_CONF, // Git Commands
G_INIT,
G_CLONE,
G_STAT,
G_DIFF,
G_ADD,
G_RM,
G_MV,
G_COMM,
G_STASH,
G_RESET,
G_REVER,
G_BRANC,
G_SWTCH,
G_CHECK,
G_TAG,
G_REMOT,
G_FETCH,
G_PULL,
G_PUSH,
G_MERGE,
G_REBAS,
G_LOG
};
#define LY_QWES DF(_QWERTY_ES)
#define LY_CLES DF(_COLEMAK_ES)
#ifdef TAP_DANCE_ENABLE
#define TD_TBCP TD(TAB)
#define TD_ESSY TD(ESC)
#define TD_SPSY TD(SPC)
#define TD_ENSY TD(ENT)
#define TD_LOWR TD(LWR)
#define TD_RAIS TD(RAI)
#else
#define TD_TBCP MT(MOD_LSFT, KC_TAB)
#define TD_ESSY LT(_SYMBOL , KC_ESC)
#define TD_SPSY KC_SPC
#define TD_ENSY KC_ENT
#define TD_LOWR TT(_NAVIGATION)
#define TD_RAIS TT(_SYMBOL)
#endif
#define MO_LSFT OSM(MOD_LSFT)
#define MO_LCTL OSM(MOD_LCTL)
#define MO_LALT OSM(MOD_LALT)
#define MT_RGUI MT(MOD_RGUI, KC_LEFT)
#define MT_RALT MT(MOD_RALT, KC_DOWN)
#define MT_RCTL MT(MOD_RCTL, KC_UP)
#define MT_RSFT MT(MOD_RSFT, KC_RGHT)
// Keymap definitions
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
/*
* Basic characters (QWERTY ES)
*
* ,-------------------------------------------. ,-------------------------------------------.
* |Esc/LNav| Q | W | E | R | T | | Y | U | I | O | P |BS/Dl/In|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |Tab/Caps| A | S | D | F | G | | H | J | K | L | Ñ | ´ ¨ |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* |EncMode-| Z | X | C | V | B | LGit | | | | LGit | N | M | , ; | . : | - _ |EncMode+|
* `-------------------------------------------| LNav | Space| | Enter|LFnNum|-------------------------------------------'
* +--------------------+------+ / | | / +------+--------------------+
* | Shift| Ctrl | Alt | GUI | LSym | | LSym | GUI | AltGr| Ctrl | Shift|
* | | | | | | | | <- | v | ^ | -> |
* `----------------------------------' `----------------------------------'
*/
[_QWERTY_ES] = LAYOUT(
TD_ESSY, ES_Q, ES_W, ES_E, ES_R, ES_T, ES_Y, ES_U, ES_I, ES_O, ES_P, CK_BSDI,
TD_TBCP, ES_A, ES_S, ES_D, ES_F, ES_G, ES_H, ES_J, ES_K, ES_L, ES_NTIL, ES_ACUT,
CK_ENCM, ES_Z, ES_X, ES_C, ES_V, ES_B, TD_LOWR, XXXXXXX, XXXXXXX, TD_RAIS, ES_N, ES_M, ES_COMM, ES_DOT, ES_MINS, CK_ENCP,
MO_LSFT, MO_LCTL, MO_LALT, KC_LGUI, TD_SPSY, TD_ENSY, MT_RGUI, MT_RALT, MT_RCTL, MT_RSFT
),
/*
* Basic characters (COLEMAK ES)
*
* ,-------------------------------------------. ,-------------------------------------------.
* |Esc/LNav| Q | W | F | P | G | | J | L | U | Y | Ñ |BS/Dl/In|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |Tab/Caps| A | R | S | T | D | | H | N | E | I | O | ´ ¨ |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* |EncMode-| Z | X | C | V | B | LGit | | | | LGit | K | M | , ; | . : | - _ |EncMode+|
* `-------------------------------------------| LNav | Space| | Enter|LFnNum|-------------------------------------------'
* +--------------------+------+ / | | / +------+--------------------+
* | Shift| Ctrl | Alt | GUI | LSym | | LSym | GUI | AltGr| Ctrl | Shift|
* | | | | | | | | <- | v | ^ | -> |
* `----------------------------------' `----------------------------------'
*/
[_COLEMAK_ES] = LAYOUT(
TD_ESSY, ES_Q, ES_W, ES_F, ES_P, ES_G, ES_J, ES_L, ES_U, ES_Y, ES_NTIL, CK_BSDI,
TD_TBCP, ES_A, ES_R, ES_S, ES_T, ES_D, ES_H, ES_N, ES_E, ES_I, ES_O, ES_ACUT,
CK_ENCM, ES_Z, ES_X, ES_C, ES_V, ES_B, TD_LOWR, XXXXXXX, XXXXXXX, TD_RAIS, ES_K, ES_M, ES_COMM, ES_DOT, ES_MINS, CK_ENCP,
MO_LSFT, MO_LCTL, MO_LALT, KC_LGUI, TD_SPSY, TD_ENSY, MT_RGUI, MT_RALT, MT_RCTL, MT_RSFT
),
/*
* Symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | 1 ! | 2 " | 3 · | 4 $ | 5 % | | 6 & | 7 / | 8 ( | 9 ) | 0 = | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | ¡ ¿ | ' " | º ª | \ | | ¡ | | ~ $ | + * | - _ | / | ' ? | ` ^ |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | @ | { | ( | [ ° | < > | | | | | | > | ] ¯ | ) | } ˘ | # £ | |
* `----------------------+------+------+------+------+ | | +------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_SYMBOL] = LAYOUT(
_______, ES_1, ES_2, ES_3, ES_4, ES_5, ES_6, ES_7, ES_8, ES_9, ES_0, _______,
_______, ES_IEXL, CK_QUOT, ES_MORD, ES_BSLS, ES_PIPE, ES_TILD, ES_PLUS, ES_MINS, ES_SLSH, ES_QUOT, ES_GRV,
_______, ES_AT, ES_LCBR, ES_LPRN, ES_LBRC, ES_LABK, _______, XXXXXXX, XXXXXXX, _______, ES_RABK, ES_RBRC, ES_RPRN, ES_RCBR, ES_HASH, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Function keys, NumPad keys
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F1 | F2 | F3 | F4 | | | , ; | 7 / | 8 ( | 9 ) | * | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | F5 | F6 | F7 | F8 | | | . : | 4 $ | 5 % | 6 & | - _ | + * |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | F9 | F10 | F11 | F12 | | | | | | | 0 = | 1 ! | 2 " | 3 · | / | |
* `----------------------+------+------+------+------+ | | +------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_FN_NUMPAD] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, ES_COMM, ES_7, ES_8, ES_9, ES_ASTR, _______,
_______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, ES_DOT, ES_4, ES_5, ES_6, ES_MINS, ES_PLUS,
_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, ES_0, ES_1, ES_2, ES_3, ES_SLSH, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Navigation (Mouse deactivated for space saving)
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | MBt1 | MUp | MBt2 | | | PgUp | Home | Up | End | PgUp | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Menu | MLeft| MDown|MRight| | | PgDn | Left | Down | Right| PgDn | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | |PrtScr|ScrLck| Pause| | |
* `----------------------+------+------+------+------+ | | +------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NAVIGATION] = LAYOUT(
_______, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PGUP, _______,
_______, KC_APP, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_PSCR, KC_SCRL, KC_PAUS, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Git Commands
*
* ,-------------------------------------------. ,-------------------------------------------.
* | |Config| | | Init | | | | Clone| | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Diff | Add | Rm | Mv | | |Remote| Fetch| Pull | Push | Merge| Rebase |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | |Commit| Stash| Reset|Revert|Status| | | | | | Log |Branch|Switch|ChkOut| Tag | |
* `----------------------+------+------+------+------+ | | +------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_GIT_CMDS] = LAYOUT(
_______, G_CONF, XXXXXXX, XXXXXXX, G_INIT, XXXXXXX, XXXXXXX, G_CLONE, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, G_DIFF, G_ADD, G_RM, G_MV, XXXXXXX, G_REMOT, G_FETCH, G_PULL, G_PUSH, G_MERGE, G_REBAS,
_______, G_COMM, G_STASH, G_RESET, G_REVER, G_STAT, _______, XXXXXXX, XXXXXXX, _______, G_LOG, G_BRANC, G_SWTCH, G_CHECK, G_TAG, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Settings (Default Layer, RGB, Media)
*
* ,-------------------------------------------. ,-------------------------------------------.
* | |QWE_ES|CLM_ES| | | | | | | Vol+ | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | TOG | HUE+ | SAT+ | VAL+ | MOD | | Mute | Prev | Play | Next | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LDef | | HUE- | SAT- | VAL- | RMOD | | | | | | | | Vol- | | | LDef |
* `----------------------+------+------+------+------+ | | +------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_SETTINGS] = LAYOUT(
_______, LY_QWES, LY_CLES, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, XXXXXXX, _______,
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
CK_LYDF, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD,_______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_VOLD, XXXXXXX, XXXXXXX, CK_LYDF,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+ | | +------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
// clang-format on
/*
* INITIALIZING FUNCTIONS
*/
void matrix_init_user(void) {
#ifdef ENCODER_ENABLE
enc_mode = ENC_MODE_CHAR_LINE;
#endif
}
/*
* LAYER FUNCTIONS
*/
layer_state_t layer_state_set_user(layer_state_t state) {
// Activate Settings layer when both Symbol and Navigation layers are on
return update_tri_layer_state(state, _SYMBOL, _NAVIGATION, _SETTINGS);
}
/*
* MACRO FUNCTIONS
*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Get current modifier status (Normal and One Shot)
uint8_t mod_state = get_mods();
uint8_t osm_state = get_oneshot_mods();
// Process keycode
switch (keycode) {
case CK_QUOT: // Single/Double Quote
if (record->event.pressed) {
if ((mod_state | osm_state) & MOD_MASK_SHIFT) {
register_code(ES_2); // Shift(2) -> "
} else {
register_code(ES_QUOT); // Single Quote -> '
}
} else {
if ((mod_state | osm_state) & MOD_MASK_SHIFT) {
unregister_code(ES_2); // Shift(2) -> "
} else {
unregister_code(ES_QUOT); // Single Quote -> '
}
}
return false;
break;
case CK_BSDI: { // Backspace/Delete/Insert
static bool delkey_registered = false;
if (record->event.pressed) {
// Ctrl -> Insert/Overwrite Mode
// Shift -> Delete
// Normal -> Backspace
if ((mod_state | osm_state) & MOD_MASK_CTRL) {
del_mods(MOD_MASK_CTRL);
del_oneshot_mods(MOD_MASK_CTRL);
tap_code(KC_INS);
set_mods(mod_state);
set_oneshot_mods(osm_state);
ins_state = !ins_state;
} else if ((mod_state | osm_state) & MOD_MASK_SHIFT) {
delkey_registered = true;
del_mods(MOD_MASK_SHIFT);
del_oneshot_mods(MOD_MASK_SHIFT);
register_code(KC_DEL);
set_mods(mod_state);
set_oneshot_mods(osm_state);
} else {
register_code(KC_BSPC);
}
} else {
// Unregister keycode sent after the release of CK_BSDI
if (delkey_registered) {
unregister_code(KC_DEL);
delkey_registered = false;
} else {
unregister_code(KC_BSPC);
}
}
return false;
}
break;
case CK_LYDF: // De-activate all layers and activate Default layer
layer_move(get_highest_layer(default_layer_state));
return false;
break;
case G_CONF ... G_LOG:
if (record->event.pressed) {
del_mods(MOD_MASK_SHIFT);
del_oneshot_mods(MOD_MASK_SHIFT);
SEND_STRING("git ");
send_string(sendstring_commands[keycode - G_CONF]);
set_mods(mod_state);
set_oneshot_mods(osm_state);
}
break;
#ifdef ENCODER_ENABLE
case CK_ENCM: // Encoder Mode (-)
if (record->event.pressed) {
encoder_cycle_mode(false);
}
break;
case CK_ENCP: // Encoder Mode (+)
if (record->event.pressed) {
encoder_cycle_mode(true);
}
break;
#endif
}
return true;
};
/*
* TAP DANCE FUNCTIONS
*/
#ifdef TAP_DANCE_ENABLE
td_state_t td_current(tap_dance_state_t *state) {
switch (state->count) {
case 1:
return ((!state->pressed) ? TD_SINGLE_TAP : TD_SINGLE_HOLD);
case 2:
return TD_DOUBLE_TAP;
default:
return TD_UNKNOWN;
}
}
void td_kc_ly_finished(tap_dance_state_t *state, void *user_data) {
td_tap_state.state = td_current(state);
uint16_t keycode = ((td_user_data_t *)user_data)->keycode;
uint8_t *layer_arr = ((td_user_data_t *)user_data)->layer;
uint8_t layer_sel = *(layer_arr + 0);
// Get current modifier status (Normal and One Shot) and select layer
uint8_t mod_state = get_mods();
uint8_t osm_state = get_oneshot_mods();
if ((mod_state | osm_state) & MOD_MASK_SHIFT) {
if (*(layer_arr + 1) > _QWERTY_ES) {
layer_sel = *(layer_arr + 1);
}
}
if ((mod_state | osm_state) & MOD_MASK_CTRL) {
if (*(layer_arr + 2) > _QWERTY_ES) {
layer_sel = *(layer_arr + 2);
}
}
switch (td_tap_state.state) {
case TD_NONE:
case TD_UNKNOWN:
break;
case TD_SINGLE_TAP:
// Send keycode if available
// Otherwise, Lock Layer (Base/Shift/Ctrl) and Unlock rest of selectable layers
if (keycode != KC_NO) {
tap_code(keycode);
} else {
uint8_t layer_aux;
for (layer_aux = _GIT_CMDS; layer_aux >= _SYMBOL; layer_aux--) {
if ((layer_aux == layer_sel) && (!layer_state_is(layer_aux))) {
layer_on(layer_aux);
} else {
layer_off(layer_aux);
}
}
}
break;
case TD_SINGLE_HOLD:
// Lock Layer (Base/Shift/Ctrl) while Single Hold on the way
layer_on(layer_sel);
break;
case TD_DOUBLE_TAP:
// (Un)lock Layer (Base/Shift/Ctrl)
if (layer_state_is(layer_sel)) {
layer_off(layer_sel);
} else {
layer_on(layer_sel);
}
break;
}
}
void td_kc_ly_reset(tap_dance_state_t *state, void *user_data) {
uint8_t *layer_arr = ((td_user_data_t *)user_data)->layer;
if (td_tap_state.state == TD_SINGLE_HOLD) {
// Unlock any Layer (Base/Shift/Ctrl) when Single Hold finalizes
uint8_t i;
uint8_t layer_aux;
for (i = 0; i < MAX_MOD; i++) {
layer_aux = *(layer_arr + i);
if ((layer_aux > _QWERTY_ES)) {
layer_off(layer_aux);
}
}
}
td_tap_state.state = TD_NONE;
}
#endif
/*
* OLED FUNCTIONS
*/
#ifdef OLED_DRIVER_ENABLE
static void render_kyria_logo(void) {
static const char PROGMEM kyria_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xf0, 0x78, 0x38, 0x1c, 0x1e, 0x0e,
0x8e, 0x86, 0x86, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x86,
0x86, 0x8e, 0x0e, 0x1e, 0x1c, 0x38, 0x78, 0xf0, 0xe0, 0xe0, 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, 0xe0, 0xf0, 0xfc, 0x3e, 0x0f, 0x07, 0x83, 0xe1, 0xf0, 0xf8, 0xbc, 0x9e, 0x8f, 0x87,
0x87, 0x83, 0x81, 0x81, 0xe0, 0x78, 0x1f, 0x07, 0xff, 0xff, 0x07, 0x1f, 0x78, 0xe0, 0x81, 0x81,
0x83, 0x87, 0x87, 0x8f, 0x9e, 0xbc, 0xf8, 0xf0, 0xe1, 0x83, 0x07, 0x0f, 0x3e, 0xfc, 0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x07, 0x07, 0x3f, 0x73, 0xc7, 0x8f, 0x8d,
0x89, 0x99, 0x99, 0xb1, 0xf7, 0xee, 0xf8, 0xf0, 0xff, 0xff, 0xf0, 0xf8, 0xee, 0xf7, 0xb1, 0x99,
0x99, 0x89, 0x8d, 0x8f, 0xc7, 0x73, 0x3f, 0x07, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0xe0, 0xfc, 0xce, 0xe3, 0xf1, 0xb1,
0x91, 0x99, 0x99, 0x8d, 0xef, 0x77, 0x1f, 0x0f, 0xff, 0xff, 0x0f, 0x1f, 0x77, 0xef, 0x8d, 0x99,
0x99, 0x91, 0xb1, 0xf1, 0xe3, 0xce, 0xfc, 0xe0, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0x0f, 0x3f, 0x7c, 0xf0, 0xe0, 0xc1, 0x87, 0x0f, 0x1f, 0x3d, 0x79, 0xf1, 0xe1,
0xe1, 0xc1, 0x81, 0x81, 0x07, 0x1e, 0xf8, 0xe0, 0xff, 0xff, 0xe0, 0xf8, 0x1e, 0x07, 0x81, 0x81,
0xc1, 0xe1, 0xe1, 0xf1, 0x79, 0x3d, 0x1f, 0x0f, 0x87, 0xc1, 0xe0, 0xf0, 0x7c, 0x3f, 0x0f, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x07, 0x07, 0x0f, 0x1e, 0x1c, 0x38, 0x78, 0x70,
0x71, 0x61, 0x61, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x61,
0x61, 0x71, 0x70, 0x78, 0x38, 0x1c, 0x1e, 0x0f, 0x07, 0x07, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xfe, 0xfe, 0xfe, 0xc6, 0xe0, 0xf0, 0x70, 0x30, 0x10, 0x00, 0x70,
0xf0, 0xf0, 0x80, 0x00, 0xc0, 0xf0, 0xf0, 0x70, 0x10, 0xc0, 0xf0, 0xf0, 0xf0, 0x70, 0x30, 0x30,
0x30, 0xc0, 0xf6, 0xf6, 0xf6, 0x06, 0x00, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xf0, 0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x1f, 0x03, 0x0f, 0x1f, 0x1e, 0x18, 0x10, 0x00, 0xc0, 0xc0,
0xe7, 0xff, 0x7f, 0x3f, 0x0f, 0x03, 0x01, 0x00, 0x18, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00,
0x18, 0x1f, 0x1f, 0x1f, 0x00, 0x0e, 0x1f, 0x1f, 0x1f, 0x19, 0x0d, 0x1f, 0x1f, 0x1f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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) {
// Get current modifier status (Normal and One Shot)
uint8_t mod_state = get_mods();
uint8_t osm_state = get_oneshot_mods();
uint8_t osl_state = get_oneshot_locked_mods();
bool caps_lock = host_keyboard_led_state().caps_lock;
// QMK Logo
render_qmk_logo();
#ifdef ENCODER_ENABLE
// Host Keyboard Encoder Mode
switch (enc_mode) {
case ENC_MODE_CHAR_LINE:
oled_write_P(PSTR("ENC \020 CHAR/LINE\n"), false);
break;
case ENC_MODE_WORD_PAGE:
oled_write_P(PSTR("ENC \020 WORD/PAGE\n"), false);
break;
case ENC_MODE_TABBING:
oled_write_P(PSTR("ENC \020 TABBING\n"), false);
break;
case ENC_MODE_VOLUME:
case ENC_MODE_LAST:
oled_write_P(PSTR("ENC \020 VOLUME\n"), false);
break;
}
#else
oled_write_P(PSTR("\n"), false);
#endif
// Host Keyboard Layer Status
oled_write_P(PSTR("\n"), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY_ES:
oled_write_P(PSTR("L00 \020 QWERTY (ES)\n"), false);
break;
case _COLEMAK_ES:
oled_write_P(PSTR("L00 \020 COLEMAK (ES)\n"), false);
break;
case _SYMBOL:
oled_write_P(PSTR("L01 \020 SYMBOLS\n"), false);
break;
case _FN_NUMPAD:
oled_write_P(PSTR("L02 \020 FN / NUMPAD\n"), false);
break;
case _NAVIGATION:
oled_write_P(PSTR("L03 \020 NAVIGATION\n"), false);
break;
case _GIT_CMDS:
oled_write_P(PSTR("L04 \020 GIT COMMANDS\n"), false);
break;
case _SETTINGS:
oled_write_P(PSTR("L05 \020 SETTINGS\n"), false);
break;
}
// Host Keyboard Locked Modifiers Status
oled_write_P((osl_state & MOD_MASK_SHIFT) ? PSTR("LCK ") : PSTR(" ") , false);
oled_write_P((osl_state & MOD_MASK_CTRL) ? PSTR("LCK ") : PSTR(" ") , false);
oled_write_P((osl_state & MOD_MASK_ALT) ? PSTR("LCK ") : PSTR(" ") , false);
oled_write_P( PSTR(" ") , false);
oled_write_P((caps_lock) ? PSTR(" CAPS") : PSTR(" "), false);
// Host Keyboard Modifiers Status
oled_write_P(((mod_state | osm_state) & MOD_MASK_SHIFT) ? PSTR("SHF ") : PSTR(" ") , false);
oled_write_P(((mod_state | osm_state) & MOD_MASK_CTRL) ? PSTR("CTR ") : PSTR(" ") , false);
oled_write_P(((mod_state | osm_state) & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" ") , false);
oled_write_P(((mod_state | osm_state) & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" ") , false);
oled_write_P((ins_state) ? PSTR(" INS") : PSTR(" OWR"), false);
}
static void render_settings(void) {
#ifdef RGBLIGHT_ENABLE
char rgb_str[4];
oled_write_P(PSTR("\n\n"), false);
oled_write_P(PSTR("\020H: "), false);
itoa(rgblight_get_hue(), rgb_str, 10);
oled_write_ln(rgb_str, false);
oled_write_P(PSTR("\020S: "), false);
itoa(rgblight_get_sat(), rgb_str, 10);
oled_write_ln(rgb_str, false);
oled_write_P(PSTR("\020V: "), false);
itoa(rgblight_get_val(), rgb_str, 10);
oled_write_ln(rgb_str, false);
#else
oled_write_P(PSTR("\n\n\n\n\n"), false);
#endif
switch (get_highest_layer(default_layer_state)) {
case _QWERTY_ES:
oled_write_ln_P(PSTR(" \020QWERTY (ES)") , false);
break;
case _COLEMAK_ES:
oled_write_P (PSTR(" \020COLEMAK (ES)"), false);
break;
}
#ifdef RGBLIGHT_ENABLE
oled_write_ln_P(PSTR(" RGB DEFAULT"), false);
oled_write_ln_P(PSTR("SETTINGS LAYER "), false);
#else
oled_write_ln_P(PSTR(" DEFAULT"), false);
oled_write_ln_P(PSTR(" LAYER "), false);
#endif
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
void oled_task_user(void) {
if (is_keyboard_master()) { // Main screen: Renders keyboard state (layer, modifiers) / RGB settings
if (get_highest_layer(layer_state) != _SETTINGS) {
render_status();
} else {
render_settings();
}
} else { // Auxiliar screen: Renders Kyria logo with scroll
render_kyria_logo();
oled_scroll_right();
}
}
#endif
/*
* ENCODER FUNCTIONS
*/
#ifdef ENCODER_ENABLE
void encoder_cycle_mode(bool up) {
if (enc_mode == 0 && !up) {
enc_mode = ENC_MODE_LAST - 1;
} else {
enc_mode = (enc_mode + (up ? +1 : -1)) % ENC_MODE_LAST;
}
}
bool encoder_update_user(uint8_t index, bool clockwise) {
// Select encoder mode
switch (enc_mode) {
case ENC_MODE_CHAR_LINE:
// Left Encoder: Character Left/Right. Right Encoder: Line Up/Down.
tap_code(!clockwise ? (index == 0 ? KC_LEFT : KC_UP): (index == 0 ? KC_RGHT : KC_DOWN));
break;
case ENC_MODE_WORD_PAGE:
// Left Encoder: Word Left/Right. Right Encoder: Page Up/Down.
tap_code16(!clockwise ? (index == 0 ? C(KC_LEFT) : KC_PGUP): (index == 0 ? C(KC_RGHT) : KC_PGDN));
break;
case ENC_MODE_TABBING:
// Left Encoder: Navigation Tabbing. Right Encoder: Editor Tabbing.
tap_code16(!clockwise ? (index == 0 ? S(C(KC_TAB)) : C(KC_PGUP)): (index == 0 ? C(KC_TAB) : C(KC_PGDN)));
break;
case ENC_MODE_VOLUME:
case ENC_MODE_LAST:
// Volume control
tap_code(clockwise ? KC_VOLU : KC_VOLD);
break;
}
return true;
}
#endif

View file

@ -1,92 +0,0 @@
# AceVice One's Keymap for [Kyria](https://github.com/splitkb/kyria)
## Introduction
This is my first personal keymap for Kyria with a little bunch of *steroids*.
The hardware build implements 2 rotatory encoders and 2 OLED displays.
## Features
These are some of the generic features built in:
- Two alternative default character distributions (**QWERTY**, **COLEMAK**) with *Spanish* layout.
- Layer selection on some keys (**Esc**, **Lower**, **Space**, **Enter**, **Raise**).
- Multiple selectable layers:
- **Symbols**: Numbers on top row, common programming symbols (curly, square and angle brackets, parentheses, at and hash) on bottom row with symmetric distribution (open on left, close on right).
- **Function**/**Numpad**: Function keys on left side, Number Pad on right side.
- **Navigation**: Mouse keys on left side, Navigation keys on right side.
- **Git commands**: The most common and useful Git commands at your fingertips.
- **Settings**: Select default distribution, Media keys, RGB settings.
- Symmetric design -left/right side- for modifiers (**Shift**, **Ctrl**, **Alt** and **GUI**).
- **Arrows**/**Modifiers** on same keys (right side).
- **Tab**/**Caps Lock** key.
- **Backspace**/**Delete** with **Insert**/**Overwrite** selectable mode on same key.
- **Single/Double Quote** (`' "`) on same key as English layouts.
- Handedness set by EEPROM.
- Mouse Keys has been disabled by default for space saving (Pro Micro controller limit).
Some of the more specific features are described below:
### Tap Dance
- Use of `ACTION_TAP_DANCE_DOUBLE()` for **Tab**/**Caps Lock** key.
- Implementation of new `ACTION_TAP_DANCE_FN_ADVANCED_USER()` function:
- Any user data can be sent to personalized functions.
- Generalized design makes action reuse easy.
- User can tap a keycode and/or layer selection (single tap, single hold, double tap) depending on modifiers (**None**, **Shift**, **Ctrl**).
### OLEDs
Master-side OLED displays dynamic data:
- Current layer.
- Modifiers state (lock mode included).
- Caps Lock state.
- Insert/Overwrite state.
Slave-side OLED displays horizontal scrolling Kyria logo.
### Rotary Encoders
Encoders click buttons for mode changing. Supported modes are:
- Character Left / Right, Line Up / Down.
- Word Left / Right, Page Up / Down.
- Tabbing Left / Right (Navigator, Editor).
- Volume Up / Down.
## TODO list
- [x] Show modifiers in OLED when triggered as One Shot keys
- [x] Manage Backspace key with dual funcion (Delete when shifted)
- [x] OLED modifier status bar one line down
- [x] Show INS/OWR Mode in right OLED
- [x] Show RGB Led Settings on OLED when Settings layer on
- [x] Show Locked Modifiers (Shift, Control, Alt, GUI)
- [x] Arrow keys on right modifier keys
- [x] Improve Esc/Layer Symbol: Tap -> Keycode, Hold -> Momentary Layer, Double Tap -> Toggler Layer
- [x] Check transparent keys on all layers (avoid collateral effects)
- [x] Add "Print Screen" / "Scroll Lock" / "Pause Break" keys on Navigation layer
- [x] Add Basic characters layers: COLEMAK (ES)
- [x] Create custom keycode with quotes (single/double) for ES layout
- [x] Add Tap-Dance actions for keycodes (Tab, Space, Enter) and layer selection
- [x] Add Git commands to some layer
- [x] Disable Mouse Keys (saving space)
- [x] Settings Layer not accesible
- [x] Layer buttons with double/triple function (Normal/Shift/Control mode)
- [x] Tab/Caps Lock on same key (single/double tap)
- [x] Backspace/Delete/Insert on same key (Normal/Shift/Ctrl)
- [x] Separate default layer from RGB settings rendering for conditional compiling
- [x] Encoders: Improve with more functionality (modes)
- [ ] Encoders: Add mode for navigation through windows (applications)
- [ ] Show more info about RGB Led Settings (On/Off, Animation, ...)
- [ ] Activate "Nums Lock" when Fn/NumPad layer locked
- [ ] Show status indicator when locked layer
- [ ] Set RGB Led Color by selected Layer (activable)
- [ ] Add more uses for left OLED
- [ ] Something strange returning from One Shot hold
## Acknowledgements
Thanks to the entire QMK community for your invaluable help.

View file

@ -1,8 +0,0 @@
BOOTLOADER = caterina # Pro Micro bootloader
TAP_DANCE_ENABLE = yes # Enable Tap Dance
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MOUSEKEY_ENABLE = no # Disable mouse (saving space)

View file

@ -1,23 +0,0 @@
/* Copyright 2022 Lucas Waelti (@LucasWaelti)
*
* 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
// 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
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_WINCOMPOSE // support for Linux and Windows unicode

View file

@ -1,249 +0,0 @@
/* Copyright 2022 Lucas Waelti (@LucasWaelti)
*
* 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_us_international.h>
// US_ACUT KC_QUOT // ´ (dead)
// US_DGRV KC_GRV // ` (dead)
// US_DCIR S(US_6) // ^ (dead)
// US_DIAE S(US_ACUT) // ¨ (dead)
enum layers {
_QWERTZ = 0, // base text layer
_SYM, // symbol layer
_NAV, // navigation layer + accents
};
enum unicode_names {
APOST,
QUOTE,
CIRCUM,
GRAVE,
ACUTE,
UMLAUT,
CEDIL_MAJ,
CEDIL,
SECTION,
DEGREE,
};
const uint32_t unicode_map[] PROGMEM = {
[APOST] = 0x0027, // '
[QUOTE] = 0x0022, // "
[ACUTE] = 0x00B4, // ´
[GRAVE] = 0x0060, // `
[CIRCUM] = 0x005E, // ^
[UMLAUT] = 0x00A8, // ¨
[CEDIL_MAJ] = 0x00C7, // Ç
[CEDIL] = 0x00E7, // ç
[SECTION] = 0x00A7, // §
[DEGREE] = 0x00B0, // °
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* 0. Base Layer: QWERTZ
*
* ,-------------------------------------------. ,-------------------------------------------.
* | Esc | Q | W | E | R | T | | Z | U | I | O | P | Del |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Tab | A | S | D | F | G | | H | J | K | L | ' " | BkSpace|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Y | X | C | V | B | \ | | ` ~ | | ( | ) | N | M | , < | . > | ; : | CpLock |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |LCtrl | LGUI | LAlt | Space| MO(1)| | MO(2)| Enter| - _ | ! | / ? |
* | | | | | | | |/shift| | | |
* `----------------------------------' `----------------------------------'
*/
[_QWERTZ] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, UP(APOST,QUOTE), KC_BSPC, // UP(APOST,QUOTE) or KC_QUOT
KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_BSLS, KC_GRV, KC_LPRN, KC_RPRN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_CAPS,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), SC_SENT, KC_MINS, KC_EXLM, KC_SLSH
),
// /*
// * 1. Sym Layer: Numbers and symbols (DEPRECATED)
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | . | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | LAlt | ? | ! | @ | # | < | [ | { | | } | ] | > | ^ | / | * | - | + |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | $ | % | & | | MO(1)| | MO(2)| RAlt | ~ | _ | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_SYM] = 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_DOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PEQL,
// KC_LALT, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_LT, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_GT, KC_CIRC, KC_PSLS, KC_ASTR, KC_PMNS, KC_PLUS,
// KC_DLR, KC_PERC, KC_AMPR, _______, MO(1), MO(2), KC_RALT, KC_TILD, KC_UNDS, KC_PIPE
// ),
/*
* 1. Sym Layer: Numbers and symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | F1 | F2 | F3 | F4 | LAlt | PASTE| | , | 7 | 8 | 9 | * | / |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | F5 | F6 | F7 | F8 | @ | COPY | | . | 6 | 7 | 8 | = | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | F9 | F10 | F11 | F12 | & | CUT | UNDO | FIND | | [ | ] | 0 | 1 | 2 | 3 | + | - |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | $ | # | % | | MO(1)| | MO(2)| | \ | | { | } |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_SYM] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4, KC_LALT,LCTL(KC_V), KC_COMM, KC_7, KC_8, KC_9, KC_ASTR, KC_PSLS,
KC_F5, KC_F6, KC_F7, KC_F8, KC_AT, LCTL(KC_C), KC_DOT, KC_4, KC_5, KC_6, KC_PEQL, _______,
KC_F9, KC_F10, KC_F11, KC_F12, KC_AMPR,LCTL(KC_X),LCTL(KC_Z), LCTL(KC_F), KC_LBRC, KC_RBRC, KC_0, KC_1, KC_2, KC_3, KC_PLUS, KC_PMNS,
KC_DLR, KC_HASH, KC_PERC, _______, MO(1), MO(2), _______, KC_BSLS, KC_LCBR, KC_RCBR
),
/*
* 2. Nav Layer: Media, navigation, accents
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | Brt+ | Next | Fwd | Play | Vol+ | | Home | PgUp | Up | PgDn | | Del |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Brt- | Prev | Bckw | Stop | Vol- | | End | Left | Down | Right|ScrLck| BkSpace|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | ´ | ` | ^ | ¨ | Mute | |UC_Nxt| |RShift| Menu | PrtSc| ç/Ç | § ° | | SAVE | Insert |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |LCtrl | LGUI | LAlt | | MO(1)| | MO(2)| UNDO | CUT | COPY | PASTE|
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NAV] = LAYOUT(
_______, KC_BRIU, KC_MNXT, KC_MFFD, KC_MPLY, KC_VOLU, KC_HOME, KC_PGUP, KC_UP, KC_PGDN, _______, KC_DEL,
_______, KC_BRID, KC_MPRV, KC_MRWD, KC_MSTP, KC_VOLD, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCRL, KC_BSPC,
KC_LSFT, US_ACUT, US_DGRV, US_DCIR, US_DIAE, KC_MUTE, _______, UC_NEXT, KC_RSFT, KC_APP, KC_PSCR, UP(CEDIL,CEDIL_MAJ), UP(SECTION,DEGREE), _______, LCTL(KC_S), KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, _______, MO(1), MO(2), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V)
),
// /*
// * 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 _QWERTZ:
oled_write_P(PSTR("QWERTZ\n"), false);
break;
case _NAV:
oled_write_P(PSTR("Nav\n"), false);
break;
case _SYM:
oled_write_P(PSTR("Sym\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) */

View file

@ -1,104 +0,0 @@
# Kyria's lw Keymap
Custom keymap for the [kyria keyboard](https://blog.splitkb.com/blog/introducing-the-kyria). It is intended to be used with an *English (US, intl. with dead keys)* keyboard layout (includes the `keymap_us_international.h` header).
This layout is mainly designed for every day writing in either English, French or German and programming.
The layout implements all accents and symbols (leveraging dead keys) found on a **swiss** keyboard. It uses Unicode for special characters. It makes use of the [Linux built-in IBus Unicode input](https://docs.qmk.fm/#/feature_unicode?id=input-modes) and relies on [WinCompose](https://github.com/samhocevar/wincompose) for Windows.
## Build this keymap
```bash
qmk compile -kb splitkb/kyria/rev1 -km lw
```
## Flash this keymap
> **Note**: this was tested for an Elite-C microcontroller.
First, check that the bootloader is visible. For instance:
```bash
$ lsusb
...
Bus 001 Device 034: ID 03eb:2ff4 Atmel Corp. atmega32u4 DFU bootloader
...
```
If the bootloader is not visible, press the reset button of the microcontroller. The bootloader should become visible when running the `lsusb` command again.
The microcontroller can now be flashed:
```bash
qmk flash -kb splitkb/kyria/rev1 -km lw
```
> **Note**: if there is any issue, run `qmk doctor` to see whether the qmk configuration is valid.
## Implemented keymaps
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 (QWERTZ)
2. Symbols/Numbers layer
3. Navigation layer
### Base layer
This layer is activated by default.
```
/*
* 0. Base Layer: QWERTZ
*
* ,-------------------------------------------. ,-------------------------------------------.
* | Esc | Q | W | E | R | T | | Z | U | I | O | P | Del |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Tab | A | S | D | F | G | | H | J | K | L | ' " | BkSpace|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Y | X | C | V | B | \ | | ` ~ | | ( | ) | N | M | , < | . > | ; : | CpLock |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |LCtrl | LGUI | LAlt | Space| MO(1)| | MO(2)| Enter| - _ | ! | / ? |
* | | | | | | | |/shift| | | |
* `----------------------------------' `----------------------------------'
*/
```
Hold down the `Enter` key to make it a shift. This compensates for the poor placement of the dedicated `LShift` key.
### Symbol layer
This layer is activated when holding `MO(1)`.
```
/*
* 1. Sym Layer: Numbers and symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | F1 | F2 | F3 | F4 | LAlt | PASTE| | , | 7 | 8 | 9 | * | / |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | F5 | F6 | F7 | F8 | @ | COPY | | . | 6 | 7 | 8 | = | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | F9 | F10 | F11 | F12 | & | CUT | UNDO | FIND | | [ | ] | 0 | 1 | 2 | 3 | + | - |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | $ | # | % | | MO(1)| | MO(2)| | \ | | { | } |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
```
### Navigation layer
This layer is activated when holding `MO(2)`.
```
/*
* 2. Nav Layer: Media, navigation, accents
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | Brt+ | Next | Fwd | Play | Vol+ | | Home | PgUp | Up | PgDn | | Del |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Brt- | Prev | Bckw | Stop | Vol- | | End | Left | Down | Right|ScrLck| BkSpace|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | ´ | ` | ^ | ¨ | Mute | |UC_Nxt| |RShift| Menu | PrtSc| ç/Ç | § ° | | SAVE | Insert |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |LCtrl | LGUI | LAlt | | MO(1)| | MO(2)| UNDO | CUT | COPY | PASTE|
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
```
The key `UC_NEXT` allows to switch between Linux and Windows unicode. Note however that [WinCompose](https://github.com/samhocevar/wincompose) must be installed on Windows (simply download and install the latest release and it will run).

View file

@ -1,5 +0,0 @@
OLED_ENABLE = no
ENCODER_ENABLE = no # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODEMAP_ENABLE = yes # Enable unicode

View file

@ -1,39 +0,0 @@
/* 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_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_EFFECT_TWINKLE
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_LIMIT_VAL 150
#endif
// 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

View file

@ -1,420 +0,0 @@
/* 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,
_DVORAK,
_COLEMAK_DH,
_NAV,
_SYM,
_FUNCTION,
_ADJUST,
_NUMPAD,
_MOUSE
};
// Aliases for readability
#define QWERTY DF(_QWERTY)
#define COLEMAK DF(_COLEMAK_DH)
#define DVORAK DF(_DVORAK)
#define NUMPAD DF(_NUMPAD)
#define MOUSE DF(_MOUSE)
#define DNAV DF(_NAV)
#define SYM MO(_SYM)
#define NAV MO(_NAV)
#define FKEYS MO(_FUNCTION)
#define ADJUST MO(_ADJUST)
#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 LGUI_ENT MT(MOD_LGUI, KC_ENT)
#define LALT_SUP MT(MOD_LALT, KC_DEL)
#define RGUI_TAB MT(MOD_RGUI, KC_TAB)
#define RALT_BS MT(MOD_RALT, KC_BSPC)
#define LSFT_LPR MT(MOD_LSFT, ES_LPRN)
#define RSFT_RPR MT(MOD_RSFT, ES_RPRN)
#define NAV_ESC LT(NAV, KC_ESC)
#define SYM_SPC LT(SYM, KC_SPC)
#define NAV_SPC LT(NAV, KC_SPC)
#define SYM_ENT LT(SYM, KC_ENT)
#define OSX_TILD ALGR(KC_SCLN)
// 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
*
* ,-------------------------------------------. ,-------------------------------------------.
* | 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| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu |
* | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | |
* `----------------------------------' `----------------------------------'
*/
[_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,
LSFT_LPR , KC_Z , KC_X , KC_C , KC_V , KC_B , ES_GRV , KC_CAPS, FKEYS , ES_PLUS , KC_N , KC_M, KC_COMM , KC_DOT , KC_SLSH, RSFT_RPR,
ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB, RALT_BS, 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| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu |
* | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | |
* `----------------------------------' `----------------------------------'
*/
[_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,
LSFT_LPR ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , ES_GRV, KC_CAPS, FKEYS , ES_PLUS, KC_B, KC_M , KC_W , KC_V , KC_Z , RSFT_RPR,
ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB, RALT_BS, KC_APP
),
/*
* Base Layer: Colemak DH
*
* ,-------------------------------------------. ,-------------------------------------------.
* | Tab | Q | W | F | P | B | | J | L | U | Y | Ñ | Bksp |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/´ ¨|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* |LShift/(| Z | X | C | D | V | `^[ |CapsLk| |F-keys| +*] | K | H | , ; | . : | - _ |RShift/)|
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu |
* | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | |
* `----------------------------------' `----------------------------------'
*/
[_COLEMAK_DH] = LAYOUT(
KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J, KC_L , KC_U , KC_Y , KC_SCLN , KC_BSPC,
CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G , KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT,
LSFT_LPR , KC_Z , KC_X , KC_C , KC_D , KC_V , ES_GRV, KC_CAPS, FKEYS , ES_PLUS , KC_K , KC_H , KC_COMM , KC_DOT , KC_SLSH, RSFT_RPR,
ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB , RALT_BS , KC_APP
),
/*
* Nav Layer: Media, navigation
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | PgUp | Home | | End | VolUp| Delete |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Shift| Ctrl | Alt | GUI | | | 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_LSFT, KC_LCTL, KC_LALT, KC_LGUI, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
_______, _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Sym Layer: Numbers and symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | º | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ' |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | ª | ! | " | · | $ | % | | & | / | ( | ) | = | ? |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | \ | | | @ | # | ~ | | ¬ | | | | | ¡ | < | > | { | } | ¿ |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_SYM] = LAYOUT(
KC_NUBS, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , ES_QUOT,
S(KC_NUBS) , ES_EXLM, ES_DQUO , ES_BULT, ES_DLR, ES_PERC, ES_AMPR, ES_SLSH, ES_LPRN, ES_RPRN, ES_EQL, ES_QUES,
A(KC_NUBS), ES_PIPE, ES_AT, ES_HASH , OSX_TILD, A(KC_E), ES_NOT, _______, S(ES_CCED), ES_CCED, ES_IEXL, KC_GRAVE, S(KC_GRAVE), ES_LCBR, ES_RCBR, ES_IQUE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Sym Layer: Numbers and symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ' |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | ~ | ! | @ | · | $ | % | | & | / | ( | ) | = | ¿ |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
// [_SYM] = LAYOUT(
// C(KC_GRV), KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL ,
// OSX_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
// ES_PIPE , A(KC_NUHS) , ES_COLN, ES_SCLN, ES_MINS, ES_LBRC, ES_LCBR, _______, _______, ES_RCBR, ES_RBRC, ES_UNDS, ES_COMM, ES_DOT, ES_SLSH, ES_QUOT,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
/*
* Function Layer: Function keys
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F9 | F10 | F11 | F12 | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | F5 | F6 | F7 | F8 | | | | GUI | Alt | Ctrl | Shift| |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_FUNCTION] = LAYOUT(
_______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
_______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT, _______,
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Adjust Layer: Default layer settings, RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | NumPad | | |QWERTY| | | | | | | | | Boot |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Mouse | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | Debug |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* |Nav Perm| | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | EE_CLR |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
NUMPAD , _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
MOUSE , _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, DB_TOGG,
DNAV , _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, EE_CLR,
_______, _______, _______,_______, _______, _______, _______, _______, _______, _______
),
/*
* Layer NumPad
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |Adjust| | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NUMPAD] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
ADJUST , _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Layer Mouse
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | |MS LCL| MS |MS RCL| Whl | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Shift| Ctrl | Alt | GUI | | | | MS | MS | MS | Whl | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* |Adjust| | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_MOUSE] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______,
_______, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
ADJUST , _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
// * 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.
*/
#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 AdG v0.1\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;
case _NUMPAD:
oled_write_P(PSTR("NumPad\n"), false);
break;
case _MOUSE:
oled_write_P(PSTR("Mouse\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
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LSFT_LPR:
if (record->tap.count && record->event.pressed) {
tap_code16(ES_LPRN); // Send KC_DQUO on tap
return false; // Return false to ignore further processing of key
}
break;
case RSFT_RPR:
if (record->tap.count && record->event.pressed) {
tap_code16(ES_RPRN); // Send KC_DQUO on tap
return false; // Return false to ignore further processing of key
}
break;
}
return true;
}

View file

@ -1,17 +0,0 @@
# Kyria's Keymap adapted to Spanish MacOS (WIP)
The default keymap contains 7 layers which allows it to include all keys found on spanish Apple keyboard plus media keys.
Hardware features of the Kyria such as OLEDs 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
6. Numpad layer
7. Mouse layer
Look into keymap.c to view mappings

View file

@ -1,4 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = no # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MOUSEKEY_ENABLE = yes # Enable mouse movements

View file

@ -1,64 +0,0 @@
/* 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_ENABLE
# define OLED_DISPLAY_128X64
# define OLED_TIMEOUT 300000
# define OLED_UPDATE_INTERVAL 30
#endif
#ifdef RGBLIGHT_ENABLE
# define RGBLIGHT_LIMIT_VAL 150
# 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_EFFECT_TWINKLE
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_SLEEP
#endif
// 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
// Set the layer toggle to only need 2 clicks instead of 5
#define TAPPING_TOGGLE 2
// EC11K encoders have a different resolution than other EC11 encoders.
#define ENCODER_RESOLUTION 2
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
#define TAPPING_TERM 200
// Allows to use either side as the master. Look at the documentation for info:
// https://docs.qmk.fm/#/config_options?id=setting-handedness
#define EE_HANDS
// Allows media codes to properly register in macros and rotary encoder code
#define TAP_CODE_DELAY 10

View file

@ -1,288 +0,0 @@
/* Copyright 2020 Matthew Gilbert <hello+github@mattir.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
enum layers {
QWERTY = 0,
LOWER,
RAISE,
FUNCS,
RGBLED
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_BSLS,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
QK_LEAD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, XXXXXXX, XXXXXXX, KC_MINS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
KC_MUTE, KC_LCTL, KC_LGUI, TT(RAISE), SFT_T(KC_SPC), SFT_T(KC_SPC), TT(LOWER), KC_BSPC, KC_LALT, TG(RGBLED)
),
[LOWER] = LAYOUT(
_______, KC_EXLM, KC_AT, KC_HASH, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______,
_______, KC_DLR, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_EQL, KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, _______,
TG(FUNCS), KC_AMPR, _______, _______, KC_LBRC, KC_RBRC, _______, XXXXXXX, XXXXXXX, _______, _______, _______, KC_COMM, KC_DOT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[RAISE] = LAYOUT(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, XXXXXXX, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______
),
[FUNCS] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______,
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, _______,
TG(FUNCS), KC_F11, KC_F12, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PEQL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[RGBLED] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_VAI, RGB_HUI, RGB_SAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_VAD, RGB_HUD, RGB_SAD, RGB_RMOD, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, TG(RGBLED)
),
};
void leader_end_user(void) {
if (leader_sequence_one_key(KC_A)) {
tap_code16(SGUI(KC_L));
}
if (leader_sequence_two_keys(KC_S, KC_S)) {
tap_code16(SGUI(KC_5));
}
}
bool is_cmd_tab_active = false;
uint16_t cmd_tab_timer = 0;
void matrix_scan_user(void) {
if (is_cmd_tab_active) {
if (timer_elapsed(cmd_tab_timer) > 1000) {
unregister_code(KC_LGUI);
is_cmd_tab_active = false;
}
}
}
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
static void render_mattir_logo(void) {
static const char PROGMEM mattir_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3c, 0xfc, 0xf8, 0xe0,
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, 0x80, 0xe0, 0xe0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x83, 0x07,
0x1f, 0x7e, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfe, 0x3f, 0x1f, 0x7f, 0xff,
0xfc, 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, 0x0f, 0xff, 0xfc, 0xf8, 0x1c, 0x0f, 0x07, 0x00,
0x00, 0x00, 0x01, 0x07, 0x1f, 0x7e, 0xf8, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0f,
0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x80,
0xe0, 0xf8, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x3f, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
0xfe, 0xff, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x7f, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0,
0x00, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0xe0, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0x60, 0x00,
0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x1f,
0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
0xff, 0x07, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xf8, 0xfe, 0x3f, 0x07, 0x01, 0x00, 0x03, 0xff, 0xff,
0xfc, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xe1, 0xc0, 0xc0, 0xc0, 0xc0, 0xe1, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0xff, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xfe, 0xff, 0xff, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x3f, 0xff, 0xfc, 0xf0, 0xc0, 0x80, 0x00, 0xc0,
0xf0, 0xfc, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xef, 0xcf, 0xce, 0xfc, 0x7c, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x3f, 0x3f,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1f, 0x3f, 0x3f, 0x1f,
0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x3c, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(mattir_logo, sizeof(mattir_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("Matt's Kyria\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 FUNCS:
oled_write_P(PSTR("F-keys\n"), false);
break;
case RGBLED:
oled_write_P(PSTR("Underglow\n"), false);
break;
default:
oled_write_P(PSTR("No idea dog\n"), false);
}
}
bool oled_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard layer
} else {
render_mattir_logo();
}
return false;
}
#endif
// Layer-specific encoder knob functions
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { // left knob
switch (get_highest_layer(layer_state)) {
case QWERTY: // Volume
if (clockwise) {
tap_code(KC_VOLD);
} else {
tap_code(KC_VOLU);
}
break;
case LOWER: // Desktop switching
if (clockwise) {
tap_code16(C(KC_RIGHT));
} else {
tap_code16(C(KC_LEFT));
}
break;
case RAISE: // Mousewheel L/R
if (clockwise) {
tap_code(KC_WH_L);
} else {
tap_code(KC_WH_R);
}
break;
case RGBLED: // Underglow color
if (clockwise) {
rgblight_increase_hue();
} else {
rgblight_decrease_hue();
}
break;
default: // No action
if (clockwise) {
tap_code(KC_NO);
} else {
tap_code(KC_NO);
}
break;
}
} else if (index == 1) { // right knob
switch (get_highest_layer(layer_state)) {
case QWERTY: // Undo / Redo
if (clockwise) {
tap_code16(LGUI(KC_Z));
} else {
tap_code16(SGUI(KC_Z));
}
break;
case LOWER: // App switching
if (clockwise) {
if (!is_cmd_tab_active) {
is_cmd_tab_active = true;
register_code(KC_LGUI);
}
cmd_tab_timer = timer_read();
tap_code16(KC_TAB);
} else {
tap_code16(S(KC_TAB));
}
break;
case RAISE: // Mouse wheel U/D
if (clockwise) {
tap_code(KC_WH_U);
} else {
tap_code(KC_WH_D);
}
break;
case RGBLED: // Underglow brightness
if (clockwise) {
rgblight_increase_val();
} else {
rgblight_decrease_val();
}
break;
default: // No action
if (clockwise) {
tap_code(KC_NO);
} else {
tap_code(KC_NO);
}
break;
}
}
return true;
}
#endif

View file

@ -1,141 +0,0 @@
# Mattir's keymap & configs for [Kyria](https://github.com/splitkb/kyria)
## Keymap
This is my customized keymap and layer setup for my kyria. It's based largely on the defaults, but with several things moved to new layers.
Keys in the diagrams below that are blank are "transparent" and they drop down to the lowest layer that has them defined. The keys at the end of the bottom row marked as `ENC` are where my rotary encoders are installed. The 2U height `Spce/Shft` keys are multi-function. You tap them for a space, or hold them for shift.
### Base layer `QWERTY`
```
,-------------------------------------------. ,-------------------------------------------.
| Tab | Q | W | E | R | T | | Y | U | I | O | P | | \ |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| Esc | A | S | D | F | G | | H | J | K | L | ; : | Enter |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| Leader | Z | X | C | V | B | ~ ` | | | | - _ | N | M | , < | . > | / ? | ' " |
`----------------------+------+------+------+------| Spce | | Spce |------+------+------+------+----------------------'
| ENC | Ctrl | Supr | Rais | Shft | | Shft | Lowr | Bksp | Alt | ENC |
`----------------------------------' `----------------------------------'
```
### Symbols layer `LOWER`
```
,-------------------------------------------. ,-------------------------------------------.
| | ! | @ | # | { | } | | | | | | | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | $ | % | ^ | ( | ) | | = | + | - | * | / | |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| FUNCS | & | | | [ | ] | | | | | | | | , | . | | |
`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
| ENC | | | | | | | | | | ENC |
`----------------------------------' `----------------------------------'
```
### Numbers and mouse-keys layer `RAISE`
```
,-------------------------------------------. ,-------------------------------------------.
| | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | | Prev | Play | Next | | | Left | Down | Up | Right| | |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| | | LMsB | MMsB | RMsB | | | | | | | MLeft| Mdown| MUp |MRight| | |
`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
| ENC | | | | | | | | Del | | ENC |
`----------------------------------' `----------------------------------'
```
### F-Keys and number-pad layer `FUNCS`
```
,-------------------------------------------. ,-------------------------------------------.
| | F1 | F2 | F3 | F4 | F5 | | np + | np 7 | np 8 | np 9 | np * | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | F6 | F7 | F8 | F9 | F10 | | np - | np 4 | np 5 | np 6 | np / | |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| FUNCS | F11 | F12 | | | | | | | | | np 0 | np 1 | np 2 | np 3 | np . | = |
`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
| ENC | | | | | | | | | | ENC |
`----------------------------------' `----------------------------------'
```
### LED Underglow layer `RGBLED`
There's not much on this layer since several of the functions are set up for my rotary encoders.
```
,-------------------------------------------. ,-------------------------------------------.
| | | | | | | | | | | | | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | |ValUp |HueUp | SatUp| Mode | | | | | | | |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| | |ValDn |HueDn | SatDn| Rmode| | | | | | | | | | | |
`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
| ENC | | | | | | | | | | ENC |
`----------------------------------' `----------------------------------'
```
## Rotary Encoders
I've set up the 2 rotary encoders to serve different functions depending on the active layer. I'll call them `ENC-L` and `ENC-R` for the encoder on the left side, or on the right side. Note that many of these functions are Mac-specific in my case, and if you want to use them for Windows or Linux, you'll need to tweak the key-codes generated.
### Defaults
If a layer is undefined somehow, I have both encoders set to be ignored on rotation.
### Base layer `QWERTY`
`ENC-L`
* Rotate - Volume up and down, determined by rotation direction.
* Click - Mute audio.
`ENC-R`
* Rotate - Undo (command-Z) and Redo (shift-command-Z)
* Click - Toggle to `RGBLED` layer.
### Symbols layer `LOWER`
`ENC-L`
* Rotate - Desktop switching on Mac
* Click - no change (transparent)
`ENC-R`
* Rotate - App switching on Mac
* Click - no change (transparent)
### Numbers and mouse-keys layer `RAISE`
`ENC-L`
* Rotate - Mouse-wheel left and right (equal to side-swiping on Mac trackpads)
* Click - no change (transparent)
`ENC-R`
* Rotate - Mouse-wheel up and down
* Click - no change (transparent)
### F-Keys and number-pad layer `FUNCS`
`ENC-L`
* Rotate - nothing defined, falls back to defaults
* Click - no change (transparent)
`ENC-R`
* Rotate - nothing defined, falls back to defaults
* Click - no change (transparent)
### LED Underglow layer `RGBLED`
`ENC-L`
* Rotate - Adjust hue (color) forward and back
* Click - Turn on/off the underglow LEDs
`ENC-R`
* Rotate - Adjust the value (brightness) up and down
* Click - return to the base `QWERTY` layer
## OLEDs
There isn't much special here that isn't already in the default keymap for the Kyria. The main side (where the USB cable is plugged in) will show the QMK logo and the active layer. The secondary side (connected to the main via the TRRS cable) will show my personal logo.

View file

@ -1,4 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
LEADER_ENABLE = yes # Enables the use of the leader key

View file

@ -1,30 +0,0 @@
/* Copyright 2021 Matt Gilbert <web@mattir.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
// Set the layer toggle to only need 2 clicks instead of 5
#define TAPPING_TOGGLE 2
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
#define TAPPING_TERM 200
// Allows to use either side as the master. Look at the documentation for info:
// https://docs.qmk.fm/#/config_options?id=setting-handedness
#define EE_HANDS

View file

@ -1,59 +0,0 @@
/* Copyright 2020 Matthew Gilbert <hello+github@mattir.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
enum layers {
QWERTY,
LOWER,
RAISE,
FUNCS
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[QWERTY] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
QK_LEAD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_GRV, TT(FUNCS), KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
KC_LSFT, KC_LALT, KC_LGUI, LT(LOWER, KC_SPC), LT(RAISE, KC_ENT), LT(RAISE, KC_ENT), LT(LOWER, KC_SPC), KC_BSPC, KC_LCTL, KC_RSFT
),
[LOWER] = LAYOUT(
_______, KC_EXLM, KC_AT, KC_HASH, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______,
_______, KC_DLR, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_EQL, KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, _______,
_______, KC_AMPR, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[RAISE] = LAYOUT(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
KC_VOLU, _______, KC_BTN1, KC_BTN3, KC_BTN2, KC_WH_U, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, _______,
KC_VOLD, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_WH_D, KC_WH_L, KC_WH_R, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BRID, _______,
_______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______
),
[FUNCS] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______,
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, KC_PEQL,
_______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PENT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
void leader_end_user(void) {
if (leader_sequence_one_key(KC_A)) {
tap_code16(SGUI(KC_L));
}
if (leader_sequence_two_keys(KC_S, KC_S)) {
tap_code16(SGUI(KC_5));
}
}

View file

@ -1,67 +0,0 @@
# Mattir's keymap & configs for [Kyria](https://github.com/splitkb/kyria)
## Keymap
This is my customized keymap and layer setup for my second Kyria split keyboard. It's based largely on the defaults, but with several things moved to new layers. Keys in the diagrams below that are blank are "transparent" and they drop down to the lowest layer that has them defined.
The PCBs for the Kyria are rev. 1.3
Each half uses an Elite-C low-profile (rev 4) microcontroller with USB-C connector
The boards are outfitted with Kailh Choc Jade switches and MBK keycaps
Unlike my first build, this is a minimal build with no encoders, RGB LEDs, or OLED displays.
### Base layer `QWERTY`
```
,-------------------------------------------. ,-------------------------------------------.
| Esc | Q | W | E | R | T | | Y | U | I | O | P | \ | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| Leader | Z | X | C | V | B | Shft | ` ~ | | L3 | Shft | N | M | , < | . > | / ? | - _ |
`----------------------+------+------+------+------|------| |------|------+------+------+------+----------------------'
| Shft | Alt | Supr |L1/Spc|L2/Ent| |L2/Ent|L1/Spc| Bksp | Alt | Shft |
`----------------------------------' `----------------------------------'
```
### Symbols layer `LOWER`
```
,-------------------------------------------. ,-------------------------------------------.
| | ! | @ | # | { | } | | | | | | | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | $ | % | ^ | ( | ) | | = | + | - | * | / | |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| | & | | | [ | ] | | | | | | | | | | | |
`----------------------+------+------+------+------|------| |------|------+------+------+------+----------------------'
| | | | | | | | | | | |
`----------------------------------' `----------------------------------'
```
### Numbers and mouse-keys layer `RAISE`
```
,-------------------------------------------. ,-------------------------------------------.
| | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| Vol Up | | LMsB | MMsB | RMsB | MW Up| | Left | Down | Up | Right|Bri Up| |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| Vol Dn | Mute | Prev | Play | Next | MW Dn| MW L | MW R | | | | MLeft| Mdown| MUp |MRight|Bri Dn| |
`----------------------+------+------+------+------|------| |------|------+------+------+------+----------------------'
| | | | | | | | | Del | | |
`----------------------------------' `----------------------------------'
```
### F-Keys and number-pad layer `FUNCS`
```
,-------------------------------------------. ,-------------------------------------------.
| | F1 | F2 | F3 | F4 | F5 | | np + | np 7 | np 8 | np 9 | np * | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | F6 | F7 | F8 | F9 | F10 | | np - | np 4 | np 5 | np 6 | np / | = |
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
| | F11 | F12 | | | | | | | | | np 0 | np 1 | np 2 | np 3 | np . | Enter |
`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
| | | | | | | | | | | |
`----------------------------------' `----------------------------------'
```

View file

@ -1,4 +0,0 @@
OLED_ENABLE = no # Enables the use of OLED displays
ENCODER_ENABLE = no # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
LEADER_ENABLE = yes # Enables the use of the leader key

View file

@ -1,27 +0,0 @@
// Copyright 2022 Kevin Ohlin (@ohlin)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#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_EFFECT_TWINKLE
#define RGBLIGHT_LIMIT_VAL 150
#define RGBLIGHT_LED_MAP {0,1,2,9,8,7,4,3,5,6,19,18,17,10,11,12,15,16,14,13} // Orients Kyria LEDs to a circle around both halves.
// #define RBGLIGHT_LED_MAP {9,8,6,7,5,3,2,4,1,0,10,12,13,11,14,16,17,15,18,19} // Orients Kyria LEDs for a left half-right half columnar progression.
// #define RBGLIGHT_LED_MAP {8,9,2,3,4,5,1,0,6,7,17,16,10,11,15,14,13,12,19,18} // Another attempt at an LED mapping
#define OLED_FADE_OUT
#define OLED_FADE_OUT_INTERVAL 6
// Configure the global tapping term (default: 200ms)
#define TAPPING_TERM 175
// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
#define QUICK_TAP_TERM 0

View file

@ -1,260 +0,0 @@
// Copyright 2022 Kevin Ohlin (@ohlin)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_QWERTY = 0,
_LOWER,
_RAISE,
_ADJUST
};
// Layers
#define QWERTY DF(_QWERTY)
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
// Home row mods
#define CTL_A LCTL_T(KC_A)
#define OPT_S LOPT_T(KC_S)
#define CMD_D LCMD_T(KC_D)
#define SFT_F LSFT_T(KC_F)
#define SFT_J RSFT_T(KC_J)
#define CMD_K RCMD_T(KC_K)
#define OPT_L LOPT_T(KC_L)
#define CTL_SCLN RCTL_T(KC_SCLN)
// Other
#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 OPT_ENT MT(MOD_LALT, KC_ENT)
#define SFT_SPC MT(MOD_LSFT, KC_SPC)
#define YTC LOPT(KC_C)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | F3 |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* |Ctrl/Esc| CTL/A| OPT/S| CMD/D| SFT/F| G | | H | SFT/J| CMD/K| OPT/L| CTL/;| RClick |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | [ { | Hyper| | Hyper| ] } | N | M | , < | . > | / ? | LClick |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | LCMD | LOPT/|Shift/| Lower| | Raise|Shift/| Bcksp| RCMD |Scroll|
* | | | Enter| Space| | | | Space| | | |
* `----------------------------------' `----------------------------------'
*/
[_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_F3,
CTL_ESC, CTL_A, OPT_S, CMD_D, SFT_F, KC_G, KC_H, SFT_J, CMD_K, OPT_L, CTL_SCLN, KC_BTN2,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_HYPR, KC_HYPR, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BTN1,
_______, KC_LCMD, OPT_ENT, SFT_SPC, LOWER, RAISE, SFT_SPC, KC_BSPC, KC_RCMD, KC_BTN5
),
/*
* Lower Layer
*
* ,-----------------------------------------. ,-------------------------------------------.
* | ( | ) | 7 | 8 | 9 | 0 | | VolUp| | | | | |
* |------|------+------+------+------+------+ |------+------+------+------+------+--------|
* | [ | ] | 4 | 5 | 6 | + | | VolDn| | | | | |
* |------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | { | } | 1 | 2 | 3 | - | | | | | |VolMut| | | | | |
* `--------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | |xxxxxx| | | | | | |
* | | | | |xxxxxx| | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_LOWER] = LAYOUT(
KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_0, KC_VOLU, _______, KC_UP, _______, _______, _______,
KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_EQL, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, KC_MINUS, _______, KC_LSFT, _______, _______, KC_MUTE, _______, _______, _______, _______, _______,
KC_BTN5, KC_BTN2, KC_BTN1, _______, _______, _______, _______, _______, _______, _______
),
/*
* Raise Layer
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ` | | | | | | | VolUp| | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | ~ | ! | @ | # | $ | % | | VolDn| | | | |Ctrl/' "|
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | \ | : | ; | - | [ | { | | | | |VolMut| Opt+C| < | > | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | |xxxxxx| | | | |
* | | | | | | |xxxxxx| | | | |
* `----------------------------------' `----------------------------------'
*/
[_RAISE] = LAYOUT(
KC_GRV, _______, _______, _______, _______, _______, KC_VOLU, _______, KC_UP, _______, _______, _______,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, _______, CTL_QUOT,
KC_PIPE, KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, _______, _______, _______, KC_MUTE, YTC, KC_LT, KC_GT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Adjust Layer: RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | TOG | SAI | HUI | VAI | MOD | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | SAD | HUD | VAD | RMOD | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | |xxxxxx| |xxxxxx| | | | |
* | | | | |xxxxxx| |xxxxxx| | | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_M_P, _______,
_______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_M_SW, _______,
_______, _______, _______,_______, _______, _______, _______, _______, _______, _______
),
// /*
// * 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; }
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("\nKyria rev2.1\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 _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;
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 ko_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x7f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60,
0x30, 0x18, 0x8c, 0xe6, 0x73, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8,
0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xe0, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x80, 0xc0, 0xf0, 0xf8, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f,
0x07, 0x01, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, 0xc0, 0xf0,
0x78, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xfc, 0xfc,
0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x07, 0x01, 0x00, 0x80, 0xc0, 0x60,
0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0e, 0x0f, 0x0f, 0x0d,
0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x8d, 0xcd, 0xed, 0x7d,
0x3d, 0xbd, 0xdd, 0xed, 0xf5, 0xf1, 0xf9, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x07, 0x07,
0x07, 0x0f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf1, 0xc7, 0x86, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xe6, 0xfe, 0x7e,
0x1e, 0x0e, 0x02, 0x80, 0xc0, 0xc0, 0x60, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0xf3, 0xf9, 0xfc, 0xfe,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0xfc, 0xf0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x78, 0xbc, 0xcf, 0xc7, 0xe3, 0x70, 0x38,
0x1c, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x7f, 0xff, 0xff,
0x7f, 0x9f, 0xcf, 0xf3, 0xf8, 0x7e, 0xbf, 0xdf, 0x8f, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f,
0x1f, 0x3f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 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, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x11, 0x0d,
0x06, 0x03, 0x03, 0x01, 0x00, 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, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 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
};
// clang-format on
oled_write_raw_P(ko_logo, sizeof(ko_logo));
}
return false;
}
#endif

View file

@ -1,65 +0,0 @@
# @ohlin's Kyria Keymap
###### _This keymap is a work in progress._
I am a Product Manager and QA Lead, not a developer, so I spend a lot of my time doing things that require a mouse, so one handed keyboard shortcuts are very useful to me.
This keymap is used on a Mac in conjunction with a [Ploopy Nano](https://github.com/ploopyco/nano-trackball) trackball.
```
,-----------------------------. ,-----------------------------. .--------------.
| | | | | | | | | | | | | | | ---- |
|----+----+----+----+----+----| |----|----+----+----+----+----| | PL°°°°°°PY |
| | | | | | | | | | | | | | | PL°°°°°°°°PY |
|----+----+----+----+----+----+---------. ,---------+----+----+----+----+----+----| | PL°°°°°°°°PY |
| | | | | | | | | | | | | | | | | | | PL°°°°°°PY |
`-------------------+----+----+----+----| |----+----+----+----+----+----+---------' | ---- |
| | | | | | | | | | | | '--------------'
`------------------------' `------------------------'
```
## Home Row Mods
Home row mods help came from @precondition's in-depth article, [_A guide to home row mods_](https://precondition.github.io/home-row-mods). `CAGS` makes the most sense to me as a Mac user.
## Karabiner Elements
Karabiner Elements has been a part of my Mac workflow for years now, so when I switched from a Planck to this Kyria, it fit neatly around this keymap to make things easier. Karabiner serves two primary functions here:
- Change `Caps Lock` to `Hyper` (`ctrl + opt + cmd + shift`)
- Hold mouse button 5 to enable `mouse_motion_to_scroll`
### Caps Lock to Hyper
Years ago, following Brett Terpstra's article [_A useful Caps Lock key_](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/), I swapped caps lock for hyper, then mapped a number of system-wide keyboard shortcuts to `Hyper` + `[key]`, such as launching apps using [Alfred](https://www.alfredapp.com/) workflows, resizing and moving windows using [Rectangle](https://github.com/rxhanson/Rectangle), and changing all of my montiors' brightness levels together using [Display Buddy](https://displaybuddy.app/).
Remapping the Caps Lock key in Karabiner ensures I can still easily use these shortcuts with the built-in keyboard on my laptop as well as with any QMK keyboard (where I use the `KC_HYPR` key code directly).
### Scrolling with the Ploopy Nano
Initially, I tried using the NumLock scroll developed by [@zealws](https://github.com/zealws/qmk_firmware/commit/293d3c211d9e93c127b628ac9ef9e4cb201a01da) ([Reddit post here](https://old.reddit.com/r/ploopy/comments/nlvgkq/how_to_scroll_with_the_trackball_nano/)), but had some difficulty making it work on Mac. Since I was already using Karabiner for the Caps Lock to Hyper Switch, I decided to just use it for [mouse motion to scroll](https://karabiner-elements.pqrs.org/docs/json/complex-modifications-manipulator-definition/other-types/mouse-motion-to-scroll/) as well by holding Mouse Button 5. Easily done.
Despite not being able to make the NumLock scroll work, I did keep the [Ploopy Acceleration](https://github.com/zealws/qmk_firmware/commit/293d3c211d9e93c127b628ac9ef9e4cb201a01da#diff-d9cdae01e54acdc5c6ec6f6b28f48a676287d2f9cc2c9c3aaf63724fa625f520R90-R96) from @zealws' code, as it made using the Nano much easier when moving across the 3 monitors I typically use for work.
## OLED Logo
I created my own OLED logo in [Figma](https://www.figma.com/), converted it with @javl's [image2cpp](https://javl.github.io/image2cpp), and cleaned up the result with @joric's [QMK Logo Editor](https://joric.github.io/qle/).
```
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡/1‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡! ,‡‡‡‡‡‡‡‡‡z!!!!!!!!!!!!r‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡! .1‡‡‡‡‡‡‡@! '&‡‡‡‡‡‡_" ';1‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡' `‡‡‡‡‡‡‡BI ` `‡‡‡‡‡‡< `‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡? ;‡‡‡‡‡‡@l.;j'>‡‡‡‡‡&' .""""` .j‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡! `‡‡‡‡‡‡@I ,‡r ,‡‡‡‡‡‡l `M‡‡‡‡‡‡‡( M‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡1. "#‡‡‡‡z>';j‡; '&‡‡‡‡‡‡. i‡‡‡‡‡‡‡‡‡‡l .‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡^ ;8‡‡‡‡('.;#‡‡" >‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡/ )‡‡‡‡r`.{‡‡‡‡` M‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ "" "j‡‡‡j".;#‡‡‡c .""""""""""""""""1/‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ,‡‡‡1' ,‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡< `! ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ 'M‡`.;j‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡1'',;' ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ \< .‡‡‡‡( /! ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡; >‡‡‡‡‡‡‡‡‡‡‡‡1 '1‡‡j;''1‡' ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡M !‡‡‡‡‡‡‡‡‡‡' ^‡‡‡` .<‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡r .(‡‡‡‡‡‡‡' ;‡1" ,j‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡l >‡‡‡‡; `jl."1@‡‡‡‡‡‡‡ >‡‡‡‡‡‡‡‡‡‡- ‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡B. I‡z "^ t‡‡‡‡‡‡‡‡‡‡; I‡‡‡‡‡‡‡‡t c‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡x ./' ^/‡‡‡‡‡‡‡‡‡‡‡‡z. `""""". (‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡` `< Ir‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡! `‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ ‡‡‡‡‡‡‡‡‡‡‡, "^ ""1‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡i` ."1‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡!!!!!!!!!‡‡‡‡‡‡‡‡‡‡‡‡!{` !‡!!!!‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡x!!!!!!!!!!!!?M‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡>';#‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡u8‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡
```

View file

@ -1,5 +0,0 @@
ENCODER_ENABLE = no
MOUSEKEY_ENABLE = yes
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
SPACE_CADET_ENABLE = no

View file

@ -1,172 +0,0 @@
# plattfot's keymap for [Kyria](https://github.com/splitkb/kyria)
![Keyboard](https://i.imgur.com/mcefoHnh.jpg)
Designed to be ease of use when programming, typing in both English
and Swedish and navigating around in a tiling window manager, in my
case [sway](https://swaywm.org/). Uses the two rotary encoders (lower
left/right thumb row) as two palm buttons.
This keymap avoids [Mod-tap](https://docs.qmk.fm/#/mod_tap) as they do
not work for me. [Kyria](https://github.com/splitkb/kyria) has enough
thumb keys to make it work without them.
The symbols are split into two layers, one for each hand. Then the
layers are activated by the opposite thumb. Found that having all
symbols on one layer then have one thumb activate them made it awkward
to press keys with the index finger on the same hand.
Custom feature I call the close tap (Clotap) key, I based on a code
snippet from a
[reddit post](https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8).
When pressed, it will insert the closing equivivalent key and press
`←` (left arrow). For example tapping Clotap then press `(` will
result in the keypresses `()←`, if pressing `"` will result in `""←`,
if pressing `)` will result in `)←(`. Really nice to have when
programming, it is editor agnostic and saves me two keypresses (need
to press NAV+j for `←`). It also removes the need for having specific
macros for these as I had before.
# Base Layer: Default
```
// ,-------------------------------------------. ,-------------------------------------------.
// | Esc | Q | W | E | R | T | | Y | U | I | O | P | Del |
// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// | Tab | A | S | D | F | G | | H | J | K | L | ; | ' |
// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|BSpace| N | M | , | . | / | RShift |
// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// | MPlay| GUI | LCtrl| Space| LALT | | RCtrl| Enter| NAV | RALT |Scroll|
// | | | | | | | | | | | Lock |
// `----------------------------------' `----------------------------------'
```
Setup for using the
[EurKey](https://eurkey.steffen.bruentjen.eu/layout.html) layout. As
it's annoying to have to toggle us and swedish layout which shifts
symbols around.
AltGr is used to access the extra keys in the
[EurKey](https://eurkey.steffen.bruentjen.eu/layout.html) layout.
## Notable features on this layer
Left rotary encoder
- Press: play/pause
- Rotate: Volume control
Right rotary encoder
- Press: Scroll lock
- Rotate: Page up/Page down. Used mouse scrolling at first. But
scrolling only works in the window where the mouse pointer
is. Which kind of defeated the purpose of having the scroll
on the keyboard, as I still needed to move my hand to the
mouse and then I could just use the scroll on the mouse.
[Leader key](https://docs.qmk.fm/#/feature_leader_key) is mainly used
for jumping between workspaces. Otherwise I would need to use both
hands everytime I need to switch. With the leader key I can jump
between 1-5 with just the left hand.
# Lower Layer: Left symbols/Right function keys
```
// ,-------------------------------------------. ,-------------------------------------------.
// | | ! | @ | # | $ | % | | F6 | F7 | F8 | F9 | F10 | |
// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// | | | | _ | \ | - | + | | F12 | | | | | |
// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// | | ° | : | ( | ) | × | |ADJUST| | | |CLOTAP| | | | | |
// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// | | | | | | | | | | | |
// | | | | | | | | | | | |
// `----------------------------------' `----------------------------------'
```
Symbols for the left hand, function keys for the right hand.
I had the function keys at the bottom on the navigation layer. But it
was annoying when typing version strings. Hitting f1-5+f11 involved
both hands. And it turned out that my keybinding for closing a window
(Super+Shift+c) and rebooting my machine (Super+Shift+f3) ended up on
the same physical keys.
Splitting them up like this allows me to hit all the function keys
with just one hand and I wont accidentally reboot my machine when
trying to close a window.
## Notable features on this layer
Left rotary encoder
- Rotate: Skip next/previous song
Clotap on the right hand.
Has two Eurkey specific symbols `°` and `×` on the left hand.
# Raise Layer: Left function/Right symbols + state keys
```
// ,-------------------------------------------. ,-------------------------------------------.
// | | F1 | F2 | F3 | F4 | F5 | | ^ | & | * | ~ | ? | |
// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// | | | | | | F11 | | = | { | } | [ | ] | ` |
// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// | | | | | |CLOTAP| | | |ADJUST| | … | " | < | > | / |CapsLock|
// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// | Mute | | | | | | | | | |Insert|
// | | | | | | | | | | | |
// `----------------------------------' `----------------------------------'
```
Function keys for the left hand, symbols for the right hand.
This layer also includes caps lock and insert.
## Notable features on this layer
Left rotary encoder
- Press: mute
Right rotary encoder
- Press: Toggle insert mode
- Rotate: Scrolling between workspaces in `sway`.
Clotap on the left hand.
# Navigation Layer: Number keys, navigation
```
//
// ,-------------------------------------------. ,-------------------------------------------.
// | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// | | | | | | | | | Left | Up | Down | Right| |
// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// | | | | | | | | | | | | | | | | | |
// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// | | | | | | | | | | | |
// | | | | | | | | | | | |
// `----------------------------------' `----------------------------------'
```
Access to the number and the arrow keys. Got use to the number row
after using [ErgoDox](https://www.ergodox.io/) keyboards for a few
years. Do not feel I need a numpad layer, which seems to be quite
common with small keyboards like this.
# Adjust Layer: RGB
```
//
// ,-------------------------------------------. ,-------------------------------------------.
// | | | | | | | | | | | | | |
// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// | | TOG | SAI | HUI | VAI | MOD | | | | | | | |
// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// | | | | | | | | | | | |
// | | | | | | | | | | | |
// `----------------------------------' `----------------------------------'
```
Right now it only contains adjustment to the underglow. Activated by
holding down `RAISE` and `LOWER` at the same time.

View file

@ -1,52 +0,0 @@
/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
* Copyright 2020-2021 Fredrik Salomonsson <plattfot@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
#define ENCODER_DIRECTION_FLIP
// Fixing the skipping with the EC11K encoder
#define ENCODER_RESOLUTION 2
#define EE_HANDS
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
// Remove the delay for the OSL keys. Not using any other tap keys.
// Otherwise TAPPING_TERM_PER_KEY would be the way to go.
#define TAPPING_TERM 0

View file

@ -1,475 +0,0 @@
/* Copyright 2020-2021 Fredrik Salomonsson <plattfot@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "version.h"
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
// New keys
CLO_TAP, // Close the next key press
};
// Close tap feature based on a post from drashna
// https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8/
// Will insert the closing equivalent key and move the cursor inside.
// For example clo_tap and then ( will result in (|), where | is the
// cursor. For " it will be "|" as the close equivalent key is the
// same key.
enum close_tap_modes {
CLO_DISABLED = 0b000,
CLO_PRESSED = 0b001, // Close tap key is pressed
CLO_ACTIVE = 0b010, // Close tap next keypress
CLO_USED = 0b100, // Turn off when close tap key is released
};
#define CLO_RELEASE(flag) flag & ~CLO_PRESSED
static enum close_tap_modes close_tap_it = CLO_DISABLED;
enum layers {
_DEFAULT,
_LOWER,
_RAISE,
_NAV,
_ADJUST,
};
#define MO_ADJT MO(_ADJUST)
#define L_RAISE OSL(_RAISE)
#define L_LOWER OSL(_LOWER)
#define L_NAV MO(_NAV)
#define EU_TDOT RSA(KC_SLSH)
#define EU_CDOT RALT(KC_EQUAL)
#define EU_DEG RALT(KC_SCLN)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: Default
*
* ,-------------------------------------------. ,-------------------------------------------.
* | Esc | Q | W | E | R | T | | Y | U | I | O | P | Del |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Tab | A | S | D | F | G | | H | J | K | L | ; | ' |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|BSpace| N | M | , | . | / | RShift |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | MPlay| GUI | LCtrl| Space| LALT | | RCtrl| Enter| NAV | RALT |Scroll|
* | | | | | | | | | | | Lock |
* `----------------------------------' `----------------------------------'
*/
[_DEFAULT] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, QK_LEAD, L_RAISE, L_LOWER, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_MPLY,KC_LGUI,KC_LCTL, KC_SPACE, KC_LALT, KC_RCTL, KC_ENT, L_NAV, KC_RALT, KC_SCRL
),
/*
* Lower Layer: Left symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | ! | @ | # | $ | % | | F6 | F7 | F8 | F9 | F10 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | _ | \ | - | + | | F12 | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | ° | : | ( | ) | × | |ADJUST| | | |CLOTAP| | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_LOWER] = LAYOUT(
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, KC_PIPE, KC_UNDS, KC_BSLS, KC_MINS, KC_PLUS, KC_F12, _______, _______, _______, _______, _______,
_______, EU_DEG, KC_COLN, KC_LPRN, KC_RPRN, EU_CDOT, _______, MO_ADJT, _______, _______, CLO_TAP, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Raise Layer: Right symbols + state
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | ^ | & | * | ~ | ? | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | F11 | | = | { | } | [ | ] | ` |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | |CLOTAP| | | |ADJUST| | | " | < | > | / |CapsLock|
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | Mute | | | | | | | | | |Insert|
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_RAISE] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_CIRC, KC_AMPR, KC_ASTR, KC_TILDE,KC_QUES, _______,
_______, _______, _______, _______, _______, KC_F11, KC_EQUAL,KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_GRV,
_______, _______, _______, _______, _______, CLO_TAP, _______, _______, MO_ADJT, _______, EU_TDOT, KC_DQUO, KC_LT, KC_GT, _______, KC_CAPS,
KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS
),
/*
* Navigation Layer: Number/Function keys, navigation
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | | Left | Up | Down | Right| |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_NAV] = LAYOUT(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Adjust Layer: RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | TOG | SAI | HUI | VAI | MOD | | | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
// clang-format on
/* void keyboard_post_init_user(void) { */
/* rgblight_setrgb(51, 135, 204); */
/* } */
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (keycode) {
case CLO_TAP:
close_tap_it = close_tap_it & CLO_ACTIVE?
CLO_USED:
CLO_ACTIVE|CLO_PRESSED;
return false;
case QK_LEADER:
close_tap_it = CLO_DISABLED;
return true;
}
} else if (close_tap_it & CLO_ACTIVE &&
keycode != CLO_TAP &&
keycode != OSL(_RAISE) &&
keycode != OSL(_LOWER) &&
keycode != MO(_NAV)) {
close_tap_it = close_tap_it & CLO_PRESSED?
close_tap_it | CLO_USED:
CLO_DISABLED;
switch(keycode)
{
case KC_LPRN:
tap_code16(KC_RPRN);
tap_code16(KC_LEFT);
break;
case KC_RPRN:
tap_code16(KC_LEFT);
tap_code16(KC_LPRN);
break;
case KC_LCBR:
tap_code16(KC_RCBR);
tap_code16(KC_LEFT);
break;
case KC_RCBR:
tap_code16(KC_LEFT);
tap_code16(KC_LCBR);
break;
case KC_LBRC:
tap_code16(KC_RBRC);
tap_code16(KC_LEFT);
break;
case KC_RBRC:
tap_code16(KC_LEFT);
tap_code16(KC_LBRC);
break;
case KC_LT:
tap_code16(KC_GT);
tap_code16(KC_LEFT);
break;
case KC_GT:
tap_code16(KC_LEFT);
tap_code16(KC_LT);
break;
default:
tap_code16(keycode);
tap_code16(KC_LEFT);
break;
}
} else {
switch (keycode) {
case CLO_TAP:
close_tap_it = close_tap_it & CLO_USED?
CLO_DISABLED:
CLO_RELEASE(close_tap_it);
}
}
return true;
}
//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; }
// clang-format off
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);
}
// clang-format on
static void render_static_info(void) {
render_qmk_logo();
oled_write_P(PSTR("Kyria rev1.0\n"), false);
oled_write_P(PSTR("Keymap: plattfot v2\n"), false);
}
static void render_status(void) {
// QMK Logo and version information
render_qmk_logo();
oled_write_P(PSTR("Kyria rev1.0\n"), false);
oled_write_P(PSTR("v" QMK_VERSION "\n"), false);
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _DEFAULT:
oled_write_P(PSTR("base\n"), false);
break;
case _LOWER:
oled_write_P(PSTR("<-sym/fun->\n"), false);
break;
case _RAISE:
oled_write_P(PSTR("<-fun/sym->\n"), false);
break;
case _NAV:
oled_write_P(PSTR("num/nav\n"), false);
break;
case _ADJUST:
oled_write_P(PSTR("adjust\n"), false);
break;
default:
oled_write_P(PSTR("undefined\n"), false);
}
// Host Keyboard LED Status and Double tap
led_t led_state = host_keyboard_led_state();
if (led_state.num_lock) {
oled_write_P(PSTR("NUMLCK "), false);
} else if (close_tap_it) {
oled_write_P(PSTR("Close "), false);
} else {
oled_write_P(PSTR(" "), false);
}
if (led_state.caps_lock) {
oled_write_P(PSTR("CAPLCK "), false);
} else if (close_tap_it) {
oled_write_P(PSTR("Tap "), false);
} else {
oled_write_P(PSTR(" "), false);
}
oled_write_P(led_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_static_info();
}
return false;
}
#endif
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
switch (get_highest_layer(layer_state)) {
case _LOWER:
// Skip/Prev song
if (clockwise) {
tap_code(KC_MNXT);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
} else {
tap_code(KC_MPRV);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
}
break;
case _NAV:
// Brightness control
if (clockwise) {
tap_code(KC_BRIU);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
} else {
tap_code(KC_BRID);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
}
break;
default:
// Volume control
if (clockwise) {
tap_code(KC_VOLU);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
} else {
tap_code(KC_VOLD);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
}
break;
}
} else if (index == 1) {
switch (get_highest_layer(layer_state)) {
case _RAISE:
// Scroll through the workspaces
if (clockwise) {
tap_code16(G(KC_GT));
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
} else {
tap_code16(G(KC_LT));
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
}
break;
default:
// Scrolling
if (clockwise) {
tap_code(KC_PGDN);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
} else {
tap_code(KC_PGUP);
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
}
break;
}
}
return true;
}
#endif
void leader_end_user(void) {
// Sway navigation
if (leader_sequence_one_key(KC_Q)) { // Jump to workspace 1
SEND_STRING(SS_LGUI("1"));
}
if (leader_sequence_one_key(KC_W)) { // Jump to workspace 2
SEND_STRING(SS_LGUI("2"));
}
if (leader_sequence_one_key(KC_E)) { // Jump to workspace 3
SEND_STRING(SS_LGUI("3"));
}
if (leader_sequence_one_key(KC_R)) { // Jump to workspace 4
SEND_STRING(SS_LGUI("4"));
}
if (leader_sequence_one_key(KC_T)) { // Jump to workspace 5
SEND_STRING(SS_LGUI("5"));
}
if (leader_sequence_one_key(KC_Y)) { // Jump to workspace 6
SEND_STRING(SS_LGUI("6"));
}
if (leader_sequence_one_key(KC_U)) { // Jump to workspace 7
SEND_STRING(SS_LGUI("7"));
}
if (leader_sequence_one_key(KC_I)) { // Jump to workspace 8
SEND_STRING(SS_LGUI("8"));
}
if (leader_sequence_one_key(KC_O)) { // Jump to workspace 9
SEND_STRING(SS_LGUI("9"));
}
if (leader_sequence_one_key(KC_P)) { // Jump to workspace 0
SEND_STRING(SS_LGUI("0"));
}
if (leader_sequence_one_key(KC_G)) { // View scratch pad
SEND_STRING(SS_LGUI("-"));
}
// Sway move window
if (leader_sequence_two_keys(KC_M, KC_Q)) { // Move to workspace 1
SEND_STRING(SS_LSFT(SS_LGUI("1")));
}
if (leader_sequence_two_keys(KC_M, KC_W)) { // Move to workspace 2
SEND_STRING(SS_LSFT(SS_LGUI("2")));
}
if (leader_sequence_two_keys(KC_M, KC_E)) { // Move to workspace 3
SEND_STRING(SS_LSFT(SS_LGUI("3")));
}
if (leader_sequence_two_keys(KC_M, KC_R)) { // Move to workspace 4
SEND_STRING(SS_LSFT(SS_LGUI("4")));
}
if (leader_sequence_two_keys(KC_M, KC_T)) { // Move to workspace 5
SEND_STRING(SS_LSFT(SS_LGUI("5")));
}
if (leader_sequence_two_keys(KC_M, KC_Y)) { // Move to workspace 6
SEND_STRING(SS_LSFT(SS_LGUI("6")));
}
if (leader_sequence_two_keys(KC_M, KC_U)) { // Move to workspace 7
SEND_STRING(SS_LSFT(SS_LGUI("7")));
}
if (leader_sequence_two_keys(KC_M, KC_I)) { // Move to workspace 8
SEND_STRING(SS_LSFT(SS_LGUI("8")));
}
if (leader_sequence_two_keys(KC_M, KC_O)) { // Move to workspace 9
SEND_STRING(SS_LSFT(SS_LGUI("9")));
}
if (leader_sequence_two_keys(KC_M, KC_P)) { // Move to workspace 0
SEND_STRING(SS_LSFT(SS_LGUI("0")));
}
if (leader_sequence_two_keys(KC_M, KC_G)) { // Move to scratch pad
SEND_STRING(SS_LSFT(SS_LGUI("-")));
}
}

View file

@ -1,5 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
LEADER_ENABLE = yes # Enable the Leader Key feature
MOUSEKEY_ENABLE = no # Disable mouse, need to save space.

View file

@ -1,35 +0,0 @@
/* 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
#ifdef RGBLIGHT_ENABLE
# 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
#endif
#define TAPPING_TOGGLE 2 // can double tap into a layer if set using TT
#define TAPPING_TERM 175

View file

@ -1,315 +0,0 @@
/* 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
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 MO(_SYM_DVERTY)
#define NAV MO(_NAV)
#define FKEYS MO(_FUNCTION)
#define ADJUST MO(_ADJUST)
#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_SPC MT(MOD_LSFT, KC_SPC)
#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
// 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/| Nav | | Sym |Enter/| RGUI | AltGr| Menu |
* | | | |LShift| | | | Ctrl | | | |
* `----------------------------------' `----------------------------------'
*/
[_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 , SFT_SPC ,NAV, SYM_DVERTY, CTL_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_SCRL, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* 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, _______, _______, _______, _______, _______
),
/*
* 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.
*/
#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 rev2\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 _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;
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

View file

@ -1,2 +0,0 @@
ENCODER_ENABLE = no
RGBLIGHT_ENABLE = yes

View file

@ -1,38 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP
#endif

View file

@ -1,242 +0,0 @@
/* 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
enum layers {
QWERTY = 0,
LOWER,
RAISE,
ADJUST
};
enum custom_keycodes {
RGBRST = SAFE_RANGE,
KC_RACL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | BSPC |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | TAB/ADJ| A | S | D | F | G | | H | J | K | L | ; : | ENTER |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LSHIFT | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | F16 |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | Space| | MYCM | Calc | F15 | | |
* | | | Ctrl | LAlt | Lower| | Raise| | | | |
* `----------------------------------' `----------------------------------'
*/
[QWERTY] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
LT(ADJUST,KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_F16,
XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, LT(LOWER,KC_SPC), LT(RAISE,KC_MYCM), KC_CALC, KC_F15, XXXXXXX, XXXXXXX
),
/*
* Lower Layer: Numbers and symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ` | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | DEL |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | CAPS | - _ | = + | [ { | ] } | | | | | | | ' " | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LSHIFT | TAB | | | | | | | | | | Home | PgDn | PgUp | End | \ | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | Space| | Space| | | | |
* | | | Ctrl | LAlt | Lower| | | | | | |
* `----------------------------------' `----------------------------------'
*/
[LOWER] = LAYOUT(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_CAPS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_QUOT, KC_NO,
KC_LSFT, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_BSLS, KC_NO,
_______, _______, _______, _______, _______, KC_SPC, KC_NO, KC_NO, _______, _______
),
/*
* Raise Layer: Function Keys
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | |EEPRST| | | | | | | | | | F12 |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LSHIFT | TAB | QK_BOOT| | | | | | | | | Play | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | Space| | MYCM | Prev | Next | | |
* | | | Ctrl | LAlt | | | Raise| | | | |
* `----------------------------------' `----------------------------------'
*/
[RAISE] = LAYOUT(
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_NO, KC_NO, EE_CLR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
KC_LSFT, KC_TAB, QK_BOOT, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_MPLY, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
_______, _______, _______, _______, KC_SPC , KC_MPRV, KC_MNXT, _______, _______, _______
),
/*
* Adjust Layer: Arrow keys, RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | BTN2 | Up | BTN1 |RGBMOD|RGBTOG| | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | Left | Down | Right|RGBSAI|RGBHUI| | | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | RGBRST | |RGBVAI|RGBVAD|RGBSAD|RGBHUD| | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | WBAK | BTN3 | WFWD | | MYCM | Calc | F15 | | |
* | | | | | | | Raise| | | | |
* `----------------------------------' `----------------------------------'
*/
[ADJUST] = LAYOUT(
KC_NO, KC_BTN2, KC_UP, KC_BTN1, RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, RGB_SAI, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
RGBRST, KC_NO, RGB_VAI, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
_______, _______, KC_WBAK, KC_BTN3, KC_WFWD, _______, _______, _______, _______, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, LOWER, RAISE, ADJUST);
}
// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// switch (keycode) {
// case MyCustomKeycode:
// if (record->event.pressed) {
// // What to do if the button was pressed
// } else {
// // What to do if the button was released
// }
// break;
// }
// return true;
// }
#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[] = {
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_tessachka_logo(void) {
static const char PROGMEM Tessachka_OLED_Logo_Inverted[] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192,
192, 192, 192, 64, 0, 0, 128, 128, 192, 192, 192, 192, 192, 192, 64, 0, 0,
128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 64, 0, 0, 128, 192, 192, 192,
192, 192, 192, 192, 192, 192, 64, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0,
0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192, 192, 128, 0, 0,
192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 0, 192, 128, 0, 0,
0, 0, 128, 192, 192, 128, 0, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 255, 255, 255, 127, 1, 1, 1, 0, 24, 126, 255, 255, 219,
219, 153, 153, 153, 137, 128, 128, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153,
249, 240, 224, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153, 249, 240, 224, 0,
0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 60, 255, 255, 231, 195,
129, 0, 0, 0, 129, 195, 195, 195, 0, 255, 255, 255, 24, 24, 24, 24, 24,
24, 255, 255, 255, 0, 255, 255, 255, 28, 62, 127, 247, 227, 193, 128, 0, 0,
0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3, 3, 3, 1, 0, 0,
0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, 0, 0, 1, 3, 3,
3, 3, 3, 3, 3, 3, 1, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,
0, 1, 3, 3, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0,
0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 1, 3,
0, 0, 0, 0, 1, 3, 3, 1, 0, 3, 3, 3, 3, 3, 3, 1, 0,
0, 1, 3, 3, 0, 0, 0, 0, 0, 0
};
oled_write_raw_P(Tessachka_OLED_Logo_Inverted, sizeof(Tessachka_OLED_Logo_Inverted));
oled_advance_page(false);
oled_advance_page(false);
oled_advance_page(false);
}
static void render_status(void) {
// Logo and version information
render_tessachka_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;
default:
oled_write_P(PSTR("Undefined\n"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_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

View file

@ -1,3 +0,0 @@
OLED_ENABLE = yes
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MOUSEKEY_ENABLE = yes

View file

@ -1,56 +0,0 @@
/* 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_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#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_EFFECT_TWINKLE
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP
#endif
// EC11K encoders have a different resolution than other EC11 encoders.
// When using the default resolution of 4, if you notice your encoder skipping
// every other tick, lower the resolution to 2.
#define ENCODER_RESOLUTION 2
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
#define TAPPING_TERM 200
// Allows to use either side as the master. Look at the documentation for info:
// https://docs.qmk.fm/#/config_options?id=setting-handedness
#define EE_HANDS
// Allows media codes to properly register in macros and rotary encoder code
#define TAP_CODE_DELAY 10

View file

@ -1,354 +0,0 @@
/* 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
uint16_t copy_paste_timer;
enum layers {
QWERTY = 0,
LOWER,
RAISE,
NAV,
ADJUST
};
enum custom_keycodes {
KC_CCCV = SAFE_RANGE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | LSFT | A | S | D | F | G | | H | J | K | L | ; : | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LCTL | Z | X | C | V | B | CCCV | | | Del |Leader| N | M | , < | . > | / ? | - _ |
* `----------------------+------+------+------+------+ | |------+------+------+------+------+----------------------'
* | GUI | Alt | | Space| Enter| | Bspc | Space| | Tab | AltGr|
* | | | Lower| Shift| Alt | | | Nav | Raise| | |
* `----------------------------------' `----------------------------------'
*/
[QWERTY] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_CCCV, XXXXXXX, KC_DEL, QK_LEAD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
KC_LGUI, KC_LALT, MO(LOWER), MT(MOD_LSFT, KC_SPC), MT(MOD_LALT, KC_ENT), KC_BSPC, LT(NAV, KC_SPC), MO(RAISE), KC_TAB, KC_RALT
),
/*
* Lower Layer: Numpad, Media
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | VolUp| | | | / ? | 7 & | 8 * | 9 ( | - _ | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | Prev | Play | Next | | | * | 4 $ | 5 % | 6 ^ | , < | + |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | VolDn| Mute | | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = + | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | Lower| | | | | Nav | Raise| | |
* `----------------------------------' `----------------------------------'
*/
[LOWER] = LAYOUT(
_______, _______, _______, KC_VOLU, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_ASTR, KC_4, KC_5, KC_6, KC_COMM, KC_PLUS,
_______, _______, _______, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_EQL, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Raise Layer: Symbols
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | ! | @ | { | } | | | | | _ | | | | \ |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | Lower| | | | | Nav | Raise| | |
* `----------------------------------' `----------------------------------'
*/
[RAISE] = LAYOUT(
_______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_UNDS, ALGR(KC_5),_______,_______,KC_BSLS,
_______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Navigation Layer
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | PgUp | Home | Up | End | | ScrlLk |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | PgDn | Left | Down | Right| | CapsLk |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | | | | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | Lower| | | | | Nav | Raise| | |
* `----------------------------------' `----------------------------------'
*/
[NAV] = LAYOUT(
_______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, KC_SCRL,
_______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_CAPS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
* Adjust Layer
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | | | | | | | F7 | F8 | F9 | F10 | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | SAI | HUI | VAI | | | | F4 | F5 | F6 | F11 | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | SAD | HUD | VAD | | | | | | | | F1 | F2 | F3 | F12 | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, KC_F4, KC_F5, KC_F6, KC_F11, _______,
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
// /*
// * Layer template
// *
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
};
layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, LOWER, RAISE, ADJUST);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_CCCV: // One key copy/paste
if (record->event.pressed) {
copy_paste_timer = timer_read();
} else {
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
tap_code16(LCTL(KC_C));
} else { // Tap, paste
tap_code16(LCTL(KC_V));
}
}
break;
}
return true;
}
void leader_end_user(void) {
if (leader_sequence_one_key(KC_C)) { // Inline Code
SEND_STRING("`` " SS_TAP(X_LEFT) SS_TAP(X_LEFT));
}
if (leader_sequence_one_key(KC_P)) { // Invoke Password Manager
SEND_STRING(SS_LCTL(SS_LALT("\\")));
}
if (leader_sequence_one_key(KC_S)) { // Windows screenshot
SEND_STRING(SS_LGUI("\nS"));
}
if (leader_sequence_two_keys(KC_F, KC_P)) { // Fusion Projection prefix
SEND_STRING("[Projection] ");
}
if (leader_sequence_two_keys(KC_B, KC_B)) { // Basecone invoice description
SEND_STRING("[Leveranciersnaam] [Factuurnummer]");
}
if (leader_sequence_two_keys(KC_E, KC_S)) { // Support email splitkb
SEND_STRING("support@splitkb.com");
}
if (leader_sequence_two_keys(KC_E, KC_T)) { // Email splitkb
SEND_STRING("thomas@splitkb.com");
}
if (leader_sequence_two_keys(KC_E, KC_P)) { // Email personal
SEND_STRING("mail@thomasbaart.nl");
}
if (leader_sequence_two_keys(KC_S, KC_D)) { // Splitkb documentation
SEND_STRING("https://docs.splitkb.com/");
}
if (leader_sequence_two_keys(KC_S, KC_V)) { // Splitkb VAT number
SEND_STRING("NL210593349B01");
}
if (leader_sequence_two_keys(KC_B, KC_C)) { // Discord bongocat
SEND_STRING(":bongocat:\n");
}
if (leader_sequence_two_keys(KC_C, KC_B)) { // Discord code block
SEND_STRING("```c" SS_LSFT("\n\n") "``` " SS_TAP(X_UP));
}
if (leader_sequence_two_keys(KC_Y, KC_S)) { // Greeting
SEND_STRING("Yours sincerely,\n\nThomas Baart");
}
if (leader_sequence_three_keys(KC_M, KC_V, KC_G)) { // Greeting
SEND_STRING("Met vriendelijke groet,\n\nThomas Baart");
}
}
bool is_alt_tab_active = false;
uint16_t alt_tab_timer = 0;
void matrix_scan_user(void) {
if (is_alt_tab_active) {
if (timer_elapsed(alt_tab_timer) > 1000) {
unregister_code(KC_LALT);
is_alt_tab_active = false;
}
}
}
#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[] = {
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 NAV:
oled_write_P(PSTR("Navigation\n"), false);
break;
case ADJUST:
oled_write_P(PSTR("Adjust\n"), false);
break;
default:
oled_write_P(PSTR("Undefined\n"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_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
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
switch (get_highest_layer(layer_state)) {
case QWERTY:
// History scrubbing. For Adobe products, hold shift while moving
// backward to go forward instead.
if (clockwise) {
tap_code16(C(KC_Z));
} else {
tap_code16(C(KC_Y));
}
break;
default:
// Switch between windows on Windows with alt tab.
if (clockwise) {
if (!is_alt_tab_active) {
is_alt_tab_active = true;
register_code(KC_LALT);
}
alt_tab_timer = timer_read();
tap_code16(KC_TAB);
} else {
tap_code16(S(KC_TAB));
}
break;
}
} else if (index == 1) {
switch (get_highest_layer(layer_state)) {
case QWERTY:
// Scrolling with PageUp and PgDn.
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
break;
default:
// Volume control.
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
}
}
return true;
}
#endif

View file

@ -1,5 +0,0 @@
OLED_ENABLE = yes
ENCODER_ENABLE = yes # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
LEADER_ENABLE = yes # Enable the Leader Key feature
MOUSEKEY_ENABLE = no

View file

@ -1,42 +0,0 @@
/* Copyright 2022 TravisHi
*
* 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_ENABLE
#define OLED_DISPLAY_128X64
#endif
#ifdef RGBLIGHT_ENABLE
#define RGBLIGHT_LAYERS
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP
#endif
// The Leader key allows to flexibly assign macros to key sequences.
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 350
#define TAPPING_TERM 200
// Allows to use either side as the master. Look at the documentation for info:
// https://docs.qmk.fm/#/config_options?id=setting-handedness
#define EE_HANDS
// Allows media codes to properly register in macros and rotary encoder code
#define TAP_CODE_DELAY 10

View file

@ -1,423 +0,0 @@
/* Copyright 2022 TravisHi
*
* 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
enum layers {
DVORAK = 0,
QWERTY,
LAYERS,
NUMSYM,
FPSGAMES,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: DVORAK
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | ' " | , < | . | P | Y | | F | G | C | R | L |L_Qwerty|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Tab | A | O | E | U | I | | D | H | T | N | S | - |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | : ; | Q | J | K | X |LCtrl | | | Win |L_Lay | B | M | W | V | Z | RShift |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | Left |Right |L_NumS| Space| Bksp | |R_Alt | ENTER| Del | Up | Down |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[DVORAK] = LAYOUT(
KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, DF(QWERTY),
KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCTL, XXXXXXX, KC_LWIN, DF(LAYERS), KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
KC_LEFT, KC_RGHT, MO(NUMSYM), KC_SPC, KC_BSPC, KC_RALT, KC_ENT, KC_DEL, KC_UP, KC_DOWN
),
/*
* Base Layer: QWERTY
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | Q | W | E | R | T | | Y | U | I | O | P |L_Dvorak|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Tab | A | S | D | F | G | | H | J | K | L | ; : | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B |LCtrl | | | Win |L_Lay | N | M | , < | . > | / ? | RShift |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | Left |Right |L_NumS| Space| Bksp | | RAlt | ENTER| Del | Up | Down |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[QWERTY] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, DF(DVORAK),
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, XXXXXXX, KC_LWIN, DF(LAYERS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LEFT, KC_RGHT, MO(NUMSYM), KC_SPC, KC_BSPC, KC_RALT, KC_ENT, KC_DEL, KC_UP, KC_DOWN
),
/*
* Base Layer: FPSGAMES
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ESC | 1 | Q | W | E | R | | Y | U | I | O | P |L_Dvorak|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Tab | 2 | A | S | D | F | | H | K | J | L | ; | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | LShift | 3 | Z | X | C | V | |L_NumS| | |L_Lay | N | M | , < | . > | / ? | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | LCtrl| Space| LAlt | | | | Mute |Vol U |Vol D |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[FPSGAMES] = LAYOUT(
KC_ESC, KC_1, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, DF(DVORAK),
KC_TAB, KC_2, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX,
KC_LSFT, KC_3, KC_Z, KC_X, KC_C, KC_V, XXXXXXX, MO(NUMSYM), XXXXXXX, DF(LAYERS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
XXXXXXX, XXXXXXX, KC_LCTL, KC_SPC, KC_LALT, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_VOLD
),
/*
* MO Layer: Numbers, symbols & Vol control
*
* ,-------------------------------------------. ,-------------------------------------------.
* | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | ~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | \ | : | ; | - | [ | { | ( | | ) | } | ] | _ | , | . | / | ? |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | Left |Right | |LShift| Home | | End | | Mute |Vol U |Vol D |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[NUMSYM] = LAYOUT(
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
KC_PIPE, KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
KC_LEFT, KC_RGHT, XXXXXXX, KC_LSFT, KC_HOME, KC_END, XXXXXXX, KC_MUTE, KC_VOLU, KC_VOLD
),
/*
* Adjust Layer: Layer index
*
* ,-------------------------------------------. ,-------------------------------------------.
* | | | |FPSGames|Dvorak| | | | | | | |L_Dvorak|
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | |QWERTY| | | | | | | | |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
* | | | | |NUMSYM| | | | | | | | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | | | | | | | |
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
*/
[LAYERS] = LAYOUT(
_______, _______, _______, DF(FPSGAMES), DF(DVORAK), _______, _______, _______, _______, _______, _______, DF(DVORAK),
_______, _______, _______, _______, DF(QWERTY), _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, MO(NUMSYM), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
// END LAYERS
///////////////////////////
// OLED Display settings
#ifdef OLED_ENABLE
// WPM-responsive animation stuff here
# define IDLE_FRAMES 2
# define IDLE_SPEED 20 // below this wpm value your animation will idle
// #define PREP_FRAMES 1 // uncomment if >1
# define TAP_FRAMES 2
# define TAP_SPEED 40 // above this wpm value typing animation to trigger
# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
# define ANIM_SIZE 1024 // number of bytes in array, minimize for adequate firmware size, max is 1024
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
uint8_t current_idle_frame = 0;
// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
uint8_t current_tap_frame = 0;
// Code containing pixel art, contains:
// 5 idle frames, 1 prep frame, and 2 tap frames
// To make your own pixel art:
// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
// replace numbers in brackets with your own
// if you start getting errors when compiling make sure you didn't accedentally delete a bracket
static void render_anim(void) {
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 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, 0x40,
0x40, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0xc0, 0x80, 0x80, 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, 0xc0, 0x60, 0x30,
0x18, 0x0c, 0x06, 0x02, 0xc2, 0x42, 0x62, 0x22, 0x22, 0x24, 0x2f, 0x39, 0x31, 0x60, 0xe0, 0x10,
0x10, 0x08, 0x88, 0xcc, 0x44, 0x66, 0x23, 0x21, 0x31, 0x10, 0x98, 0x89, 0x8b, 0x0e, 0x08, 0x10,
0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x60, 0x18,
0xe4, 0x1a, 0xe4, 0x1a, 0xcc, 0x30, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x78, 0x08, 0x08, 0x0c, 0x84, 0x9f, 0xe0, 0xb0,
0x98, 0x08, 0x0c, 0x04, 0x04, 0x04, 0xe6, 0xe2, 0xf2, 0xf2, 0xb2, 0xb3, 0xe1, 0xe1, 0xc1, 0x81,
0xe3, 0xbf, 0x81, 0xc0, 0x40, 0x40, 0x60, 0xa0, 0xbe, 0x3f, 0x1b, 0x9b, 0x8f, 0xcf, 0x66, 0x32,
0x9e, 0xb1, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0f, 0x08, 0x08, 0x10,
0xd0, 0x70, 0x08, 0x0e, 0x02, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x11, 0x89, 0xcb, 0x4b, 0x4b, 0x8b, 0x87, 0x91, 0x4b, 0x45,
0xe0, 0xa0, 0xb0, 0xd0, 0x51, 0x79, 0xad, 0xb4, 0xd6, 0x5a, 0x6b, 0x2d, 0x34, 0x96, 0xfb, 0xa9,
0xbd, 0x46, 0x66, 0x33, 0x19, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x70, 0x1c, 0x07,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20,
0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x38, 0xe0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x20,
0x20, 0x20, 0x60, 0xc0, 0x80, 0x80, 0x80, 0x87, 0x8c, 0x88, 0x99, 0xd2, 0x5a, 0x6a, 0x29, 0x2d,
0x34, 0x94, 0x96, 0x9a, 0xcb, 0x49, 0x69, 0x2c, 0xb4, 0x96, 0x9a, 0x8b, 0x4d, 0x45, 0x46, 0x42,
0x21, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0e, 0x0b, 0x09, 0x04, 0x04, 0x04, 0x04,
0x02, 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1e, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x06, 0x0e, 0x0a, 0x1a, 0x1b, 0x35, 0x65, 0x45,
0x45, 0xc3, 0x82, 0x82, 0x81, 0x01, 0x01, 0x01, 0x00, 0x10, 0xf0, 0xf8, 0xf8, 0x78, 0x18, 0x00,
0x00, 0x80, 0xe0, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0xc0, 0x20, 0x50, 0x10, 0xa0, 0x20, 0x40,
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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40,
0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x06,
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60,
0x40, 0x80, 0x80, 0xc0, 0x41, 0x63, 0x26, 0x3c, 0x10, 0x48, 0x88, 0xab, 0x29, 0x70, 0xc0, 0x88,
0x8e, 0xcf, 0x47, 0x43, 0x41, 0x40, 0x60, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x18, 0x08, 0x08,
0x0c, 0x05, 0x06, 0x02, 0x0c, 0x19, 0x3c, 0x29, 0x6a, 0x44, 0x44, 0xc5, 0x84, 0x04, 0x02, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0b, 0x0b, 0x36, 0x28, 0x2f, 0x2c, 0x29, 0x1a, 0x1c, 0x18, 0x1d, 0x16, 0x0a, 0x07,
0x01, 0x02, 0x02, 0x06, 0x06, 0x0e, 0x0e, 0x1e, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03,
0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 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, 0x40,
0x40, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0xc0, 0x80, 0x80, 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, 0xc0, 0x60, 0x30,
0x18, 0x0c, 0x06, 0x02, 0xc2, 0x42, 0x62, 0x22, 0x22, 0x24, 0x2f, 0x39, 0x31, 0x60, 0xe0, 0x10,
0x10, 0x08, 0x88, 0xcc, 0x44, 0x66, 0x23, 0x21, 0x31, 0x10, 0x98, 0x89, 0x8b, 0x0e, 0x08, 0x10,
0x20, 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, 0xf0, 0x98, 0x66, 0x0d, 0x72, 0x0d, 0x72, 0x0c, 0x30, 0x08,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x78, 0x08, 0x08, 0x0c, 0x84, 0x9f, 0xe0, 0xb0,
0x98, 0x08, 0x0c, 0x04, 0x04, 0x04, 0xe6, 0xe2, 0xf2, 0xf2, 0xb2, 0xb3, 0xe1, 0xe1, 0xc1, 0x81,
0xe3, 0xbf, 0x81, 0xc0, 0x40, 0x40, 0x60, 0xa0, 0xbe, 0x3f, 0x1b, 0x9b, 0x8f, 0xcf, 0x66, 0x32,
0x9e, 0xb1, 0x40, 0x40, 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, 0x01, 0x01, 0x07, 0x04, 0xf8, 0x08, 0x08, 0x04, 0x04,
0x07, 0x0c, 0xf8, 0x80, 0x00, 0xfc, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x11, 0x89, 0xcb, 0x4b, 0x4b, 0x8b, 0x87, 0x91, 0x4b, 0x45,
0xe0, 0xa0, 0xb0, 0xd0, 0x51, 0x79, 0xad, 0xb4, 0xd6, 0x5a, 0x6b, 0x2d, 0x34, 0x96, 0xfb, 0x29,
0x3d, 0x16, 0x16, 0x13, 0x11, 0x10, 0x30, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20,
0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02,
0x00, 0x00, 0x00, 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, 0x38, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x3c, 0xe7, 0x8c, 0x38, 0xe0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x87, 0x8c, 0x88, 0x99, 0xd2, 0x5a, 0x6a, 0x29, 0x2d,
0x34, 0x94, 0x96, 0x9a, 0xcb, 0x49, 0x69, 0x2c, 0xb4, 0x96, 0x9a, 0x8b, 0x4d, 0x45, 0x46, 0x42,
0x20, 0x20, 0x20, 0x60, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04,
0x0a, 0x12, 0x22, 0x21, 0x41, 0x81, 0x01, 0x00, 0x00, 0x04, 0x1c, 0xfc, 0x3c, 0x0c, 0x00, 0x00,
0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x07, 0x3c,
0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x82, 0x87, 0x85, 0x8d, 0x49, 0x49, 0x49,
0x6c, 0x24, 0x24, 0x24, 0x24, 0x14, 0x14, 0x16, 0x12, 0x0a, 0x0a, 0x0a, 0x0b, 0x05, 0x05, 0x05,
0x05, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x02, 0x06, 0x04, 0x04, 0x0c, 0x08,
0x18, 0x20, 0xe0, 0xf0, 0x90, 0x18, 0xc9, 0x0e, 0x44, 0x92, 0x22, 0x2a, 0x4a, 0x9c, 0xb0, 0xe0,
0x60, 0x04, 0x07, 0x87, 0x83, 0x81, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40,
0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
0x04, 0x03, 0x03, 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0x80, 0x80,
0x80, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x18, 0x08, 0x08,
0x0c, 0x05, 0x02, 0x02, 0x0d, 0x1a, 0x3b, 0x2b, 0x6a, 0x46, 0x47, 0xc6, 0x87, 0x05, 0x02, 0x01,
0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0a, 0x0a, 0x32, 0x22, 0x25, 0x29, 0x21, 0x15, 0x10, 0x15, 0x10, 0x12, 0x08, 0x05,
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, 0x01, 0x01, 0x01, 0x03,
0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10}
};
// assumes 1 frame prep stage
void animation_phase(void) {
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
}
if (get_current_wpm() != 000) {
oled_on(); // not essential but turns on animation OLED with any alpha keypress
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animation_phase();
}
anim_sleep = timer_read32();
}
else {
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animation_phase();
}
}
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}
static void render_keymap(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(default_layer_state)) {
case DVORAK:
oled_write_P(PSTR("Dvorak\n\n"), false);
oled_write_P(PSTR("' , . p y f g c r l \n"), false);
oled_write_P(PSTR("a o e i u d h t n s \n"), false);
oled_write_P(PSTR("; q j k x b m w v z \n"), false);
break;
case QWERTY:
oled_write_P(PSTR("Qwerty\n\n"), false);
oled_write_P(PSTR("q w e r t y u i o p \n"), false);
oled_write_P(PSTR("a s d f g h j k l ; \n"), false);
oled_write_P(PSTR("z x c v b n m , . / \n"), false);
break;
case NUMSYM:
oled_write_P(PSTR("Num & Sym\n\n"), false);
oled_write_P(PSTR("`12345 | 67890= \n"), false);
oled_write_P(PSTR("~!@#$P | ^&*()+ \n"), false);
oled_write_P(PSTR("|\\:;-[{ }]_,./? \n"), false);
break;
case FPSGAMES:
oled_write_P(PSTR("FPS Games \n\n"), false);
oled_write_P(PSTR("1 q W e r | \n"), false);
oled_write_P(PSTR("2 A S D f | \n"), false);
oled_write_P(PSTR("3 z x c v | \n"), false);
break;
case LAYERS:
oled_write_P(PSTR("Index Layer\n\n"), false);
oled_write_P(PSTR("- - G D - | - - - - - \n"), false);
oled_write_P(PSTR("- - - Q - | - - - - - \n"), false);
oled_write_P(PSTR("- - - N - | - - - - - \n"), false);
break;
default:
oled_write_P(PSTR("ERR No Layer!\n"), false);
}
}
// Host Keyboard LED Status
/*
static void render_indicator_status(void) {
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
}
*/
bool oled_task_user(void) {
if (is_keyboard_master()) {
render_keymap();
} else {
//render_indicator_status();
//oled_write_P(PSTR(" Kyria rev1.4\n\n"), false);
render_anim(); // renders pixelart
}
return false;
}
#endif

View file

@ -1,99 +0,0 @@
# Introduction
This keyboard layout centers around Dvorak, harnesing the power of the Kyria thumb
clusters and layers to reduce finger and wrist movement.
## IMPORTANT NOTE
This keymap will only work if you have all the kyria keys available! If you've used 2u keys on the thumb cluster, or have broken off a column, this layout will not work!
---
## Features
- **Dvorak:** So you don't have to leave the home row so much.
- **Qwerty:** So you don't have to remap common programs.
- **Custom FPS gaming layer:** Because the WASD stagger is so extreme on the Kyria.
- **A number layer:** To access numbers, symbols and volume controls.
- **Index Layer:** To help navigate thru base layers without wasting accessible keys.
- And a very *very* rare **fren** to tag along on your adventures.
## Guiding ideology
- Use lower thumb keys as much as possible.
- Minimise home row departure.
- Minimize or eliminate non home row pinkie finger use.
- Create macros for very common key shortcuts (ctrl + c/v/s, ctrl+shift+home etc.).
- Create macros for very common commands (git status, git pull, git push etc.).
- Use hints to indicate current layer (rgb lighting/OLED display).
- Allow graceful layer handling (emergency return to default layer/layer index layer).
---
# Current Layers
- Base1: dvorak
- Base2: qwerty
- Base3: Gaming layer (WASD is too staggered on Kyria)
- MO layer: Number, Symbol & volume control layer
## Future Layers
- F keys
- FE macros
- Git macros
---
# Issues
### Major
- [x] None
### Minor
- [ ] Backlight LEDs dont indicate layer
- [ ] Not fully using thumb clusters
- [ ] Function keys and indicators missing (NUM, CAPS, SCROLL)
- [ ] No Macro layers
---
# Helpful Links
- QMK Docs https://docs.qmk.fm/#/
- [Keymap diagram editor for the Kyria](http://www.keyboard-layout-editor.com/##@_name=Kyria%3B&@_y:0.25&x:3&a:7%3B&=&_x:9%3B&=%3B&@_y:-0.75&x:2%3B&=&_x:1%3B&=&_x:7%3B&=&_x:1%3B&=%3B&@_y:-0.875&x:5%3B&=&_x:5%3B&=%3B&@_y:-0.625%3B&=&=&_x:13%3B&=&=%3B&@_y:-0.75&x:3%3B&=&_x:9%3B&=%3B&@_y:-0.75&x:2%3B&=&_x:1%3B&=&_x:7%3B&=&_x:1%3B&=%3B&@_y:-0.875&x:5%3B&=&_x:5%3B&=%3B&@_y:-0.625%3B&=&=&_x:13%3B&=&=%3B&@_y:-0.75&x:3%3B&=&_x:9%3B&=%3B&@_y:-0.75&x:2%3B&=&_x:1%3B&=&_x:7%3B&=&_x:1%3B&=%3B&@_y:-0.875&x:5%3B&=&_x:5%3B&=%3B&@_y:-0.625%3B&=&=&_x:13%3B&=&=%3B&@_y:-0.5&x:2.5%3B&=&_x:10%3B&=%3B&@_rx:4&ry:8.175&y:-4.675000000000001&x:-0.5%3B&=%3B&@_rx:13&y:-4.675000000000001&x:-0.5%3B&=%3B&@_r:15&rx:4&y:-4.675000000000001&x:-0.5%3B&=%3B&@_r:30&y:-2&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:45&y:-2&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:-45&rx:13&y:-5.675000000000001&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:-30&y:-2&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:-15&y:-1&x:-0.5%3B&=)
- [Thomas' Guide for creating OLED images](https://docs.splitkb.com/hc/en-us/articles/360013811280)
- [Image converter](https://javl.github.io/image2cpp/)
---
## Useful notes
Various useful info for setting up your own keyboard layout.
### Install QMK Tool steps
[QMK Setup (Windows)](https://docs.qmk.fm/#/newbs_getting_started)
- Install QMK MSYS,
- Install Toolbox,
- Using QMK MSYS, follow the setup guide, then `cd` to where you've cloned the `qmk_firmware` folder,
- `qmk compile` to generate your .hex file (it should be located in the `qmk_firmware` folder),
- Using QMK Toolbox, flash the .hex file to your keyboard halves (drag your hex file into the toolbox window, press the reset button on the keyboard, the toolbox should detect this, then press flash. You need to reset each half separately).
- Congrats, all done!
---
### Layer template
```
// * ,-------------------------------------------. ,-------------------------------------------.
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
// * | | | | | | | | | | | | | |
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
// * | | | | | | | | | | | | | | | | | |
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
// * | | | | | | | | | | | |
// * | | | | | | | | | | | |
// * `----------------------------------' `----------------------------------'
// */
// [_LAYERINDEX] = LAYOUT(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// ),
```

View file

@ -1,11 +0,0 @@
# Enabled features
LEADER_ENABLE = yes
RGBLIGHT_ENABLE = yes
OLED_ENABLE = yes
WPM_ENABLE = yes
# Disabled features
ENCODER_ENABLE = no # Enables the use of one or more encoders
MOUSEKEY_ENABLE = no