diff --git a/keyboards/pteron36/config.h b/keyboards/pteron36/config.h index dcc9d68c7867..d6f31514e60b 100644 --- a/keyboards/pteron36/config.h +++ b/keyboards/pteron36/config.h @@ -152,4 +152,16 @@ along with this program. If not, see . //#define BOOTMAGIC_LITE_ROW 0 //#define BOOTMAGIC_LITE_COLUMN 0 // for via -#define DYNAMIC_KEYMAP_LAYER_COUNT 7 \ No newline at end of file +#define DYNAMIC_KEYMAP_LAYER_COUNT 7 + +//left encoder +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F4 } + +//right encoder +#define ENCODERS_PAD_A_RIGHT { F4 } +#define ENCODERS_PAD_B_RIGHT { F5 } + +//RGB Underglow +#define RGB_DI_PIN B6 +#define RGBLED_NUM 10 \ No newline at end of file diff --git a/keyboards/pteron36/keymaps/default/keymap.c b/keyboards/pteron36/keymaps/default/keymap.c index 11d00bb31868..0cc0e2b4716a 100644 --- a/keyboards/pteron36/keymaps/default/keymap.c +++ b/keyboards/pteron36/keymaps/default/keymap.c @@ -32,4 +32,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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 - )}; \ No newline at end of file + )}; diff --git a/keyboards/pteron36/keymaps/via/keymap.c b/keyboards/pteron36/keymaps/via/keymap.c index 1c614596eb48..9e467dcde529 100644 --- a/keyboards/pteron36/keymaps/via/keymap.c +++ b/keyboards/pteron36/keymaps/via/keymap.c @@ -81,4 +81,61 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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 _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbol\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _MOUSE: + oled_write_P(PSTR("Mouse\n"), false); + break; + case _NUMB: + oled_write_P(PSTR("Number\n"), false); + break; + case _FNR: + oled_write_P(PSTR("FunR\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/readme.md b/keyboards/pteron36/keymaps/via/readme.md index 32ab1253d7ae..5bde196156b3 100644 --- a/keyboards/pteron36/keymaps/via/readme.md +++ b/keyboards/pteron36/keymaps/via/readme.md @@ -1 +1 @@ -# Default keymap for Redox Wireless +# Default keymap for via \ No newline at end of file diff --git a/keyboards/pteron36/keymaps/via/rules.mk b/keyboards/pteron36/keymaps/via/rules.mk index 43061db1dd46..36b7ba9cbc98 100644 --- a/keyboards/pteron36/keymaps/via/rules.mk +++ b/keyboards/pteron36/keymaps/via/rules.mk @@ -1,2 +1,2 @@ VIA_ENABLE = yes -LTO_ENABLE = yes \ No newline at end of file +LTO_ENABLE = yes diff --git a/keyboards/pteron36/pteron36.c b/keyboards/pteron36/pteron36.c index 4f06d822de42..3288626f00f8 100644 --- a/keyboards/pteron36/pteron36.c +++ b/keyboards/pteron36/pteron36.c @@ -14,4 +14,53 @@ * along with this program. If not, see . */ -#include "pteron36.h" \ No newline at end of file +#include "pteron36.h" + +//common encoder setup + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC__VOLUP); + } else { + tap_code(KC__VOLDOWN); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } + return true; +} +//common oled support. +#ifdef OLED_DRIVER_ENABLE +__attribute__((weak)) void oled_task_user(void) { + if (is_keyboard_master()) { + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("Default"), 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); + } else { + 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); + oled_scroll_left(); // Turns on scrolling + } +} +#endif diff --git a/keyboards/pteron36/readme.md b/keyboards/pteron36/readme.md index b9e919c7564f..a68c7a55b4fe 100644 --- a/keyboards/pteron36/readme.md +++ b/keyboards/pteron36/readme.md @@ -20,12 +20,15 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to ## Default Keymap and Miryoku Layout support -The keyboard was designed with miryoku layout in mind. The default layout is very basic and does not have much use. I will be opening a pr to make the keyboard available with miryoku layout soon. Currently to build the keyboard with miryoku you will have to checkout latest miryoku qmk repo, and add the keyboard folder there manually. After copying the folder run the following command +The keyboard was designed with miryoku layout in mind. The default layout is very basic and does not have much use, modify the keymap as you see fit. Build keyboard with manna-harbour_miryoku as keymap, qmk should compile the firmare without any issue. + + make pteron36:manna-harbour_miryoku - make pteron36:manna-harbour_miryoku - Add miryoku params as required. +Pteron36 uses community layout, hence there is no need for separate keymap folder for any keymap that support 5x3_3 layout. + +## VIA support -## OLED and RotaryEncoder +The VIA keymap is working as intended. -I am working on adding OLED and RotaryEncoder support in keyboard config. + make pteron36:via diff --git a/keyboards/pteron36/rules.mk b/keyboards/pteron36/rules.mk index 64a21b2e9b74..278246b37134 100644 --- a/keyboards/pteron36/rules.mk +++ b/keyboards/pteron36/rules.mk @@ -17,10 +17,10 @@ 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 AUDIO_ENABLE = no # Audio output - -OLED_ENABLE = no # OLED display; work in progress to add support. will be update in future. -SPLIT_KEYBOARD = yes +OLED_DRIVER_ENABLE = yes # OLED display +ENCODER_ENABLE = yes # Encoder support +SPLIT_KEYBOARD = yes # Split enable LAYOUTS = split_3x5_3