* Start to standardize macro timer * Update Fractal layout Specifically, limit the RGB Lighting, since it's too many for the power, and only have the KITT annimation on the front * Update Iris keymap to use I2C for transport * Remove TAP_CODE_DELAY from keyboard in favor of global setting * Remove Woodpad Since it\'s no longer in my possession * Only enable LTO on AVR boards * Run matrix_scans while doing startup light * Run matrix_scan to get split keyboard code synced properly * Fix rgb mode * Remove custom debouncing settings * Make RGB Light Startup Animation optional * Fix opt def * Remove extra tap code delay value * Fix references to keebio boards * Add support for LP Iris keyboard * Add backlight code * Make startup animation optional * Update gitlab ci script * Remove port declaration * Revert avrgcc changes to gitlab ci file * Don't re-set mods * Remove MACRO_TIMER define * Add custom name for crkbd * Add name for Prime M pad * Add names for ortho 4x12 boards * Add some additional handling for rgb init * Change thumb clusters on ergodox * Switch Orthodox to I2C * Fix Space in ergodox keymap * Use OSL for ergodox layout * Ugh, can't find a good layout * Fix typo * Fix up animation startup * Cries in AVR * Fix makefiles for ergodox ez boards * Add support for "secret songs" in my userspace * Reset debounce to 5ms for Ergodox EZ * Fix gitlab CI yaml file * More crying in AVR * Cannot use rgb light and rgb matrix at the same time due to the WS2812 rgb matrix PR until the "Coexistance" PR is merged * Update ODox for split common and i2c * Add split config * Impement Split code * Add support for xscorpion OLED code * Add OLED display config * Fix OLED screen font * Get OLED set up in vertical mode * Remove old OLED code * add per key support for crkbd * Fix split changes * RGB Tweeaks * More OLED tweaks * Fix rotation stuff * Fix more OLED stuff * Remove custom Debounce from Ergodox layout since it's no longer neededpjones-keymap
@@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
// #define MASTER_RIGHT | |||
#define EE_HANDS | |||
#define SSD1306OLED | |||
// #define SSD1306OLED | |||
#define USE_SERIAL_PD2 | |||
@@ -48,3 +48,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#define B6_AUDIO | |||
// #define NO_MUSIC_MODE | |||
#endif | |||
#undef PRODUCT | |||
#define PRODUCT Drashna Hacked Corne Keyboard | |||
#define OLED_FONT_H "keyboards/crkbd/keymaps/drashna/glcdfont.c" | |||
// #define OLED_FONT_WIDTH 5 | |||
// #define OLED_FONT_HEIGHT 7 | |||
#define TAPPING_TERM_PER_KEY |
@@ -0,0 +1,240 @@ | |||
#pragma once | |||
#ifdef __AVR__ | |||
#include <avr/io.h> | |||
#include <avr/pgmspace.h> | |||
#elif defined(ESP8266) | |||
#include <pgmspace.h> | |||
#else | |||
#define PROGMEM | |||
#endif | |||
// Helidox 8x6 font with QMK Firmware Logo | |||
// Online editor: http://teripom.x0.com/ | |||
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, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, | |||
0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, | |||
0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, | |||
0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, | |||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, | |||
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, | |||
0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, | |||
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, | |||
0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, | |||
0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, | |||
0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, | |||
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, | |||
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, | |||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, | |||
0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, | |||
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, | |||
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, | |||
0x7E, 0x7E, 0x7F, 0x7F, 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, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, | |||
0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, | |||
0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, | |||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, | |||
0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x81, | |||
0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, | |||
0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, | |||
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, | |||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, | |||
0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, | |||
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, | |||
0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, | |||
0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, | |||
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, | |||
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, | |||
0x3F, 0x3F, 0x7F, 0x7F, 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, 0x03, 0x0F, 0x1F, | |||
0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, | |||
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, | |||
0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, | |||
0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, | |||
0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x00, 0x01, 0x03, 0x07, 0x07, | |||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |||
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, | |||
0x01, 0x03, 0x07, 0x07, 0x07, 0x07, | |||
0x07, 0x07, 0x07, 0x07, 0x03, 0x01, | |||
0x00, 0x00, 0x00, 0x07, 0x07, 0x07, | |||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |||
0x00, 0x07, 0x07, 0x07, 0x00, 0x00, | |||
0x00, 0x00, 0x00, 0x00, 0x07, 0x07, | |||
0x07, 0x00, 0x00, 0x00, 0x01, 0x03, | |||
0x07, 0x07, 0x07, 0x07, 0x07, 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, | |||
}; |
@@ -7,6 +7,9 @@ | |||
#ifdef SSD1306OLED | |||
#include "ssd1306.h" | |||
#endif | |||
#ifdef OLED_DRIVER_ENABLE | |||
#include "oled_driver.h" | |||
#endif | |||
extern keymap_config_t keymap_config; | |||
extern uint8_t is_master; | |||
@@ -288,3 +291,123 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | |||
} | |||
#endif | |||
#ifdef OLED_DRIVER_ENABLE | |||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { | |||
if (is_master) { | |||
return OLED_ROTATION_270; | |||
} else { | |||
return rotation; | |||
} | |||
} | |||
void render_crkbd_logo(void) { | |||
static const char PROGMEM crkbd_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(crkbd_logo, false); | |||
} | |||
void render_status(void) { | |||
oled_write_P(PSTR("Layer"), false); | |||
switch (biton32(layer_state)) { | |||
case 0: | |||
oled_write_P(PSTR("Base "), false); | |||
break; | |||
case _RAISE: | |||
oled_write_P(PSTR("Raise"), false); | |||
break; | |||
case _LOWER: | |||
oled_write_P(PSTR("Lower"), false); | |||
break; | |||
case _ADJUST: | |||
oled_write_P(PSTR("Adjst"), false); | |||
break; | |||
default: | |||
oled_write_P(PSTR("Unkn "), false); | |||
break; | |||
} | |||
oled_write_P(PSTR("Lyout"), false); | |||
switch (biton32(default_layer_state)) { | |||
case _QWERTY: | |||
oled_write_P(PSTR("QWRTY"), false); | |||
break; | |||
case _COLEMAK: | |||
oled_write_P(PSTR("COLMK"), false); | |||
break; | |||
case _DVORAK: | |||
oled_write_P(PSTR("DVRAK"), false); | |||
break; | |||
case _WORKMAN: | |||
oled_write_P(PSTR("WRKMN"), false); | |||
break; | |||
case _NORMAN: | |||
oled_write_P(PSTR("NORMN"), false); | |||
break; | |||
case _MALTRON: | |||
oled_write_P(PSTR("MLTRN"), false); | |||
break; | |||
case _EUCALYN: | |||
oled_write_P(PSTR("ECLYN"), false); | |||
break; | |||
case _CARPLAX: | |||
oled_write_P(PSTR("CRPLX"), false); | |||
break; | |||
} | |||
uint8_t modifiers = get_mods(); | |||
uint8_t one_shot = get_oneshot_mods(); | |||
oled_write_P(PSTR("Mods:"), false); | |||
oled_write_P( (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR(" "), false); | |||
oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false); | |||
oled_write_P( (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT ) ? PSTR(" ALT ") : PSTR(" "), false); | |||
oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false); | |||
oled_write_P(PSTR("BTMGK"), false); | |||
static const char PROGMEM mode_logo[4][4] = { | |||
{0x95,0x96,0x0a,0}, | |||
{0xb5,0xb6,0x0a,0}, | |||
{0x97,0x98,0x0a,0}, | |||
{0xb7,0xb8,0x0a,0} }; | |||
if (keymap_config.swap_lalt_lgui != false) { | |||
oled_write_P(mode_logo[0], false); | |||
oled_write_P(mode_logo[1], false); | |||
} else { | |||
oled_write_P(mode_logo[2], false); | |||
oled_write_P(mode_logo[3], false); | |||
} | |||
uint8_t led_usb_state = host_keyboard_leds(); | |||
oled_write_P(PSTR("Lock:"), false); | |||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR(" NUM ") : PSTR(" "), false); | |||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR(" CAPS") : PSTR(" "), false); | |||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR(" "), false); | |||
} | |||
void oled_task_user(void) { | |||
if (is_master) { | |||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) | |||
} else { | |||
render_crkbd_logo(); | |||
oled_scroll_left(); // Turns on scrolling | |||
} | |||
} | |||
#endif | |||
uint16_t get_tapping_term(uint16_t keycode) { | |||
switch (keycode) { | |||
case ALT_T(KC_A): | |||
return TAPPING_TERM + 100; | |||
default: | |||
return TAPPING_TERM; | |||
} | |||
} |
@@ -3,31 +3,24 @@ | |||
# change to "no" to disable the options, or define them in the Makefile in | |||
# the appropriate keymap folder that will get included automatically | |||
# | |||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | |||
MOUSEKEY_ENABLE = no # Mouse keys(+4700) | |||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | |||
CONSOLE_ENABLE = no # Console for debug(+400) | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
MIDI_ENABLE = no # MIDI controls | |||
AUDIO_ENABLE = no # Audio output on port C6 | |||
UNICODE_ENABLE = no # Unicode | |||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | |||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. | |||
SWAP_HANDS_ENABLE = no # Enable one-hand typing | |||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | |||
MOUSEKEY_ENABLE = no # Mouse keys(+4700) | |||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | |||
CONSOLE_ENABLE = no # Console for debug(+400) | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | |||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | |||
MIDI_ENABLE = no # MIDI controls | |||
AUDIO_ENABLE = no # Audio output on port C6 | |||
UNICODE_ENABLE = no # Unicode | |||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | |||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. | |||
SWAP_HANDS_ENABLE = no # Enable one-hand typing | |||
RGBLIGHT_STARTUP_ANIMATION = yes | |||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | |||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | |||
BOOTLOADER = qmk-dfu | |||
# If you want to change the display of OLED, you need to change here | |||
SRC += ./lib/glcdfont.c \ | |||
./lib/logo_reader.c \ | |||
# ./lib/rgb_state_reader.c \ | |||
# ./lib/keylogger.c \ | |||
# ./lib/host_led_state_reader.c \ | |||
# ./lib/mode_icon_reader.c \ | |||
# ./lib/layer_state_reader.c \ | |||
# ./lib/timelogger.c \ | |||
OLED_DRIVER_ENABLE = yes |
@@ -1,25 +0,0 @@ | |||
Overview | |||
======== | |||
This is my personal Numpad (Woodpad) configuration, and my daily driver. | |||
Most of the code resides in my userspace, rather than here, as I have multiple keyboards. | |||
How to build | |||
------------ | |||
make handwired/woodpad:drashna:avrdude | |||
Layers | |||
------ | |||
* NUMLOCK: Num pad, locked to NUM LOCK enabled. | |||
* NAV: Navigation codes without needing to enable numlock. | |||
* DIABLO: This contains a Diablo 3 layout, that requires much less reaching or shifting. If Tap Dance is enabled, then it has a "spam" feature. See Userspace for details. | |||
* MACROS: This layer contains a bunch of macros for spamming chat, with a toggle on what key to open up chat with. | |||
* MEDIA: Media and RGB commands | |||
All layers have RGB specific indicators, so you can see what layer you're on by the underglow. | |||
Woodpad Specific Code | |||
--------------------- | |||
Aside from my userspace code, this includes LED indications for numlock and macro mode. It also forces NUMLOCK to be enabled. |
@@ -1,45 +0,0 @@ | |||
/* Copyright 2017 REPLACE_WITH_YOUR_NAME | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation, either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#ifndef CONFIG_USER_H | |||
#define CONFIG_USER_H | |||
#include QMK_KEYBOARD_CONFIG_H | |||
#if (defined(TAP_DANCE_ENABLE) && !defined(TAPPING_TERM)) | |||
#define TAPPING_TERM 200 | |||
#endif // TAP_DANCE_ENABLE | |||
#define B5_AUDIO | |||
#ifdef RGBLIGHT_ENABLE | |||
#define RGB_DI_PIN D3 | |||
#define RGBLED_NUM 14 // Number of LEDs | |||
#define RGBLIGHT_ANIMATIONS | |||
#define RGBLIGHT_HUE_STEP 12 | |||
#define RGBLIGHT_SAT_STEP 12 | |||
#define RGBLIGHT_VAL_STEP 12 | |||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 4 | |||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3 | |||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 | |||
#define RGBLIGHT_SLEEP | |||
#endif // RGBLIGHT_ENABLE | |||
#define FORCE_NKRO | |||
#endif |
@@ -1,95 +0,0 @@ | |||
/* Copyright 2017 REPLACE_WITH_YOUR_NAME | |||
* | |||
* 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 "drashna.h" | |||
// Each layer gets a name for readability, which is then used in the keymap matrix below. | |||
// The underscores don't mean anything - you can have a layer called STUFF or any other name. | |||
// Layer names don't all need to be of the same length, obviously, and you can also skip them | |||
// entirely and just use numbers. | |||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_NUMLOCK] = KEYMAP( /* Base */ | |||
TG(_NAV), TG(_DIABLO), TG(_MACROS), KC_PSLS,\ | |||
KC_P7, KC_P8, KC_P9, KC_PAST, \ | |||
KC_P4, KC_P5, KC_P6, KC_PMNS, \ | |||
KC_P1, KC_P2, KC_P3, KC_PPLS, \ | |||
LT(_MEDIA,KC_P0), KC_PDOT, KC_COLN, KC_PENT \ | |||
), | |||
[_NAV] = KEYMAP( /* Base */ | |||
_______, _______, _______, _______,\ | |||
KC_HOME, KC_UP, KC_PGUP, _______, \ | |||
KC_LEFT, XXXXXXX, KC_RIGHT, _______, \ | |||
KC_END, KC_DOWN, KC_PGDN, _______, \ | |||
KC_INS, KC_DEL, _______, _______ \ | |||
), | |||
[_DIABLO] = KEYMAP( /* Base */ | |||
KC_ESC, _______, XXXXXXX, _______,\ | |||
KC_S, KC_I, KC_F, KC_M, \ | |||
KC_1, KC_2, KC_3, KC_4, \ | |||
KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, \ | |||
XXXXXXX, KC_DIABLO_CLEAR, KC_Q, SFT_T(KC_SPACE) \ | |||
), | |||
[_MACROS] = KEYMAP( /* Base */ | |||
KC_OVERWATCH, XXXXXXX, _______, XXXXXXX,\ | |||
KC_JUSTGAME, XXXXXXX, XXXXXXX, KC_C9, \ | |||
XXXXXXX, XXXXXXX, KC_AIM, KC_GGEZ, \ | |||
KC_SYMM, KC_TORB, XXXXXXX, KC_GOODGAME, \ | |||
KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GLHF \ | |||
), | |||
[_MEDIA] = KEYMAP( /* Base */ | |||
KC_RESET, KC_MUTE, KC_VOLD, KC_VOLU,\ | |||
KC_MAKE, _______, RGB_HUI, RGB_HUD, \ | |||
KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \ | |||
RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \ | |||
_______, KC_RGB_T, RGB_SAD, RGB_VAD \ | |||
), | |||
}; | |||
void numlock_led_on(void) { | |||
PORTF |= (1 << 7); | |||
} | |||
void numlock_led_off(void) { | |||
PORTF &= ~(1 << 7); | |||
} | |||
void matrix_init_keymap(void) { | |||
// set Numlock LED to output and low | |||
DDRF |= (1 << 7); | |||
PORTF &= ~(1 << 7); | |||
} | |||
void matrix_scan_keymap(void) { | |||
numlock_led_off(); | |||
if ((is_overwatch && biton32(layer_state) == _MACROS) || (biton32(layer_state) == _NUMLOCK)) { | |||
numlock_led_on(); | |||
} | |||
// Run Diablo 3 macro checking code. | |||
} | |||
void led_set_keymap(uint8_t usb_led) { | |||
if (!(usb_led & (1<<USB_LED_NUM_LOCK))) { | |||
register_code(KC_NUMLOCK); | |||
unregister_code(KC_NUMLOCK); | |||
} | |||
} |
@@ -1,10 +0,0 @@ | |||
TAP_DANCE_ENABLE = yes | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
RGBLIGHT_ENABLE = yes | |||
MIDI_ENABLE = no | |||
CONSOLE_ENABLE = no | |||
NKRO_ENABLE = yes | |||
MOUSEKEY_ENABLE = no | |||
EXTRAFLAGS = -flto | |||
@@ -19,8 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
/* Use I2C or Serial, not both */ | |||
#define USE_SERIAL | |||
#undef USE_I2C | |||
// #define USE_SERIAL | |||
#define USE_I2C | |||
/* Select hand configuration */ | |||
@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#ifdef RGBLIGHT_ENABLE | |||
#undef RGBLED_NUM | |||
#define RGBLED_NUM 18 // Number of LEDs | |||
#define RGBLED_SPLIT { 9, 9 } | |||
#define RGBLIGHT_HUE_STEP 12 | |||
#define RGBLIGHT_SAT_STEP 12 | |||
#define RGBLIGHT_VAL_STEP 12 | |||
@@ -55,7 +55,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#define QMK_SPEAKER C6 | |||
#undef PRODUCT | |||
#ifdef KEYBOARD_iris_rev2 | |||
#ifdef KEYBOARD_keebio_iris_rev2 | |||
#define PRODUCT Drashna Hacked Iris Rev.2 | |||
#endif | |||
@@ -121,3 +121,14 @@ void matrix_init_keymap(void) { | |||
writePinHigh(B0); | |||
#endif | |||
} | |||
void keyboard_post_init_keymap(void) { | |||
#if BACKLIGHT_ENABLE | |||
backlight_enable(); | |||
backlight_level(5); | |||
#ifdef BACKLIGHT_BREATHING | |||
breathing_enable(); | |||
#endif | |||
#endif | |||
} |
@@ -5,13 +5,14 @@ CONSOLE_ENABLE = no # Console for debug(+400) | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
TAP_DANCE_ENABLE = no | |||
RGBLIGHT_ENABLE = yes | |||
AUDIO_ENABLE = yes | |||
AUDIO_ENABLE = no | |||
NKRO_ENABLE = yes | |||
BACKLIGHT_ENABLE = no | |||
SWAP_HANDS_ENABLE = no | |||
INDICATOR_LIGHTS = yes | |||
INDICATOR_LIGHTS = no | |||
MACROS_ENABLED = no | |||
RGBLIGHT_TWINKLE = no | |||
RGBLIGHT_STARTUP_ANIMATION = yes | |||
BOOTLOADER = qmk-dfu |
@@ -0,0 +1,48 @@ | |||
/* | |||
Copyright 2017 Danny Nguyen <danny@keeb.io> | |||
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 | |||
/* Use I2C or Serial, not both */ | |||
#include "../drashna/config.h" | |||
#ifdef RGBLIGHT_ENABLE | |||
#undef RGBLED_NUM | |||
#define RGBLED_NUM 16 // Number of LEDs | |||
#undef RGBLED_SPLIT | |||
#define RGBLED_SPLIT { 8, 8 } | |||
#endif | |||
#undef PRODUCT | |||
#ifdef KEYBOARD_keebio_iris_rev2 | |||
#define PRODUCT Drashna Hacked Iris LP Rev.2 (Backlit) | |||
#endif | |||
#undef SHFT_LED1 | |||
#define SHFT_LED1 5 | |||
#undef SHFT_LED2 | |||
#define SHFT_LED2 10 | |||
#undef CTRL_LED1 | |||
#define CTRL_LED1 6 | |||
#undef CTRL_LED2 | |||
#define CTRL_LED2 9 | |||
#undef ALT_LED1 | |||
#define ALT_LED1 7 | |||
#undef GUI_LED1 | |||
#define GUI_LED1 8 |
@@ -0,0 +1 @@ | |||
// placeholder |
@@ -0,0 +1,7 @@ | |||
USER_NAME := drashna | |||
SRC += ../drashna/keymap.c | |||
include $(KEYBOARD_PATH_2)/keymaps/drashna/rules.mk | |||
AUDIO_ENABLE = no | |||
BACKLIGHT_ENABLE = yes |
@@ -23,10 +23,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#ifdef RGBLIGHT_ENABLE | |||
#undef RGBLED_NUM | |||
#define RGBLED_NUM 16 // Number of LEDs | |||
#undef RGBLED_SPLIT | |||
#define RGBLED_SPLIT { 8, 8 } | |||
#endif | |||
#undef PRODUCT | |||
#ifdef KEYBOARD_iris_rev2 | |||
#ifdef KEYBOARD_keebio_iris_rev2 | |||
#define PRODUCT Drashna Hacked Iris Rev.2 (16 LED) | |||
#endif | |||
@@ -23,8 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
/* Use I2C or Serial, not both */ | |||
#define USE_SERIAL | |||
#undef USE_I2C | |||
// #define USE_SERIAL | |||
#define USE_I2C | |||
/* Select hand configuration */ | |||
@@ -41,6 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#ifdef RGBLIGHT_ENABLE | |||
#define RGB_DI_PIN D3 | |||
#define RGBLED_NUM 16 // Number of LEDs | |||
#define RGBLED_SPLIT { 8, 8 } | |||
#define RGBLIGHT_HUE_STEP 12 | |||
#define RGBLIGHT_SAT_STEP 12 |
@@ -38,7 +38,7 @@ uint8_t last_osm; | |||
) \ | |||
LAYOUT_wrapper( \ | |||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ | |||
KC_TAB, K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, OS_RGUI, K16, K17, K18, K19, K1A, KC_QUOT, \ | |||
KC_TAB, K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, KC_QUOT, \ | |||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, CTL_T(K2A), KC_MRSF \ | |||
) | |||
#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__) |
@@ -5,11 +5,13 @@ CONSOLE_ENABLE = no # Console for debug(+400) | |||
COMMAND_ENABLE = no # Commands for debug and configuration | |||
TAP_DANCE_ENABLE = no | |||
RGBLIGHT_ENABLE = yes | |||
AUDIO_ENABLE = yes | |||
AUDIO_ENABLE = no | |||
NKRO_ENABLE = yes | |||
INDICATOR_LIGHTS = yes | |||
MACROS_ENABLED = no | |||
RGBLIGHT_TWINKLE = no | |||
RGBLIGHT_STARTUP_ANIMATION = yes | |||
BOOTLOADER = qmk-dfu |
@@ -14,4 +14,3 @@ | |||
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Shine | |||
#undef DEBOUNCE | |||
#define DEBOUNCE 5 |
@@ -44,10 +44,10 @@ bool skip_leds = false; | |||
KC_TAB, K01, K02, K03, K04, K05, TG(_DIABLO), TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \ | |||
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \ | |||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, CTL_T(K2A), KC_MRSF, \ | |||
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \ | |||
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \ | |||
KC_HOME, KC_PGUP, \ | |||
LT(_LOWER, KC_SPACE),KC_BSPC, KC_END, KC_PGDN, KC_DEL, LT(_RAISE, KC_ENTER) \ | |||
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \ | |||
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \ | |||
KC_APP, KC_MENU, \ | |||
KC_SPC, LT(_LOWER, KC_BSPC), OS_LWR, OS_RSE, LT(_RAISE, KC_DEL), KC_ENT \ | |||
) | |||
#define LAYOUT_ergodox_pretty_base_wrapper(...) LAYOUT_ergodox_pretty_base(__VA_ARGS__) | |||
@@ -270,8 +270,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_LOWER] = LAYOUT_ergodox_pretty_wrapper( | |||
KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11, | |||
KC_TILD, _________________LOWER_L1__________________, _______, _______, _________________LOWER_R1__________________, _______, | |||
_______, ___________________BLANK___________________, _________________LOWER_R2__________________, KC_PIPE, | |||
KC_TILD, _________________LOWER_L1__________________, _______, _______, _________________LOWER_R1__________________, KC_PIPE, | |||
_______, ___________________BLANK___________________, _________________LOWER_R2__________________, KC_DQUO, | |||
_______, ___________________BLANK___________________, _______, _______, _________________LOWER_R3__________________, KC_PSCR, | |||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, | |||
_______, _______, _______, _______, | |||
@@ -281,8 +281,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
[_RAISE] = LAYOUT_ergodox_pretty_wrapper( | |||
KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11, | |||
KC_GRV, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, _______, | |||
_______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, | |||
KC_GRV, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, KC_BSLS, | |||
_______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_QUOT, | |||
_______, _________________RAISE_L3__________________, _______, _______, _________________RAISE_R3__________________, KC_PSCR, | |||
_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_SLCK, | |||
_______, _______, _______, _______, |
@@ -14,3 +14,6 @@ UNICDOEMAP_ENABLE = no | |||
MACROS_ENABLED = no | |||
RGBLIGHT_TWINKLE = no | |||
INDICATOR_LIGHTS = no | |||
RGBLIGHT_STARTUP_ANIMATION = yes | |||
DEBOUNCE_TYPE = eager_pk |
@@ -5,17 +5,11 @@ | |||
#undef PRODUCT | |||
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Glow | |||
#undef DEBOUNCE | |||
#define DEBOUNCE 5 | |||
#ifdef RGB_MATRIX_ENABLE | |||
// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) | |||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) | |||
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) | |||
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects | |||
#define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended | |||
// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 | |||
// #define EECONFIG_RGB_MATRIX (uint32_t *)16 | |||
#endif | |||
#undef DEBOUNCE | |||
#define DEBOUNCE 1 |
@@ -1,7 +1,10 @@ | |||
USER_NAME := drashna | |||
SRC += ../drashna/keymap.c | |||
-include $(LAYOUT_KEYMAP_PATH)/../drashna/rules.mk | |||
CORRECTED_LAYOUT := $(LAYOUTS_REPO)/$(LAYOUT)/drashna | |||
SRC += $(CORRECTED_LAYOUT)/keymap.c | |||
-include $(CORRECTED_LAYOUT)/rules.mk | |||
ifneq (,$(findstring ergodox_ez,$(KEYBOARD))) | |||
RGBLIGHT_ENABLE = no |
@@ -14,5 +14,7 @@ | |||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 | |||
#endif // RGBLIGHT_ENABLE | |||
#define TAP_CODE_DELAY 10 | |||
#if defined(KEYBOARD_primekb_prime_m) | |||
#undef PRODUCT | |||
#define PRODUCT Drashna Hacked Prime_M Macro Pad | |||
#endif |
@@ -7,3 +7,4 @@ INDICATOR_LIGHTS = no | |||
RGBLIGHT_TWINKLE = yes | |||
MACROS_ENABLED = no | |||
MAKE_BOOTLOADER = yes | |||
RGBLIGHT_STARTUP_ANIMATION = yes |
@@ -36,6 +36,17 @@ | |||
#endif // KEYBOARD_planck_light | |||
#if defined(KEYBOARD_planck) | |||
#undef PRODUCT | |||
#if defined(KEYBOARD_planck_light) | |||
#define PRODUCT Drashna Hacked RGB Beacon (Planck Light) | |||
#elif defined(KEYBOARD_planck_rev6) | |||
#define PRODUCT Drashna Hacked Planck Rev6 | |||
#elif defined(KEYBOARD_planck_EZ) | |||
#define PRODUCT Drashna Hacked Planck EZ | |||
#endif | |||
#endif | |||
/* | |||
* MIDI options | |||
*/ | |||
@@ -59,5 +70,3 @@ | |||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | |||
//#define MIDI_TONE_KEYCODE_OCTAVES 2 | |||
#define TAP_CODE_DELAY 10 |
@@ -139,10 +139,8 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | |||
#ifdef BACKLIGHT_ENABLE | |||
backlight_step(); | |||
#endif | |||
PORTE &= ~(1<<6); | |||
} else { | |||
unregister_code(KC_RSFT); | |||
PORTE |= (1<<6); | |||
} | |||
return false; | |||
break; |
@@ -6,13 +6,15 @@ COMMAND_ENABLE = no # Commands for debug and configuration | |||
TAP_DANCE_ENABLE = no | |||
AUDIO_ENABLE = yes | |||
ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6 | |||
RGBLIGHT_ENABLE = yes | |||
INDICATOR_LIGHTS = yes | |||
RGBLIGHT_TWINKLE = yes | |||
RGBLIGHT_ENABLE = yes | |||
INDICATOR_LIGHTS = yes | |||
RGBLIGHT_TWINKLE = yes | |||
RGBLIGHT_STARTUP_ANIMATION = yes | |||
endif | |||
ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light | |||
RGB_MATRIX_ENABLE = yes | |||
RGBLIGHT_ENABLE = yes | |||
RGB_MATRIX_ENABLE = yes | |||
RGBLIGHT_ENABLE = no | |||
RGBLIGHT_STARTUP_ANIMATION = no | |||
endif | |||
ifeq ($(strip $(PROTOCOL)), VUSB) |
@@ -13,4 +13,10 @@ | |||
#define RGBLIGHT_SAT_STEP 8 | |||
#undef RGBLIGHT_VAL_STEP | |||
#define RGBLIGHT_VAL_STEP 8 | |||
#define RGBLIGHT_LIMIT_VAL 175 | |||
#define RGBLIGHT_SLEEP | |||
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3 | |||
#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14 | |||
#endif |
@@ -0,0 +1,3 @@ | |||
secrets.c | |||
secrets.h | |||
drashna_song_list.h |
@@ -3,7 +3,7 @@ stages: | |||
- build | |||
- deploy | |||
Tests: | |||
Preliminary Test: | |||
stage: test | |||
variables: | |||
GIT_SUBMODULE_STRATEGY: recursive | |||
@@ -12,12 +12,12 @@ Tests: | |||
image: ubuntu:18.10 | |||
before_script: | |||
- apt-get update -qy | |||
- apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip | |||
- apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi git libnewlib-arm-none-eabi gcc-avr unzip wget zip | |||
- avr-gcc --version | |||
- uname -a | |||
script: | |||
- make test:all | |||
- make planck/rev6:default | |||
- make planck/rev6:default planck/rev5:default | |||
QMK Firmware Defaults: | |||
stage: deploy | |||
@@ -47,29 +47,7 @@ Drashna Firmware: | |||
- apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip | |||
- avr-gcc --version | |||
script: | |||
- make iris/rev2:drashna iris/rev2:drashna_old ergodox_ez:drashna ergodox_ez:drashna_glow viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna planck/rev6:drashna fractal:drashna | |||
artifacts: | |||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" | |||
paths: | |||
- ./*.hex | |||
- ./*.bin | |||
expire_in: 1 month | |||
Firmware Deploy: | |||
stage: deploy | |||
dependencies: | |||
- Drashna Firmware | |||
variables: | |||
GIT_SUBMODULE_STRATEGY: recursive | |||
tags: | |||
- linux | |||
image: ubuntu:18.10 | |||
before_script: | |||
- apt-get update -qy | |||
- apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip | |||
- avr-gcc --version | |||
script: | |||
- make iris/rev2:drashna:production iris/rev2:drashna_old:production ergodox_ez:drashna ergodox_ez:drashna_glow viterbi/rev1:drashna:production orthodox/rev1:drashna:production orthodox/rev3:drashna:production crkbd:drashna:production planck/light:drashna planck/rev6:drashna fractal:drashna:production | |||
- make keebio/iris/rev2:drashna keebio/iris/rev2:drashna_old ergodox_ez:drashna ergodox_ez:drashna_glow keebio/viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna planck/rev6:drashna fractal:drashna primekb/prime_m:drashna -j16 --output-sync | |||
artifacts: | |||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" | |||
paths: |
@@ -82,4 +82,4 @@ | |||
#define NO_ACTION_MACRO | |||
#define NO_ACTION_FUNCTION | |||
#define MACRO_TIMER 5 | |||
#define TAP_CODE_DELAY 5 |
@@ -38,9 +38,9 @@ bool send_game_macro(const char *str, keyrecord_t *record, bool override) { | |||
} | |||
clear_keyboard(); | |||
tap_code(keycode); | |||
wait_ms(50); | |||
send_string_with_delay(str, MACRO_TIMER); | |||
wait_ms(50); | |||
wait_ms(TAP_CODE_DELAY); | |||
send_string_with_delay(str, TAP_CODE_DELAY); | |||
wait_ms(TAP_CODE_DELAY); | |||
tap_code(KC_ENTER); | |||
} | |||
if (override) wait_ms(3000); | |||
@@ -53,12 +53,10 @@ bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) { | |||
this_timer= timer_read(); | |||
} else { | |||
if (timer_elapsed(this_timer) < TAPPING_TERM){ | |||
register_code(code); | |||
unregister_code(code); | |||
tap_code(code); | |||
} else { | |||
register_code(mod_code); | |||
register_code(code); | |||
unregister_code(code); | |||
tap_code(code); | |||
unregister_code(mod_code); | |||
} | |||
} | |||
@@ -70,12 +68,10 @@ bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t thi | |||
this_timer= timer_read(); | |||
} else { | |||
if (timer_elapsed(this_timer) < TAPPING_TERM){ | |||
register_code(code); | |||
unregister_code(code); | |||
tap_code(code); | |||
} else { | |||
register_code(mod_code); | |||
register_code(code); | |||
unregister_code(code); | |||
tap_code(code); | |||
unregister_code(mod_code); | |||
} | |||
} |
@@ -27,7 +27,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) | |||
#include "rgb_stuff.h" | |||
#endif | |||
#if defined(AUDIO_ENABLE) && __GNUC__ > 7 | |||
#if __has_include("drashna_song_list.h") | |||
#include "drashna_song_list.h" | |||
#endif | |||
#endif | |||
/* Define layer names */ | |||
enum userspace_layers { |
@@ -18,7 +18,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
// If console is enabled, it will print the matrix position and status of each key pressed | |||
#ifdef KEYLOGGER_ENABLE | |||
#if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2) | |||
#if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2) | |||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed); | |||
#else | |||
xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); | |||
@@ -37,31 +37,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
uint8_t temp_mod = get_mods(); | |||
uint8_t temp_osm = get_oneshot_mods(); | |||
clear_mods(); clear_oneshot_mods(); | |||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), MACRO_TIMER); | |||
send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY); | |||
#ifndef MAKE_BOOTLOADER | |||
if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT ) | |||
#endif | |||
{ | |||
#if defined(__arm__) | |||
send_string_with_delay_P(PSTR(":dfu-util"), MACRO_TIMER); | |||
send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY); | |||
#elif defined(BOOTLOADER_DFU) | |||
send_string_with_delay_P(PSTR(":dfu"), MACRO_TIMER); | |||
send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY); | |||
#elif defined(BOOTLOADER_HALFKAY) | |||
send_string_with_delay_P(PSTR(":teensy"), MACRO_TIMER); | |||
send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY); | |||
#elif defined(BOOTLOADER_CATERINA) | |||
send_string_with_delay_P(PSTR(":avrdude"), MACRO_TIMER); | |||
send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY); | |||
#endif // bootloader options | |||
} | |||
if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), MACRO_TIMER); } | |||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), MACRO_TIMER); | |||
set_mods(temp_mod); | |||
set_oneshot_mods(temp_osm); | |||
if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); } | |||
send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY); | |||
} | |||
break; | |||
case VRSN: // Prints firmware version | |||
if (record->event.pressed) { | |||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER); | |||
send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); | |||
} | |||
break; | |||
@@ -56,6 +56,8 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); | |||
#define ADJUST MO(_ADJUST) | |||
#define TG_MODS TG(_MODS) | |||
#define TG_GAME TG(_GAMEPAD) | |||
#define OS_LWR OSL(_LOWER) | |||
#define OS_RSE OSL(_RAISE) | |||
#define KC_SEC1 KC_SECRET_1 | |||
#define KC_SEC2 KC_SECRET_2 |
@@ -247,17 +247,20 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) { | |||
void keyboard_post_init_rgb(void) { | |||
#ifdef RGBLIGHT_ENABLE | |||
rgblight_enable_noeeprom(); | |||
layer_state_set_user(layer_state); | |||
uint16_t old_hue = rgblight_config.hue; | |||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); | |||
for (uint16_t i = 360; i > 0; i--) { | |||
rgblight_sethsv_noeeprom( ( i + old_hue) % 360, 255, 255); | |||
wait_ms(10); | |||
} | |||
layer_state_set_user(layer_state); | |||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION) | |||
if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); } | |||
if (rgblight_config.enable) { | |||
layer_state_set_user(layer_state); | |||
uint16_t old_hue = rgblight_config.hue; | |||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); | |||
for (uint16_t i = 360; i > 0; i--) { | |||
rgblight_sethsv_noeeprom( ( i + old_hue) % 360, 255, 255); | |||
matrix_scan(); | |||
wait_ms(10); | |||
} | |||
} | |||
#endif | |||
layer_state_set_user(layer_state); | |||
} | |||
void matrix_scan_rgb(void) { | |||
@@ -278,7 +281,7 @@ uint32_t layer_state_set_rgb(uint32_t state) { | |||
switch (biton32(state)) { | |||
case _MACROS: | |||
rgblight_sethsv_noeeprom_orange(); | |||
userspace_config.is_overwatch ? rgblight_effect_snake(RGBLIGHT_MODE_SNAKE + 2) : rgblight_effect_snake(RGBLIGHT_MODE_SNAKE + 3); | |||
userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3); | |||
break; | |||
case _MEDIA: | |||
rgblight_sethsv_noeeprom_chartreuse(); |
@@ -9,7 +9,9 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) | |||
SRC += tap_dances.c | |||
endif | |||
EXTRAFLAGS += -flto | |||
ifeq ($(PLATFORM),AVR) | |||
EXTRAFLAGS += -flto | |||
endif | |||
ifeq ($(strip $(NO_SECRETS)), yes) | |||
OPT_DEFS += -DNO_SECRETS | |||
@@ -26,6 +28,9 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) | |||
ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes) | |||
OPT_DEFS += -DRGBLIGHT_NOEEPROM | |||
endif | |||
ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes) | |||
OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION | |||
endif | |||
endif | |||
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) |