diff options
| -rw-r--r-- | keyboards/7c8/framework/config.h | 40 | ||||
| -rw-r--r-- | keyboards/7c8/framework/framework.c | 17 | ||||
| -rw-r--r-- | keyboards/7c8/framework/framework.h | 98 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/default/keymap.c | 156 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/steven/config.h | 23 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/steven/keymap.c | 129 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/steven/readme.md | 3 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/steven/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/via/config.h | 23 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/via/keymap.c | 90 | ||||
| -rw-r--r-- | keyboards/7c8/framework/keymaps/via/rules.mk | 1 | ||||
| -rw-r--r-- | keyboards/7c8/framework/readme.md | 30 | ||||
| -rw-r--r-- | keyboards/7c8/framework/rules.mk | 20 | 
13 files changed, 631 insertions, 0 deletions
| diff --git a/keyboards/7c8/framework/config.h b/keyboards/7c8/framework/config.h new file mode 100644 index 0000000000..44a69bf4e5 --- /dev/null +++ b/keyboards/7c8/framework/config.h @@ -0,0 +1,40 @@ +/* Copyright 2020 Steven Nguyen + * + * 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 +#include "config_common.h" + +#define VENDOR_ID 0x77C8 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0000 +#define MANUFACTURER 7c8 +#define PRODUCT Framework + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +#define MATRIX_ROW_PINS { B0, B1, D7, B2, D6, B3, D5, B4, D4, B5 } +#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5 } +#define ENCODERS_PAD_A  { D0 } +#define ENCODERS_PAD_B  { D1 } + +#define ENCODER_RESOLUTION 4 +#define TAP_CODE_DELAY 16 +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 5 + +#define LEADER_TIMEOUT 250 +#define LEADER_PER_KEY_TIMING 150 diff --git a/keyboards/7c8/framework/framework.c b/keyboards/7c8/framework/framework.c new file mode 100644 index 0000000000..6ce105be97 --- /dev/null +++ b/keyboards/7c8/framework/framework.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Steven Nguyen + * + * 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 "framework.h" diff --git a/keyboards/7c8/framework/framework.h b/keyboards/7c8/framework/framework.h new file mode 100644 index 0000000000..8de2837519 --- /dev/null +++ b/keyboards/7c8/framework/framework.h @@ -0,0 +1,98 @@ +/* Copyright 2020 Steven Nguyen + * + * 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 +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_ortho_5x12( \ +        K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \ +        K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \ +        K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \ +        K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \ +        K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4a, K4b  \ +        ) { \ +          { K00, K01, K02, K03, K04, K05 }, \ +          { K06, K07, K08, K09, K0a, K0b }, \ +          { K10, K11, K12, K13, K14, K15 }, \ +          { K16, K17, K18, K19, K1a, K1b }, \ +          { K20, K21, K22, K23, K24, K25 }, \ +          { K26, K27, K28, K29, K2a, K2b }, \ +          { K30, K31, K32, K33, K34, K35 }, \ +          { K36, K37, K38, K39, K3a, K3b }, \ +          { K40, K41, K42, K43, K44, K45 }, \ +          { K46, K47, K48, K49, K4a, K4b }  \ +        } + +#define LAYOUT_ortho_5x12_1x2uC( \ +        K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \ +        K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \ +        K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \ +        K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \ +        K40, K41, K42, K43, K44,    K45,   K47, K48, K49, K4a, K4b  \ +        ) { \ +          { K00, K01, K02, K03, K04, K05 }, \ +          { K06, K07, K08, K09, K0a, K0b }, \ +          { K10, K11, K12, K13, K14, K15 }, \ +          { K16, K17, K18, K19, K1a, K1b }, \ +          { K20, K21, K22, K23, K24, K25 }, \ +          { K26, K27, K28, K29, K2a, K2b }, \ +          { K30, K31, K32, K33, K34, K35 }, \ +          { K36, K37, K38, K39, K3a, K3b }, \ +          { K40, K41, K42, K43, K44, K45 }, \ +          { ___, K47, K48, K49, K4a, K4b }  \ +        } + +#define LAYOUT_preonic_2x2u( \ +        K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \ +        K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \ +        K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \ +        K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \ +        K40, K41, K42, K43,    K45,     K46,    K48, K49, K4a, K4b  \ +        ) { \ +          { K00, K01, K02, K03, K04, K05 }, \ +          { K06, K07, K08, K09, K0a, K0b }, \ +          { K10, K11, K12, K13, K14, K15 }, \ +          { K16, K17, K18, K19, K1a, K1b }, \ +          { K20, K21, K22, K23, K24, K25 }, \ +          { K26, K27, K28, K29, K2a, K2b }, \ +          { K30, K31, K32, K33, K34, K35 }, \ +          { K36, K37, K38, K39, K3a, K3b }, \ +          { K40, K41, K42, K43, ___, K45 }, \ +          { K46, ___, K48, K49, K4a, K4b }  \ +        } + +#define framework_via( \ +        K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \ +        K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, \ +        K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, \ +        K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, \ +        K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4a, K4b, \ +        K50, K51 \ +        ) { \ +          { K00, K01, K02, K03, K04, K05 }, \ +          { K06, K07, K08, K09, K0a, K0b }, \ +          { K10, K11, K12, K13, K14, K15 }, \ +          { K16, K17, K18, K19, K1a, K1b }, \ +          { K20, K21, K22, K23, K24, K25 }, \ +          { K26, K27, K28, K29, K2a, K2b }, \ +          { K30, K31, K32, K33, K34, K35 }, \ +          { K36, K37, K38, K39, K3a, K3b }, \ +          { K40, K41, K42, K43, K44, K45 }, \ +          { K46, K47, K48, K49, K4a, K4b }, \ +          { K50, K51 } \ +        } diff --git a/keyboards/7c8/framework/keymaps/default/keymap.c b/keyboards/7c8/framework/keymaps/default/keymap.c new file mode 100644 index 0000000000..57dbbfee05 --- /dev/null +++ b/keyboards/7c8/framework/keymaps/default/keymap.c @@ -0,0 +1,156 @@ +/* Copyright 2020 Steven Nguyen + * + * 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 + +enum framework_layers { +    _BASE, +    _LOWER, +    _RAISE, +    _BOTH, +    _FN +}; + +enum framework_keycodes { +    LOWER = SAFE_RANGE, +    RAISE, +    BOTH, +    FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_BASE] = LAYOUT_ortho_5x12( +    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MEDIA_PLAY_PAUSE, +    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, +    KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    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_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, +    KC_LCTL, KC_LGUI, KC_LALT, FN,      LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT +), + +[_LOWER] = LAYOUT_ortho_5x12( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL,  _______, +    KC_LEAD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, +    KC_DEL,  KC_F5,   KC_F6,   KC_F7,   KC_F8,   _______, _______, _______, _______, _______, _______, _______, +    KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______, _______, _______, +    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END +), + +[_RAISE] = LAYOUT_ortho_5x12( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, KC_TRNS, _______, _______, KC_TRNS, _______, _______, _______, _______ +), + +[_BOTH] = LAYOUT_ortho_5x12( +    _______, _______,     _______, _______, _______,    _______, _______, _______, _______, _______, _______, _______, +    _______, LALT(KC_F4), _______, KC_MYCM, LGUI(KC_R), _______, _______, _______, _______, _______, _______, _______, +    _______, _______,     _______, _______, _______,    _______, _______, _______, _______, _______, _______, _______, +    _______, _______,     _______, _______, _______,    _______, _______, _______, _______, _______, _______, _______, +    _______, _______,     _______, _______, _______,    _______, _______, _______, _______, _______, _______, DEBUG +), + +[_FN] = LAYOUT_ortho_5x12( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { +    if (index == 0) { +        switch (get_highest_layer(layer_state)) { +            case _BASE: +                if (clockwise) { +                    tap_code(KC_AUDIO_VOL_UP); +                } else { +                    tap_code(KC_AUDIO_VOL_DOWN); +                } +                break; + +            case _LOWER: +                if (clockwise) { +                    tap_code16(LCTL(KC_TAB)); +                } else { +                    tap_code16(LCTL(LSFT(KC_TAB))); +                } +                break; + +            case _RAISE: +                if (clockwise) {  +                    tap_code16(LCTL(KC_RGHT)); +                } else { +                    tap_code16(LCTL(KC_LEFT)); +                } +                break; + +            case _BOTH: +                if (clockwise) { +                    tap_code16(LCTL(KC_Y)); +                } else { +                    tap_code16(LCTL(KC_Z)); +                } +                break; + +            case _FN: +                if (clockwise) { +                    tap_code(_______); +                } else { +                    tap_code(_______); +                } +                break; + +            default: +                break; +        } +    } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +    switch (keycode) { +        case LOWER: +            if (record->event.pressed) { +                layer_on(_LOWER); +                update_tri_layer(_LOWER, _RAISE, _BOTH); +            } else { +                layer_off(_LOWER); +                update_tri_layer(_LOWER, _RAISE, _BOTH); +            } +            return false; + +        case RAISE: +            if (record->event.pressed) { +                layer_on(_RAISE); +                update_tri_layer(_LOWER, _RAISE, _BOTH); +            } else { +                layer_off(_RAISE); +                update_tri_layer(_LOWER, _RAISE, _BOTH); +            } +            return false; + +        case FN: +            if (record->event.pressed) { +                layer_on(_FN); +            } else { +                layer_off(_FN); +            } +            return false; +    } +    return true; +} diff --git a/keyboards/7c8/framework/keymaps/steven/config.h b/keyboards/7c8/framework/keymaps/steven/config.h new file mode 100644 index 0000000000..2dfd41f7cf --- /dev/null +++ b/keyboards/7c8/framework/keymaps/steven/config.h @@ -0,0 +1,23 @@ +/* Copyright 2020 Steven Nguyen + * + * 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/>. + */ + +/* VIA specific defines to increase dynamic layer count */ +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 3 +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 + +/* defining an extra row for encoder assignment in VIA */ +#undef MATRIX_ROWS +#define MATRIX_ROWS 11
\ No newline at end of file diff --git a/keyboards/7c8/framework/keymaps/steven/keymap.c b/keyboards/7c8/framework/keymaps/steven/keymap.c new file mode 100644 index 0000000000..be279f107c --- /dev/null +++ b/keyboards/7c8/framework/keymaps/steven/keymap.c @@ -0,0 +1,129 @@ +/* Copyright 2020 Steven Nguyen + * + * 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 + +enum framework_layers { +    _BASE, +    _LOWER, +    _RAISE, +    _BOTH, +    _FN +}; + +enum framework_keycodes { +    LOWER = SAFE_RANGE, +    RAISE, +    BOTH, +    FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_BASE] = framework_via( +    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,       KC_5,    KC_6,   KC_7,       KC_8,    KC_9,    KC_0,    KC_MEDIA_PLAY_PAUSE, +    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,       KC_T,    KC_Y,   KC_U,       KC_I,    KC_O,    KC_P,    KC_BSPC, +    KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,       KC_G,    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_N,   KC_M,       KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, +    KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), MO(_LOWER), KC_SPC,  KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, +    KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP +), + +[_LOWER] = framework_via( +    _______, _______, _______, _______, _______, _______, _______, _______,   _______, KC_MINS, KC_EQL,  _______, +    KC_LEAD, KC_F1,   KC_F2,   KC_F3,   KC_F4,   _______, _______, _______,   _______, KC_LBRC, KC_RBRC, KC_BSLS, +    KC_DEL,  KC_F5,   KC_F6,   KC_F7,   KC_F8,   _______, _______, _______,   _______, _______, _______, _______, +    _______, KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______,   _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, MO(_BOTH), KC_HOME, KC_PGDN, KC_PGUP, KC_END, +    C(S(KC_TAB)), C(KC_TAB) +), + +[_RAISE] = framework_via( +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, MO(_BOTH), _______, _______, _______, _______, _______, _______, _______, +    C(KC_LEFT), C(KC_RIGHT) +), + +[_BOTH] = framework_via( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, DEBUG, +    C(KC_Z), C(KC_Y) +), + +[_FN] = framework_via( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    KC_MS_WH_LEFT, KC_MS_WH_RIGHT +) +}; + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { +    LEADER_DICTIONARY() { +        leading = false; +        leader_end(); + +        // qq, alt+f4 close window +        SEQ_TWO_KEYS(KC_Q, KC_Q) { +            tap_code16(A(KC_F4)); +        } + +        // ee, open explorer +        SEQ_TWO_KEYS(KC_E, KC_E) { +            tap_code16(G(KC_E)); +        } + +        // rr, windows run prompt +        SEQ_TWO_KEYS(KC_R, KC_R) { +            tap_code16(G(KC_R)); +        } + +        // ww, maximize window +        SEQ_TWO_KEYS(KC_W, KC_W) { +            tap_code16(G(KC_UP)); +        } + +        // ss, minimize window +        SEQ_TWO_KEYS(KC_S, KC_S) { +            tap_code16(G(KC_DOWN)); +        } + +        // <space><space>, toggle desktop +        SEQ_TWO_KEYS(KC_SPC, KC_SPC) { +            tap_code16(G(KC_D)); +        } +    } +}  + +void encoder_update_user(uint8_t index, bool clockwise) { +    uint8_t layer = get_highest_layer(layer_state); +    if (index == 0) { +        if (clockwise) { +            tap_code16(dynamic_keymap_get_keycode(layer, 10, 1)); +        } else { +            tap_code16(dynamic_keymap_get_keycode(layer, 10, 0)); +        } +    } +}
\ No newline at end of file diff --git a/keyboards/7c8/framework/keymaps/steven/readme.md b/keyboards/7c8/framework/keymaps/steven/readme.md new file mode 100644 index 0000000000..c300961c7f --- /dev/null +++ b/keyboards/7c8/framework/keymaps/steven/readme.md @@ -0,0 +1,3 @@ +# Steven's Framework layout + +This is a VIA compatible layout, exactly like the default VIA keymap, but with some leader key sequences that I find convenient.
\ No newline at end of file diff --git a/keyboards/7c8/framework/keymaps/steven/rules.mk b/keyboards/7c8/framework/keymaps/steven/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/7c8/framework/keymaps/steven/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes
\ No newline at end of file diff --git a/keyboards/7c8/framework/keymaps/via/config.h b/keyboards/7c8/framework/keymaps/via/config.h new file mode 100644 index 0000000000..2dfd41f7cf --- /dev/null +++ b/keyboards/7c8/framework/keymaps/via/config.h @@ -0,0 +1,23 @@ +/* Copyright 2020 Steven Nguyen + * + * 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/>. + */ + +/* VIA specific defines to increase dynamic layer count */ +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 3 +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 + +/* defining an extra row for encoder assignment in VIA */ +#undef MATRIX_ROWS +#define MATRIX_ROWS 11
\ No newline at end of file diff --git a/keyboards/7c8/framework/keymaps/via/keymap.c b/keyboards/7c8/framework/keymaps/via/keymap.c new file mode 100644 index 0000000000..a2a353d85f --- /dev/null +++ b/keyboards/7c8/framework/keymaps/via/keymap.c @@ -0,0 +1,90 @@ +/* Copyright 2020 Steven Nguyen + * + * 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 + +enum framework_layers { +    _BASE, +    _LOWER, +    _RAISE, +    _BOTH, +    _FN +}; + +enum framework_keycodes { +    LOWER = SAFE_RANGE, +    RAISE, +    BOTH, +    FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_BASE] = framework_via( +    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,       KC_5,    KC_6,   KC_7,       KC_8,    KC_9,    KC_0,    KC_MEDIA_PLAY_PAUSE, +    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,       KC_T,    KC_Y,   KC_U,       KC_I,    KC_O,    KC_P,    KC_BSPC, +    KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,       KC_G,    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_N,   KC_M,       KC_COMM, KC_DOT,  KC_SLSH, KC_ENT, +    KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), MO(_LOWER), KC_SPC,  KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, +    KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP +), + +[_LOWER] = framework_via( +    _______, _______, _______, _______, _______, _______, _______, _______,   _______, KC_MINS, KC_EQL,  _______, +    _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   _______, _______, _______,   _______, KC_LBRC, KC_RBRC, KC_BSLS, +    KC_DEL,  KC_F5,   KC_F6,   KC_F7,   KC_F8,   _______, _______, _______,   _______, _______, _______, _______, +    _______, KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______,   _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, MO(_BOTH), KC_HOME, KC_PGDN, KC_PGUP, KC_END, +    C(S(KC_TAB)), C(KC_TAB) +), + +[_RAISE] = framework_via( +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, MO(_BOTH), _______, _______, _______, _______, _______, _______, _______, +    C(KC_LEFT), C(KC_RIGHT) +), + +[_BOTH] = framework_via( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, DEBUG, +    C(KC_Z), C(KC_Y) +), + +[_FN] = framework_via( +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +    KC_MS_WH_LEFT, KC_MS_WH_RIGHT +) +}; + +void encoder_update_user(uint8_t index, bool clockwise) { +    uint8_t layer = get_highest_layer(layer_state); +    if (index == 0) { +        if (clockwise) { +            tap_code16(dynamic_keymap_get_keycode(layer, 10, 1)); +        } else { +            tap_code16(dynamic_keymap_get_keycode(layer, 10, 0)); +        } +    } +} diff --git a/keyboards/7c8/framework/keymaps/via/rules.mk b/keyboards/7c8/framework/keymaps/via/rules.mk new file mode 100644 index 0000000000..036bd6d1c3 --- /dev/null +++ b/keyboards/7c8/framework/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes
\ No newline at end of file diff --git a/keyboards/7c8/framework/readme.md b/keyboards/7c8/framework/readme.md new file mode 100644 index 0000000000..5f29743aad --- /dev/null +++ b/keyboards/7c8/framework/readme.md @@ -0,0 +1,30 @@ +# Framework + + + +## Features + +* All through-hole components (except Kailh hotswap sockets) +* QMK firmware with VIA support +* Rotary encoder +* Hotswappable switches +* FR-4 and acrylic sandwich construction +* USB Type-C +* Supports MIT (one 2u), grid (two 1u), and two 2u space keys + +## Info + +* Keyboard maintainer: [Steven Nguyen](https://github.com/stevennguyen) +* Hardware supported: Framework +* Hardware availability: [Steven Nguyen](https://github.com/stevennguyen) + +Make example for this keyboard (after setting up your build environment): + +    make 7c8/framework:default # default keymap +    make 7c8/framework:via     # via-compatible keymap + +Flashing example for this keyboard: + +    make 7c8/framework:default:flash + +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).
\ No newline at end of file diff --git a/keyboards/7c8/framework/rules.mk b/keyboards/7c8/framework/rules.mk new file mode 100644 index 0000000000..185a5119c1 --- /dev/null +++ b/keyboards/7c8/framework/rules.mk @@ -0,0 +1,20 @@ +MCU = atmega328p +BOOTLOADER = USBasp + +BOOTMAGIC_ENABLE = no +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SLEEP_LED_ENABLE = no +NKRO_ENABLE = no +BACKLIGHT_ENABLE = no +RGBLIGHT_ENABLE = no +MIDI_ENABLE = no +UNICODE_ENABLE = no +BLUETOOTH_ENABLE = no +AUDIO_ENABLE = no +FAUXCLICKY_ENABLE = no +LAYOUTS_HAS_RGB = no +ENCODER_ENABLE = yes +LEADER_ENABLE = yes
\ No newline at end of file | 
