Skip to content

Commit

Permalink
Finalize Scotto36 (Needs case update still)
Browse files Browse the repository at this point in the history
  • Loading branch information
joe-scotto committed Jun 10, 2023
1 parent 868a5e9 commit 092a515
Show file tree
Hide file tree
Showing 15 changed files with 4,435 additions and 1,740 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2,613 changes: 966 additions & 1,647 deletions Scotto36/Firmware/default.hex

Large diffs are not rendered by default.

1,558 changes: 1,558 additions & 0 deletions Scotto36/Firmware/scotto.hex

Large diffs are not rendered by default.

1,777 changes: 1,777 additions & 0 deletions Scotto36/Firmware/vial.hex

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions Scotto36/Firmware/vial.vil
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"version": 1, "uid": 4274781460382985505, "layout": [[["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_BSPACE"], ["LSFT_T(KC_Z)", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMMA", "KC_DOT", "RSFT_T(KC_SLASH)"], [-1, -1, "KC_LCTRL", "KC_LALT", "LGUI_T(KC_SPACE)", "LT(1, KC_TAB)", "LT(2, KC_ENTER)", "KC_ESCAPE", -1, -1]], [["LSFT(KC_MINUS)", "KC_MINUS", "LSFT(KC_EQUAL)", "KC_EQUAL", "LSFT(KC_SCOLON)", "KC_GRAVE", "KC_MRWD", "KC_MPLY", "KC_MFFD", "KC_DELETE"], ["LSFT(KC_LBRACKET)", "LSFT(KC_9)", "LSFT(KC_0)", "LSFT(KC_RBRACKET)", "LSFT(KC_BSLASH)", "KC_ESCAPE", "KC_LEFT", "KC_UP", "KC_DOWN", "KC_RIGHT"], ["LSFT_T(KC_LBRACKET)", "KC_QUOTE", "LSFT(KC_QUOTE)", "KC_RBRACKET", "KC_SCOLON", "LSFT(KC_GRAVE)", "KC_VOLD", "KC_MUTE", "KC_VOLU", "RSFT_T(KC_BSLASH)"], [-1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1, -1]], [["LSFT(KC_1)", "LSFT(KC_2)", "LSFT(KC_3)", "LSFT(KC_4)", "LSFT(KC_5)", "LSFT(KC_6)", "LSFT(KC_7)", "LSFT(KC_8)", "KC_CAPSLOCK", "KC_BSPACE"], ["KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0"], ["KC_LSHIFT", "KC_NO", "KC_NO", "KC_NO", "MO(3)", "KC_NO", "KC_NO", "KC_COMMA", "KC_DOT", "RSFT_T(KC_SLASH)"], [-1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1, -1]], [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10"], ["KC_F11", "KC_NO", "KC_NO", "RESET", "KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_F12"], [-1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1, -1]]], "encoder_layout": [[], [], [], []], "layout_options": -1, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": 5, "via_protocol": 9, "tap_dance": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 135]], "combo": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]], "key_override": [{"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 135, "8": 3, "18": 0, "19": 80, "20": 5, "21": 0}}
84 changes: 38 additions & 46 deletions Scotto36/QMK/info.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,15 @@
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"mousekey": false,
"nkro": true,
"oled": true
},
"build": {
"lto": true
}
},
"matrix_pins": {
// 4, 5, 6, 7, 8, 9, A3, A2, A1, A0
"cols": ["D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6", "F7"],
// 15, 14, 16, 10
"rows": ["B1", "B3", "B2", "B6"]
},
"url": "https://scottokeebs.com",
Expand All @@ -32,48 +30,42 @@
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},

// Row 2
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1},
{"matrix": [1, 5], "x": 5, "y": 1},
{"matrix": [1, 6], "x": 6, "y": 1},
{"matrix": [1, 7], "x": 7, "y": 1},
{"matrix": [1, 8], "x": 8, "y": 1},
{"matrix": [1, 9], "x": 9, "y": 1},

// Row 3
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2},
{"matrix": [2, 5], "x": 5, "y": 2},
{"matrix": [2, 6], "x": 6, "y": 2},
{"matrix": [2, 7], "x": 7, "y": 2},
{"matrix": [2, 8], "x": 8, "y": 2},
{"matrix": [2, 9], "x": 9, "y": 2},

// Row 4
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3},
{"matrix": [3, 4], "x": 4, "y": 3},
{"matrix": [3, 5], "x": 5, "y": 3},
{"matrix": [3, 6], "x": 6, "y": 3},
{"matrix": [3, 7], "x": 7, "y": 3}
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1 },
{ "matrix": [1, 5], "x": 5, "y": 1 },
{ "matrix": [1, 6], "x": 6, "y": 1 },
{ "matrix": [1, 7], "x": 7, "y": 1 },
{ "matrix": [1, 8], "x": 8, "y": 1 },
{ "matrix": [1, 9], "x": 9, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2 },
{ "matrix": [2, 5], "x": 5, "y": 2 },
{ "matrix": [2, 6], "x": 6, "y": 2 },
{ "matrix": [2, 7], "x": 7, "y": 2 },
{ "matrix": [2, 8], "x": 8, "y": 2 },
{ "matrix": [2, 9], "x": 9, "y": 2 },
{ "matrix": [3, 2], "x": 2, "y": 3 },
{ "matrix": [3, 3], "x": 3, "y": 3 },
{ "matrix": [3, 4], "x": 4, "y": 3 },
{ "matrix": [3, 5], "x": 5, "y": 3 },
{ "matrix": [3, 6], "x": 6, "y": 3 },
{ "matrix": [3, 7], "x": 7, "y": 3 }
]
}
}
Expand Down
27 changes: 27 additions & 0 deletions Scotto36/QMK/keymaps/vial/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
Copyright 2023 Joe Scotto
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

