From 7ceca2acf7d9e7e7a2e8735578ffab897e26fae3 Mon Sep 17 00:00:00 2001 From: Harshit Goel Date: Wed, 21 Jul 2021 12:34:03 +0530 Subject: [PATCH] Pteron36 Oled, rgb support, enable ee_hand (#36) * add pteron36 * finish vial config * oled support * enable underglow rgbf' * define ee_hand * add 3 more layers, add Airline call sign on layer for oled * disable feature to allow firmware to fit keyboard flash memory Co-authored-by: Harshti Goel --- keyboards/pteron36/config.h | 11 +++ keyboards/pteron36/keymaps/via/keymap.c | 87 ++++++++++++++++++++---- keyboards/pteron36/keymaps/via/vial.json | 2 +- keyboards/pteron36/rules.mk | 9 ++- 4 files changed, 91 insertions(+), 18 deletions(-) diff --git a/keyboards/pteron36/config.h b/keyboards/pteron36/config.h index 2d70bb9dd5..ac3d3ae25c 100644 --- a/keyboards/pteron36/config.h +++ b/keyboards/pteron36/config.h @@ -169,3 +169,14 @@ along with this program. If not, see . //default trans keycode. #define VIAL_ENCODER_DEFAULT { KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS} + +//overwrite default tapping behaviour +#define IGNORE_MOD_TAP_INTERRUPT +//RGB Underglow +#define RGB_DI_PIN B6 +#define RGBLED_NUM 17 +#define RGBLIGHT_SPLIT +#define RGBLIGHT_EFFECT_KNIGHT + +//EE Handness +#define EE_HANDS diff --git a/keyboards/pteron36/keymaps/via/keymap.c b/keyboards/pteron36/keymaps/via/keymap.c index 7cd649df80..a32c6c00b6 100644 --- a/keyboards/pteron36/keymaps/via/keymap.c +++ b/keyboards/pteron36/keymaps/via/keymap.c @@ -22,63 +22,120 @@ // entirely and just use numbers. enum custom_keycodes { - _QWERTY, - _SYMB, - _NAV, - _ADJUST, - _MOUSE, - _NUMB, - _FNR + _ALFA, + _BRAVO, + _CHARLIE, + _DELTA, + _ECHO, + _FOX, + _GOLF }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_split_3x5_3_encoder( + [_ALFA] = LAYOUT_split_3x5_3_encoder( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_B,KC_LBRACKET, KC_RBRACKET, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT ), - [_SYMB] = LAYOUT_split_3x5_3_encoder( + [_BRAVO] = LAYOUT_split_3x5_3_encoder( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_NAV] = LAYOUT_split_3x5_3_encoder( + [_CHARLIE] = LAYOUT_split_3x5_3_encoder( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_ADJUST] = LAYOUT_split_3x5_3_encoder( + [_DELTA] = LAYOUT_split_3x5_3_encoder( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_MOUSE] = LAYOUT_split_3x5_3_encoder( + [_ECHO] = LAYOUT_split_3x5_3_encoder( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_NUMB] = LAYOUT_split_3x5_3_encoder( + [_FOX] = LAYOUT_split_3x5_3_encoder( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_FNR] = LAYOUT_split_3x5_3_encoder( + [_GOLF] = LAYOUT_split_3x5_3_encoder( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; -}; \ No newline at end of file +#ifdef OLED_DRIVER_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} +static void render_status(void){ + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _ALFA: + oled_write_P(PSTR("Alfa\n"), false); + break; + case _BRAVO: + oled_write_P(PSTR("Bravo\n"), false); + break; + case _CHARLIE: + oled_write_P(PSTR("Charlie\n"), false); + break; + case _DELTA: + oled_write_P(PSTR("Delta\n"), false); + break; + case _ECHO: + oled_write_P(PSTR("Echo\n"), false); + break; + case _FOX: + oled_write_P(PSTR("Fox\n"), false); + break; + case _GOLF: + oled_write_P(PSTR("Golf\n"), false); + break; + + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +void oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); // Renders a static logo + oled_scroll_left(); // Turns on scrolling + } +} +#endif diff --git a/keyboards/pteron36/keymaps/via/vial.json b/keyboards/pteron36/keymaps/via/vial.json index d2458e4a19..3cdc39852d 100644 --- a/keyboards/pteron36/keymaps/via/vial.json +++ b/keyboards/pteron36/keymaps/via/vial.json @@ -2,7 +2,7 @@ "name": "Pteron36", "vendorId": "0x4847", "productId": "0x5054", - "lighting": "none", + "lighting": "qmk_rgblight", "matrix": { "rows": 8, "cols": 5 diff --git a/keyboards/pteron36/rules.mk b/keyboards/pteron36/rules.mk index e3c3ef2873..533c79f00d 100644 --- a/keyboards/pteron36/rules.mk +++ b/keyboards/pteron36/rules.mk @@ -17,14 +17,19 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = no # OLED display; work in progress to add support. will be update in future. +OLED_DRIVER_ENABLE = yes # OLED display; work in progress to add support. will be update in future. SPLIT_KEYBOARD = yes #Encoder ENCODER_ENABLE = yes +#Disable some features to save space +QMK_SETTINGS = no +TAP_DANCE_ENABLE = no +COMBO_ENABLE = no + LAYOUTS = split_3x5_3