diff options
| -rw-r--r-- | keyboards/aleblazer/zodiark/config.h | 75 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/info.json | 12 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/default/config.h | 22 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/default/keymap.c | 327 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/default/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/slimoled/config.h | 22 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c | 330 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/via/config.h | 22 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/via/encoder.c | 35 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/via/keymap.c | 52 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/via/oled.c | 78 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/keymaps/via/rules.mk | 2 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/readme.md | 23 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/rules.mk | 27 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/zodiark.c | 54 | ||||
| -rw-r--r-- | keyboards/aleblazer/zodiark/zodiark.h | 38 | 
17 files changed, 1121 insertions, 0 deletions
diff --git a/keyboards/aleblazer/zodiark/config.h b/keyboards/aleblazer/zodiark/config.h new file mode 100644 index 0000000000..84795f024b --- /dev/null +++ b/keyboards/aleblazer/zodiark/config.h @@ -0,0 +1,75 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 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 + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xF901 +#define PRODUCT_ID      0xF902 +#define DEVICE_VER      0x0001 +#define MANUFACTURER    Aleblazer +#define PRODUCT         Zodiark + +#define NO_ACTION_MACRO + +#define SOFT_SERIAL_PIN D3 +#define SERIAL_USE_MULTI_TRANSACTION +#define SELECT_SOFT_SERIAL_SPEED 1 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D4 } +#define ENCODERS_PAD_A_RIGHT { D4 } +#define ENCODERS_PAD_B_RIGHT { D2 } +#define ENCODER_RESOLUTION 3 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C6, D7, E6, B4, F4 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B5 + +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 68 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 34, 34 } +#define RGBLIGHT_LIMIT_VAL 170 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_LED_TOTAL 68 +#define RGB_MATRIX_SPLIT { 34, 34 } +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_HUE_STEP 8 +#define RGB_MATRIX_SAT_STEP 8 +#define RGB_MATRIX_VAL_STEP 8 +#define RGB_MATRIX_SPD_STEP 10 +#endif diff --git a/keyboards/aleblazer/zodiark/info.json b/keyboards/aleblazer/zodiark/info.json new file mode 100644 index 0000000000..e0acaaa466 --- /dev/null +++ b/keyboards/aleblazer/zodiark/info.json @@ -0,0 +1,12 @@ +{ +    "keyboard_name": "zodiark",  +    "url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark",  +    "maintainer": "Aleblazer",  +    "width": 19,  +    "height": 8.48,  +    "layouts": { +        "LAYOUT": { +            "layout": [{"label":"L03", "x":3, "y":0}, {"label":"R03", "x":15, "y":0}, {"label":"L02", "x":2, "y":0.125}, {"label":"L04", "x":4, "y":0.125}, {"label":"R02", "x":14, "y":0.125}, {"label":"R04", "x":16, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"R01", "x":13, "y":0.25}, {"label":"L00", "x":0, "y":0.53}, {"label":"L01", "x":1, "y":0.53}, {"label":"R05", "x":17, "y":0.53}, {"label":"R06", "x":18, "y":0.53}, {"label":"L13", "x":3, "y":1}, {"label":"R13", "x":15, "y":1}, {"label":"L12", "x":2, "y":1.125}, {"label":"L14", "x":4, "y":1.125}, {"label":"R12", "x":14, "y":1.125}, {"label":"R14", "x":16, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"R11", "x":13, "y":1.25}, {"label":"L10", "x":0, "y":1.53}, {"label":"L11", "x":1, "y":1.53}, {"label":"R15", "x":17, "y":1.53}, {"label":"R16", "x":18, "y":1.53}, {"label":"L06", "x":6, "y":1.7000000000000002}, {"label":"R00", "x":12, "y":1.7000000000000002}, {"label":"L23", "x":3, "y":2.0}, {"label":"R23", "x":15, "y":2.0}, {"label":"L22", "x":2, "y":2.125}, {"label":"L24", "x":4, "y":2.125}, {"label":"R22", "x":14, "y":2.125}, {"label":"R24", "x":16, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"R21", "x":13, "y":2.25}, {"label":"L20", "x":0, "y":2.5300000000000002}, {"label":"L21", "x":1, "y":2.5300000000000002}, {"label":"R25", "x":17, "y":2.5300000000000002}, {"label":"R26", "x":18, "y":2.5300000000000002}, {"label":"L16", "x":6, "y":2.7}, {"label":"R10", "x":12, "y":2.7}, {"label":"L33", "x":3, "y":3.0000000000000004}, {"label":"R33", "x":15, "y":3.0000000000000004}, {"label":"L32", "x":2, "y":3.1250000000000004}, {"label":"L34", "x":4, "y":3.1250000000000004}, {"label":"R32", "x":14, "y":3.1250000000000004}, {"label":"R34", "x":16, "y":3.1250000000000004}, {"label":"L35", "x":5, "y":3.2500000000000004}, {"label":"R31", "x":13, "y":3.2500000000000004}, {"label":"L30", "x":0, "y":3.5300000000000002}, {"label":"L31", "x":1, "y":3.5300000000000002}, {"label":"R35", "x":17, "y":3.5300000000000002}, {"label":"R36", "x":18, "y":3.5300000000000002}, {"label":"L43", "x":3, "y":4.0}, {"label":"R43", "x":15, "y":4.0}, {"label":"L42", "x":2, "y":4.125}, {"label":"R44", "x":16, "y":4.125}, {"label":"L44", "x":4, "y":4.13}, {"label":"R42", "x":14, "y":4.13}, {"label":"L40", "x":0, "y":4.53}, {"label":"L41", "x":1, "y":4.53}, {"label":"R45", "x":17, "y":4.53}, {"label":"R46", "x":18, "y":4.53}, {"label":"L26", "x":-0.33, "y":5.13}, {"label":"L36", "x":0.6699999999999999, "y":5.13}, {"label":"L45", "x":-0.83, "y":6.13, "w":1.5}, {"label":"L46", "x":0.67, "y":6.13}, {"label":"R30", "x":-2.1, "y":6.48}, {"label":"R20", "x":-1.1, "y":6.48}, {"label":"R40", "x":-2.1, "y":7.48}, {"label":"R41", "x":-1.1, "y":7.48, "w":1.5}] +        } +    } +} diff --git a/keyboards/aleblazer/zodiark/keymaps/default/config.h b/keyboards/aleblazer/zodiark/keymaps/default/config.h new file mode 100644 index 0000000000..0c89f634bc --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ +#pragma once + +#ifdef OLED_DRIVER_ENABLE +  #define OLED_DISPLAY_128X64 +  #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/default/keymap.c b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c new file mode 100644 index 0000000000..0692aee124 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c @@ -0,0 +1,327 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ +#include QMK_KEYBOARD_H + +enum sofle_layers { +    /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ +    _QWERTY, +    _COLEMAK, +    _LOWER, +    _RAISE, +    _ADJUST, +}; + +enum custom_keycodes { +    KC_QWERTY = SAFE_RANGE, +    KC_COLEMAK, +    KC_LOWER, +    KC_RAISE, +    KC_ADJUST, +    KC_PRVWD, +    KC_NXTWD, +    KC_LSTRT, +    KC_LEND, +    KC_DLINE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +	[_QWERTY] = LAYOUT( +      KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                                           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, +      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,  KC_LBRC,                       KC_RBRC,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS, +      KC_ADJUST, KC_A,  KC_S,    KC_D,    KC_F,    KC_G,  KC_MINS,                       KC_EQL,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, +      KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,  KC_GRV, KC_MUTE,      RGB_TOG, KC_DEL,KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , +      KC_LCTL, KC_LALT, KC_LGUI, LALT(KC_TAB), KC_LOWER,  KC_SPC,   KC_ENT,    KC_ENT,   KC_SPC,  KC_RAISE,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +    ), +		 +	[_LOWER] = LAYOUT( +      _______, KC_F1, KC_F2, KC_F3, KC_F4,   KC_F5,                                KC_F6,   KC_F7,   KC_F8, KC_F9, KC_F10, KC_F11, +      KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______,                   _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, +      KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______,                   _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, +      _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______,  _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, +      _______, KC_P0, KC_PDOT, KC_PENT, _______,     _______,  _______,   _______,    _______,   _______, KC_P0, KC_PDOT, KC_PENT, _______ +      ), +	   +	[_RAISE] = LAYOUT( +      _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                           KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11, +      KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______,                    _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, +      KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______,                    _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, +      _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______,  _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, +      _______, KC_P0, KC_PDOT, KC_PENT, _______,    _______,   _______,  _______,    _______,    _______, KC_P0, KC_PDOT, KC_PENT, _______ +      ), + +	[_ADJUST] = LAYOUT( +      _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                              KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11, +      _______, _______, _______, _______, _______, _______, _______,                   _______, _______, EEP_RST, _______, _______, _______, KC_F12, +      _______, _______, _______, _______, _______, _______, _______,                   _______, _______, RGB_TOG, _______, _______, _______, _______, +      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, +      _______, _______, _______, _______, _______,      _______,     _______, _______,     _______,      RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD +      ) + +}; +#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,0 +    }; + +    oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { +    // Print current mode +    oled_write_P(PSTR("\n\n"), false); +    oled_write_ln_P(PSTR("MODE"), false); +    oled_write_ln_P(PSTR(""), false); +    if (keymap_config.swap_lctl_lgui) { +        oled_write_ln_P(PSTR("MAC"), false); +    } else { +        oled_write_ln_P(PSTR("WIN"), false); +    } + +    switch (get_highest_layer(default_layer_state)) { +        case _QWERTY: +            oled_write_ln_P(PSTR("Qwrt"), false); +            break; +        case _COLEMAK: +            oled_write_ln_P(PSTR("Clmk"), false); +            break; +        default: +            oled_write_P(PSTR("Undef"), false); +    } +    oled_write_P(PSTR("\n\n"), false); +    // Print current layer +    oled_write_ln_P(PSTR("LAYER"), false); +    switch (get_highest_layer(layer_state)) { +        case _COLEMAK: +        case _QWERTY: +            oled_write_P(PSTR("Base\n"), 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("Adj\n"), false); +            break; +        default: +            oled_write_ln_P(PSTR("Undef"), false); +    } +    oled_write_P(PSTR("\n\n"), false); +    led_t led_usb_state = host_keyboard_led_state(); +    oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { +    if (is_keyboard_master()) { +        return OLED_ROTATION_90; +    } +    return rotation; +} + +void oled_task_user(void) { +    if (is_keyboard_master()) { +        print_status_narrow(); +    } else { +        render_logo(); +    } +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +    switch (keycode) { +        case KC_QWERTY: +            if (record->event.pressed) { +                set_single_persistent_default_layer(_QWERTY); +            } +            return false; +        case KC_COLEMAK: +            if (record->event.pressed) { +                set_single_persistent_default_layer(_COLEMAK); +            } +            return false; +        case KC_LOWER: +            if (record->event.pressed) { +                layer_on(_LOWER); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } else { +                layer_off(_LOWER); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } +            return false; +        case KC_RAISE: +            if (record->event.pressed) { +                layer_on(_RAISE); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } else { +                layer_off(_RAISE); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } +            return false; +        case KC_ADJUST: +            if (record->event.pressed) { +                layer_on(_ADJUST); +            } else { +                layer_off(_ADJUST); +            } +            return false; +        case KC_PRVWD: +            if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                    register_mods(mod_config(MOD_LALT)); +                    register_code(KC_LEFT); +                } else { +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_LEFT); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LALT)); +                    unregister_code(KC_LEFT); +                } else { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_LEFT); +                } +            } +            break; +        case KC_NXTWD: +             if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                    register_mods(mod_config(MOD_LALT)); +                    register_code(KC_RIGHT); +                } else { +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_RIGHT); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LALT)); +                    unregister_code(KC_RIGHT); +                } else { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_RIGHT); +                } +            } +            break; +        case KC_LSTRT: +            if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                     //CMD-arrow on Mac, but we have CTL and GUI swapped +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_LEFT); +                } else { +                    register_code(KC_HOME); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_LEFT); +                } else { +                    unregister_code(KC_HOME); +                } +            } +            break; +        case KC_LEND: +            if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                    //CMD-arrow on Mac, but we have CTL and GUI swapped +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_RIGHT); +                } else { +                    register_code(KC_END); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_RIGHT); +                } else { +                    unregister_code(KC_END); +                } +            } +            break; +        case KC_DLINE: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_BSPC); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_BSPC); +            } +            break; +        case KC_COPY: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_C); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_C); +            } +            return false; +        case KC_PASTE: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_V); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_V); +            } +            return false; +        case KC_CUT: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_X); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_X); +            } +            return false; +            break; +        case KC_UNDO: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_Z); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_Z); +            } +            return false; +    } +    return true; +} + +#ifdef ENCODER_ENABLE + +void encoder_update_user(uint8_t index, bool clockwise) { +    if (index == 0) { +        if (clockwise) { +            tap_code(KC_VOLU); +        } else { +            tap_code(KC_VOLD); +        } +    } else if (index == 1) { +        if (clockwise) { +              rgblight_step(); +        } else { +           rgblight_step_reverse(); +        } +    } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/default/rules.mk b/keyboards/aleblazer/zodiark/keymaps/default/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/default/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h new file mode 100644 index 0000000000..36d9637e72 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ +#pragma once + +#ifdef OLED_DRIVER_ENABLE +  #define OLED_DISPLAY_128X32 +  #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c new file mode 100644 index 0000000000..4e98b5cf0d --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c @@ -0,0 +1,330 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ +#include QMK_KEYBOARD_H + +enum sofle_layers { +    /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ +    _QWERTY, +    _COLEMAK, +    _LOWER, +    _RAISE, +    _ADJUST, +}; + +enum custom_keycodes { +    KC_QWERTY = SAFE_RANGE, +    KC_COLEMAK, +    KC_LOWER, +    KC_RAISE, +    KC_ADJUST, +    KC_PRVWD, +    KC_NXTWD, +    KC_LSTRT, +    KC_LEND, +    KC_DLINE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +	[_QWERTY] = LAYOUT( +      KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                                           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, +      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,  KC_LBRC,                       KC_RBRC,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS, +      KC_ADJUST, KC_A,  KC_S,    KC_D,    KC_F,    KC_G,  KC_MINS,                       KC_EQL,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, +      KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,  KC_GRV, KC_MUTE,      RGB_TOG, KC_DEL,KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , +      KC_LCTL, KC_LALT, KC_LGUI, LALT(KC_TAB), KC_LOWER,  KC_SPC,   KC_ENT,    KC_ENT,   KC_SPC,  KC_RAISE,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +    ), +		 +	[_LOWER] = LAYOUT( +      _______, KC_F1, KC_F2, KC_F3, KC_F4,   KC_F5,                                KC_F6,   KC_F7,   KC_F8, KC_F9, KC_F10, KC_F11, +      KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______,                   _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, +      KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______,                   _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, +      _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______,  _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, +      _______, KC_P0, KC_PDOT, KC_PENT, _______,     _______,  _______,   _______,    _______,   _______, KC_P0, KC_PDOT, KC_PENT, _______ +      ), +	   +	[_RAISE] = LAYOUT( +      _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                           KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11, +      KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______,                    _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, +      KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______,                    _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, +      _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______,  _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, +      _______, KC_P0, KC_PDOT, KC_PENT, _______,    _______,   _______,  _______,    _______,    _______, KC_P0, KC_PDOT, KC_PENT, _______ +      ), + +	[_ADJUST] = LAYOUT( +      _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                              KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11, +      _______, _______, _______, _______, _______, _______, _______,                   _______, _______, EEP_RST, _______, _______, _______, KC_F12, +      _______, _______, _______, _______, _______, _______, _______,                   _______, _______, RGB_TOG, _______, _______, _______, _______, +      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, +      _______, _______, _______, _______, _______,      _______,     _______, _______,     _______,      RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD +      ) + +}; +#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,0 +    }; + +    oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { +    // Print current mode +    oled_write_P(PSTR("\n\n"), false); +    oled_write_ln_P(PSTR("MODE"), false); +    oled_write_ln_P(PSTR(""), false); +    if (keymap_config.swap_lctl_lgui) { +        oled_write_ln_P(PSTR("MAC"), false); +    } else { +        oled_write_ln_P(PSTR("WIN"), false); +    } + +    switch (get_highest_layer(default_layer_state)) { +        case _QWERTY: +            oled_write_ln_P(PSTR("Qwrt"), false); +            break; +        case _COLEMAK: +            oled_write_ln_P(PSTR("Clmk"), false); +            break; +        default: +            oled_write_P(PSTR("Undef"), false); +    } +    oled_write_P(PSTR("\n\n"), false); +    // Print current layer +    oled_write_ln_P(PSTR("LAYER"), false); +    switch (get_highest_layer(layer_state)) { +        case _COLEMAK: +        case _QWERTY: +            oled_write_P(PSTR("Base\n"), 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("Adj\n"), false); +            break; +        default: +            oled_write_ln_P(PSTR("Undef"), false); +    } +    oled_write_P(PSTR("\n\n"), false); +    led_t led_usb_state = host_keyboard_led_state(); +    oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { +    if (is_keyboard_master()) { +        return OLED_ROTATION_90; +    } +    return rotation; +} + +void oled_task_user(void) { +    if (is_keyboard_master()) { +        print_status_narrow(); +    } else { +        render_logo(); +    } +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +    switch (keycode) { +        case KC_QWERTY: +            if (record->event.pressed) { +                set_single_persistent_default_layer(_QWERTY); +            } +            return false; +        case KC_COLEMAK: +            if (record->event.pressed) { +                set_single_persistent_default_layer(_COLEMAK); +            } +            return false; +        case KC_LOWER: +            if (record->event.pressed) { +                layer_on(_LOWER); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } else { +                layer_off(_LOWER); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } +            return false; +        case KC_RAISE: +            if (record->event.pressed) { +                layer_on(_RAISE); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } else { +                layer_off(_RAISE); +                update_tri_layer(_LOWER, _RAISE, _ADJUST); +            } +            return false; +        case KC_ADJUST: +            if (record->event.pressed) { +                layer_on(_ADJUST); +            } else { +                layer_off(_ADJUST); +            } +            return false; +        case KC_PRVWD: +            if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                    register_mods(mod_config(MOD_LALT)); +                    register_code(KC_LEFT); +                } else { +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_LEFT); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LALT)); +                    unregister_code(KC_LEFT); +                } else { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_LEFT); +                } +            } +            break; +        case KC_NXTWD: +             if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                    register_mods(mod_config(MOD_LALT)); +                    register_code(KC_RIGHT); +                } else { +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_RIGHT); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LALT)); +                    unregister_code(KC_RIGHT); +                } else { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_RIGHT); +                } +            } +            break; +        case KC_LSTRT: +            if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                     //CMD-arrow on Mac, but we have CTL and GUI swapped +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_LEFT); +                } else { +                    register_code(KC_HOME); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_LEFT); +                } else { +                    unregister_code(KC_HOME); +                } +            } +            break; +        case KC_LEND: +            if (record->event.pressed) { +                if (keymap_config.swap_lctl_lgui) { +                    //CMD-arrow on Mac, but we have CTL and GUI swapped +                    register_mods(mod_config(MOD_LCTL)); +                    register_code(KC_RIGHT); +                } else { +                    register_code(KC_END); +                } +            } else { +                if (keymap_config.swap_lctl_lgui) { +                    unregister_mods(mod_config(MOD_LCTL)); +                    unregister_code(KC_RIGHT); +                } else { +                    unregister_code(KC_END); +                } +            } +            break; +        case KC_DLINE: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_BSPC); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_BSPC); +            } +            break; +        case KC_COPY: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_C); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_C); +            } +            return false; +        case KC_PASTE: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_V); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_V); +            } +            return false; +        case KC_CUT: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_X); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_X); +            } +            return false; +            break; +        case KC_UNDO: +            if (record->event.pressed) { +                register_mods(mod_config(MOD_LCTL)); +                register_code(KC_Z); +            } else { +                unregister_mods(mod_config(MOD_LCTL)); +                unregister_code(KC_Z); +            } +            return false; +    } +    return true; +} + +#ifdef ENCODER_ENABLE + +void encoder_update_user(uint8_t index, bool clockwise) { +    if (index == 0) { +        if (clockwise) { +            tap_code(KC_VOLU); +        } else { +            tap_code(KC_VOLD); +        } +    } else if (index == 1) { +        if (clockwise) { +              rgblight_step(); +        } else { +           rgblight_step_reverse(); +        } +    } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk b/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/keymaps/via/config.h b/keyboards/aleblazer/zodiark/keymaps/via/config.h new file mode 100644 index 0000000000..0c89f634bc --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ +#pragma once + +#ifdef OLED_DRIVER_ENABLE +  #define OLED_DISPLAY_128X64 +  #define OLED_TIMEOUT 400000 +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/encoder.c b/keyboards/aleblazer/zodiark/keymaps/via/encoder.c new file mode 100644 index 0000000000..06d7a25777 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/encoder.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 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/>. +*/ + +//Setting up what encoder rotation does. If your encoder can be pressed as a button, that function can be set in Via. + +#ifdef ENCODER_ENABLE + +void encoder_update_user(uint8_t index, bool clockwise) { +    if (index == 0) { +        if (clockwise) { +            tap_code(KC_VOLU); +        } else { +            tap_code(KC_VOLD); +        } +    } else if (index == 1) { +        if (clockwise) { +            tap_code(KC_PGDOWN); +        } else { +            tap_code(KC_PGUP); +        } +    } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/keymap.c b/keyboards/aleblazer/zodiark/keymaps/via/keymap.c new file mode 100644 index 0000000000..1159afb434 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 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 "oled.c" +#include "encoder.c" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +	[0] = LAYOUT( +      KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                                           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, +      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,  KC_LBRC,                       KC_RBRC,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS, +      MO(3),   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,  KC_MINS,                        KC_EQL,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, +      KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,  KC_GRV, KC_MUTE,      RGB_TOG, KC_DEL,KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , +      KC_LCTL, KC_LALT, KC_LGUI, KC_APP, MO(1),       KC_SPC,   KC_ENT,           KC_ENT,   KC_SPC,  MO(2),    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +    ), +		 +	[1] = LAYOUT( +      _______, KC_F1, KC_F2, KC_F3, KC_F4,   KC_F5,                                KC_F6,   KC_F7,   KC_F8, KC_F9, KC_F10, KC_F11, +      KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______,                   _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, +      KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______,                   _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, +      _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______,  _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, +      _______, KC_P0, KC_PDOT, KC_PENT, _______,     _______,  _______,   _______,    _______,   _______, KC_P0, KC_PDOT, KC_PENT, _______ +      ), +	   +	[2] = LAYOUT( +      _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                           KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11, +      KC_PSLS, KC_P7, KC_P8, KC_P9, KC_NLCK, _______, _______,                    _______, _______, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_F12, +      KC_CAPS, KC_P4, KC_P5, KC_P6, KC_NLCK, _______, _______,                    _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_NLCK, +      _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______,  _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, +      _______, KC_P0, KC_PDOT, KC_PENT, _______,    _______,   _______,  _______,    _______,    _______, KC_P0, KC_PDOT, KC_PENT, _______ +      ), + +	[3] = LAYOUT( +      _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                              KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11, +      _______, _______, _______, _______, _______, _______, _______,                   _______, _______, EEP_RST, _______, _______, _______, KC_F12, +      _______, _______, _______, _______, _______, _______, _______,                   _______, _______, RGB_TOG, _______, _______, _______, _______, +      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, +      _______, _______, _______, _______, _______,      _______,     _______, _______,     _______,      RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD +      ) + +}; diff --git a/keyboards/aleblazer/zodiark/keymaps/via/oled.c b/keyboards/aleblazer/zodiark/keymaps/via/oled.c new file mode 100644 index 0000000000..037fe2ff71 --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/oled.c @@ -0,0 +1,78 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 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/>. +*/ + +#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,0 +    }; + +    oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { +    // Print current mode +    oled_write_P(PSTR("\n\n"), false); + +    switch (get_highest_layer(layer_state)) { +        case 0: +            oled_write_ln_P(PSTR("Qwrt"), false); +            break; +        default: +            oled_write_P(PSTR("Mod\n"), false); +            break; +    } +    oled_write_P(PSTR("\n\n"), false); +    // Print current layer +    oled_write_ln_P(PSTR("LAYER"), false); +    switch (get_highest_layer(layer_state)) { +        case 0: +			oled_write_P(PSTR("Base\n"), false); +            break; +        case 1: +            oled_write_P(PSTR("Raise"), false); +            break; +        case 2: +            oled_write_P(PSTR("Lower"), false); +            break; +        case 3: +            oled_write_P(PSTR("Adjust"), false); +            break; +        default: +            oled_write_ln_P(PSTR("Undef"), false); +    } +    oled_write_P(PSTR("\n\n"), false); +    led_t led_usb_state = host_keyboard_led_state(); +    oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { +    if (is_keyboard_master()) { +        return OLED_ROTATION_90; +    } +    return rotation; +} + +void oled_task_user(void) { +    if (is_keyboard_master()) { +        print_status_narrow(); +    } else { +        render_logo(); +    } +} + +#endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/rules.mk b/keyboards/aleblazer/zodiark/keymaps/via/rules.mk new file mode 100644 index 0000000000..76d3c49ffd --- /dev/null +++ b/keyboards/aleblazer/zodiark/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/aleblazer/zodiark/readme.md b/keyboards/aleblazer/zodiark/readme.md new file mode 100644 index 0000000000..fe28bedd48 --- /dev/null +++ b/keyboards/aleblazer/zodiark/readme.md @@ -0,0 +1,23 @@ +# Zodiark Keyboard + + + +A split keyboard with 5x7 including a thumbcluster, encoders on each side, per key RGB, and 2x I2C headers per side, supporiting 1.3"/.96" 128x64 OLEDs (the 1.3" is an SSH1106 OLED, refer to QMK documentation for limitations), .91" 128x32 OLEDs. + +* Keyboard Maintainer: [Aleblazer](https://github.com/Aleblazer/), [Discord Link](https://discord.gg/BCSbXwskVt) +* Hardware Supported: Pro Micro and derivatives +* Hardware Availability: Pending Group Buy - [Discord Link](https://discord.gg/BCSbXwskVt) + +Make example for this keyboard (after setting up your build environment): + +    make zodiark:default + +Flashing example for this keyboard: + +    make zodiark:default:flash + +Remove TRRS cable from halves, plug into one side, press reset button when asked. Repeat process on the other side. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +Credit to Sofle and Josef Adamcik <josef.adamcik@gmail.com> for OLED and layer code. diff --git a/keyboards/aleblazer/zodiark/rules.mk b/keyboards/aleblazer/zodiark/rules.mk new file mode 100644 index 0000000000..89e4850d83 --- /dev/null +++ b/keyboards/aleblazer/zodiark/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +#   change yes to no to disable +# +BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes       # Mouse keys +EXTRAKEY_ENABLE = yes       # Audio control and System control +CONSOLE_ENABLE = no         # Console for debug +COMMAND_ENABLE = no         # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +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 +BLUETOOTH_ENABLE = no       # Enable Bluetooth +AUDIO_ENABLE = no           # Audio output +OLED_DRIVER_ENABLE = yes    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes +LTO_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/aleblazer/zodiark/zodiark.c b/keyboards/aleblazer/zodiark/zodiark.c new file mode 100644 index 0000000000..d3893ada03 --- /dev/null +++ b/keyboards/aleblazer/zodiark/zodiark.c @@ -0,0 +1,54 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 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 "zodiark.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { +// Key Matrix to LED Index +  // Left Hand +  { 5, 4, 3, 2, 1, 0, 12 }, +  { 6, 7, 8, 9, 10, 11, 13 }, +  { 19, 18, 17, 16, 15, 14, 26 }, +  { 20, 21, 22, 23, 24, 25, NO_LED }, +  { 33, 32, 31, 30, 29, 28, 27}, +  // Right Hand +  { 39, 38, 37, 36, 35, 34, 46 }, +  { 40, 41, 42, 43, 44, 45, 47 }, +  { 53, 52, 51, 50, 49, 48, 60 }, +  { 54, 55, 56, 57, 58, 59, NO_LED }, +  { 67, 66, 65, 64, 63, 62, 61 }, + +   +}, { +  // LED Index to Physical Position +  // Left Hand +  { 93,  0 }, { 74,  0 }, { 56,  0 }, { 37,  0 }, { 19,  0 }, { 0,  0 }, { 0,  16 }, +  { 19,  16 }, { 37,  16 }, { 56,  16 }, { 74,  16 }, { 93,  16 }, { 112,  24 }, { 112,  40 }, +  { 93,  32 }, { 74,  32 }, { 56,  32 }, { 37,  32 }, { 19,  32 }, { 0,  32 }, { 0,  48 }, +  { 19,  48 }, { 37,  48 }, { 56,  48 }, { 74,  48 }, { 93,  48 }, { 112,  52 }, +  { 112,  64 }, { 93,  64 }, { 74,  64 }, { 56,  64 }, { 37,  64 }, { 19,  64 }, { 0,  64 }, +  // Right Hand +  { 132,  0 }, { 150,  0 }, { 169,  0 }, { 187,  0 }, { 206,  0 }, { 224,  0 }, { 224,  16 }, +  { 206,  16 }, { 187,  16 }, { 169,  16 }, { 150,  16 }, { 132,  16 }, { 113,  24 }, { 113,  40 }, +  { 132,  32 }, { 150,  32 }, { 169,  32 }, { 187,  32 }, { 206,  32 }, { 224,  32 }, { 224,  48 }, +  { 206,  48 }, { 187,  48 }, { 169,  48 }, { 150,  48 }, { 132,  48 }, { 113,  52 }, +  { 113,  64 }, { 132,  64 }, { 150,  64 }, { 169,  64 }, { 187,  64 }, { 206,  64 }, { 224,  64 }, +}, { +  // LED Index to Flag +  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 +} }; +#endif diff --git a/keyboards/aleblazer/zodiark/zodiark.h b/keyboards/aleblazer/zodiark/zodiark.h new file mode 100644 index 0000000000..5c25cea547 --- /dev/null +++ b/keyboards/aleblazer/zodiark/zodiark.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 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 +#include "quantum.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05,                     R01, R02, R03, R04, R05, R06, \ + L10, L11, L12, L13, L14, L15, L06,           R00, R11, R12, R13, R14, R15, R16, \ + L20, L21, L22, L23, L24, L25, L16,           R10, R21, R22, R23, R24, R25, R26, \ + L30, L31, L32, L33, L34, L35, L26, L36, R30, R20, R31, R32, R33, R34, R35, R36, \ + L40, L41, L42, L43, L44,    L45,   L46, R40,   R41,    R42, R43, R44, R45, R46  \ +  ) \ +  { \ + { L00,   L01,   L02,   L03,   L04,   L05,   L06 }, \ + { L10,   L11,   L12,   L13,   L14,   L15,   L16 }, \ + { L20,   L21,   L22,   L23,   L24,   L25,   L26 }, \ + { L30,   L31,   L32,   L33,   L34,   L35,   L36 }, \ + { L40,   L41,   L42,   L43,   L44,   L45,   L46 }, \ + { R06,   R05,   R04,   R03,   R02,   R01,   R00 }, \ + { R16,   R15,   R14,   R13,   R12,   R11,   R10 }, \ + { R26,   R25,   R24,   R23,   R22,   R21,   R20 }, \ + { R36,   R35,   R34,   R33,   R32,   R31,   R30 }, \ + { R46,   R45,   R44,   R43,   R42,   R41,   R40 }  \ +}  | 