// Define options
#define TAPPING_TERM 135
#define PERMISSIVE_HOLD

// Vial
#define VIAL_KEYBOARD_UID {0x21, 0xAD, 0x8D, 0xE6, 0x16, 0x13, 0x53, 0x3B}
#define VIAL_UNLOCK_COMBO_ROWS { 3, 3 }
#define VIAL_UNLOCK_COMBO_COLS { 2, 7 }
45 changes: 45 additions & 0 deletions Scotto36/QMK/keymaps/vial/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
Copyright 2023 Joe Scotto
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

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x5_3(
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_BSPC,
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC
),
[1] = LAYOUT_split_3x5_3(
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_split_3x5_3(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_split_3x5_3(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
2 changes: 2 additions & 0 deletions Scotto36/QMK/keymaps/vial/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
18 changes: 18 additions & 0 deletions Scotto36/QMK/keymaps/vial/vial.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"matrix": {
"rows": 4,
"cols": 10
},
"layouts": {
"keymap": [
[{ "r": 15, "rx": 5, "x": -5 }, "0,0", "0,1", "0,2", "0,3", "0,4"],
[{ "x": -5 }, "1,0", "1,1", "1,2", "1,3", "1,4"],
[{ "x": -5 }, "2,0", "2,1", "2,2", "2,3", "2,4"],
[{ "x": -3 }, "3,2", "3,3", "3,4"],
[{ "r": -15, "rx": 6 }, "0,5", "0,6", "0,7", "0,8", "0,9"],
["1,5", "1,6", "1,7", "1,8", "1,9"],
["2,5", "2,6", "2,7", "2,8", "2,9"],
["3,5", "3,6", "3,7"]
]
}
}
50 changes: 3 additions & 47 deletions Scotto36/README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,7 @@
# Scotto36

A 36 key handwired ortholinear ergo keyboard. Featuring an OLED display with Bongo Cat.
The Scotto36 is a 36-key split monoblock ergonomic ortholinear keyboard with 15° of angle on each half.

![Scotto36](https://user-images.githubusercontent.com/8194147/191559764-12b65543-1ca8-4dc2-a64d-7f86911f9ffd.jpg)
![Matrix](https://user-images.githubusercontent.com/8194147/191559971-9f1b0120-8619-4255-9f1e-28dc2444472d.jpg)
![Controller](https://user-images.githubusercontent.com/8194147/191560489-4e630d53-32f9-4454-8af2-f948c1dc0cc4.jpg)

# Parts

- 1x - [Arduino Pro Micro (Atmega32U4)](https://amzn.to/3LwgAUq)
- 1x - [0.91" 128x32 OLED](https://amzn.to/3faLsxX)
- 36x - [1N4148 Diode](https://amzn.to/3DMbQZ5)
- 14x - [8mm M2 Spacer](https://amzn.to/3r1xdxO)
- 28x - [M2x6mm Screw](https://amzn.to/3r1xdxO)
- 36x - MX Switches

# Pins

Top left to right. Pins refer to the number on the Pro Micro, for more info see [info.json](QMK/info.json).

- **Rows** - 15, 14, 16, 10
- **Columns** - 4, 5, 6, 7, 8, 9, A3, A2, A1, A0

# OLED

Simply wire the OLED pins to the I2C pins on the Pro Micro.

- SDA -> 2
- SCK -> 3
- VCC -> VCC
- GND -> GND
You can read more about the components and how to build it [here](https://scottokeebs.com/blogs/keyboards/scotto36-handwired-keyboard).

# Case

The controller is simply hot glued into the bottom of the case.

- [Plate](Case/Scotto36%20-%20Plate.stl)
- [Case](Case/Scotto36%20-%20Case.stl)

# Flashing

1. [Install QMK locally](https://github.com/qmk/qmk_firmware)
2. Make changes to the keymap if required.
3. Run `qmk flash -kb handwired/jscotto/scotto36 -km default -c`.

# License

<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1"></a></p>

<p xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/"><a property="dct:title" rel="cc:attributionURL" href="https://github.com/joe-scotto/scottokeebs/tree/main/Scotto36">Scotto36</a> by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://github.com/joe-scotto">Joe Scotto</a> is licensed under <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">CC BY-NC-SA 4.0
![Scotto36](https://user-images.githubusercontent.com/8194147/191559764-12b65543-1ca8-4dc2-a64d-7f86911f9ffd.jpg)

0 comments on commit 092a515

Please sign in to comment.