diff options
| author | john-ezra <47311764+john-ezra@users.noreply.github.com> | 2021-10-02 07:50:55 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-02 07:50:55 -0700 |
| commit | 79ad30a9d59c897b8aefb4dad755d74d9f32f15f (patch) | |
| tree | 9167017ce300823f6096383d35fab6e90899394a /keyboards | |
| parent | 54b8d6a89182390533ccd1cb715fbaf59720bf3e (diff) | |
| download | qmk_firmware-79ad30a9d59c897b8aefb4dad755d74d9f32f15f.tar.gz qmk_firmware-79ad30a9d59c897b8aefb4dad755d74d9f32f15f.zip | |
[Keymap] Updates to Personal Kyria Keymap (#14669)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'keyboards')
| -rw-r--r-- | keyboards/splitkb/kyria/keymaps/john-ezra/config.h | 22 | ||||
| -rw-r--r-- | keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c | 276 | ||||
| -rw-r--r-- | keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c | 130 | ||||
| -rw-r--r-- | keyboards/splitkb/kyria/keymaps/john-ezra/oled.c | 540 | ||||
| -rw-r--r-- | keyboards/splitkb/kyria/keymaps/john-ezra/readme.md | 20 | ||||
| -rw-r--r-- | keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk | 7 |
6 files changed, 851 insertions, 144 deletions
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/config.h b/keyboards/splitkb/kyria/keymaps/john-ezra/config.h index 77f095767..70b41675a 100644 --- a/keyboards/splitkb/kyria/keymaps/john-ezra/config.h +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/config.h | |||
| @@ -16,19 +16,15 @@ | |||
| 16 | 16 | ||
| 17 | #pragma once | 17 | #pragma once |
| 18 | 18 | ||
| 19 | #ifdef OLED_DRIVER_ENABLE | 19 | #define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c" |
| 20 | #define OLED_DISPLAY_128X64 | 20 | #define OLED_FONT_END 255 |
| 21 | #endif | 21 | #define OLED_TIMEOUT 30000 |
| 22 | #define OLED_DISPLAY_128X64 | ||
| 22 | 23 | ||
| 23 | #ifdef RGBLIGHT_ENABLE | 24 | #ifdef RGBLIGHT_ENABLE |
| 24 | #define RGBLIGHT_EFFECT_RAINBOW_MOOD | 25 | #define RGBLIGHT_HUE_STEP 5 |
| 25 | #define RGBLIGHT_EFFECT_RAINBOW_SWIRL | 26 | #define RGBLIGHT_SAT_STEP 5 |
| 26 | #define RGBLIGHT_EFFECT_STATIC_GRADIENT | 27 | #define RGBLIGHT_VAL_STEP 5 |
| 27 | #define RGBLIGHT_EFFECT_TWINKLE | ||
| 28 | |||
| 29 | #define RGBLIGHT_HUE_STEP 8 | ||
| 30 | #define RGBLIGHT_SAT_STEP 8 | ||
| 31 | #define RGBLIGHT_VAL_STEP 8 | ||
| 32 | #define RGBLIGHT_LIMIT_VAL 150 | 28 | #define RGBLIGHT_LIMIT_VAL 150 |
| 33 | #endif | 29 | #endif |
| 34 | 30 | ||
| @@ -38,3 +34,7 @@ | |||
| 38 | #define TAPPING_TERM 125 | 34 | #define TAPPING_TERM 125 |
| 39 | 35 | ||
| 40 | #define SPLIT_WPM_ENABLE | 36 | #define SPLIT_WPM_ENABLE |
| 37 | |||
| 38 | #define USB_POLLING_INTERVAL_MS 1 | ||
| 39 | |||
| 40 | #define DEBUG_MATRIX_SCAN_RATE | ||
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c b/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c new file mode 100644 index 000000000..86fb5d86e --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c | |||
| @@ -0,0 +1,276 @@ | |||
| 1 | /* Copyright 2021 John Ezra | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include "progmem.h" | ||
| 18 | |||
| 19 | static const unsigned char font[] PROGMEM = { | ||
| 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 21 | 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, | ||
| 22 | 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, | ||
| 23 | 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, | ||
| 24 | 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, | ||
| 25 | 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, | ||
| 26 | 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, | ||
| 27 | 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, | ||
| 28 | 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, | ||
| 29 | 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, | ||
| 30 | 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, | ||
| 31 | 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, | ||
| 32 | 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, | ||
| 33 | 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, | ||
| 34 | 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, | ||
| 35 | 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, | ||
| 36 | 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, | ||
| 37 | 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, | ||
| 38 | 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, | ||
| 39 | 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, | ||
| 40 | 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, | ||
| 41 | 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, | ||
| 42 | 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, | ||
| 43 | 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, | ||
| 44 | 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, | ||
| 45 | 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, | ||
| 46 | 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, | ||
| 47 | 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, | ||
| 48 | 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, | ||
| 49 | 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, | ||
| 50 | 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, | ||
| 51 | 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, | ||
| 52 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 53 | 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, | ||
| 54 | 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, | ||
| 55 | 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, | ||
| 56 | 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, | ||
| 57 | 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, | ||
| 58 | 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, | ||
| 59 | 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, | ||
| 60 | 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, | ||
| 61 | 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, | ||
| 62 | 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, | ||
| 63 | 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, | ||
| 64 | 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, | ||
| 65 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, | ||
| 66 | 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, | ||
| 67 | 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, | ||
| 68 | 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, | ||
| 69 | 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, | ||
| 70 | 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, | ||
| 71 | 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, | ||
| 72 | 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, | ||
| 73 | 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, | ||
| 74 | 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, | ||
| 75 | 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, | ||
| 76 | 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, | ||
| 77 | 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, | ||
| 78 | 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||
| 79 | 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, | ||
| 80 | 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, | ||
| 81 | 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, | ||
| 82 | 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, | ||
| 83 | 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, | ||
| 84 | 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, | ||
| 85 | 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, | ||
| 86 | 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, | ||
| 87 | 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, | ||
| 88 | 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, | ||
| 89 | 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, | ||
| 90 | 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, | ||
| 91 | 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, | ||
| 92 | 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, | ||
| 93 | 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, | ||
| 94 | 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, | ||
| 95 | 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, | ||
| 96 | 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, | ||
| 97 | 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, | ||
| 98 | 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, | ||
| 99 | 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, | ||
| 100 | 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, | ||
| 101 | 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, | ||
| 102 | 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, | ||
| 103 | 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, | ||
| 104 | 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, | ||
| 105 | 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, | ||
| 106 | 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, | ||
| 107 | 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, | ||
| 108 | 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, | ||
| 109 | 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, | ||
| 110 | 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, | ||
| 111 | 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, | ||
| 112 | 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, | ||
| 113 | 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, | ||
| 114 | 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, | ||
| 115 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, | ||
| 116 | 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, | ||
| 117 | 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, | ||
| 118 | 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, | ||
| 119 | 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, | ||
| 120 | 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, | ||
| 121 | 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, | ||
| 122 | 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, | ||
| 123 | 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, | ||
| 124 | 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, | ||
| 125 | 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, | ||
| 126 | 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, | ||
| 127 | 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, | ||
| 128 | 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, | ||
| 129 | 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, | ||
| 130 | 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, | ||
| 131 | 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, | ||
| 132 | 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, | ||
| 133 | 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, | ||
| 134 | 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, | ||
| 135 | 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, | ||
| 136 | 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, | ||
| 137 | 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, | ||
| 138 | 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, | ||
| 139 | 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, | ||
| 140 | 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, | ||
| 141 | 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, | ||
| 142 | 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, | ||
| 143 | 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, | ||
| 144 | 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, | ||
| 145 | 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, | ||
| 146 | 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, | ||
| 147 | 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, | ||
| 148 | 0x00, 0xF0, 0x08, 0x24, 0x52, 0xE2, | ||
| 149 | 0x42, 0x42, 0x42, 0xE2, 0x52, 0x22, | ||
| 150 | 0x24, 0x22, 0x42, 0x82, 0x02, 0x02, | ||
| 151 | 0x22, 0x22, 0x02, 0x02, 0xFE, 0x00, | ||
| 152 | 0x00, 0xF0, 0x08, 0x04, 0x02, 0x82, | ||
| 153 | 0x42, 0x22, 0x42, 0x82, 0x02, 0x02, | ||
| 154 | 0x04, 0x82, 0x42, 0x22, 0x12, 0x22, | ||
| 155 | 0x42, 0x82, 0x02, 0x02, 0xFE, 0x00, | ||
| 156 | 0x00, 0xF0, 0x08, 0x84, 0x42, 0x42, | ||
| 157 | 0x82, 0x82, 0x42, 0x42, 0x42, 0x82, | ||
| 158 | 0x04, 0x82, 0xC2, 0xE2, 0xF2, 0xE2, | ||
| 159 | 0xC2, 0x82, 0x02, 0x02, 0xFE, 0x00, | ||
| 160 | 0x00, 0xF0, 0x08, 0x44, 0x42, 0xF2, | ||
| 161 | 0x42, 0x42, 0x42, 0xF2, 0x42, 0x42, | ||
| 162 | 0x04, 0x82, 0xE2, 0x92, 0x92, 0x92, | ||
| 163 | 0xE2, 0x82, 0x02, 0x02, 0xFE, 0x00, | ||
| 164 | 0x00, 0xF0, 0x08, 0x84, 0x82, 0x02, | ||
| 165 | 0x82, 0x02, 0x02, 0x82, 0x82, 0x02, | ||
| 166 | 0x02, 0x02, 0x82, 0x82, 0x02, 0x02, | ||
| 167 | 0xE2, 0x12, 0x12, 0xE2, 0x02, 0x62, | ||
| 168 | 0x92, 0x92, 0x22, 0x02, 0xFE, 0x00, | ||
| 169 | 0x00, 0xF0, 0x08, 0x04, 0xF2, 0x02, | ||
| 170 | 0x02, 0x02, 0xF2, 0x02, 0x82, 0x02, | ||
| 171 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x22, | ||
| 172 | 0xF2, 0x02, 0x02, 0xE2, 0x12, 0x12, | ||
| 173 | 0x12, 0xE2, 0x02, 0x02, 0xFE, 0x00, | ||
| 174 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 175 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 176 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 177 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 178 | 0x02, 0xFE, 0x00, 0x00, 0xF0, 0x08, | ||
| 179 | 0x02, 0xFE, 0x00, 0x00, 0xF0, 0xF8, | ||
| 180 | 0x00, 0x7F, 0x40, 0x44, 0x4A, 0x47, | ||
| 181 | 0x42, 0x42, 0x42, 0x47, 0x4A, 0x44, | ||
| 182 | 0x40, 0x40, 0x40, 0x40, 0x41, 0x42, | ||
| 183 | 0x44, 0x44, 0x40, 0x40, 0x7F, 0x00, | ||
| 184 | 0x00, 0x7F, 0x40, 0x40, 0x41, 0x40, | ||
| 185 | 0x40, 0x40, 0x40, 0x40, 0x41, 0x40, | ||
| 186 | 0x41, 0x41, 0x4F, 0x48, 0x48, 0x48, | ||
| 187 | 0x4F, 0x41, 0x41, 0x40, 0x7F, 0x00, | ||
| 188 | 0x00, 0x7F, 0x40, 0x41, 0x42, 0x42, | ||
| 189 | 0x42, 0x41, 0x41, 0x42, 0x42, 0x41, | ||
| 190 | 0x40, 0x40, 0x40, 0x4B, 0x4B, 0x4B, | ||
| 191 | 0x40, 0x40, 0x40, 0x40, 0x7F, 0x00, | ||
| 192 | 0x00, 0x7F, 0x40, 0x42, 0x42, 0x4F, | ||
| 193 | 0x42, 0x42, 0x42, 0x4F, 0x42, 0x42, | ||
| 194 | 0x40, 0x4F, 0x4F, 0x4F, 0x48, 0x4F, | ||
| 195 | 0x4F, 0x4F, 0x40, 0x40, 0x7F, 0x00, | ||
| 196 | 0x00, 0x7F, 0x40, 0x4F, 0x40, 0x4F, | ||
| 197 | 0x40, 0x4F, 0x44, 0x4A, 0x4A, 0x4F, | ||
| 198 | 0x48, 0x47, 0x48, 0x48, 0x45, 0x40, | ||
| 199 | 0x47, 0x48, 0x48, 0x47, 0x40, 0x44, | ||
| 200 | 0x48, 0x48, 0x47, 0x40, 0x7F, 0x00, | ||
| 201 | 0x00, 0x7F, 0x40, 0x40, 0x47, 0x48, | ||
| 202 | 0x47, 0x48, 0x47, 0x40, 0x4E, 0x40, | ||
| 203 | 0x4F, 0x41, 0x41, 0x4E, 0x40, 0x48, | ||
| 204 | 0x4F, 0x48, 0x40, 0x47, 0x48, 0x48, | ||
| 205 | 0x48, 0x47, 0x40, 0x40, 0x7F, 0x00, | ||
| 206 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 207 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 208 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 209 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 210 | 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x40, | ||
| 211 | 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F, | ||
| 212 | 0x00, 0xF0, 0xF8, 0xDC, 0xAE, 0x1E, | ||
| 213 | 0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE, | ||
| 214 | 0xDC, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, | ||
| 215 | 0xDE, 0xDE, 0xFE, 0xFE, 0xFE, 0x00, | ||
| 216 | 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0x7E, | ||
| 217 | 0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, | ||
| 218 | 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E, | ||
| 219 | 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, | ||
| 220 | 0x00, 0xF0, 0xF8, 0x7C, 0xBE, 0xBE, | ||
| 221 | 0x7E, 0x7E, 0xBE, 0xBE, 0xBE, 0x7E, | ||
| 222 | 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E, | ||
| 223 | 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, | ||
| 224 | 0x00, 0xF0, 0xF8, 0xBC, 0xBE, 0x0E, | ||
| 225 | 0xBE, 0xBE, 0xBE, 0x0E, 0xBE, 0xBE, | ||
| 226 | 0xFC, 0x7E, 0x1E, 0x6E, 0x6E, 0x6E, | ||
| 227 | 0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, | ||
| 228 | 0x00, 0xF0, 0xF8, 0x7C, 0x7E, 0xFE, | ||
| 229 | 0x7E, 0xFE, 0xFE, 0x7E, 0x7E, 0xFE, | ||
| 230 | 0xFE, 0xFE, 0x7E, 0x7E, 0xFE, 0xFE, | ||
| 231 | 0x1E, 0xEE, 0xEE, 0x1E, 0xFE, 0x9E, | ||
| 232 | 0x6E, 0x6E, 0xDE, 0xFE, 0xFE, 0x00, | ||
| 233 | 0x00, 0xF0, 0xF8, 0xFC, 0x0E, 0xFE, | ||
| 234 | 0xFE, 0xFE, 0x0E, 0xFE, 0x7E, 0xFE, | ||
| 235 | 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xDE, | ||
| 236 | 0x0E, 0xFE, 0xFE, 0x1E, 0xEE, 0xEE, | ||
| 237 | 0xEE, 0x1E, 0xFE, 0xFE, 0xFE, 0x00, | ||
| 238 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 239 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 240 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 241 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 242 | 0xFE, 0xFE, 0x00, 0x00, 0xF0, 0x08, | ||
| 243 | 0xFE, 0xFE, 0x00, 0x00, 0xF0, 0xF8, | ||
| 244 | 0x00, 0x7F, 0x7F, 0x7B, 0x75, 0x78, | ||
| 245 | 0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B, | ||
| 246 | 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, | ||
| 247 | 0x7B, 0x7B, 0x7F, 0x7F, 0x7F, 0x00, | ||
| 248 | 0x00, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, | ||
| 249 | 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, | ||
| 250 | 0x7E, 0x7E, 0x70, 0x70, 0x70, 0x70, | ||
| 251 | 0x70, 0x7E, 0x7E, 0x7F, 0x7F, 0x00, | ||
| 252 | 0x00, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D, | ||
| 253 | 0x7D, 0x7E, 0x7E, 0x7D, 0x7D, 0x7E, | ||
| 254 | 0x7F, 0x7F, 0x7F, 0x74, 0x74, 0x74, | ||
| 255 | 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, | ||
| 256 | 0x00, 0x7F, 0x7F, 0x7D, 0x7D, 0x70, | ||
| 257 | 0x7D, 0x7D, 0x7D, 0x70, 0x7D, 0x7D, | ||
| 258 | 0x7F, 0x70, 0x70, 0x70, 0x77, 0x70, | ||
| 259 | 0x70, 0x70, 0x7F, 0x7F, 0x7F, 0x00, | ||
| 260 | 0x00, 0x7F, 0x7F, 0x70, 0x7F, 0x70, | ||
| 261 | 0x7F, 0x70, 0x7B, 0x75, 0x75, 0x70, | ||
| 262 | 0x77, 0x78, 0x77, 0x77, 0x7A, 0x7F, | ||
| 263 | 0x78, 0x77, 0x77, 0x78, 0x7F, 0x7B, | ||
| 264 | 0x77, 0x77, 0x78, 0x7F, 0x7F, 0x00, | ||
| 265 | 0x00, 0x7F, 0x7F, 0x7F, 0x78, 0x77, | ||
| 266 | 0x78, 0x77, 0x78, 0x7F, 0x71, 0x7F, | ||
| 267 | 0x70, 0x7E, 0x7E, 0x71, 0x7F, 0x77, | ||
| 268 | 0x70, 0x77, 0x7F, 0x78, 0x77, 0x77, | ||
| 269 | 0x77, 0x78, 0x7F, 0x7F, 0x7F, 0x00, | ||
| 270 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 271 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 272 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 273 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 274 | 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x40, | ||
| 275 | 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F, | ||
| 276 | }; | ||
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c index f42cbf1d0..6937007e5 100644 --- a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c | |||
| @@ -1,23 +1,25 @@ | |||
| 1 | /* Copyright 2021 John Ezra | 1 | /* Copyright 2021 John Ezra |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 2 of the License, or | 5 | * the Free Software Foundation, either version 2 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | #include QMK_KEYBOARD_H | 17 | #include QMK_KEYBOARD_H |
| 18 | 18 | ||
| 19 | enum kyria_layers { | 19 | enum kyria_layers { |
| 20 | _HNTS, | 20 | _HNTS, |
| 21 | _GAME, | ||
| 22 | _NUMPAD, | ||
| 21 | _LOWER, | 23 | _LOWER, |
| 22 | _RAISE, | 24 | _RAISE, |
| 23 | _ADJUST | 25 | _ADJUST |
| @@ -25,20 +27,27 @@ enum kyria_layers { | |||
| 25 | 27 | ||
| 26 | enum kyria_keycodes { | 28 | enum kyria_keycodes { |
| 27 | HNTS = SAFE_RANGE, | 29 | HNTS = SAFE_RANGE, |
| 30 | ESC_NUM, | ||
| 28 | LOWER, | 31 | LOWER, |
| 29 | RAISE, | 32 | RAISE, |
| 33 | MSS_CTL, | ||
| 30 | CPY_PST, | 34 | CPY_PST, |
| 31 | UNDO, | 35 | UNDO, |
| 32 | FIND | 36 | FIND |
| 33 | }; | 37 | }; |
| 34 | 38 | ||
| 35 | #define HNTS DF(_HNTS) | 39 | #define HNTS DF(_HNTS) |
| 36 | #define QWERTY DF(_QWERTY) | 40 | #define GAME TG(_GAME) |
| 41 | #define NUMPAD TG(_NUMPAD) | ||
| 42 | #define MSS_CTL MT(MOD_LCTL, C(KC_UP)) | ||
| 37 | #define BSP_CMD MT(MOD_LGUI, KC_BSPC) | 43 | #define BSP_CMD MT(MOD_LGUI, KC_BSPC) |
| 44 | #define TAB_CMD MT(MOD_LGUI, KC_TAB) | ||
| 38 | #define SFT_ENT MT(MOD_LSFT, KC_ENT) | 45 | #define SFT_ENT MT(MOD_LSFT, KC_ENT) |
| 46 | #define ALT_ESC MT(MOD_LALT, KC_ESC) | ||
| 47 | #define ALT_TAB A(KC_TAB) | ||
| 39 | #define UNDO G(KC_Z) | 48 | #define UNDO G(KC_Z) |
| 40 | #define FIND G(KC_F) | 49 | #define FIND G(KC_F) |
| 41 | #define MSS_CTL C(KC_UP) | 50 | |
| 42 | 51 | ||
| 43 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 52 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 44 | 53 | ||
| @@ -52,15 +61,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 52 | * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| | 61 | * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| |
| 53 | * | Undo | K | V | M | F | G | Esc |MssnCtl| |MssnCtl| Esc | J | ; : | , < | . > | / ? | ' " | | 62 | * | Undo | K | V | M | F | G | Esc |MssnCtl| |MssnCtl| Esc | J | ; : | , < | . > | / ? | ' " | |
| 54 | * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' | 63 | * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' |
| 55 | * | Ctrl | Alt | Lower | Space | BSPC | | Tab | Shift | Raise | Del | Caps | | 64 | * | Numpad| Enter | Lower | Space | BSPC | | Tab | Shift | Raise | Del | Caps | |
| 56 | * `---------------------------------------' `---------------------------------------' | 65 | * `---------------------------------------' `---------------------------------------' |
| 57 | */ | 66 | */ |
| 58 | 67 | ||
| 59 | [_HNTS] = LAYOUT( | 68 | [_HNTS] = LAYOUT( |
| 60 | FIND, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_BSLS, | 69 | FIND, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_BSLS, |
| 61 | CPY_PST, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_GRV, | 70 | CPY_PST, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_GRV, |
| 62 | UNDO, KC_K, KC_V, KC_M, KC_F, KC_G, KC_ESC, MSS_CTL, MSS_CTL, KC_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, | 71 | 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, |
| 63 | KC_LCTL, KC_LALT, LOWER, KC_SPC, BSP_CMD, KC_TAB, SFT_ENT, RAISE, KC_DEL, KC_CAPS | 72 | NUMPAD, SFT_ENT, LOWER, KC_SPC, BSP_CMD, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS |
| 73 | ), | ||
| 74 | |||
| 75 | /* | ||
| 76 | * Game: Gaming Layer | ||
| 77 | * | ||
| 78 | * ,-----------------------------------------------. ,-----------------------------------------------. | ||
| 79 | * | 0 | Z | R | L | D | W | | Y | P | U | X | Q | Esc | | ||
| 80 | * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| | ||
| 81 | * | 1 | H | N | T | S | C | | B | I | E | O | A | Enter | | ||
| 82 | * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| | ||
| 83 | * | 2 | K | V | M | F | G | 8 | 9 | |Default| Esc | J | ; : | , < | . > | / ? |Alt+Tab| | ||
| 84 | * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' | ||
| 85 | * | 3 | 4 | 5 | 6 | 7 | | Tab | Shift | Raise | Del | Caps | | ||
| 86 | * `---------------------------------------' `---------------------------------------' | ||
| 87 | */ | ||
| 88 | |||
| 89 | [_GAME] = LAYOUT( | ||
| 90 | KC_0, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_ESC, | ||
| 91 | KC_1, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_ENT, | ||
| 92 | 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, | ||
| 93 | KC_3, KC_4, KC_5, KC_6, KC_7, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS | ||
| 94 | ), | ||
| 95 | |||
| 96 | /* | ||
| 97 | * Numpad | ||
| 98 | * | ||
| 99 | * ,-----------------------------------------------. ,-----------------------------------------------. | ||
| 100 | * | * | + | 7 | 8 | 9 | 0 | | | | | | | | | ||
| 101 | * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| | ||
| 102 | * | / | - | 4 | 5 | 6 | ( | | | Left | Up | Down | Right | | | ||
| 103 | * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| | ||
| 104 | * | = | . | 1 | 2 | 3 | ) | | | | | | | | | | | | | ||
| 105 | * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' | ||
| 106 | * | | | | | | | | | | | | | ||
| 107 | * `---------------------------------------' `---------------------------------------' | ||
| 108 | */ | ||
| 109 | |||
| 110 | [_NUMPAD] = LAYOUT( | ||
| 111 | KC_ASTR, KC_PLUS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______, | ||
| 112 | KC_SLSH, KC_MINS, KC_4, KC_5, KC_6, KC_LPRN, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, | ||
| 113 | KC_EQL, KC_DOT, KC_1, KC_2, KC_3, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 114 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 64 | ), | 115 | ), |
| 65 | 116 | ||
| 66 | /* | 117 | /* |
| @@ -105,26 +156,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 105 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | 156 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |
| 106 | ), | 157 | ), |
| 107 | 158 | ||
| 108 | /* | 159 | /* |
| 109 | * Adjust: Function Keys & RGB | 160 | * Adjust: Function Keys & RGB |
| 110 | * | 161 | * |
| 111 | * ,-----------------------------------------------. ,-----------------------------------------------. | 162 | * ,-----------------------------------------------. ,-----------------------------------------------. |
| 112 | * | Reset | | | | | | | | NKRO |CG SWAP| | | HNTS | | 163 | * | Reset | | | | | | | | NKRO |CG SWAP| | | HNTS | |
| 113 | * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| | 164 | * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| |
| 114 | * | | TOG | SAI | HUI | VAI | MOD | | | | | | | | | 165 | * | | TOG | SAI | HUI | VAI | MOD | | |Bright+|Bright-| | | | |
| 115 | * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| | 166 | * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| |
| 116 | * | | | SAD | HUD | VAD | RMOD | | | | | | | |Bright+|Bright-| | | | 167 | * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | |
| 117 | * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' | 168 | * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' |
| 118 | * | | | | | | | | | | | | | 169 | * | | | | | | | | | | | | |
| 119 | * `---------------------------------------' `---------------------------------------' | 170 | * `---------------------------------------' `---------------------------------------' |
| 120 | */ | 171 | */ |
| 121 | 172 | ||
| 122 | [_ADJUST] = LAYOUT( | 173 | [_ADJUST] = LAYOUT( |
| 123 | RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, HNTS, | 174 | RESET, _______, _______, _______, _______, _______, _______, NK_TOGG, CG_TOGG, _______, GAME, HNTS, |
| 124 | _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, CG_TOGG, NK_TOGG, KC_BRID, KC_BRIU, _______, _______, | 175 | _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_BRIU, KC_BRID, _______, _______, _______, |
| 125 | _______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | 176 | _______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 126 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | 177 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |
| 127 | ), | 178 | ), |
| 179 | |||
| 128 | }; | 180 | }; |
| 129 | 181 | ||
| 130 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 182 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
| @@ -167,6 +219,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 167 | } | 219 | } |
| 168 | } | 220 | } |
| 169 | break; | 221 | break; |
| 222 | case MSS_CTL: | ||
| 223 | if (record->event.pressed && record->tap.count) { | ||
| 224 | tap_code16(C(KC_UP)); | ||
| 225 | return false; | ||
| 226 | } | ||
| 227 | break; | ||
| 170 | case UNDO: // Tap to Undo, Tap with GUI to Redo | 228 | case UNDO: // Tap to Undo, Tap with GUI to Redo |
| 171 | if (get_mods() & MOD_MASK_GUI) { | 229 | if (get_mods() & MOD_MASK_GUI) { |
| 172 | if (record->event.pressed) { | 230 | if (record->event.pressed) { |
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c b/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c index e02783912..fe9c96d55 100644 --- a/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c | |||
| @@ -1,18 +1,18 @@ | |||
| 1 | /* Copyright 2021 John Ezra | 1 | /* Copyright 2021 John Ezra |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 2 of the License, or | 5 | * the Free Software Foundation, either version 2 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | //Sets up what the OLED screens display. | 17 | //Sets up what the OLED screens display. |
| 18 | 18 | ||
| @@ -26,7 +26,7 @@ int vert_count = 0; | |||
| 26 | 26 | ||
| 27 | //============= USER CONFIG PARAMS =============== | 27 | //============= USER CONFIG PARAMS =============== |
| 28 | float max_wpm = 150.0f; //WPM value at the top of the graph window | 28 | float max_wpm = 150.0f; //WPM value at the top of the graph window |
| 29 | int graph_refresh_interval = 80; //in milliseconds | 29 | int graph_refresh_interval = 100; //in milliseconds |
| 30 | int graph_area_fill_interval = 3; //determines how dense the horizontal lines under the graph line are; lower = more dense | 30 | int graph_area_fill_interval = 3; //determines how dense the horizontal lines under the graph line are; lower = more dense |
| 31 | int vert_interval = 3; //determines frequency of vertical lines under the graph line | 31 | int vert_interval = 3; //determines frequency of vertical lines under the graph line |
| 32 | bool vert_line = false; //determines whether to draw vertical lines | 32 | bool vert_line = false; //determines whether to draw vertical lines |
| @@ -34,110 +34,456 @@ int graph_line_thickness = 2; //determines thickness of graph line in pixels | |||
| 34 | //============= END USER PARAMS =============== | 34 | //============= END USER PARAMS =============== |
| 35 | 35 | ||
| 36 | #ifdef OLED_ENABLE | 36 | #ifdef OLED_ENABLE |
| 37 | oled_rotation_t oled_init_user(oled_rotation_t rotation) { | 37 | oled_rotation_t oled_init_user(oled_rotation_t rotation) { |
| 38 | return OLED_ROTATION_180; | 38 | return OLED_ROTATION_180; |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | static void render_qmk_logo(void) { | 41 | static void render_qmk_logo(void) { |
| 42 | static const char PROGMEM qmk_logo[] = { | 42 | static const char PROGMEM qmk_logo[] = { |
| 43 | 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, | 43 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x7e, 0xf0, 0xf0, 0xfe, 0xf0, 0x70, 0x7e, |
| 44 | 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, | 44 | 0x70, 0xf0, 0xfe, 0xf0, 0xf0, 0x7e, 0x70, 0x70, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 45 | 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; | 45 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 46 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 47 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 49 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 51 | 0x00, 0x92, 0x92, 0x92, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, | ||
| 52 | 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x92, 0x92, 0x92, 0x00, 0x00, | ||
| 53 | 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0xfe, 0xfe, 0x1c, 0x38, 0x70, 0xe0, | ||
| 54 | 0x70, 0x38, 0x1c, 0xfe, 0xfe, 0x00, 0xfe, 0xfe, 0xe0, 0xf0, 0xb8, 0x1c, 0x0e, 0x06, 0x00, 0x00, | ||
| 55 | 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0xe6, 0xe6, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, | ||
| 56 | 0x60, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0xe0, 0xc0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00, 0xf0, 0xf0, | ||
| 57 | 0x00, 0xc0, 0xe0, 0x70, 0xe0, 0xc0, 0x00, 0xf0, 0xf0, 0x00, 0x20, 0xb0, 0x90, 0xb0, 0xf0, 0xe0, | ||
| 58 | 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x60, 0x00, 0xc0, 0xe0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00, | ||
| 59 | 0x00, 0x24, 0x24, 0x24, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xf1, 0xe3, 0xe3, 0x00, 0x00, | ||
| 60 | 0x00, 0xe3, 0xe3, 0xf1, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x24, 0x24, 0x24, 0x00, 0x00, | ||
| 61 | 0x03, 0x07, 0x0e, 0x0c, 0x0c, 0x1c, 0x1e, 0x17, 0x13, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, | ||
| 62 | 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x00, | ||
| 63 | 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, | ||
| 64 | 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x0f, | ||
| 65 | 0x0f, 0x07, 0x01, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x01, 0x00, 0x07, 0x0f, 0x0c, 0x04, 0x0f, 0x0f, | ||
| 66 | 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0d, 0x09, 0x09, 0x0d, 0x04, 0x00, | ||
| 67 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, | ||
| 68 | 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||
| 75 | }; | ||
| 76 | oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); | ||
| 77 | } | ||
| 78 | |||
| 79 | // Loop to create line by line rendering for Horizontal display | ||
| 80 | // Input is oled_render_image(how many rows tall, how many pixels wide, what to render, X pos, Y pos, Frame offset) | ||
| 81 | void oled_render_image(int lines, int px, const char render_line[][px], int X_pos, int Y_pos, int frame) { | ||
| 82 | for (uint8_t i = 0; i < lines; i++){ | ||
| 83 | oled_set_cursor(X_pos, Y_pos + i); | ||
| 84 | oled_write_raw_P(render_line[i + frame], px); | ||
| 85 | } | ||
| 86 | } | ||
| 87 | |||
| 88 | static void render_layers(void) { | ||
| 89 | static const char PROGMEM layer_background_r1[1][38] = { | ||
| 90 | {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42, | ||
| 91 | 0x42, 0x42, 0x22, 0x22, 0x22, 0x42, 0x42, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, | ||
| 92 | 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe} | ||
| 93 | }; | ||
| 94 | static const char PROGMEM layer_background_r2[1][38] = { | ||
| 95 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x20, 0x20, 0x20, 0x40, | ||
| 96 | 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x11, 0x11, 0x11, 0xaa, 0xaa, | ||
| 97 | 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff} | ||
| 98 | }; | ||
| 99 | static const char PROGMEM layer_background_r3[1][38] = { | ||
| 100 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x44, | ||
| 101 | 0x44, 0x44, 0x88, 0x88, 0x88, 0x44, 0x44, 0x44, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0xaa, 0xaa, | ||
| 102 | 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff} | ||
| 103 | }; | ||
| 104 | static const char PROGMEM layer_background_r4[1][38] = { | ||
| 105 | {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x44, | ||
| 106 | 0x44, 0x44, 0x48, 0x48, 0x48, 0x44, 0x44, 0x44, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40, | ||
| 107 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f} | ||
| 108 | }; | ||
| 109 | static const char PROGMEM base[1][38] = { | ||
| 110 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3e, 0x3e, 0x3e, 0x7c, | ||
| 111 | 0x7c, 0x7c, 0xf8, 0xf8, 0xf8, 0x7c, 0x7c, 0x7c, 0x3e, 0x3e, 0x3e, 0x1f, 0x1f, 0x1f, 0xae, 0xae, | ||
| 112 | 0xae, 0x44, 0x44, 0x44, 0x00, 0xff} | ||
| 113 | }; | ||
| 114 | static const char PROGMEM lower[2][38] = { | ||
| 115 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe2, 0xe2, 0xe2, 0xc4, | ||
| 116 | 0xc4, 0xc4, 0x88, 0x88, 0x88, 0xc4, 0xc4, 0xc4, 0xe2, 0xe2, 0xe2, 0xf1, 0xf1, 0xf1, 0xea, 0xea, | ||
| 117 | 0xea, 0x44, 0x44, 0x44, 0x00, 0xff}, | ||
| 118 | {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x43, 0x43, 0x43, 0x47, | ||
| 119 | 0x47, 0x47, 0x4f, 0x4f, 0x4f, 0x47, 0x47, 0x47, 0x43, 0x43, 0x43, 0x41, 0x41, 0x41, 0x40, 0x40, | ||
| 120 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f} | ||
| 121 | }; | ||
| 122 | static const char PROGMEM raise[][38] = { | ||
| 123 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe0, 0xe0, 0xe0, 0xc0, | ||
| 124 | 0xc0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xf1, 0xf1, 0xf1, 0xea, 0xea, | ||
| 125 | 0xea, 0x44, 0x44, 0x44, 0x00, 0xff}, | ||
| 126 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x23, 0x23, 0x23, 0x47, | ||
| 127 | 0x47, 0x47, 0x8f, 0x8f, 0x8f, 0x47, 0x47, 0x47, 0x23, 0x23, 0x23, 0x11, 0x11, 0x11, 0xaa, 0xaa, | ||
| 128 | 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff} | ||
| 129 | }; | ||
| 130 | static const char PROGMEM adjust[][38] = { | ||
| 131 | {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0xc2, | ||
| 132 | 0xc2, 0xc2, 0xe2, 0xe2, 0xe2, 0xc2, 0xc2, 0xc2, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, | ||
| 133 | 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe}, | ||
| 134 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f, | ||
| 135 | 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0xae, 0xae, | ||
| 136 | 0xae, 0x44, 0x44, 0x44, 0x00, 0xff} | ||
| 137 | }; | ||
| 138 | static const char PROGMEM custom[][38] = { | ||
| 139 | {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42, | ||
| 140 | 0xc2, 0x42, 0xa2, 0x62, 0xa2, 0x42, 0xc2, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, | ||
| 141 | 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe}, | ||
| 142 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x75, 0xaa, 0x55, | ||
| 143 | 0xea, 0x55, 0xaa, 0xd5, 0xaa, 0x55, 0xea, 0x55, 0xaa, 0x75, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee, | ||
| 144 | 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}, | ||
| 145 | {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x77, 0xaa, 0x55, | ||
| 146 | 0xee, 0x55, 0xaa, 0xdd, 0xaa, 0x55, 0xee, 0x55, 0xaa, 0x77, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee, | ||
| 147 | 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}, | ||
| 148 | {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x43, 0x42, 0x45, | ||
| 149 | 0x46, 0x45, 0x4a, 0x4d, 0x4a, 0x45, 0x46, 0x45, 0x42, 0x43, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40, | ||
| 150 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f} | ||
| 151 | }; | ||
| 46 | 152 | ||
| 47 | oled_write_P(qmk_logo, false); | 153 | switch (get_highest_layer(layer_state)) { |
| 154 | case 0: | ||
| 155 | oled_render_image(1, 38, layer_background_r1, 15, 4, 0); | ||
| 156 | oled_render_image(1, 38, layer_background_r2, 15, 5, 0); | ||
| 157 | oled_render_image(1, 38, base, 15, 6, 0); | ||
| 158 | oled_render_image(1, 38, layer_background_r4, 15, 7, 0); | ||
| 159 | break; | ||
| 160 | case 3: | ||
| 161 | oled_render_image(2, 38, lower, 15, 6, 0); | ||
| 162 | break; | ||
| 163 | case 4: | ||
| 164 | oled_render_image(1, 38, layer_background_r1, 15, 4, 0); | ||
| 165 | oled_render_image(2, 38, raise, 15, 5, 0); | ||
| 166 | oled_render_image(1, 38, layer_background_r4, 15, 7, 0); | ||
| 167 | break; | ||
| 168 | case 5: | ||
| 169 | oled_render_image(2, 38, adjust, 15, 4, 0); | ||
| 170 | oled_render_image(1, 38, layer_background_r3, 15, 6, 0); | ||
| 171 | oled_render_image(1, 38, layer_background_r4, 15, 7, 0); | ||
| 172 | break; | ||
| 173 | default: | ||
| 174 | oled_render_image(4, 38, custom, 15, 4, 0); | ||
| 175 | break; | ||
| 176 | } | ||
| 177 | } | ||
| 178 | |||
| 179 | void render_mod_state(uint8_t modifiers) { | ||
| 180 | static const char PROGMEM gui_off [][3]= {{0x80, 0x81, 0}, {0xa0, 0xa1, 0}}; | ||
| 181 | static const char PROGMEM gui_on [][3]= {{0xc0, 0xc1, 0}, {0xe0, 0xe1, 0}}; | ||
| 182 | static const char PROGMEM alt_off [][3]= {{0x82, 0x83, 0}, {0xa2, 0xa3, 0}}; | ||
| 183 | static const char PROGMEM alt_on [][3]= {{0xc2, 0xc3, 0}, {0xe2, 0xe3, 0}}; | ||
| 184 | static const char PROGMEM ctrl_off [][3]= {{0x84, 0x85, 0}, {0xa4, 0xa5, 0}}; | ||
| 185 | static const char PROGMEM ctrl_on [][3]= {{0xc4, 0xc5, 0}, {0xe4, 0xe5, 0}}; | ||
| 186 | static const char PROGMEM shift_off [][3]= {{0x86, 0x87, 0}, {0xa6, 0xa7, 0}}; | ||
| 187 | static const char PROGMEM shift_on [][3]= {{0xc6, 0xc7, 0}, {0xe6, 0xe7, 0}}; | ||
| 188 | |||
| 189 | // fillers between the modifier icons bleed into the icon frames | ||
| 190 | |||
| 191 | static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}}; | ||
| 192 | static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}}; | ||
| 193 | static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}}; | ||
| 194 | static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}}; | ||
| 195 | |||
| 196 | // render icons | ||
| 197 | |||
| 198 | if(modifiers & MOD_MASK_GUI) { | ||
| 199 | oled_set_cursor(0, 4); | ||
| 200 | oled_write_P(gui_on[0], false); | ||
| 201 | oled_set_cursor(0, 5); | ||
| 202 | oled_write_P(gui_on[1], false); | ||
| 203 | } else { | ||
| 204 | oled_set_cursor(0, 4); | ||
| 205 | oled_write_P(gui_off[0], false); | ||
| 206 | oled_set_cursor(0, 5); | ||
| 207 | oled_write_P(gui_off[1], false); | ||
| 208 | } | ||
| 209 | if(modifiers & MOD_MASK_ALT) { | ||
| 210 | oled_set_cursor(3, 4); | ||
| 211 | oled_write_P(alt_on[0], false); | ||
| 212 | oled_set_cursor(3, 5); | ||
| 213 | oled_write_P(alt_on[1], false); | ||
| 214 | } else { | ||
| 215 | oled_set_cursor(3, 4); | ||
| 216 | oled_write_P(alt_off[0], false); | ||
| 217 | oled_set_cursor(3, 5); | ||
| 218 | oled_write_P(alt_off[1], false); | ||
| 219 | } | ||
| 220 | if(modifiers & MOD_MASK_CTRL) { | ||
| 221 | oled_set_cursor(0, 6); | ||
| 222 | oled_write_P(ctrl_on[0], false); | ||
| 223 | oled_set_cursor(0, 7); | ||
| 224 | oled_write_P(ctrl_on[1], false); | ||
| 225 | } else { | ||
| 226 | oled_set_cursor(0, 6); | ||
| 227 | oled_write_P(ctrl_off[0], false); | ||
| 228 | oled_set_cursor(0, 7); | ||
| 229 | oled_write_P(ctrl_off[1], false); | ||
| 230 | } | ||
| 231 | if(modifiers & MOD_MASK_SHIFT) { | ||
| 232 | oled_set_cursor(3, 6); | ||
| 233 | oled_write_P(shift_on[0], false); | ||
| 234 | oled_set_cursor(3, 7); | ||
| 235 | oled_write_P(shift_on[1], false); | ||
| 236 | } else { | ||
| 237 | oled_set_cursor(3, 6); | ||
| 238 | oled_write_P(shift_off[0], false); | ||
| 239 | oled_set_cursor(3, 7); | ||
| 240 | oled_write_P(shift_off[1], false); | ||
| 241 | } | ||
| 242 | |||
| 243 | // render fillers | ||
| 244 | |||
| 245 | if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) { | ||
| 246 | oled_set_cursor(2, 4); | ||
| 247 | oled_write_P(on_on[0], false); | ||
| 248 | oled_set_cursor(2, 5); | ||
| 249 | oled_write_P(on_on[1], false); | ||
| 250 | } else if(modifiers & MOD_MASK_GUI) { | ||
| 251 | oled_set_cursor(2, 4); | ||
| 252 | oled_write_P(on_off[0], false); | ||
| 253 | oled_set_cursor(2, 5); | ||
| 254 | oled_write_P(on_off[1], false); | ||
| 255 | } else if(modifiers & MOD_MASK_ALT) { | ||
| 256 | oled_set_cursor(2, 4); | ||
| 257 | oled_write_P(off_on[0], false); | ||
| 258 | oled_set_cursor(2, 5); | ||
| 259 | oled_write_P(off_on[1], false); | ||
| 260 | } else { | ||
| 261 | oled_set_cursor(2, 4); | ||
| 262 | oled_write_P(off_off[0], false); | ||
| 263 | oled_set_cursor(2, 5); | ||
| 264 | oled_write_P(off_off[1], false); | ||
| 265 | } | ||
| 266 | |||
| 267 | if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) { | ||
| 268 | oled_set_cursor(2, 6); | ||
| 269 | oled_write_P(on_on[0], false); | ||
| 270 | oled_set_cursor(2, 7); | ||
| 271 | oled_write_P(on_on[1], false); | ||
| 272 | } else if(modifiers & MOD_MASK_CTRL) { | ||
| 273 | oled_set_cursor(2, 6); | ||
| 274 | oled_write_P(on_off[0], false); | ||
| 275 | oled_set_cursor(2, 7); | ||
| 276 | oled_write_P(on_off[1], false); | ||
| 277 | } else if(modifiers & MOD_MASK_SHIFT) { | ||
| 278 | oled_set_cursor(2, 6); | ||
| 279 | oled_write_P(off_on[0], false); | ||
| 280 | oled_set_cursor(2, 7); | ||
| 281 | oled_write_P(off_on[1], false); | ||
| 282 | } else { | ||
| 283 | oled_set_cursor(2, 6); | ||
| 284 | oled_write_P(off_off[0], false); | ||
| 285 | oled_set_cursor(2, 7); | ||
| 286 | oled_write_P(off_off[1], false); | ||
| 287 | } | ||
| 48 | } | 288 | } |
| 49 | 289 | ||
| 50 | void render_bootmagic_status(void) { | 290 | void render_bootmagic_status(void) { |
| 51 | oled_write_P((keymap_config.swap_lctl_lgui) ? PSTR("OS: Windows\n\n") : PSTR("OS: MacOS\n\n"), false); | 291 | static const char PROGMEM nkro_off [][3]= {{0x88, 0x89, 0}, {0xa8, 0xa9, 0}}; |
| 52 | oled_write_P((keymap_config.nkro) ? PSTR("NKRO ") : PSTR(" "), false); | 292 | static const char PROGMEM nkro_on [][3]= {{0xc8, 0xc9, 0}, {0xe8, 0xe9, 0}}; |
| 293 | static const char PROGMEM mac_os_off [][6]= {{0x90, 0x91, 0x92, 0x93, 0x94, 0}, {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0}}; | ||
| 294 | static const char PROGMEM mac_os_on [][6]= {{0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0}, {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0}}; | ||
| 295 | static const char PROGMEM windows_off [][6]= {{0x95, 0x96, 0x97, 0x98, 0x99, 0}, {0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0}}; | ||
| 296 | static const char PROGMEM windows_on [][6]= {{0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0}, {0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0}}; | ||
| 297 | |||
| 298 | if (keymap_config.nkro) { | ||
| 299 | oled_set_cursor(5, 4); | ||
| 300 | oled_write_P(nkro_on[0], false); | ||
| 301 | oled_set_cursor(5, 5); | ||
| 302 | oled_write_P(nkro_on[1], false); | ||
| 303 | } else { | ||
| 304 | oled_set_cursor(5, 4); | ||
| 305 | oled_write_P(nkro_off[0], false); | ||
| 306 | oled_set_cursor(5, 5); | ||
| 307 | oled_write_P(nkro_off[1], false); | ||
| 308 | } | ||
| 309 | if (keymap_config.swap_lctl_lgui) { | ||
| 310 | oled_set_cursor(10, 6); | ||
| 311 | oled_write_P(windows_on[0], false); | ||
| 312 | oled_set_cursor(10, 7); | ||
| 313 | oled_write_P(windows_on[1], false); | ||
| 314 | oled_set_cursor(10, 4); | ||
| 315 | oled_write_P(mac_os_off[0], false); | ||
| 316 | oled_set_cursor(10, 5); | ||
| 317 | oled_write_P(mac_os_off[1], false); | ||
| 318 | } else { | ||
| 319 | oled_set_cursor(10, 4); | ||
| 320 | oled_write_P(mac_os_on[0], false); | ||
| 321 | oled_set_cursor(10, 5); | ||
| 322 | oled_write_P(mac_os_on[1], false); | ||
| 323 | oled_set_cursor(10, 6); | ||
| 324 | oled_write_P(windows_off[0], false); | ||
| 325 | oled_set_cursor(10, 7); | ||
| 326 | oled_write_P(windows_off[1], false); | ||
| 327 | } | ||
| 328 | } | ||
| 329 | |||
| 330 | void render_lock_status(void) { | ||
| 331 | static const char PROGMEM caps_off [][3]= {{0x8a, 0x8b, 0}, {0xaa, 0xab, 0}}; | ||
| 332 | static const char PROGMEM caps_on [][3]= {{0xca, 0xcb, 0}, {0xea, 0xeb, 0}}; | ||
| 333 | static const char PROGMEM num_off [][3]= {{0x8c, 0x8d, 0}, {0xac, 0xad, 0}}; | ||
| 334 | static const char PROGMEM num_on [][3]= {{0xcc, 0xcd, 0}, {0xec, 0xed, 0}}; | ||
| 335 | static const char PROGMEM scrl_off [][3]= {{0x8e, 0x8f, 0}, {0xae, 0xaf, 0}}; | ||
| 336 | static const char PROGMEM scrl_on [][3]= {{0xce, 0xcf, 0}, {0xee, 0xef, 0}}; | ||
| 337 | |||
| 338 | static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}}; | ||
| 339 | static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}}; | ||
| 340 | static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}}; | ||
| 341 | static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}}; | ||
| 342 | |||
| 343 | led_t led_usb_state = host_keyboard_led_state(); | ||
| 344 | if (led_usb_state.caps_lock) { | ||
| 345 | oled_set_cursor(8, 4); | ||
| 346 | oled_write_P(caps_on[0], false); | ||
| 347 | oled_set_cursor(8, 5); | ||
| 348 | oled_write_P(caps_on[1], false); | ||
| 349 | } else { | ||
| 350 | oled_set_cursor(8, 4); | ||
| 351 | oled_write_P(caps_off[0], false); | ||
| 352 | oled_set_cursor(8, 5); | ||
| 353 | oled_write_P(caps_off[1], false); | ||
| 354 | } | ||
| 355 | if (led_usb_state.num_lock) { | ||
| 356 | oled_set_cursor(5, 6); | ||
| 357 | oled_write_P(num_on[0], false); | ||
| 358 | oled_set_cursor(5, 7); | ||
| 359 | oled_write_P(num_on[1], false); | ||
| 360 | } else { | ||
| 361 | oled_set_cursor(5, 6); | ||
| 362 | oled_write_P(num_off[0], false); | ||
| 363 | oled_set_cursor(5, 7); | ||
| 364 | oled_write_P(num_off[1], false); | ||
| 365 | } | ||
| 366 | if (led_usb_state.scroll_lock) { | ||
| 367 | oled_set_cursor(8, 6); | ||
| 368 | oled_write_P(scrl_on[0], false); | ||
| 369 | oled_set_cursor(8, 7); | ||
| 370 | oled_write_P(scrl_on[1], false); | ||
| 371 | } else { | ||
| 372 | oled_set_cursor(8, 6); | ||
| 373 | oled_write_P(scrl_off[0], false); | ||
| 374 | oled_set_cursor(8, 7); | ||
| 375 | oled_write_P(scrl_off[1], false); | ||
| 376 | } | ||
| 377 | |||
| 378 | // render fillers | ||
| 379 | |||
| 380 | if ((led_usb_state.caps_lock) && (keymap_config.nkro)) { | ||
| 381 | oled_set_cursor(7, 4); | ||
| 382 | oled_write_P(on_on[0], false); | ||
| 383 | oled_set_cursor(7, 5); | ||
| 384 | oled_write_P(on_on[1], false); | ||
| 385 | } else if(keymap_config.nkro) { | ||
| 386 | oled_set_cursor(7, 4); | ||
| 387 | oled_write_P(on_off[0], false); | ||
| 388 | oled_set_cursor(7, 5); | ||
| 389 | oled_write_P(on_off[1], false); | ||
| 390 | } else if(led_usb_state.caps_lock) { | ||
| 391 | oled_set_cursor(7, 4); | ||
| 392 | oled_write_P(off_on[0], false); | ||
| 393 | oled_set_cursor(7, 5); | ||
| 394 | oled_write_P(off_on[1], false); | ||
| 395 | } else { | ||
| 396 | oled_set_cursor(7, 4); | ||
| 397 | oled_write_P(off_off[0], false); | ||
| 398 | oled_set_cursor(7, 5); | ||
| 399 | oled_write_P(off_off[1], false); | ||
| 400 | } | ||
| 401 | if ((led_usb_state.num_lock) && (led_usb_state.scroll_lock)) { | ||
| 402 | oled_set_cursor(7, 6); | ||
| 403 | oled_write_P(on_on[0], false); | ||
| 404 | oled_set_cursor(7, 7); | ||
| 405 | oled_write_P(on_on[1], false); | ||
| 406 | } else if(led_usb_state.num_lock) { | ||
| 407 | oled_set_cursor(7, 6); | ||
| 408 | oled_write_P(on_off[0], false); | ||
| 409 | oled_set_cursor(7, 7); | ||
| 410 | oled_write_P(on_off[1], false); | ||
| 411 | } else if(led_usb_state.scroll_lock) { | ||
| 412 | oled_set_cursor(7, 6); | ||
| 413 | oled_write_P(off_on[0], false); | ||
| 414 | oled_set_cursor(7, 7); | ||
| 415 | oled_write_P(off_on[1], false); | ||
| 416 | } else { | ||
| 417 | oled_set_cursor(7, 6); | ||
| 418 | oled_write_P(off_off[0], false); | ||
| 419 | oled_set_cursor(7, 7); | ||
| 420 | oled_write_P(off_off[1], false); | ||
| 421 | } | ||
| 53 | } | 422 | } |
| 54 | 423 | ||
| 55 | void render_wpm(void) { | 424 | |
| 56 | //get current WPM value | 425 | |
| 57 | currwpm = get_current_wpm(); | 426 | void render_wpm_graph(void) { |
| 58 | //check if it's been long enough before refreshing graph | 427 | currwpm = get_current_wpm(); //get current WPM value |
| 59 | if(timer_elapsed(timer) > graph_refresh_interval){ | 428 | if(timer_elapsed(timer) > graph_refresh_interval){ //check if it's been long enough before refreshing graph |
| 60 | // main calculation to plot graph line | 429 | x = 63 - ((currwpm / max_wpm) * 63); // main calculation to plot graph line |
| 61 | x = 64 - ((currwpm / max_wpm) * 64); | 430 | for(int i = 0; i <= graph_line_thickness - 1; i++){ //first draw actual value line |
| 62 | //first draw actual value line | 431 | oled_write_pixel(1, x + i, true); |
| 63 | for(int i = 0; i <= graph_line_thickness - 1; i++){ | ||
| 64 | oled_write_pixel(1, x + i, true); | ||
| 65 | } | 432 | } |
| 66 | //then fill in area below the value line | 433 | if(vert_line){ //then fill in area below the value line |
| 67 | if(vert_line){ | 434 | if(vert_count == vert_interval){ |
| 68 | if(vert_count == vert_interval){ | 435 | vert_count = 0; |
| 69 | vert_count = 0; | 436 | while(x <= 63){ |
| 70 | while(x <= 64){ | 437 | oled_write_pixel(1, x, true); |
| 71 | oled_write_pixel(1, x, true); | 438 | x++; |
| 72 | x++; | ||
| 73 | } | ||
| 74 | } else { | ||
| 75 | for(int i = 64; i > x; i--){ | ||
| 76 | if(i % graph_area_fill_interval == 0){ | ||
| 77 | oled_write_pixel(1, i, true); | ||
| 78 | } | ||
| 79 | } | 439 | } |
| 80 | vert_count++; | ||
| 81 | } | ||
| 82 | } else { | 440 | } else { |
| 83 | for(int i = 64; i > x; i--){ | 441 | for(int i = 63; i > x; i--){ |
| 84 | if(i % graph_area_fill_interval == 0){ | 442 | if(i % graph_area_fill_interval == 0){ |
| 85 | oled_write_pixel(1, i, true); | 443 | oled_write_pixel(1, i, true); |
| 86 | } | 444 | } |
| 87 | } | 445 | } |
| 446 | vert_count++; | ||
| 447 | } | ||
| 448 | } else { | ||
| 449 | for(int i = 63; i > x; i--){ | ||
| 450 | if(i % graph_area_fill_interval == 0){ | ||
| 451 | oled_write_pixel(1, i, true); | ||
| 452 | } | ||
| 88 | } | 453 | } |
| 89 | //then move the entire graph one pixel to the right | ||
| 90 | oled_pan(false); | ||
| 91 | //refresh the timer for the next iteration | ||
| 92 | timer = timer_read(); | ||
| 93 | } | 454 | } |
| 94 | //format current WPM value into a printable string | 455 | oled_pan(false); //then move the entire graph one pixel to the right |
| 95 | char buf[4]; | 456 | timer = timer_read(); //refresh the timer for the next iteration |
| 96 | oled_set_cursor(14, 0); | 457 | } |
| 97 | oled_write("WPM:", false); | 458 | char buf[4]; //format current WPM value into a printable string |
| 98 | buf[0] = currwpm >= 100 ? ((currwpm/100) + '0') : ' '; | 459 | oled_set_cursor(14, 0); |
| 99 | buf[1] = currwpm >= 10 ? (((currwpm/10) % 10) + '0') : ' '; | 460 | oled_write("WPM:", false); |
| 100 | buf[2] = (currwpm % 10) + '0'; | 461 | buf[0] = currwpm >= 100 ? ((currwpm/100) + '0') : ' '; |
| 101 | buf[3] = 0; | 462 | buf[1] = currwpm >= 10 ? (((currwpm/10) % 10) + '0') : ' '; |
| 102 | oled_write(buf, false); | 463 | buf[2] = (currwpm % 10) + '0'; |
| 464 | buf[3] = 0; | ||
| 465 | oled_write(buf, false); | ||
| 103 | } | 466 | } |
| 104 | 467 | ||
| 105 | static void render_status(void) { | 468 | void render_status_main(void) { |
| 106 | // QMK Logo and version information | 469 | render_qmk_logo(); |
| 107 | render_qmk_logo(); | 470 | render_layers(); |
| 108 | oled_write_P(PSTR("Kyria: Rev1.0\n"), false); | 471 | render_mod_state(get_mods()); |
| 109 | 472 | render_bootmagic_status(); | |
| 110 | // Host Keyboard Layer Status | 473 | render_lock_status(); |
| 111 | oled_write_P(PSTR("Layer: "), false); | 474 | |
| 112 | switch (get_highest_layer(layer_state)) { | 475 | } |
| 113 | case 0: | 476 | |
| 114 | oled_write_P(PSTR("Default\n"), false); | 477 | void render_status_secondary(void) { |
| 115 | break; | 478 | render_wpm_graph(); |
| 116 | case 1: | ||
| 117 | oled_write_P(PSTR("Lower\n"), false); | ||
| 118 | break; | ||
| 119 | case 2: | ||
| 120 | oled_write_P(PSTR("Raise\n"), false); | ||
| 121 | break; | ||
| 122 | case 3: | ||
| 123 | oled_write_P(PSTR("Adjust\n"), false); | ||
| 124 | break; | ||
| 125 | default: | ||
| 126 | oled_write_P(PSTR("Undefined\n"), false); | ||
| 127 | } | ||
| 128 | |||
| 129 | render_bootmagic_status(); | ||
| 130 | |||
| 131 | // Host Keyboard LED Status | ||
| 132 | led_t led_state = host_keyboard_led_state(); | ||
| 133 | oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); | ||
| 134 | } | 479 | } |
| 135 | 480 | ||
| 136 | void oled_task_user(void) { | 481 | void oled_task_user(void) { |
| 137 | if (is_keyboard_master()) { | 482 | if (is_keyboard_master()) { |
| 138 | render_status(); | 483 | render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) |
| 139 | } else { | 484 | } else { |
| 140 | render_wpm(); | 485 | render_status_secondary(); |
| 141 | } | 486 | } |
| 142 | } | 487 | } |
| 488 | |||
| 143 | #endif | 489 | #endif |
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md b/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md new file mode 100644 index 000000000..8a3280614 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | ### This Keymap uses the nanoBoot bootloader to maximize available firmware space. | ||
| 2 | |||
| 3 | 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. | ||
| 4 | |||
| 5 | If nanoBoot is not going to be used, delete or comment out the following from your `rules.mk`: | ||
| 6 | ```make | ||
| 7 | BOOTLOADER = hid | ||
| 8 | BOOTLOADER_SIZE = 512 | ||
| 9 | PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
| 10 | ``` | ||
| 11 | |||
| 12 | nanoBoot can be found here: [nanoBoot](https://github.com/sigprof/nanoBoot) I used the string-descriptors branch as it was the latest update. | ||
| 13 | |||
| 14 | 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` | ||
| 15 | |||
| 16 | You will need to change the path in the CLI command to match your file structure. | ||
| 17 | |||
| 18 | QMK Toolbox will not recognize controllers using nanoBoot, instead use the CLI to flash. | ||
| 19 | |||
| 20 | To Flash: `qmk flash -kb splitkb/kyria/rev1 -km john-ezra -bl hid_bootloader` | ||
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk b/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk index b86789c09..87026b875 100644 --- a/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk | |||
| @@ -8,5 +8,12 @@ GRAVE_ESC_ENABLE = no # Disable Grave Escape | |||
| 8 | MOUSEKEY_ENABLE = no # Disable Mousekeys | 8 | MOUSEKEY_ENABLE = no # Disable Mousekeys |
| 9 | 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) | 9 | 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) |
| 10 | KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides | 10 | KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides |
| 11 | CONSOLE_ENABLE = no | ||
| 12 | |||
| 13 | DEBOUNCE_TYPE = sym_eager_pk | ||
| 14 | |||
| 15 | BOOTLOADER = hid # This Keymap Uses nanoBoot, more info in readme | ||
| 16 | BOOTLOADER_SIZE = 512 | ||
| 17 | PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
| 11 | 18 | ||
| 12 | SRC += oled.c | 19 | SRC += oled.c |
