├── .gitignore ├── .gitmodules ├── .vscode └── tasks.json ├── Documents ├── advanced-config.md ├── enclosure.md ├── imgs │ ├── all-the-cables.JPG │ ├── assembly-instructions │ │ ├── bare-bones.JPG │ │ ├── check-encoders.JPG │ │ ├── check-switches.JPG │ │ ├── led-cut.JPG │ │ ├── required-parts.JPG │ │ ├── step-1-1.JPG │ │ ├── step-1-2.JPG │ │ ├── step-1-3.JPG │ │ ├── step-2.JPG │ │ ├── step-3.JPG │ │ ├── step-4.JPG │ │ ├── step-5.JPG │ │ ├── step-6.JPG │ │ ├── step-7.JPG │ │ └── step-8.JPG │ ├── header-img.JPG │ └── new-header.JPG ├── keyboard-assembly.md ├── macro.md ├── pcba.md └── via.md ├── Firmware ├── binaries │ ├── hub16_default.hex │ ├── hub16_macro.hex │ ├── hub16_via.hex │ └── hub16_via_old.hex └── hub16 │ ├── config.h │ ├── hub16.c │ ├── hub16.h │ ├── info.json │ ├── keymaps │ ├── default │ │ └── keymap.c │ ├── macro │ │ ├── keymap.c │ │ └── rules.mk │ └── via │ │ ├── keymap.c │ │ └── rules.mk │ ├── matrix.c │ ├── readme.md │ └── rules.mk ├── Hardware ├── 0.1 │ ├── Hub16-cache.lib │ ├── Hub16-rescue.dcm │ ├── Hub16-rescue.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pdf │ ├── Hub16.pro │ ├── Hub16.sch │ ├── Libraries │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ ├── keyboard.3dshapes │ │ │ ├── b3u-1000p.stp │ │ │ ├── mxKeycap.STEP │ │ │ └── pec11r-4220k_l13-8_w12-4_h26-5.stp │ │ ├── keyboard.dcm │ │ ├── keyboard.lib │ │ └── keyboard.pretty │ │ │ ├── AVR_Programmer_SMD.kicad_mod │ │ │ ├── Fuse_0805_2012Metric.kicad_mod │ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ │ ├── MicroUSB_Aliexpress.kicad_mod │ │ │ ├── PinPad_1x03_P2.54mm.kicad_mod │ │ │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod │ │ │ ├── SW_Cherry_MX1A_1.00u_PCB.kicad_mod │ │ │ ├── Small_Tact_Switch.kicad_mod │ │ │ └── topCover.kicad_mod │ ├── fp-lib-table │ └── sym-lib-table ├── 0.2 │ ├── Hub16-cache.lib │ ├── Hub16-rescue.dcm │ ├── Hub16-rescue.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pdf │ ├── Hub16.pro │ ├── Hub16.sch │ ├── Libraries │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ ├── keyboard.3dshapes │ │ │ ├── b3u-1000p.stp │ │ │ ├── mxKeycap.STEP │ │ │ └── pec11r-4220k_l13-8_w12-4_h26-5.stp │ │ ├── keyboard.dcm │ │ ├── keyboard.lib │ │ └── keyboard.pretty │ │ │ ├── AVR_Programmer_SMD.kicad_mod │ │ │ ├── Fuse_0805_2012Metric.kicad_mod │ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ │ ├── MicroUSB_Aliexpress.kicad_mod │ │ │ ├── PinPad_1x03_P2.54mm.kicad_mod │ │ │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod │ │ │ ├── SW_Cherry_MX1A_1.00u_PCB.kicad_mod │ │ │ ├── Small_Tact_Switch.kicad_mod │ │ │ └── topCover.kicad_mod │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 0.3 │ ├── Hub16-cache.lib │ ├── Hub16-rescue.dcm │ ├── Hub16-rescue.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pdf │ ├── Hub16.pro │ ├── Hub16.sch │ ├── Libraries │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ ├── keyboard.3dshapes │ │ │ ├── b3u-1000p.stp │ │ │ ├── mxKeycap.STEP │ │ │ └── pec11r-4220k_l13-8_w12-4_h26-5.stp │ │ ├── keyboard.dcm │ │ ├── keyboard.lib │ │ └── keyboard.pretty │ │ │ ├── AVR_Programmer_SMD.kicad_mod │ │ │ ├── Fuse_0805_2012Metric.kicad_mod │ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ │ ├── MicroUSB_Aliexpress.kicad_mod │ │ │ ├── PinPad_1x03_P2.54mm.kicad_mod │ │ │ ├── RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod │ │ │ ├── SW_Cherry_MX1A_1.00u_PCB.kicad_mod │ │ │ ├── Small_Tact_Switch.kicad_mod │ │ │ └── topCover.kicad_mod │ ├── bom │ │ ├── Hub16_BOM.csv │ │ └── assembly.html │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 0.4 │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 0.5 │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pdf │ ├── Hub16.pro │ ├── Hub16.sch │ ├── assembly │ │ ├── BOM.csv │ │ ├── Hub16-bottom-pos.csv │ │ ├── assembly.html │ │ ├── gerbers.zip │ │ └── stencil.zip │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 0.6 │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 0.7-hs │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 0.7 │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 1.0-hs │ ├── Hub16-cache.lib │ ├── Hub16.csv │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── 1.0.1-hs │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch └── 1.0 │ ├── Hub16-cache.lib │ ├── Hub16.kicad_pcb │ ├── Hub16.pro │ ├── Hub16.sch │ ├── fp-lib-table │ ├── sym-lib-table │ └── usb-hub.sch ├── LICENSE ├── Mechanicals ├── acrylic │ ├── Hub16-bottom.dxf │ ├── Hub16-mid.dxf │ ├── Hub16-riser.dxf │ └── Hub16-top.dxf └── plate │ ├── fp-lib-table │ ├── plate-gerbers.zip │ ├── topCover.kicad_pcb │ ├── topCover.pro │ └── topCover.sch ├── Production └── 1.0-hs │ ├── .~lock.bom.csv# │ ├── Gerbers.zip │ ├── Hub16-Acrylic.zip │ ├── assembly.html │ ├── bom.csv │ ├── fab-notes.txt │ ├── photo-close.JPG │ ├── photo.JPG │ ├── plate-gerbers.zip │ ├── pnp.pos │ └── render.png ├── README.md └── Software ├── hub16-autokey ├── .enc1-anticlockwise1.json ├── .enc1-button.json ├── .enc1-clockwise.json ├── .enc2-anticlockwise.json ├── .enc2-button1.json ├── .enc2-clockwise1.json ├── .folder.json ├── .key-1.json ├── .key-10.json ├── .key-11.json ├── .key-12.json ├── .key-13.json ├── .key-14.json ├── .key-151.json ├── .key-2.json ├── .key-3.json ├── .key-4.json ├── .key-5.json ├── .key-6.json ├── .key-7.json ├── .key-8.json ├── .key-9.json ├── enc1-anticlockwise1.py ├── enc1-button.py ├── enc1-clockwise.py ├── enc2-anticlockwise.py ├── enc2-button1.py ├── enc2-clockwise1.py ├── key-1.py ├── key-10.py ├── key-11.py ├── key-12.py ├── key-13.py ├── key-14.py ├── key-151.py ├── key-2.py ├── key-3.py ├── key-4.py ├── key-5.py ├── key-6.py ├── key-7.py ├── key-8.py └── key-9.py ├── hub16-example.ahk ├── hub16-karabiner.json └── hub16-template.ahk /.gitignore: -------------------------------------------------------------------------------- 1 | # For PCBs designed using KiCad: http://www.kicad-pcb.org/ 2 | # Format documentation: http://kicad-pcb.org/help/file-formats/ 3 | 4 | # Temporary files 5 | *.000 6 | *.bak 7 | *.bck 8 | *.kicad_pcb-bak 9 | *.sch-bak 10 | *~ 11 | _autosave-* 12 | *.tmp 13 | *-save.pro 14 | *-save.kicad_pcb 15 | fp-info-cache 16 | 17 | # Netlist files (exported from Eeschema) 18 | *.net 19 | 20 | # Autorouter files (exported from Pcbnew) 21 | *.dsn 22 | *.ses 23 | 24 | # Exported BOM files 25 | *.xml 26 | 27 | # Gerbers 28 | *.drl 29 | *.grb 30 | *.gbl 31 | *.gbo 32 | *.gpb 33 | *.gbs 34 | *.gml 35 | *.gtl 36 | *.gto 37 | *.gtp 38 | *.gts 39 | 40 | # Step Files 41 | *.step -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "josh-kicad-lib"] 2 | path = josh-kicad-lib 3 | url = git@github.com:joshajohnson/josh-kicad-lib.git 4 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "build", 8 | "command": "${config:python.pythonPath}", 9 | "args": [ "Production/flash-test/prog.py" 10 | ], 11 | "group": "build", 12 | "presentation": { 13 | // Reveal the output only if unrecognized errors occur. 14 | // "reveal": "silent" 15 | }, 16 | // Use the standard MS compiler pattern to detect errors, warnings and infos 17 | "problemMatcher": "$msCompile" 18 | } 19 | ] 20 | 21 | } -------------------------------------------------------------------------------- /Documents/enclosure.md: -------------------------------------------------------------------------------- 1 | # Enclosure Manufacturing 2 | 3 | There are a number of ways the enclosure can be manufactured, and these options are outlined below: 4 | 5 | All case files can be found in `mechanicals/1.0`. 6 | 7 | By default, the enclosure has the below stackup: 8 | 9 | ``` 10 | --- PCB Plate, 1.6mm 11 | --- Acrylic Upper, 4mm 12 | --- Hub16 PCB, 1.6mm 13 | --- Acrylic Mid, 4mm 14 | --- Acrylic Lower, 3mm 15 | - Acrylic Incline, 3-4mm (optional) 16 | ``` 17 | 18 | You can however make a number of substitutions: 19 | 20 | - Swap PCB plate for 3mm acrylic and move upper 4mm acrylic to 3mm. 21 | - Note some switches may have reduced insertion depth into the PCB. 22 | - Replace acrylic lower with FR4 PCB. 23 | - 3d print parts instead of laser cutting or utilising PCBs for mechanical elements. 24 | - Design your own! .step file can be exported from KiCad into you mCad tool of choice. 25 | -------------------------------------------------------------------------------- /Documents/imgs/all-the-cables.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/all-the-cables.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/bare-bones.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/bare-bones.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/check-encoders.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/check-encoders.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/check-switches.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/check-switches.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/led-cut.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/led-cut.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/required-parts.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/required-parts.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-1-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-1-1.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-1-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-1-2.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-1-3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-1-3.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-2.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-3.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-4.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-5.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-6.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-7.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-7.JPG -------------------------------------------------------------------------------- /Documents/imgs/assembly-instructions/step-8.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/assembly-instructions/step-8.JPG -------------------------------------------------------------------------------- /Documents/imgs/header-img.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/header-img.JPG -------------------------------------------------------------------------------- /Documents/imgs/new-header.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Documents/imgs/new-header.JPG -------------------------------------------------------------------------------- /Documents/macro.md: -------------------------------------------------------------------------------- 1 | # Macro Configuration 2 | 3 | Hub16 can also be used with software on your computer to enable powerful, context aware macros to be run. 4 | 5 | This works by sending uniquely identifiable keys to your computer which are picked up by software, which can then map those keys as required. As such, this requires the correct firmware to be loaded onto Hub16, and software to be installed on your computer. 6 | 7 | ## Firmware 8 | 9 | Hub16 does not ship with the macro firmware preinstalled, but is easily flashed onto your board. 10 | 11 | MechMerlin has [a great video](https://youtu.be/VR53Wo9Z960) on the process, so I will highlight the Hub16 specific configurations / settings. 12 | 13 | - When selecting the file to flash, use `firmware/binaries/hub16_macro.bin`. 14 | - Ensure you select the microcontroller as "ATMEGA32U4" before flashing the board. 15 | - The reset button can be found between the USB connectors on the back of the board, or by holding the bottom left key down whilst pressing the second from the right key on the bottom row (see below). 16 | 17 | The default configuration for macro mode is shown below: 18 | 19 | ``` 20 | ------------------ ENC1:Clockwise: q 21 | | ENC1 ENC2 | ENC1:Anticlockwise: r 22 | | a b c d | ENC1:Button: s 23 | | e f g h | ENC2:Clockwise: t 24 | | i j k l | ENC2:Anticlockwise: u 25 | | m n o p* | ENC2:Button: v 26 | ------------------ 27 | ``` 28 | 29 | \* Once flashing the macro layout you may notice that holding or tapping the bottom right key quickly may not result in a key being sent. This because if you double tap that key, it will bring you to a configuration layer on the keyboard which allows you to control the LEDs and reset the keyboard. Double tapping the same key will return you to the base layer. The keymap for this configuration is shown below: 30 | 31 | ``` 32 | _______, _______, 33 | _______, RGB_MOD, RGB_RMOD, RGB_TOG, 34 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, 35 | RGB_SAD, RGB_SAI, _______, _______, 36 | _______, _______, RESET, HOME, 37 | 38 | ``` 39 | 40 | ## Software 41 | 42 | ### Windows 43 | 44 | - Download and install [AutoHotKey](https://www.autohotkey.com/). 45 | - Copy the example script from `software/hub16-template.ahk` into a folder of your choice. 46 | - For the script to run at startup, I strongly suggest placing a shortcut to the above file in `%APPDATA%/Roaming/Microsoft/Windows/Start Menu/Programs/Start-up`. 47 | - Configure the script to suit your use case, ensuring to restart the AHK script after each change, otherwise it will not use the latest changes. 48 | 49 | ### macOS 50 | 51 | - Install [Karabiner-Elements](https://karabiner-elements.pqrs.org/docs/getting-started/installation/). 52 | - Copy the example script from `software/hub16-karabiner.json` to your local `~.config/karabiner` folder. 53 | - Configure keybindings as required. 54 | 55 | ### Linux 56 | 57 | - Whilst it's slightly more painful and buggy to configure and use on Linux, the below is the best configuration I've got to work. PRs are very much welcome for improvements to this. 58 | - Install AutoKey from [here](https://github.com/autokey/autokey/wiki/Installing#debian-and-derivatives), as the apt-get version is broken. 59 | - Create a file in your home directory with the name `.Xmodmap` and the following contents 60 | 61 | ``` bash 62 | keycode 202 = Hyper_R 63 | add mod3 = Hyper_R 64 | ``` 65 | 66 | - Update xmodmap with `xmodmap ~/.Xmodmap` and then confirm that `mod3` has been updated by entering `xmodmap` in your shell and looking for `mod3 Hyper_R (0xca)`. 67 | - Then add it to your ```~./bashrc```, as this will allow the keyboard to work **only after a shell is opened by the user**. A PR to resolve this would be very welcomed. 68 | - Load the AutoKey files found in `software/hub16` and it should work. 69 | - Note: you may need to make a new folder from within Autokey, then copy your files in as it is particular about locating new files. 70 | - You will also need to configure AutoKey to start at boot, which can be done from `Edit -> Preferences`. 71 | - For volume and media control as configured in my example code, [playerctl](https://github.com/altdesktop/playerctl) and ```alsa-utils``` must be installed. 72 | -------------------------------------------------------------------------------- /Documents/pcba.md: -------------------------------------------------------------------------------- 1 | # PCB SMT Assembly Guide 2 | 3 | I highly recommend assembling this board using solder paste, a stencil, and a reflow oven. If you don't have access to a reflow oven, a hot air gun will also get the job done. 4 | 5 | - Gerbers can be found in `production/1.0-prod/gerbers.zip` folder, and can be uploaded to your favourite PCB manufacturer. 6 | - Most PCB houses will generate the solderpaste stencil from your copper layer, which can cause issues. As such I recommend uploading the stencil separately to ensure the apertures are as per the design files. 7 | - The bill of materials can be found at `production/1.0-prod/bom.csv` and contains part numbers for all components on the board. DigiKey and LCSC part numbers are provided where available, however some parts such at the USB connectors, reverse mount LEDs, and USB hub may only be available at one or neither of the suppliers. 8 | - The "Human PnP" file is located at `production/1.0-prod/assembly.html`, and will be very helpful in assembling the board. 9 | 10 | ## Test Procedure 11 | 12 | With the board assembled, you are ready to plug it in and check everything works. The below test procedure should help guide you through the process. 13 | 14 | - Preform visual inspection of PCBA and rework any issues. In particular, USB connectors QFNs often require rework. 15 | - Measure continuity across C1. If shorted, locate and resolve a VCC - GND short. 16 | - Measure continuity across C21. If shorted, locate and reslove a 3V3 - GND short. 17 | - Using a current limited bench power supply set at 5V 100 mA, connect board through J1 and confirm power draw is approximately 25 mA. If current draw is high, attempt to locate and resolve any shorts on the board. If current draw too low, ensure ICs and crystals are soldered correctly. 18 | - Using an AVR programmer, [flash the bootloader](Documents/advanced-config.md#bootloader-flashing) through the ISP header. 19 | - If unable, common causes are: 20 | - Software issues - check if programming a known good device works. 21 | - Poor connection - ensure your connections to the programming header are solid. 22 | - Power / Reset correct - ensure all power pins have 5V on the physical pin (not nearest capacitor) and that the reset line is high. 23 | - Crystal - ensure Y1 is soldered down correctly and is 16 MHz. 24 | - With bootlader installed, connect to computer and flash the no_mod firmware. 25 | - If unable to detect keyboard, confirm that USB hub and ATmega are being detected through `lsusb` and / or `dmesg -w` on Linux, or device manager on Windows. 26 | - Using tweezers, short pin connections and ensure all keys print a unique key to the computer. 27 | - Also test the rotary encoder connections by placing an encoder against the three holes and rotating in both directions. 28 | - Common issues are with the diodes being installed incorrectly, and shorts on the 32u4. 29 | - Flash default firmware and confirm all LEDs light up red. Double tap bottom right key and then top row, 3rd from left do cycle through LEDs and confirm they all function. 30 | - LEDs are daisy chained from D2 - D3 - D10 etc around outside of board, ensure good solder connections if LEDs stop working somewhere in the middle. 31 | - If solder connections are good but LED still non functioning, ensure is it oriented correctly (triangle on LED near corner marking on PCB, NOT pin 1!) 32 | - These LEDs often fail during reflow, so if LED is non functioning and remaining LEDs can be fixed by shorting out LED, replace. 33 | - Check fuses have been set correctly by resetting board from software by pressing the "RESET" key on layer two of the board (bottom row, 3rd from left). 34 | - With `dmesg-w` or device manager running, ensure "Arduino Leonardo" is seen enumerating before "Hub16" appears. If this fails reflash the bootloader following [these instructions](Documents/advanced-config.md#bootloader-flashing) 35 | - Confirm all downstream USB ports function by connecting a device to each port, ensuring to rotate 180 degrees, and checking it appears on computer each time. 36 | - Common issues are with shorts on the USB hub, along with data pins on connector. 37 | - If device only works in one orientation, check power pins of connector are soldered down well. 38 | - Finally, reverse orientation of upstream USB connector (to computer) and confirm enumeration. 39 | 40 | If all the above checks pass, your board is ready to use. Congratulations on a successful assembly! 41 | -------------------------------------------------------------------------------- /Documents/via.md: -------------------------------------------------------------------------------- 1 | # VIA Keymap Configuration 2 | 3 | VIA is a great way to graphically configure your keyboard without going through the hassle of configuring build environments and poking around in the code. 4 | 5 | ## Install VIA 6 | 7 | To use VIA, first [download and install](https://caniusevia.com/) the configuration software, and then plug in your keyboard. It should detect and show a graphic of Hub16 on your screen. 8 | 9 | **Note: There is a [bug](https://github.com/qmk/qmk_firmware/issues/11157) in QMK / VIA which results in keycodes such as LED control to be shifted by one. This results in layer one of the keyboard looking wrong. Until this is fixed, rolling back to [old firmware](../Firmware/binaries/hub16_via_old.hex) is the best workaround.** 10 | 11 | ## Configure Keys 12 | 13 | From within VIA, you can easily configure keys as required. It allows not only the typical keys found on your keyboard, but media keys, macros, layer shifting to enable different functions per key, and even keys to control the LEDs installed in Hub16. It does not however allow you to configure the rotary encoder behaviour. 14 | 15 | ## Configure Encoders 16 | 17 | By default, the encoders are configured to volume up / down (left) and media next / prev (right). 18 | 19 | Unfortunately, due to limitations in VIA the encoders are not visible or configurable. The best workaround at this time is to build a new VIA keymap with the encoder functions altered to suit your use case, flash this onto the board, and then configure the remainder of the keys in VIA. This can be done by following the below instructions: 20 | 21 | - Follow the QMK [getting started guide](https://docs.qmk.fm/#/newbs_getting_started) to install the toolchain and configure your build environment. 22 | - Open the `qmk_firmware/keyboards/Hub16/keymaps/via/keymap.c` file in your preferred text editor. 23 | - Locate the function `encoder_update_user`, and update the keycodes in `tap_code(KC_xxx)` to one from the [keycodes list](https://docs.qmk.fm/#/keycodes?id=basic-keycodes). If you use keycode not on the basic list, you may need to replace `tap_code` with `tap_code16`. 24 | - With the changes made, save your new keymap, build, and flash the keymap to Hub16 with `make hub16:via:flash` run from the `qmk_firmware` directory. 25 | - You should now see the encoders functioning as desired, and you can configure the remainder or your keyboard using VIA. 26 | 27 | There is also a [video](https://youtu.be/TTCaQ-STD-E) which walks you through the above steps. 28 | -------------------------------------------------------------------------------- /Firmware/hub16/config.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019 Josh Johnson 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 2 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "config_common.h" 21 | 22 | /* USB Device descriptor parameter */ 23 | #define VENDOR_ID 0x6A6A 24 | #define PRODUCT_ID 0x4810 25 | #define DEVICE_VER 0x0001 26 | #define MANUFACTURER Josh Johnson 27 | #define PRODUCT Hub16 28 | 29 | /* key matrix size */ 30 | #define MATRIX_ROWS 5 31 | #define MATRIX_COLS 4 32 | 33 | #define MATRIX_ROW_PINS \ 34 | { F0, C7, C6, B6, E6} 35 | #define MATRIX_COL_PINS \ 36 | { F4, F1, D5, D3 } 37 | 38 | /* COL2ROW, ROW2COL*/ 39 | #define DIODE_DIRECTION COL2ROW 40 | 41 | #define RGB_DI_PIN D1 42 | #define RGBLED_NUM 11 43 | #define RGBLIGHT_HUE_STEP 8 44 | #define RGBLIGHT_SAT_STEP 8 45 | #define RGBLIGHT_VAL_STEP 8 46 | #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ 47 | #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ 48 | // /*== all animations enable ==*/ 49 | #define RGBLIGHT_ANIMATIONS 50 | // /*== or choose animations ==*/ 51 | // #define RGBLIGHT_EFFECT_BREATHING 52 | // #define RGBLIGHT_EFFECT_RAINBOW_MOOD 53 | // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL 54 | // #define RGBLIGHT_EFFECT_SNAKE 55 | // #define RGBLIGHT_EFFECT_KNIGHT 56 | // #define RGBLIGHT_EFFECT_CHRISTMAS 57 | // #define RGBLIGHT_EFFECT_STATIC_GRADIENT 58 | // #define RGBLIGHT_EFFECT_RGB_TEST 59 | // #define RGBLIGHT_EFFECT_ALTERNATING 60 | 61 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 62 | #define DEBOUNCE 20 63 | 64 | /* ENCODER THINGS */ 65 | // #define ENCODER_DIRECTION_FLIP 66 | #define ENCODERS_PAD_A \ 67 | { F5, B5 } 68 | #define ENCODERS_PAD_B \ 69 | { F6, B4 } 70 | 71 | /* Tap Dance timing */ 72 | #define TAPPING_TERM 200 73 | 74 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 75 | #define LOCKING_SUPPORT_ENABLE 76 | /* Locking resynchronize hack */ 77 | #define LOCKING_RESYNC_ENABLE 78 | -------------------------------------------------------------------------------- /Firmware/hub16/hub16.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2019 Josh Johnson 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | #include "hub16.h" -------------------------------------------------------------------------------- /Firmware/hub16/hub16.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2019 Josh Johnson 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | #pragma once 17 | 18 | #include "quantum.h" 19 | #define ___ KC_NO 20 | 21 | /* This a shortcut to help you visually see your layout. 22 | * 23 | * The first section contains all of the arguments representing the physical 24 | * layout of the board and position of the keys. 25 | * 26 | * The second converts the arguments into a two-dimensional array which 27 | * represents the switch matrix. 28 | */ 29 | #define LAYOUT( \ 30 | k40, k41, \ 31 | k00, k01, k02, k03, \ 32 | k10, k11, k12, k13, \ 33 | k20, k21, k22, k23, \ 34 | k30, k31, k32, k33 \ 35 | ) { \ 36 | { k00, k01, k02, k03, }, \ 37 | { k10, k11, k12, k13, }, \ 38 | { k20, k21, k22, k23, }, \ 39 | { k30, k31, k32, k33, }, \ 40 | { k40, k41, ___, ___, } \ 41 | } 42 | 43 | -------------------------------------------------------------------------------- /Firmware/hub16/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "keyboard_name": "Hub16", 3 | "url": "https://joshajohnson.com/hub16-keyboard/", 4 | "maintainer": "Josh Johnson", 5 | "width": 4, 6 | "height": 5, 7 | "layouts": { 8 | "LAYOUT": { 9 | "layout": [ 10 | {"label":"Mute", "x":0.5, "y":0}, 11 | {"label":"Play / Pause", "x":2.5, "y":0}, 12 | {"label":"7", "x":0, "y":1}, 13 | {"label":"8", "x":1, "y":1}, 14 | {"label":"9", "x":2, "y":1}, 15 | {"label":"*", "x":3, "y":1}, 16 | {"label":"4", "x":0, "y":2}, 17 | {"label":"5", "x":1, "y":2}, 18 | {"label":"6", "x":2, "y":2}, 19 | {"label":"-", "x":3, "y":2}, 20 | {"label":"1", "x":0, "y":3}, 21 | {"label":"2", "x":1, "y":3}, 22 | {"label":"3", "x":2, "y":3}, 23 | {"label":"+", "x":3, "y":3}, 24 | {"label":"MO(1)", "x":0, "y":4}, 25 | {"label":"0", "x":1, "y":4}, 26 | {"label":".", "x":2, "y":4}, 27 | {"label":"N.ENT", "x":3, "y":4} 28 | ] 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Firmware/hub16/keymaps/default/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2019 Josh Johnson 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | #include QMK_KEYBOARD_H 17 | 18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 19 | [0] = LAYOUT( /* Base */ 20 | KC_MUTE, KC_MPLY, 21 | KC_7, KC_8, KC_9, KC_PAST, 22 | KC_4, KC_5, KC_6, KC_PMNS, 23 | KC_1, KC_2, KC_3, KC_PPLS, 24 | MO(1), KC_0, KC_PDOT,KC_PENT 25 | ), 26 | 27 | [1] = LAYOUT( /* LED Control */ 28 | _______, _______, 29 | _______, RGB_MOD, RGB_RMOD, RGB_TOG, 30 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, 31 | RGB_SAD, RGB_SAI, _______, _______, 32 | _______, _______, RESET, _______ 33 | ), 34 | }; 35 | 36 | void encoder_update_user(uint8_t index, bool clockwise) { 37 | if (index == 0) { /* Left Encoder */ 38 | if (clockwise) { 39 | tap_code(KC_VOLD); 40 | } else { 41 | tap_code(KC_VOLU); 42 | } 43 | } else if (index == 1) { /* Right Encoder */ 44 | if (clockwise) { 45 | tap_code(KC_MPRV); 46 | } else { 47 | tap_code(KC_MNXT); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Firmware/hub16/keymaps/macro/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2019 Josh Johnson 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | #include QMK_KEYBOARD_H 17 | 18 | // Function key we are 'wrapping' usual key presses in 19 | #define KC_WRAP KC_F24 20 | 21 | // Keyboard Layers 22 | enum keyboard_layers{ 23 | _BASE = 0, 24 | _CTRL 25 | }; 26 | 27 | // Tap Dance Declarations 28 | void td_ctrl (qk_tap_dance_state_t *state, void *user_data); 29 | 30 | enum tap_dance { CTRL = 0, BASE = 1 }; 31 | 32 | qk_tap_dance_action_t tap_dance_actions[] = { 33 | // Tap once for standard key on base layer, twice to toggle to control layer 34 | [CTRL] = ACTION_TAP_DANCE_FN(td_ctrl), 35 | [BASE] = ACTION_TAP_DANCE_LAYER_MOVE(_______, _BASE)}; 36 | 37 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 38 | [_BASE] = LAYOUT( /* Base */ 39 | KC_S, KC_V, 40 | KC_A, KC_B, KC_C, KC_D, 41 | KC_E, KC_F, KC_G, KC_H, 42 | KC_I, KC_J, KC_K, KC_L, 43 | KC_M, KC_N, KC_O, TD(CTRL) 44 | ), 45 | 46 | [_CTRL] = LAYOUT( /* Control */ 47 | KC_NO, KC_NO, 48 | _______, RGB_MOD, RGB_RMOD, RGB_TOG, 49 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, 50 | RGB_SAD, RGB_SAI, _______, _______, 51 | _______, _______, RESET, TD(BASE) 52 | ), 53 | }; 54 | 55 | // Keyboard is setup to 'wrap' the pressed key with an unused Fxx key, 56 | // allowing for easy differentiation from a real keyboard. 57 | void encoder_update_user(uint8_t index, bool clockwise) { 58 | if (index == 0) { /* Left Encoder */ 59 | if (clockwise) { 60 | register_code(KC_WRAP); 61 | tap_code(KC_R); 62 | unregister_code(KC_WRAP); 63 | } else { 64 | register_code(KC_WRAP); 65 | tap_code(KC_Q); 66 | unregister_code(KC_WRAP); 67 | } 68 | } else if (index == 1) { /* Right Encoder */ 69 | if (clockwise) { 70 | register_code(KC_WRAP); 71 | tap_code(KC_U); 72 | unregister_code(KC_WRAP); 73 | } else { 74 | register_code(KC_WRAP); 75 | tap_code(KC_T); 76 | unregister_code(KC_WRAP); 77 | } 78 | } 79 | } 80 | 81 | // Below stolen from TaranVH (https://github.com/TaranVH/2nd-keyboard/blob/master/HASU_USB/F24/keymap.c) 82 | // Shoutout to drashna on the QMK discord for basically writing this for me.... :P 83 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { 84 | static uint8_t f24_tracker; 85 | switch (keycode) { 86 | case KC_A ... KC_F23: 87 | case KC_EXECUTE ... KC_EXSEL: 88 | if (record->event.pressed) { 89 | register_code(KC_WRAP); 90 | f24_tracker++; 91 | register_code(keycode); 92 | } else { 93 | unregister_code(keycode); 94 | f24_tracker--; 95 | if (!f24_tracker) { 96 | unregister_code(KC_WRAP); 97 | } 98 | } 99 | return false; 100 | break; 101 | } 102 | return true; 103 | } 104 | 105 | // Below works around TD() not running key press through process_record_user. 106 | // Fixes bug of CTRL layer move key not being wrapped in by modifier on single tap 107 | void td_ctrl (qk_tap_dance_state_t *state, void *user_data) { 108 | if (state->count == 1) { 109 | register_code(KC_WRAP); 110 | tap_code(KC_P); 111 | unregister_code(KC_WRAP); 112 | } else if (state->count == 2) { 113 | layer_move(_CTRL); 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /Firmware/hub16/keymaps/macro/rules.mk: -------------------------------------------------------------------------------- 1 | TAP_DANCE_ENABLE = yes 2 | -------------------------------------------------------------------------------- /Firmware/hub16/keymaps/via/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2019 Josh Johnson 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | #include QMK_KEYBOARD_H 17 | 18 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 19 | [0] = LAYOUT( /* Base */ 20 | KC_MUTE, KC_MPLY, 21 | KC_7, KC_8, KC_9, KC_PAST, 22 | KC_4, KC_5, KC_6, KC_PMNS, 23 | KC_1, KC_2, KC_3, KC_PPLS, 24 | MO(1), KC_0, KC_PDOT, KC_PENT 25 | ), 26 | 27 | [1] = LAYOUT( /* LED Control */ 28 | _______, _______, 29 | _______, RGB_MOD, RGB_RMOD, RGB_TOG, 30 | RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, 31 | RGB_SAD, RGB_SAI, _______, _______, 32 | _______, _______, RESET, _______ 33 | ), 34 | 35 | [2] = LAYOUT( 36 | _______, _______, 37 | _______, _______, _______, _______, 38 | _______, _______, _______, _______, 39 | _______, _______, _______, _______, 40 | _______, _______, _______, _______ 41 | ), 42 | 43 | [3] = LAYOUT( 44 | _______, _______, 45 | _______, _______, _______, _______, 46 | _______, _______, _______, _______, 47 | _______, _______, _______, _______, 48 | _______, _______, _______, _______ 49 | ), 50 | }; 51 | 52 | void encoder_update_user(uint8_t index, bool clockwise) { 53 | if (index == 0) { /* Left Encoder */ 54 | if (clockwise) { 55 | tap_code(KC_VOLD); 56 | } else { 57 | tap_code(KC_VOLU); 58 | } 59 | } else if (index == 1) { /* Right Encoder */ 60 | if (clockwise) { 61 | tap_code(KC_MPRV); 62 | } else { 63 | tap_code(KC_MNXT); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Firmware/hub16/keymaps/via/rules.mk: -------------------------------------------------------------------------------- 1 | VIA_ENABLE = yes 2 | -------------------------------------------------------------------------------- /Firmware/hub16/matrix.c: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 2 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | #include 18 | #include 19 | #include "wait.h" 20 | #include "util.h" 21 | #include "matrix.h" 22 | #include "quantum.h" 23 | 24 | // Encoder things 25 | #define SWITCH_1 F7 26 | #define SWITCH_2 D7 27 | static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row); 28 | 29 | static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; 30 | static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; 31 | 32 | /* matrix state(1:on, 0:off) */ 33 | extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values 34 | extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values 35 | 36 | static void select_row(uint8_t row) { 37 | setPinOutput(row_pins[row]); 38 | writePinLow(row_pins[row]); 39 | } 40 | 41 | static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } 42 | 43 | static void unselect_rows(void) { 44 | for (uint8_t x = 0; x < MATRIX_ROWS; x++) { 45 | setPinInputHigh(row_pins[x]); 46 | } 47 | } 48 | 49 | static void init_pins(void) { 50 | unselect_rows(); 51 | for (uint8_t x = 0; x < MATRIX_COLS; x++) { 52 | setPinInputHigh(col_pins[x]); 53 | } 54 | } 55 | 56 | static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { 57 | // Store last value of row prior to reading 58 | matrix_row_t last_row_value = current_matrix[current_row]; 59 | 60 | // Clear data in matrix row 61 | current_matrix[current_row] = 0; 62 | 63 | // Select row and wait for row selecton to stabilize 64 | select_row(current_row); 65 | wait_us(30); 66 | 67 | // For each col... 68 | for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { 69 | // Select the col pin to read (active low) 70 | uint8_t pin_state = readPin(col_pins[col_index]); 71 | 72 | // Populate the matrix row with the state of the col pin 73 | current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); 74 | } 75 | 76 | // Unselect row 77 | unselect_row(current_row); 78 | 79 | return (last_row_value != current_matrix[current_row]); 80 | } 81 | 82 | 83 | void matrix_init_custom(void) { 84 | // initialize key pins 85 | setPinInput(SWITCH_1); 86 | setPinInput(SWITCH_2); 87 | init_pins(); 88 | } 89 | 90 | bool matrix_scan_custom(void) { 91 | bool changed = false; 92 | 93 | // Set row, read cols 94 | for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { 95 | changed |= read_cols_on_row(raw_matrix, current_row); 96 | } 97 | 98 | // Read encoder switches, already debounced 99 | changed |= read_encoder_switches(matrix, 4); 100 | 101 | return changed; 102 | } 103 | 104 | static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row) { 105 | // Store last value of row prior to reading 106 | matrix_row_t last_row_value = current_matrix[current_row]; 107 | 108 | // Clear data in matrix row 109 | current_matrix[current_row] = 0; 110 | 111 | // Debounce the encoder buttons using a shift register 112 | static uint8_t btn_1_array; 113 | static uint8_t btn_2_array; 114 | bool btn_1_rise = 0; 115 | bool btn_2_rise = 0; 116 | btn_1_array <<= 1; 117 | btn_2_array <<= 1; 118 | btn_1_array |= readPin(SWITCH_1); 119 | btn_2_array |= readPin(SWITCH_2); 120 | (btn_1_array == 0b01111111) ? (btn_1_rise = 1) : (btn_1_rise = 0); 121 | (btn_2_array == 0b01111111) ? (btn_2_rise = 1) : (btn_2_rise = 0); 122 | 123 | // Populate the matrix row with the state of the encoder 124 | current_matrix[current_row] |= btn_1_rise ? (1 << 0) : 0; 125 | current_matrix[current_row] |= btn_2_rise ? (1 << 1) : 0; 126 | 127 | return (last_row_value != current_matrix[current_row]); 128 | } 129 | -------------------------------------------------------------------------------- /Firmware/hub16/readme.md: -------------------------------------------------------------------------------- 1 | # Hub16 2 | 3 | Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders. 4 | 5 | For more information regarding the keyboard, please visit the [Hub16 Website](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16). 6 | 7 | * Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson) 8 | * Hardware Supported: Hub16 PCB (atmega32u4) 9 | * Hardware Availability: [Josh Johnson](https://www.joshajohnson.com/hub16-keyboard/) 10 | 11 | Make example for this keyboard (after setting up your build environment): 12 | 13 | make hub16:default:flash 14 | 15 | 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). 16 | -------------------------------------------------------------------------------- /Firmware/hub16/rules.mk: -------------------------------------------------------------------------------- 1 | MCU = atmega32u4 2 | 3 | BOOTLOADER = caterina 4 | 5 | # Build Options 6 | CUSTOM_MATRIX = lite # Custom scanning of matrix 7 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration 8 | MOUSEKEY_ENABLE = yes # Mouse keys 9 | EXTRAKEY_ENABLE = yes # Audio control and System control 10 | CONSOLE_ENABLE = no # Console for debug 11 | COMMAND_ENABLE = no # Commands for debug and configuration 12 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 13 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 14 | # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 15 | NKRO_ENABLE = no # USB Nkey Rollover 16 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality 17 | RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow 18 | UNICODE_ENABLE = no # Unicode 19 | BLUETOOTH_ENABLE = no # Enable Bluetooth 20 | AUDIO_ENABLE = no # Audio output on port C6 21 | ENCODER_ENABLE = yes # Rotary Encoder support 22 | 23 | SRC = matrix.c 24 | -------------------------------------------------------------------------------- /Hardware/0.1/Hub16-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Hardware/0.1/Hub16-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # Crystal_GND24_Small-Device 5 | # 6 | DEF Crystal_GND24_Small-Device Y 0 40 Y N 1 F N 7 | F0 "Y" 50 175 50 H V L CNN 8 | F1 "Crystal_GND24_Small-Device" 50 100 50 H V L CNN 9 | F2 "" 0 0 50 H I C CNN 10 | F3 "" 0 0 50 H I C CNN 11 | $FPLIST 12 | Crystal* 13 | $ENDFPLIST 14 | DRAW 15 | S -30 -60 30 60 0 1 0 N 16 | P 2 0 1 15 -50 -30 -50 30 N 17 | P 2 0 1 15 50 -30 50 30 N 18 | P 4 0 1 0 -50 -50 -50 -75 50 -75 50 -50 N 19 | P 4 0 1 0 -50 50 -50 75 50 75 50 50 N 20 | X 1 1 -100 0 50 R 50 50 1 1 P 21 | X 2 2 0 -125 50 U 50 50 1 1 P 22 | X 3 3 100 0 50 L 50 50 1 1 P 23 | X 4 4 0 125 50 D 50 50 1 1 P 24 | ENDDRAW 25 | ENDDEF 26 | # 27 | #End Library 28 | -------------------------------------------------------------------------------- /Hardware/0.1/Hub16.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.1/Hub16.pdf -------------------------------------------------------------------------------- /Hardware/0.1/Hub16.pro: -------------------------------------------------------------------------------- 1 | update=17/06/2019 12:08:21 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [schematic_editor] 16 | version=1 17 | PageLayoutDescrFile= 18 | PlotDirectoryName=./ 19 | SubpartIdSeparator=0 20 | SubpartFirstId=65 21 | NetFmtName= 22 | SpiceAjustPassiveValues=0 23 | LabSize=50 24 | ERC_TestSimilarLabels=1 25 | [pcbnew] 26 | version=1 27 | PageLayoutDescrFile= 28 | LastNetListRead=Hub16.net 29 | CopperLayerCount=2 30 | BoardThickness=1.6 31 | AllowMicroVias=0 32 | AllowBlindVias=0 33 | RequireCourtyardDefinitions=0 34 | ProhibitOverlappingCourtyards=1 35 | MinTrackWidth=0.2 36 | MinViaDiameter=0.5 37 | MinViaDrill=0.25 38 | MinMicroViaDiameter=0.2 39 | MinMicroViaDrill=0.09999999999999999 40 | MinHoleToHole=0.25 41 | TrackWidth1=0.25 42 | TrackWidth2=0.2 43 | TrackWidth3=0.5 44 | TrackWidth4=1 45 | ViaDiameter1=0.5 46 | ViaDrill1=0.25 47 | dPairWidth1=0.2 48 | dPairGap1=0.25 49 | dPairViaGap1=0.25 50 | SilkLineWidth=0.12 51 | SilkTextSizeV=1 52 | SilkTextSizeH=1 53 | SilkTextSizeThickness=0.15 54 | SilkTextItalic=0 55 | SilkTextUpright=1 56 | CopperLineWidth=0.2 57 | CopperTextSizeV=1.5 58 | CopperTextSizeH=1.5 59 | CopperTextThickness=0.3 60 | CopperTextItalic=0 61 | CopperTextUpright=1 62 | EdgeCutLineWidth=0.05 63 | CourtyardLineWidth=0.05 64 | OthersLineWidth=0.15 65 | OthersTextSizeV=1 66 | OthersTextSizeH=1 67 | OthersTextSizeThickness=0.15 68 | OthersTextItalic=0 69 | OthersTextUpright=1 70 | SolderMaskClearance=0.01 71 | SolderMaskMinWidth=0.01 72 | SolderPasteClearance=0 73 | SolderPasteRatio=-0 74 | [pcbnew/Layer.F.Cu] 75 | Name=F.Cu 76 | Type=0 77 | Enabled=1 78 | [pcbnew/Layer.In1.Cu] 79 | Name=In1.Cu 80 | Type=0 81 | Enabled=0 82 | [pcbnew/Layer.In2.Cu] 83 | Name=In2.Cu 84 | Type=0 85 | Enabled=0 86 | [pcbnew/Layer.In3.Cu] 87 | Name=In3.Cu 88 | Type=0 89 | Enabled=0 90 | [pcbnew/Layer.In4.Cu] 91 | Name=In4.Cu 92 | Type=0 93 | Enabled=0 94 | [pcbnew/Layer.In5.Cu] 95 | Name=In5.Cu 96 | Type=0 97 | Enabled=0 98 | [pcbnew/Layer.In6.Cu] 99 | Name=In6.Cu 100 | Type=0 101 | Enabled=0 102 | [pcbnew/Layer.In7.Cu] 103 | Name=In7.Cu 104 | Type=0 105 | Enabled=0 106 | [pcbnew/Layer.In8.Cu] 107 | Name=In8.Cu 108 | Type=0 109 | Enabled=0 110 | [pcbnew/Layer.In9.Cu] 111 | Name=In9.Cu 112 | Type=0 113 | Enabled=0 114 | [pcbnew/Layer.In10.Cu] 115 | Name=In10.Cu 116 | Type=0 117 | Enabled=0 118 | [pcbnew/Layer.In11.Cu] 119 | Name=In11.Cu 120 | Type=0 121 | Enabled=0 122 | [pcbnew/Layer.In12.Cu] 123 | Name=In12.Cu 124 | Type=0 125 | Enabled=0 126 | [pcbnew/Layer.In13.Cu] 127 | Name=In13.Cu 128 | Type=0 129 | Enabled=0 130 | [pcbnew/Layer.In14.Cu] 131 | Name=In14.Cu 132 | Type=0 133 | Enabled=0 134 | [pcbnew/Layer.In15.Cu] 135 | Name=In15.Cu 136 | Type=0 137 | Enabled=0 138 | [pcbnew/Layer.In16.Cu] 139 | Name=In16.Cu 140 | Type=0 141 | Enabled=0 142 | [pcbnew/Layer.In17.Cu] 143 | Name=In17.Cu 144 | Type=0 145 | Enabled=0 146 | [pcbnew/Layer.In18.Cu] 147 | Name=In18.Cu 148 | Type=0 149 | Enabled=0 150 | [pcbnew/Layer.In19.Cu] 151 | Name=In19.Cu 152 | Type=0 153 | Enabled=0 154 | [pcbnew/Layer.In20.Cu] 155 | Name=In20.Cu 156 | Type=0 157 | Enabled=0 158 | [pcbnew/Layer.In21.Cu] 159 | Name=In21.Cu 160 | Type=0 161 | Enabled=0 162 | [pcbnew/Layer.In22.Cu] 163 | Name=In22.Cu 164 | Type=0 165 | Enabled=0 166 | [pcbnew/Layer.In23.Cu] 167 | Name=In23.Cu 168 | Type=0 169 | Enabled=0 170 | [pcbnew/Layer.In24.Cu] 171 | Name=In24.Cu 172 | Type=0 173 | Enabled=0 174 | [pcbnew/Layer.In25.Cu] 175 | Name=In25.Cu 176 | Type=0 177 | Enabled=0 178 | [pcbnew/Layer.In26.Cu] 179 | Name=In26.Cu 180 | Type=0 181 | Enabled=0 182 | [pcbnew/Layer.In27.Cu] 183 | Name=In27.Cu 184 | Type=0 185 | Enabled=0 186 | [pcbnew/Layer.In28.Cu] 187 | Name=In28.Cu 188 | Type=0 189 | Enabled=0 190 | [pcbnew/Layer.In29.Cu] 191 | Name=In29.Cu 192 | Type=0 193 | Enabled=0 194 | [pcbnew/Layer.In30.Cu] 195 | Name=In30.Cu 196 | Type=0 197 | Enabled=0 198 | [pcbnew/Layer.B.Cu] 199 | Name=B.Cu 200 | Type=0 201 | Enabled=1 202 | [pcbnew/Layer.B.Adhes] 203 | Enabled=1 204 | [pcbnew/Layer.F.Adhes] 205 | Enabled=1 206 | [pcbnew/Layer.B.Paste] 207 | Enabled=1 208 | [pcbnew/Layer.F.Paste] 209 | Enabled=1 210 | [pcbnew/Layer.B.SilkS] 211 | Enabled=1 212 | [pcbnew/Layer.F.SilkS] 213 | Enabled=1 214 | [pcbnew/Layer.B.Mask] 215 | Enabled=1 216 | [pcbnew/Layer.F.Mask] 217 | Enabled=1 218 | [pcbnew/Layer.Dwgs.User] 219 | Enabled=1 220 | [pcbnew/Layer.Cmts.User] 221 | Enabled=1 222 | [pcbnew/Layer.Eco1.User] 223 | Enabled=1 224 | [pcbnew/Layer.Eco2.User] 225 | Enabled=1 226 | [pcbnew/Layer.Edge.Cuts] 227 | Enabled=1 228 | [pcbnew/Layer.Margin] 229 | Enabled=1 230 | [pcbnew/Layer.B.CrtYd] 231 | Enabled=1 232 | [pcbnew/Layer.F.CrtYd] 233 | Enabled=1 234 | [pcbnew/Layer.B.Fab] 235 | Enabled=1 236 | [pcbnew/Layer.F.Fab] 237 | Enabled=1 238 | [pcbnew/Layer.Rescue] 239 | Enabled=0 240 | [pcbnew/Netclasses] 241 | [pcbnew/Netclasses/Default] 242 | Name=Default 243 | Clearance=0.2 244 | TrackWidth=0.25 245 | ViaDiameter=0.5 246 | ViaDrill=0.25 247 | uViaDiameter=0.3 248 | uViaDrill=0.1 249 | dPairWidth=0.2 250 | dPairGap=0.25 251 | dPairViaGap=0.25 252 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC) 2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 3 | (tags "LED RGB NeoPixel") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user %R (at 0 0) (layer F.Fab) 15 | (effects (font (size 0.8 0.8) (thickness 0.15))) 16 | ) 17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1)) 25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12)) 29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1)) 30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step 35 | (offset (xyz 0 0 0.75)) 36 | (scale (xyz 1 1 1)) 37 | (rotate (xyz 0 0 -180)) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.3dshapes/mxKeycap.STEP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.1/Libraries/keyboard.3dshapes/mxKeycap.STEP -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # ATMEGA32U4 5 | # 6 | DEF ATMEGA32U4 U 0 40 Y Y 1 F N 7 | F0 "U" -700 1200 60 H V C CNN 8 | F1 "ATMEGA32U4" -200 1200 60 H V C CNN 9 | F2 "" 0 0 60 H V C CNN 10 | F3 "" 0 0 60 H V C CNN 11 | DRAW 12 | S 350 1150 -750 -1600 0 1 0 f 13 | X PE6 1 650 -900 300 L 50 50 1 1 B 14 | X PB2/MOSI 10 650 850 300 L 50 50 1 1 B 15 | X PB3/MISO 11 650 750 300 L 50 50 1 1 B 16 | X PB7 12 650 350 300 L 50 50 1 1 B 17 | X ~RESET 13 -1050 -50 300 R 50 50 1 1 I 18 | X VCC 14 -1050 1050 300 R 50 50 1 1 W 19 | X GND 15 -1050 -1250 300 R 50 50 1 1 W 20 | X XTAL1 16 -1050 -350 300 R 50 50 1 1 I 21 | X XTAL2 17 -1050 -450 300 R 50 50 1 1 O 22 | X PD0 18 650 -50 300 L 50 50 1 1 B 23 | X PD1 19 650 -150 300 L 50 50 1 1 B 24 | X UVcc 2 -1050 400 300 R 50 50 1 1 W 25 | X PD2 20 650 -250 300 L 50 50 1 1 B 26 | X PD3 21 650 -350 300 L 50 50 1 1 B 27 | X PD5 22 650 -550 300 L 50 50 1 1 B 28 | X GND 23 -1050 -1350 300 R 50 50 1 1 W 29 | X AVCC 24 -1050 750 300 R 50 50 1 1 W 30 | X PD4 25 650 -450 300 L 50 50 1 1 B 31 | X PD6 26 650 -650 300 L 50 50 1 1 B 32 | X PD7 27 650 -750 300 L 50 50 1 1 B 33 | X PB4 28 650 650 300 L 50 50 1 1 B 34 | X PB5 29 650 550 300 L 50 50 1 1 B 35 | X D- 3 -1050 150 300 R 50 50 1 1 B 36 | X PB6 30 650 450 300 L 50 50 1 1 B 37 | X PC6 31 650 200 300 L 50 50 1 1 B 38 | X PC7 32 650 100 300 L 50 50 1 1 B 39 | X PE2/~HWB 33 -1050 -900 300 R 50 50 1 1 B 40 | X VCC 34 -1050 950 300 R 50 50 1 1 W 41 | X GND 35 -1050 -1450 300 R 50 50 1 1 W 42 | X PF7 36 650 -1550 300 L 50 50 1 1 B 43 | X PF6 37 650 -1450 300 L 50 50 1 1 B 44 | X PF5 38 650 -1350 300 L 50 50 1 1 B 45 | X PF4 39 650 -1250 300 L 50 50 1 1 B 46 | X D+ 4 -1050 250 300 R 50 50 1 1 B 47 | X PF1 40 650 -1150 300 L 50 50 1 1 B 48 | X PF0 41 650 -1050 300 L 50 50 1 1 B 49 | X AREF 42 -1050 850 300 R 50 50 1 1 I 50 | X GND 43 -1050 -1550 300 R 50 50 1 1 W 51 | X AVCC 44 -1050 650 300 R 50 50 1 1 W 52 | X UGnd 5 -1050 -1150 300 R 50 50 1 1 W 53 | X UCap 6 -1050 -800 300 R 50 50 1 1 I 54 | X VBus 7 -1050 500 300 R 50 50 1 1 I 55 | X PB0 8 650 1050 300 L 50 50 1 1 B 56 | X PB1/SCK 9 650 950 300 L 50 50 1 1 B 57 | ENDDRAW 58 | ENDDEF 59 | # 60 | # D 61 | # 62 | DEF D D 0 40 Y Y 1 F N 63 | F0 "D" -150 -50 60 V V C CNN 64 | F1 "D" 150 -50 60 V I C CNN 65 | F2 "" 0 0 60 H V C CNN 66 | F3 "" 0 0 60 H V C CNN 67 | DRAW 68 | P 2 0 1 0 -100 0 100 0 N 69 | P 4 0 1 0 0 0 -100 -100 100 -100 0 0 F 70 | X ~ 1 0 50 50 D 60 60 1 1 P 71 | X ~ 2 0 -150 50 U 60 60 1 1 P 72 | ENDDRAW 73 | ENDDEF 74 | # 75 | # KEYSW 76 | # 77 | DEF KEYSW K? 0 40 Y Y 1 F N 78 | F0 "K?" -50 0 60 H V C CNN 79 | F1 "KEYSW" 0 -100 60 H I C CNN 80 | F2 "" 0 0 60 H V C CNN 81 | F3 "" 0 0 60 H V C CNN 82 | DRAW 83 | C -200 0 50 0 1 0 N 84 | C 200 0 50 0 1 0 N 85 | P 2 0 1 10 -200 50 150 150 N 86 | X ~ 1 300 0 50 L 60 60 1 1 P 87 | X ~ 2 -300 0 50 R 60 60 1 1 P 88 | ENDDRAW 89 | ENDDEF 90 | # 91 | # SOLDER_JUMPER 92 | # 93 | DEF SOLDER_JUMPER SJ 0 40 Y Y 1 F N 94 | F0 "SJ" 0 -50 60 H V C CNN 95 | F1 "SOLDER_JUMPER" 50 150 60 H I C CNN 96 | F2 "" 50 0 60 H V C CNN 97 | F3 "" 50 0 60 H V C CNN 98 | DRAW 99 | S -50 100 0 0 0 1 0 F 100 | S 50 100 100 0 0 1 0 F 101 | X ~ 1 -100 50 50 R 50 50 1 1 P 102 | X ~ 2 150 50 50 L 50 50 1 1 P 103 | ENDDRAW 104 | ENDDEF 105 | # 106 | #End Library 107 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/AVR_Programmer_SMD.kicad_mod: -------------------------------------------------------------------------------- 1 | (module AVR_Programmer_SMD (layer F.Cu) (tedit 5CBED92B) 2 | (fp_text reference REF** (at -4.64 0 90) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value AVR_Programmer_SMD (at 0 0) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -2.75 2.37) (end 3.64 2.37) (layer F.SilkS) (width 0.12)) 9 | (fp_line (start 3.64 2.37) (end 3.64 -2.37) (layer F.SilkS) (width 0.12)) 10 | (fp_line (start 3.64 -2.37) (end -3.64 -2.37) (layer F.SilkS) (width 0.12)) 11 | (fp_line (start -3.64 -2.37) (end -3.64 1.5) (layer F.SilkS) (width 0.12)) 12 | (fp_line (start -3.39 -2.12) (end 3.39 -2.12) (layer F.CrtYd) (width 0.05)) 13 | (fp_line (start 3.39 -2.12) (end 3.39 2.12) (layer F.CrtYd) (width 0.05)) 14 | (fp_line (start 3.39 2.12) (end -3.39 2.12) (layer F.CrtYd) (width 0.05)) 15 | (fp_line (start -3.39 2.12) (end -3.39 -2.12) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -3.64 1.5) (end -2.75 2.37) (layer F.SilkS) (width 0.12)) 17 | (pad 2 smd circle (at -2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 18 | (pad 1 smd circle (at -2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 19 | (pad 4 smd circle (at 0 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 20 | (pad 3 smd circle (at 0 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 21 | (pad 6 smd circle (at 2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 22 | (pad 5 smd circle (at 2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 23 | ) 24 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/Fuse_0805_2012Metric.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Fuse_0805_2012Metric (layer F.Cu) (tedit 5CF079AA) 2 | (descr "Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") 3 | (tags resistor) 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value Fuse_0805_2012Metric (at 0 1.65) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -0.258578 -0.71) (end 0.258578 -0.71) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start -0.258578 0.71) (end 0.258578 0.71) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05)) 21 | (fp_text user %R (at 0 0) (layer F.Fab) 22 | (effects (font (size 0.5 0.5) (thickness 0.08))) 23 | ) 24 | (pad 1 smd roundrect (at -0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 25 | (pad 2 smd roundrect (at 0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 26 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/polyfuse.step 27 | (offset (xyz 0 0 0.4)) 28 | (scale (xyz 0.4 0.3 0.3)) 29 | (rotate (xyz 90 0 0)) 30 | ) 31 | ) 32 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC) 2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 3 | (tags "LED RGB NeoPixel") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user %R (at 0 0) (layer F.Fab) 15 | (effects (font (size 0.8 0.8) (thickness 0.15))) 16 | ) 17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1)) 25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12)) 29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1)) 30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step 35 | (offset (xyz 0 0 0.75)) 36 | (scale (xyz 1 1 1)) 37 | (rotate (xyz 0 0 -180)) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/MicroUSB_Aliexpress.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MicroUSB_Aliexpress (layer F.Cu) (tedit 5CF07978) 2 | (fp_text reference J1 (at 6.55 -2.75) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value USB_B_Micro (at 0 3.45) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -5.5 0) (end 5.5 0) (layer F.CrtYd) (width 0.15)) 9 | (fp_text user ^ (at 0 0 -180) (layer F.Fab) 10 | (effects (font (size 1 1) (thickness 0.15))) 11 | ) 12 | (fp_text user "PCB Edge" (at 0 1.5) (layer F.Fab) 13 | (effects (font (size 1 1) (thickness 0.15))) 14 | ) 15 | (fp_line (start 5.5 0) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15)) 16 | (fp_line (start -5.5 0) (end -5.5 -5.5) (layer F.CrtYd) (width 0.15)) 17 | (fp_line (start -5.5 -5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15)) 18 | (pad 6 smd rect (at 1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 19 | (pad 6 smd rect (at -1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 20 | (pad 6 smd rect (at -3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 21 | (pad 6 smd rect (at 3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 22 | (pad 6 smd rect (at 3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask) 23 | (clearance 0.01)) 24 | (pad 6 smd rect (at -3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask) 25 | (clearance 0.01)) 26 | (pad 3 smd rect (at 0 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 27 | (pad "" np_thru_hole circle (at -2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Cu *.Mask) 28 | (clearance 0.01)) 29 | (pad "" np_thru_hole circle (at 2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Mask F.Cu) 30 | (clearance 0.01)) 31 | (pad 5 smd rect (at 1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 32 | (pad 4 smd rect (at 0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 34 | (pad 2 smd rect (at -0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/MicroUSB_Connector.step 36 | (offset (xyz -3.65 4.2 0)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 -90)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/PinPad_1x03_P2.54mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PinPad_1x03_P2.54mm (layer F.Cu) (tedit 5CBED9C2) 2 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") 3 | (tags "Through hole pin header THT 1x03 2.54mm single row") 4 | (fp_text reference REF** (at 0 -2.33) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PinPad_1x03_P2.54mm (at 0 7.41) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) 11 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) 12 | (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) 14 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start -1.33 -0.66) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start 1.33 -1.5) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) 18 | (fp_line (start -0.5 -1.5) (end 1.33 -1.5) (layer F.SilkS) (width 0.12)) 19 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) 22 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) 23 | (fp_text user %R (at 0 2.54 90) (layer F.Fab) 24 | (effects (font (size 1 1) (thickness 0.15))) 25 | ) 26 | (fp_line (start -0.5 -1.5) (end -1.33 -0.66) (layer F.SilkS) (width 0.12)) 27 | (pad 1 thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 28 | (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 29 | (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 30 | ) 31 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod: -------------------------------------------------------------------------------- 1 | (module RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (layer F.Cu) (tedit 5CBF76A3) 2 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html") 3 | (tags "rotary encoder") 4 | (fp_text reference REF** (at -4.7 -7.2) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (at 0 7.9) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 3.6 3.8) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -0.5 0) (end 0.5 0) (layer F.SilkS) (width 0.12)) 14 | (fp_line (start 0 -0.5) (end 0 0.5) (layer F.SilkS) (width 0.12)) 15 | (fp_line (start -3 0) (end 3 0) (layer F.Fab) (width 0.12)) 16 | (fp_line (start 0 -3) (end 0 3) (layer F.Fab) (width 0.12)) 17 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer F.Fab) (width 0.12)) 18 | (fp_line (start -6 5.8) (end -6 -4.7) (layer F.Fab) (width 0.12)) 19 | (fp_line (start 6 5.8) (end -6 5.8) (layer F.Fab) (width 0.12)) 20 | (fp_line (start 6 -5.8) (end 6 5.8) (layer F.Fab) (width 0.12)) 21 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer F.Fab) (width 0.12)) 22 | (fp_line (start -9 -7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05)) 23 | (fp_line (start -9 -7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05)) 24 | (fp_line (start 8.5 7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05)) 25 | (fp_line (start 8.5 7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05)) 26 | (fp_circle (center 0 0) (end 3 0) (layer F.SilkS) (width 0.12)) 27 | (fp_circle (center 0 0) (end 3 0) (layer F.Fab) (width 0.12)) 28 | (pad S1 thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 29 | (pad S2 thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 30 | (pad MP thru_hole circle (at 0 5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask)) 31 | (pad MP thru_hole circle (at 0 -5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask)) 32 | (pad B thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 33 | (pad C thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 34 | (pad A thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/pec11r-4220k_l13-8_w12-4_h26-5.stp 36 | (offset (xyz 0 0 1.5)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 90)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/SW_Cherry_MX1A_1.00u_PCB.kicad_mod: -------------------------------------------------------------------------------- 1 | (module SW_Cherry_MX1A_1.00u_PCB (layer F.Cu) (tedit 5CBF76F3) 2 | (descr "Cherry MX keyswitch, MX1A, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") 3 | (tags "cherry mx keyswitch MX1A 1.00u PCB") 4 | (fp_text reference REF** (at 0.06 -7.894) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value SW_Cherry_MX1A_1.00u_PCB (at 0.06 7.854) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 0.06 -7.894) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -6.29 -6.37) (end 6.41 -6.37) (layer F.Fab) (width 0.15)) 14 | (fp_line (start 6.41 -6.37) (end 6.41 6.33) (layer F.Fab) (width 0.15)) 15 | (fp_line (start 6.41 6.33) (end -6.29 6.33) (layer F.Fab) (width 0.15)) 16 | (fp_line (start -6.29 6.33) (end -6.29 -6.37) (layer F.Fab) (width 0.15)) 17 | (fp_line (start -6.54 6.58) (end -6.54 -6.62) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 6.66 6.58) (end -6.54 6.58) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 6.66 -6.62) (end 6.66 6.58) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -6.54 -6.62) (end 6.66 -6.62) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start -9.465 -9.545) (end 9.585 -9.545) (layer Dwgs.User) (width 0.15)) 22 | (fp_line (start 9.585 -9.545) (end 9.585 9.505) (layer Dwgs.User) (width 0.15)) 23 | (fp_line (start 9.585 9.505) (end -9.465 9.505) (layer Dwgs.User) (width 0.15)) 24 | (fp_line (start -9.465 9.505) (end -9.465 -9.545) (layer Dwgs.User) (width 0.15)) 25 | (pad 1 thru_hole circle (at 2.6 -5.1) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask)) 26 | (pad 2 thru_hole circle (at -3.75 -2.56) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask)) 27 | (pad "" np_thru_hole circle (at 0.06 -0.02) (size 4 4) (drill 4) (layers *.Cu *.Mask)) 28 | (pad "" np_thru_hole circle (at -5.02 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask)) 29 | (pad "" np_thru_hole circle (at 5.14 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask)) 30 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/cherrymx.step 31 | (offset (xyz 0.05 0 5.6)) 32 | (scale (xyz 1 1 1)) 33 | (rotate (xyz -90 0 -180)) 34 | ) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/mxKeycap.STEP 36 | (offset (xyz -9 9 10)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 0)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.1/Libraries/keyboard.pretty/Small_Tact_Switch.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Small_Tact_Switch (layer F.Cu) (tedit 5CBED444) 2 | (fp_text reference REF** (at 0.01 -2.53) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value Small_Tact_Switch (at 0.08 2.78) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start 2 -1.5) (end -2 -1.5) (layer F.SilkS) (width 0.15)) 9 | (fp_line (start -2 1.5) (end 2 1.5) (layer F.SilkS) (width 0.15)) 10 | (fp_line (start -3.5 -2) (end 3 -2) (layer F.CrtYd) (width 0.12)) 11 | (fp_line (start 3 -2) (end 3 2) (layer F.CrtYd) (width 0.12)) 12 | (fp_line (start 3 2) (end -3.5 2) (layer F.CrtYd) (width 0.12)) 13 | (fp_line (start -3.5 2) (end -3.5 -2) (layer F.CrtYd) (width 0.12)) 14 | (pad 2 smd rect (at 2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask)) 15 | (pad 1 smd rect (at -2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask)) 16 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/b3u-1000p.stp 17 | (at (xyz 0 0 0)) 18 | (scale (xyz 1.3 1 1)) 19 | (rotate (xyz -90 0 0)) 20 | ) 21 | ) 22 | -------------------------------------------------------------------------------- /Hardware/0.1/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name keyboard)(type KiCad)(uri ${KIPRJMOD}/Libraries/keyboard.pretty)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Hardware/0.1/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name keyboard)(type Legacy)(uri ${KIPRJMOD}/Libraries/keyboard.lib)(options "")(descr "")) 3 | (lib (name Hub16-rescue)(type Legacy)(uri ${KIPRJMOD}/Hub16-rescue.lib)(options "")(descr "")) 4 | ) 5 | -------------------------------------------------------------------------------- /Hardware/0.2/Hub16-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Hardware/0.2/Hub16-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # AVR-ISP-6-Connector 5 | # 6 | DEF AVR-ISP-6-Connector J 0 40 Y Y 1 F N 7 | F0 "J" 0 400 50 H V L CNN 8 | F1 "AVR-ISP-6-Connector" 0 -300 50 H V L CNN 9 | F2 "" -250 50 50 V I C CNN 10 | F3 "" -1275 -550 50 H I C CNN 11 | $FPLIST 12 | IDC?Header*2x03* 13 | Pin?Header*2x03* 14 | $ENDFPLIST 15 | DRAW 16 | S -105 -220 -95 -250 0 1 0 N 17 | S -105 350 -95 320 0 1 0 N 18 | S 250 -95 220 -105 0 1 0 N 19 | S 250 5 220 -5 0 1 0 N 20 | S 250 105 220 95 0 1 0 N 21 | S 250 205 220 195 0 1 0 N 22 | S 250 350 -250 -250 0 1 10 f 23 | X MISO 1 400 200 150 L 50 50 1 1 P 24 | X VCC 2 -100 500 150 D 50 50 1 1 W 25 | X SCK 3 400 0 150 L 50 50 1 1 P 26 | X MOSI 4 400 100 150 L 50 50 1 1 P 27 | X ~RST 5 400 -100 150 L 50 50 1 1 P 28 | X GND 6 -100 -400 150 U 50 50 1 1 W 29 | ENDDRAW 30 | ENDDEF 31 | # 32 | # Crystal_GND24_Small-Device-Hub16-rescue 33 | # 34 | DEF Crystal_GND24_Small-Device-Hub16-rescue Y 0 40 Y N 1 F N 35 | F0 "Y" 50 175 50 H V L CNN 36 | F1 "Crystal_GND24_Small-Device-Hub16-rescue" 50 100 50 H V L CNN 37 | F2 "" 0 0 50 H I C CNN 38 | F3 "" 0 0 50 H I C CNN 39 | $FPLIST 40 | Crystal* 41 | $ENDFPLIST 42 | DRAW 43 | S -30 -60 30 60 0 1 0 N 44 | P 2 0 1 15 -50 -30 -50 30 N 45 | P 2 0 1 15 50 -30 50 30 N 46 | P 4 0 1 0 -50 -50 -50 -75 50 -75 50 -50 N 47 | P 4 0 1 0 -50 50 -50 75 50 75 50 50 N 48 | X 1 1 -100 0 50 R 50 50 1 1 P 49 | X 2 2 0 -125 50 U 50 50 1 1 P 50 | X 3 3 100 0 50 L 50 50 1 1 P 51 | X 4 4 0 125 50 D 50 50 1 1 P 52 | ENDDRAW 53 | ENDDEF 54 | # 55 | #End Library 56 | -------------------------------------------------------------------------------- /Hardware/0.2/Hub16.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.2/Hub16.pdf -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC) 2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 3 | (tags "LED RGB NeoPixel") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user %R (at 0 0) (layer F.Fab) 15 | (effects (font (size 0.8 0.8) (thickness 0.15))) 16 | ) 17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1)) 25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12)) 29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1)) 30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step 35 | (offset (xyz 0 0 0.75)) 36 | (scale (xyz 1 1 1)) 37 | (rotate (xyz 0 0 -180)) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.3dshapes/mxKeycap.STEP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.2/Libraries/keyboard.3dshapes/mxKeycap.STEP -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # ATMEGA32U4 5 | # 6 | DEF ATMEGA32U4 U 0 40 Y Y 1 F N 7 | F0 "U" -700 1200 60 H V C CNN 8 | F1 "ATMEGA32U4" -200 1200 60 H V C CNN 9 | F2 "" 0 0 60 H V C CNN 10 | F3 "" 0 0 60 H V C CNN 11 | DRAW 12 | S 350 1150 -750 -1600 0 1 0 f 13 | X PE6 1 650 -900 300 L 50 50 1 1 B 14 | X PB2/MOSI 10 650 850 300 L 50 50 1 1 B 15 | X PB3/MISO 11 650 750 300 L 50 50 1 1 B 16 | X PB7 12 650 350 300 L 50 50 1 1 B 17 | X ~RESET 13 -1050 -50 300 R 50 50 1 1 I 18 | X VCC 14 -1050 1050 300 R 50 50 1 1 W 19 | X GND 15 -1050 -1250 300 R 50 50 1 1 W 20 | X XTAL1 16 -1050 -350 300 R 50 50 1 1 I 21 | X XTAL2 17 -1050 -450 300 R 50 50 1 1 O 22 | X PD0 18 650 -50 300 L 50 50 1 1 B 23 | X PD1 19 650 -150 300 L 50 50 1 1 B 24 | X UVcc 2 -1050 400 300 R 50 50 1 1 W 25 | X PD2 20 650 -250 300 L 50 50 1 1 B 26 | X PD3 21 650 -350 300 L 50 50 1 1 B 27 | X PD5 22 650 -550 300 L 50 50 1 1 B 28 | X GND 23 -1050 -1350 300 R 50 50 1 1 W 29 | X AVCC 24 -1050 750 300 R 50 50 1 1 W 30 | X PD4 25 650 -450 300 L 50 50 1 1 B 31 | X PD6 26 650 -650 300 L 50 50 1 1 B 32 | X PD7 27 650 -750 300 L 50 50 1 1 B 33 | X PB4 28 650 650 300 L 50 50 1 1 B 34 | X PB5 29 650 550 300 L 50 50 1 1 B 35 | X D- 3 -1050 150 300 R 50 50 1 1 B 36 | X PB6 30 650 450 300 L 50 50 1 1 B 37 | X PC6 31 650 200 300 L 50 50 1 1 B 38 | X PC7 32 650 100 300 L 50 50 1 1 B 39 | X PE2/~HWB 33 -1050 -900 300 R 50 50 1 1 B 40 | X VCC 34 -1050 950 300 R 50 50 1 1 W 41 | X GND 35 -1050 -1450 300 R 50 50 1 1 W 42 | X PF7 36 650 -1550 300 L 50 50 1 1 B 43 | X PF6 37 650 -1450 300 L 50 50 1 1 B 44 | X PF5 38 650 -1350 300 L 50 50 1 1 B 45 | X PF4 39 650 -1250 300 L 50 50 1 1 B 46 | X D+ 4 -1050 250 300 R 50 50 1 1 B 47 | X PF1 40 650 -1150 300 L 50 50 1 1 B 48 | X PF0 41 650 -1050 300 L 50 50 1 1 B 49 | X AREF 42 -1050 850 300 R 50 50 1 1 I 50 | X GND 43 -1050 -1550 300 R 50 50 1 1 W 51 | X AVCC 44 -1050 650 300 R 50 50 1 1 W 52 | X UGnd 5 -1050 -1150 300 R 50 50 1 1 W 53 | X UCap 6 -1050 -800 300 R 50 50 1 1 I 54 | X VBus 7 -1050 500 300 R 50 50 1 1 I 55 | X PB0 8 650 1050 300 L 50 50 1 1 B 56 | X PB1/SCK 9 650 950 300 L 50 50 1 1 B 57 | ENDDRAW 58 | ENDDEF 59 | # 60 | # D 61 | # 62 | DEF D D 0 40 Y Y 1 F N 63 | F0 "D" -150 -50 60 V V C CNN 64 | F1 "D" 150 -50 60 V I C CNN 65 | F2 "" 0 0 60 H V C CNN 66 | F3 "" 0 0 60 H V C CNN 67 | DRAW 68 | P 2 0 1 0 -100 0 100 0 N 69 | P 4 0 1 0 0 0 -100 -100 100 -100 0 0 F 70 | X ~ 1 0 50 50 D 60 60 1 1 P 71 | X ~ 2 0 -150 50 U 60 60 1 1 P 72 | ENDDRAW 73 | ENDDEF 74 | # 75 | # KEYSW 76 | # 77 | DEF KEYSW K? 0 40 Y Y 1 F N 78 | F0 "K?" -50 0 60 H V C CNN 79 | F1 "KEYSW" 0 -100 60 H I C CNN 80 | F2 "" 0 0 60 H V C CNN 81 | F3 "" 0 0 60 H V C CNN 82 | DRAW 83 | C -200 0 50 0 1 0 N 84 | C 200 0 50 0 1 0 N 85 | P 2 0 1 10 -200 50 150 150 N 86 | X ~ 1 300 0 50 L 60 60 1 1 P 87 | X ~ 2 -300 0 50 R 60 60 1 1 P 88 | ENDDRAW 89 | ENDDEF 90 | # 91 | # SOLDER_JUMPER 92 | # 93 | DEF SOLDER_JUMPER SJ 0 40 Y Y 1 F N 94 | F0 "SJ" 0 -50 60 H V C CNN 95 | F1 "SOLDER_JUMPER" 50 150 60 H I C CNN 96 | F2 "" 50 0 60 H V C CNN 97 | F3 "" 50 0 60 H V C CNN 98 | DRAW 99 | S -50 100 0 0 0 1 0 F 100 | S 50 100 100 0 0 1 0 F 101 | X ~ 1 -100 50 50 R 50 50 1 1 P 102 | X ~ 2 150 50 50 L 50 50 1 1 P 103 | ENDDRAW 104 | ENDDEF 105 | # 106 | #End Library 107 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/AVR_Programmer_SMD.kicad_mod: -------------------------------------------------------------------------------- 1 | (module AVR_Programmer_SMD (layer F.Cu) (tedit 5CBED92B) 2 | (fp_text reference REF** (at -4.64 0 90) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value AVR_Programmer_SMD (at 0 0) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -2.75 2.37) (end 3.64 2.37) (layer F.SilkS) (width 0.12)) 9 | (fp_line (start 3.64 2.37) (end 3.64 -2.37) (layer F.SilkS) (width 0.12)) 10 | (fp_line (start 3.64 -2.37) (end -3.64 -2.37) (layer F.SilkS) (width 0.12)) 11 | (fp_line (start -3.64 -2.37) (end -3.64 1.5) (layer F.SilkS) (width 0.12)) 12 | (fp_line (start -3.39 -2.12) (end 3.39 -2.12) (layer F.CrtYd) (width 0.05)) 13 | (fp_line (start 3.39 -2.12) (end 3.39 2.12) (layer F.CrtYd) (width 0.05)) 14 | (fp_line (start 3.39 2.12) (end -3.39 2.12) (layer F.CrtYd) (width 0.05)) 15 | (fp_line (start -3.39 2.12) (end -3.39 -2.12) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -3.64 1.5) (end -2.75 2.37) (layer F.SilkS) (width 0.12)) 17 | (pad 2 smd circle (at -2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 18 | (pad 1 smd circle (at -2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 19 | (pad 4 smd circle (at 0 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 20 | (pad 3 smd circle (at 0 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 21 | (pad 6 smd circle (at 2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 22 | (pad 5 smd circle (at 2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 23 | ) 24 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/Fuse_0805_2012Metric.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Fuse_0805_2012Metric (layer F.Cu) (tedit 5CF079AA) 2 | (descr "Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") 3 | (tags resistor) 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value Fuse_0805_2012Metric (at 0 1.65) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -0.258578 -0.71) (end 0.258578 -0.71) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start -0.258578 0.71) (end 0.258578 0.71) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05)) 21 | (fp_text user %R (at 0 0) (layer F.Fab) 22 | (effects (font (size 0.5 0.5) (thickness 0.08))) 23 | ) 24 | (pad 1 smd roundrect (at -0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 25 | (pad 2 smd roundrect (at 0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 26 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/polyfuse.step 27 | (offset (xyz 0 0 0.4)) 28 | (scale (xyz 0.4 0.3 0.3)) 29 | (rotate (xyz 90 0 0)) 30 | ) 31 | ) 32 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC) 2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 3 | (tags "LED RGB NeoPixel") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user %R (at 0 0) (layer F.Fab) 15 | (effects (font (size 0.8 0.8) (thickness 0.15))) 16 | ) 17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1)) 25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12)) 29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1)) 30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step 35 | (offset (xyz 0 0 0.75)) 36 | (scale (xyz 1 1 1)) 37 | (rotate (xyz 0 0 -180)) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/MicroUSB_Aliexpress.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MicroUSB_Aliexpress (layer F.Cu) (tedit 5CF07978) 2 | (fp_text reference J1 (at 6.55 -2.75) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value USB_B_Micro (at 0 3.45) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -5.5 0) (end 5.5 0) (layer F.CrtYd) (width 0.15)) 9 | (fp_text user ^ (at 0 0 -180) (layer F.Fab) 10 | (effects (font (size 1 1) (thickness 0.15))) 11 | ) 12 | (fp_text user "PCB Edge" (at 0 1.5) (layer F.Fab) 13 | (effects (font (size 1 1) (thickness 0.15))) 14 | ) 15 | (fp_line (start 5.5 0) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15)) 16 | (fp_line (start -5.5 0) (end -5.5 -5.5) (layer F.CrtYd) (width 0.15)) 17 | (fp_line (start -5.5 -5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15)) 18 | (pad 6 smd rect (at 1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 19 | (pad 6 smd rect (at -1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 20 | (pad 6 smd rect (at -3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 21 | (pad 6 smd rect (at 3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 22 | (pad 6 smd rect (at 3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask) 23 | (clearance 0.01)) 24 | (pad 6 smd rect (at -3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask) 25 | (clearance 0.01)) 26 | (pad 3 smd rect (at 0 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 27 | (pad "" np_thru_hole circle (at -2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Cu *.Mask) 28 | (clearance 0.01)) 29 | (pad "" np_thru_hole circle (at 2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Mask F.Cu) 30 | (clearance 0.01)) 31 | (pad 5 smd rect (at 1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 32 | (pad 4 smd rect (at 0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 34 | (pad 2 smd rect (at -0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/MicroUSB_Connector.step 36 | (offset (xyz -3.65 4.2 0)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 -90)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/PinPad_1x03_P2.54mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PinPad_1x03_P2.54mm (layer F.Cu) (tedit 5CBED9C2) 2 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") 3 | (tags "Through hole pin header THT 1x03 2.54mm single row") 4 | (fp_text reference REF** (at 0 -2.33) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PinPad_1x03_P2.54mm (at 0 7.41) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) 11 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) 12 | (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) 14 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start -1.33 -0.66) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start 1.33 -1.5) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) 18 | (fp_line (start -0.5 -1.5) (end 1.33 -1.5) (layer F.SilkS) (width 0.12)) 19 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) 22 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) 23 | (fp_text user %R (at 0 2.54 90) (layer F.Fab) 24 | (effects (font (size 1 1) (thickness 0.15))) 25 | ) 26 | (fp_line (start -0.5 -1.5) (end -1.33 -0.66) (layer F.SilkS) (width 0.12)) 27 | (pad 1 thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 28 | (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 29 | (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 30 | ) 31 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod: -------------------------------------------------------------------------------- 1 | (module RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (layer F.Cu) (tedit 5CBF76A3) 2 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html") 3 | (tags "rotary encoder") 4 | (fp_text reference REF** (at -4.7 -7.2) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (at 0 7.9) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 3.6 3.8) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -0.5 0) (end 0.5 0) (layer F.SilkS) (width 0.12)) 14 | (fp_line (start 0 -0.5) (end 0 0.5) (layer F.SilkS) (width 0.12)) 15 | (fp_line (start -3 0) (end 3 0) (layer F.Fab) (width 0.12)) 16 | (fp_line (start 0 -3) (end 0 3) (layer F.Fab) (width 0.12)) 17 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer F.Fab) (width 0.12)) 18 | (fp_line (start -6 5.8) (end -6 -4.7) (layer F.Fab) (width 0.12)) 19 | (fp_line (start 6 5.8) (end -6 5.8) (layer F.Fab) (width 0.12)) 20 | (fp_line (start 6 -5.8) (end 6 5.8) (layer F.Fab) (width 0.12)) 21 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer F.Fab) (width 0.12)) 22 | (fp_line (start -9 -7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05)) 23 | (fp_line (start -9 -7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05)) 24 | (fp_line (start 8.5 7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05)) 25 | (fp_line (start 8.5 7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05)) 26 | (fp_circle (center 0 0) (end 3 0) (layer F.SilkS) (width 0.12)) 27 | (fp_circle (center 0 0) (end 3 0) (layer F.Fab) (width 0.12)) 28 | (pad S1 thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 29 | (pad S2 thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 30 | (pad MP thru_hole circle (at 0 5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask)) 31 | (pad MP thru_hole circle (at 0 -5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask)) 32 | (pad B thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 33 | (pad C thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 34 | (pad A thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/pec11r-4220k_l13-8_w12-4_h26-5.stp 36 | (offset (xyz 0 0 1.5)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 90)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/SW_Cherry_MX1A_1.00u_PCB.kicad_mod: -------------------------------------------------------------------------------- 1 | (module SW_Cherry_MX1A_1.00u_PCB (layer F.Cu) (tedit 5CBF76F3) 2 | (descr "Cherry MX keyswitch, MX1A, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") 3 | (tags "cherry mx keyswitch MX1A 1.00u PCB") 4 | (fp_text reference REF** (at 0.06 -7.894) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value SW_Cherry_MX1A_1.00u_PCB (at 0.06 7.854) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 0.06 -7.894) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -6.29 -6.37) (end 6.41 -6.37) (layer F.Fab) (width 0.15)) 14 | (fp_line (start 6.41 -6.37) (end 6.41 6.33) (layer F.Fab) (width 0.15)) 15 | (fp_line (start 6.41 6.33) (end -6.29 6.33) (layer F.Fab) (width 0.15)) 16 | (fp_line (start -6.29 6.33) (end -6.29 -6.37) (layer F.Fab) (width 0.15)) 17 | (fp_line (start -6.54 6.58) (end -6.54 -6.62) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 6.66 6.58) (end -6.54 6.58) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 6.66 -6.62) (end 6.66 6.58) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -6.54 -6.62) (end 6.66 -6.62) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start -9.465 -9.545) (end 9.585 -9.545) (layer Dwgs.User) (width 0.15)) 22 | (fp_line (start 9.585 -9.545) (end 9.585 9.505) (layer Dwgs.User) (width 0.15)) 23 | (fp_line (start 9.585 9.505) (end -9.465 9.505) (layer Dwgs.User) (width 0.15)) 24 | (fp_line (start -9.465 9.505) (end -9.465 -9.545) (layer Dwgs.User) (width 0.15)) 25 | (pad 1 thru_hole circle (at 2.6 -5.1) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask)) 26 | (pad 2 thru_hole circle (at -3.75 -2.56) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask)) 27 | (pad "" np_thru_hole circle (at 0.06 -0.02) (size 4 4) (drill 4) (layers *.Cu *.Mask)) 28 | (pad "" np_thru_hole circle (at -5.02 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask)) 29 | (pad "" np_thru_hole circle (at 5.14 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask)) 30 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/cherrymx.step 31 | (offset (xyz 0.05 0 5.6)) 32 | (scale (xyz 1 1 1)) 33 | (rotate (xyz -90 0 -180)) 34 | ) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/mxKeycap.STEP 36 | (offset (xyz -9 9 10)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 0)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.2/Libraries/keyboard.pretty/Small_Tact_Switch.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Small_Tact_Switch (layer F.Cu) (tedit 5CBED444) 2 | (fp_text reference REF** (at 0.01 -2.53) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value Small_Tact_Switch (at 0.08 2.78) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start 2 -1.5) (end -2 -1.5) (layer F.SilkS) (width 0.15)) 9 | (fp_line (start -2 1.5) (end 2 1.5) (layer F.SilkS) (width 0.15)) 10 | (fp_line (start -3.5 -2) (end 3 -2) (layer F.CrtYd) (width 0.12)) 11 | (fp_line (start 3 -2) (end 3 2) (layer F.CrtYd) (width 0.12)) 12 | (fp_line (start 3 2) (end -3.5 2) (layer F.CrtYd) (width 0.12)) 13 | (fp_line (start -3.5 2) (end -3.5 -2) (layer F.CrtYd) (width 0.12)) 14 | (pad 2 smd rect (at 2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask)) 15 | (pad 1 smd rect (at -2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask)) 16 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/b3u-1000p.stp 17 | (at (xyz 0 0 0)) 18 | (scale (xyz 1.3 1 1)) 19 | (rotate (xyz -90 0 0)) 20 | ) 21 | ) 22 | -------------------------------------------------------------------------------- /Hardware/0.2/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name keyboard)(type KiCad)(uri ${KIPRJMOD}/Libraries/keyboard.pretty)(options "")(descr "")) 3 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 4 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 5 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 6 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 7 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 8 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 9 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 10 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 11 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 12 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 13 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.2/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name keyboard)(type Legacy)(uri ${KIPRJMOD}/Libraries/keyboard.lib)(options "")(descr "")) 3 | (lib (name Hub16-rescue)(type Legacy)(uri ${KIPRJMOD}/Hub16-rescue.lib)(options "")(descr "")) 4 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 5 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 6 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 7 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 8 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 9 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 10 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 11 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 12 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 13 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.3/Hub16-rescue.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Hardware/0.3/Hub16-rescue.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # AVR-ISP-6-Connector 5 | # 6 | DEF AVR-ISP-6-Connector J 0 40 Y Y 1 F N 7 | F0 "J" 0 400 50 H V L CNN 8 | F1 "AVR-ISP-6-Connector" 0 -300 50 H V L CNN 9 | F2 "" -250 50 50 V I C CNN 10 | F3 "" -1275 -550 50 H I C CNN 11 | $FPLIST 12 | IDC?Header*2x03* 13 | Pin?Header*2x03* 14 | $ENDFPLIST 15 | DRAW 16 | S -105 -220 -95 -250 0 1 0 N 17 | S -105 350 -95 320 0 1 0 N 18 | S 250 -95 220 -105 0 1 0 N 19 | S 250 5 220 -5 0 1 0 N 20 | S 250 105 220 95 0 1 0 N 21 | S 250 205 220 195 0 1 0 N 22 | S 250 350 -250 -250 0 1 10 f 23 | X MISO 1 400 200 150 L 50 50 1 1 P 24 | X VCC 2 -100 500 150 D 50 50 1 1 W 25 | X SCK 3 400 0 150 L 50 50 1 1 P 26 | X MOSI 4 400 100 150 L 50 50 1 1 P 27 | X ~RST 5 400 -100 150 L 50 50 1 1 P 28 | X GND 6 -100 -400 150 U 50 50 1 1 W 29 | ENDDRAW 30 | ENDDEF 31 | # 32 | # Crystal_GND24_Small-Device-Hub16-rescue 33 | # 34 | DEF Crystal_GND24_Small-Device-Hub16-rescue Y 0 40 Y N 1 F N 35 | F0 "Y" 50 175 50 H V L CNN 36 | F1 "Crystal_GND24_Small-Device-Hub16-rescue" 50 100 50 H V L CNN 37 | F2 "" 0 0 50 H I C CNN 38 | F3 "" 0 0 50 H I C CNN 39 | $FPLIST 40 | Crystal* 41 | $ENDFPLIST 42 | DRAW 43 | S -30 -60 30 60 0 1 0 N 44 | P 2 0 1 15 -50 -30 -50 30 N 45 | P 2 0 1 15 50 -30 50 30 N 46 | P 4 0 1 0 -50 -50 -50 -75 50 -75 50 -50 N 47 | P 4 0 1 0 -50 50 -50 75 50 75 50 50 N 48 | X 1 1 -100 0 50 R 50 50 1 1 P 49 | X 2 2 0 -125 50 U 50 50 1 1 P 50 | X 3 3 100 0 50 L 50 50 1 1 P 51 | X 4 4 0 125 50 D 50 50 1 1 P 52 | ENDDRAW 53 | ENDDEF 54 | # 55 | # RN-josh-passive 56 | # 57 | DEF RN-josh-passive RN 0 0 N Y 4 F N 58 | F0 "RN" 0 70 50 H V C CNN 59 | F1 "RN-josh-passive" 0 0 50 H V C CNN 60 | F2 "" 0 0 50 V I C CNN 61 | F3 "" 0 0 50 V I C CNN 62 | DRAW 63 | S -100 -40 100 40 0 1 0 N 64 | X ~ 4 -200 0 100 R 50 50 1 1 P 65 | X ~ 5 200 0 100 L 50 50 1 1 P 66 | X ~ 3 -200 0 100 R 50 50 2 1 P 67 | X ~ 6 200 0 100 L 50 50 2 1 P 68 | X ~ 2 -200 0 100 R 50 50 3 1 P 69 | X ~ 7 200 0 100 L 50 50 3 1 P 70 | X ~ 1 -200 0 100 R 50 50 4 1 P 71 | X ~ 8 200 0 100 L 50 50 4 1 P 72 | ENDDRAW 73 | ENDDEF 74 | # 75 | #End Library 76 | -------------------------------------------------------------------------------- /Hardware/0.3/Hub16.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.3/Hub16.pdf -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC) 2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 3 | (tags "LED RGB NeoPixel") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user %R (at 0 0) (layer F.Fab) 15 | (effects (font (size 0.8 0.8) (thickness 0.15))) 16 | ) 17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1)) 25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12)) 29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1)) 30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step 35 | (offset (xyz 0 0 0.75)) 36 | (scale (xyz 1 1 1)) 37 | (rotate (xyz 0 0 -180)) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.3dshapes/mxKeycap.STEP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.3/Libraries/keyboard.3dshapes/mxKeycap.STEP -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | #End Doc Library 4 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # ATMEGA32U4 5 | # 6 | DEF ATMEGA32U4 U 0 40 Y Y 1 F N 7 | F0 "U" -700 1200 60 H V C CNN 8 | F1 "ATMEGA32U4" -200 1200 60 H V C CNN 9 | F2 "" 0 0 60 H V C CNN 10 | F3 "" 0 0 60 H V C CNN 11 | DRAW 12 | S 350 1150 -750 -1600 0 1 0 f 13 | X PE6 1 650 -900 300 L 50 50 1 1 B 14 | X PB2/MOSI 10 650 850 300 L 50 50 1 1 B 15 | X PB3/MISO 11 650 750 300 L 50 50 1 1 B 16 | X PB7 12 650 350 300 L 50 50 1 1 B 17 | X ~RESET 13 -1050 -50 300 R 50 50 1 1 I 18 | X VCC 14 -1050 1050 300 R 50 50 1 1 W 19 | X GND 15 -1050 -1250 300 R 50 50 1 1 W 20 | X XTAL1 16 -1050 -350 300 R 50 50 1 1 I 21 | X XTAL2 17 -1050 -450 300 R 50 50 1 1 O 22 | X PD0 18 650 -50 300 L 50 50 1 1 B 23 | X PD1 19 650 -150 300 L 50 50 1 1 B 24 | X UVcc 2 -1050 400 300 R 50 50 1 1 W 25 | X PD2 20 650 -250 300 L 50 50 1 1 B 26 | X PD3 21 650 -350 300 L 50 50 1 1 B 27 | X PD5 22 650 -550 300 L 50 50 1 1 B 28 | X GND 23 -1050 -1350 300 R 50 50 1 1 W 29 | X AVCC 24 -1050 750 300 R 50 50 1 1 W 30 | X PD4 25 650 -450 300 L 50 50 1 1 B 31 | X PD6 26 650 -650 300 L 50 50 1 1 B 32 | X PD7 27 650 -750 300 L 50 50 1 1 B 33 | X PB4 28 650 650 300 L 50 50 1 1 B 34 | X PB5 29 650 550 300 L 50 50 1 1 B 35 | X D- 3 -1050 150 300 R 50 50 1 1 B 36 | X PB6 30 650 450 300 L 50 50 1 1 B 37 | X PC6 31 650 200 300 L 50 50 1 1 B 38 | X PC7 32 650 100 300 L 50 50 1 1 B 39 | X PE2/~HWB 33 -1050 -900 300 R 50 50 1 1 B 40 | X VCC 34 -1050 950 300 R 50 50 1 1 W 41 | X GND 35 -1050 -1450 300 R 50 50 1 1 W 42 | X PF7 36 650 -1550 300 L 50 50 1 1 B 43 | X PF6 37 650 -1450 300 L 50 50 1 1 B 44 | X PF5 38 650 -1350 300 L 50 50 1 1 B 45 | X PF4 39 650 -1250 300 L 50 50 1 1 B 46 | X D+ 4 -1050 250 300 R 50 50 1 1 B 47 | X PF1 40 650 -1150 300 L 50 50 1 1 B 48 | X PF0 41 650 -1050 300 L 50 50 1 1 B 49 | X AREF 42 -1050 850 300 R 50 50 1 1 I 50 | X GND 43 -1050 -1550 300 R 50 50 1 1 W 51 | X AVCC 44 -1050 650 300 R 50 50 1 1 W 52 | X UGnd 5 -1050 -1150 300 R 50 50 1 1 W 53 | X UCap 6 -1050 -800 300 R 50 50 1 1 I 54 | X VBus 7 -1050 500 300 R 50 50 1 1 I 55 | X PB0 8 650 1050 300 L 50 50 1 1 B 56 | X PB1/SCK 9 650 950 300 L 50 50 1 1 B 57 | ENDDRAW 58 | ENDDEF 59 | # 60 | # D 61 | # 62 | DEF D D 0 40 Y Y 1 F N 63 | F0 "D" -150 -50 60 V V C CNN 64 | F1 "D" 150 -50 60 V I C CNN 65 | F2 "" 0 0 60 H V C CNN 66 | F3 "" 0 0 60 H V C CNN 67 | DRAW 68 | P 2 0 1 0 -100 0 100 0 N 69 | P 4 0 1 0 0 0 -100 -100 100 -100 0 0 F 70 | X ~ 1 0 50 50 D 60 60 1 1 P 71 | X ~ 2 0 -150 50 U 60 60 1 1 P 72 | ENDDRAW 73 | ENDDEF 74 | # 75 | # KEYSW 76 | # 77 | DEF KEYSW K? 0 40 Y Y 1 F N 78 | F0 "K?" -50 0 60 H V C CNN 79 | F1 "KEYSW" 0 -100 60 H I C CNN 80 | F2 "" 0 0 60 H V C CNN 81 | F3 "" 0 0 60 H V C CNN 82 | DRAW 83 | C -200 0 50 0 1 0 N 84 | C 200 0 50 0 1 0 N 85 | P 2 0 1 10 -200 50 150 150 N 86 | X ~ 1 300 0 50 L 60 60 1 1 P 87 | X ~ 2 -300 0 50 R 60 60 1 1 P 88 | ENDDRAW 89 | ENDDEF 90 | # 91 | # SOLDER_JUMPER 92 | # 93 | DEF SOLDER_JUMPER SJ 0 40 Y Y 1 F N 94 | F0 "SJ" 0 -50 60 H V C CNN 95 | F1 "SOLDER_JUMPER" 50 150 60 H I C CNN 96 | F2 "" 50 0 60 H V C CNN 97 | F3 "" 50 0 60 H V C CNN 98 | DRAW 99 | S -50 100 0 0 0 1 0 F 100 | S 50 100 100 0 0 1 0 F 101 | X ~ 1 -100 50 50 R 50 50 1 1 P 102 | X ~ 2 150 50 50 L 50 50 1 1 P 103 | ENDDRAW 104 | ENDDEF 105 | # 106 | #End Library 107 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/AVR_Programmer_SMD.kicad_mod: -------------------------------------------------------------------------------- 1 | (module AVR_Programmer_SMD (layer F.Cu) (tedit 5CBED92B) 2 | (fp_text reference REF** (at -4.64 0 90) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value AVR_Programmer_SMD (at 0 0) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -2.75 2.37) (end 3.64 2.37) (layer F.SilkS) (width 0.12)) 9 | (fp_line (start 3.64 2.37) (end 3.64 -2.37) (layer F.SilkS) (width 0.12)) 10 | (fp_line (start 3.64 -2.37) (end -3.64 -2.37) (layer F.SilkS) (width 0.12)) 11 | (fp_line (start -3.64 -2.37) (end -3.64 1.5) (layer F.SilkS) (width 0.12)) 12 | (fp_line (start -3.39 -2.12) (end 3.39 -2.12) (layer F.CrtYd) (width 0.05)) 13 | (fp_line (start 3.39 -2.12) (end 3.39 2.12) (layer F.CrtYd) (width 0.05)) 14 | (fp_line (start 3.39 2.12) (end -3.39 2.12) (layer F.CrtYd) (width 0.05)) 15 | (fp_line (start -3.39 2.12) (end -3.39 -2.12) (layer F.CrtYd) (width 0.05)) 16 | (fp_line (start -3.64 1.5) (end -2.75 2.37) (layer F.SilkS) (width 0.12)) 17 | (pad 2 smd circle (at -2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 18 | (pad 1 smd circle (at -2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 19 | (pad 4 smd circle (at 0 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 20 | (pad 3 smd circle (at 0 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 21 | (pad 6 smd circle (at 2.54 -1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 22 | (pad 5 smd circle (at 2.54 1.27) (size 1.2 1.2) (layers F.Cu F.Mask)) 23 | ) 24 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/Fuse_0805_2012Metric.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Fuse_0805_2012Metric (layer F.Cu) (tedit 5CF079AA) 2 | (descr "Fuse SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") 3 | (tags resistor) 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value Fuse_0805_2012Metric (at 0 1.65) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) 12 | (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) 13 | (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) 14 | (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -0.258578 -0.71) (end 0.258578 -0.71) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start -0.258578 0.71) (end 0.258578 0.71) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start -1.68 0.95) (end -1.68 -0.95) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start -1.68 -0.95) (end 1.68 -0.95) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 1.68 -0.95) (end 1.68 0.95) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start 1.68 0.95) (end -1.68 0.95) (layer F.CrtYd) (width 0.05)) 21 | (fp_text user %R (at 0 0) (layer F.Fab) 22 | (effects (font (size 0.5 0.5) (thickness 0.08))) 23 | ) 24 | (pad 1 smd roundrect (at -0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 25 | (pad 2 smd roundrect (at 0.9375 0) (size 0.975 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) 26 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/polyfuse.step 27 | (offset (xyz 0 0 0.4)) 28 | (scale (xyz 0.4 0.3 0.3)) 29 | (rotate (xyz 90 0 0)) 30 | ) 31 | ) 32 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (layer F.Cu) (tedit 5CBED2EC) 2 | (descr https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 3 | (tags "LED RGB NeoPixel") 4 | (attr smd) 5 | (fp_text reference REF** (at 0 -3.5) (layer F.SilkS) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_text value LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm (at 0 4) (layer F.Fab) 9 | (effects (font (size 1 1) (thickness 0.15))) 10 | ) 11 | (fp_text user 1 (at -4.15 -1.6) (layer F.SilkS) 12 | (effects (font (size 1 1) (thickness 0.15))) 13 | ) 14 | (fp_text user %R (at 0 0) (layer F.Fab) 15 | (effects (font (size 0.8 0.8) (thickness 0.15))) 16 | ) 17 | (fp_line (start 3.45 -2.75) (end -3.45 -2.75) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 3.45 2.75) (end 3.45 -2.75) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start -3.45 2.75) (end 3.45 2.75) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -3.45 -2.75) (end -3.45 2.75) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 2.5 1.5) (end 1.5 2.5) (layer F.Fab) (width 0.1)) 22 | (fp_line (start -2.5 -2.5) (end -2.5 2.5) (layer F.Fab) (width 0.1)) 23 | (fp_line (start -2.5 2.5) (end 2.5 2.5) (layer F.Fab) (width 0.1)) 24 | (fp_line (start 2.5 2.5) (end 2.5 -2.5) (layer F.Fab) (width 0.1)) 25 | (fp_line (start 2.5 -2.5) (end -2.5 -2.5) (layer F.Fab) (width 0.1)) 26 | (fp_line (start -3.65 -2.75) (end 3.65 -2.75) (layer F.SilkS) (width 0.12)) 27 | (fp_line (start -3.65 2.75) (end 3.65 2.75) (layer F.SilkS) (width 0.12)) 28 | (fp_line (start 3.65 2.75) (end 3.65 1.6) (layer F.SilkS) (width 0.12)) 29 | (fp_circle (center 0 0) (end 0 -2) (layer F.Fab) (width 0.1)) 30 | (pad 3 smd rect (at 2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 31 | (pad 4 smd rect (at 2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 32 | (pad 2 smd rect (at -2.45 1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -2.45 -1.6) (size 1.5 1) (layers F.Cu F.Paste F.Mask)) 34 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/ws2812B.step 35 | (offset (xyz 0 0 0.75)) 36 | (scale (xyz 1 1 1)) 37 | (rotate (xyz 0 0 -180)) 38 | ) 39 | ) 40 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/MicroUSB_Aliexpress.kicad_mod: -------------------------------------------------------------------------------- 1 | (module MicroUSB_Aliexpress (layer F.Cu) (tedit 5CF07978) 2 | (fp_text reference J1 (at 6.55 -2.75) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value USB_B_Micro (at 0 3.45) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start -5.5 0) (end 5.5 0) (layer F.CrtYd) (width 0.15)) 9 | (fp_text user ^ (at 0 0 -180) (layer F.Fab) 10 | (effects (font (size 1 1) (thickness 0.15))) 11 | ) 12 | (fp_text user "PCB Edge" (at 0 1.5) (layer F.Fab) 13 | (effects (font (size 1 1) (thickness 0.15))) 14 | ) 15 | (fp_line (start 5.5 0) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15)) 16 | (fp_line (start -5.5 0) (end -5.5 -5.5) (layer F.CrtYd) (width 0.15)) 17 | (fp_line (start -5.5 -5.5) (end 5.5 -5.5) (layer F.CrtYd) (width 0.15)) 18 | (pad 6 smd rect (at 1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 19 | (pad 6 smd rect (at -1.15 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 20 | (pad 6 smd rect (at -3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 21 | (pad 6 smd rect (at 3.95 -1.45) (size 1.9 1.9) (layers F.Cu F.Paste F.Mask)) 22 | (pad 6 smd rect (at 3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask) 23 | (clearance 0.01)) 24 | (pad 6 smd rect (at -3.1 -3.7) (size 1.35 1) (layers F.Cu F.Paste F.Mask) 25 | (clearance 0.01)) 26 | (pad 3 smd rect (at 0 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 27 | (pad "" np_thru_hole circle (at -2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Cu *.Mask) 28 | (clearance 0.01)) 29 | (pad "" np_thru_hole circle (at 2 -3.58) (size 0.6 0.6) (drill 0.6) (layers *.Mask F.Cu) 30 | (clearance 0.01)) 31 | (pad 5 smd rect (at 1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 32 | (pad 4 smd rect (at 0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 33 | (pad 1 smd rect (at -1.3 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 34 | (pad 2 smd rect (at -0.65 -4.125) (size 0.4 1.35) (layers F.Cu F.Paste F.Mask)) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/MicroUSB_Connector.step 36 | (offset (xyz -3.65 4.2 0)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 -90)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/PinPad_1x03_P2.54mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module PinPad_1x03_P2.54mm (layer F.Cu) (tedit 5CBED9C2) 2 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") 3 | (tags "Through hole pin header THT 1x03 2.54mm single row") 4 | (fp_text reference REF** (at 0 -2.33) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value PinPad_1x03_P2.54mm (at 0 7.41) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) (layer F.Fab) (width 0.1)) 11 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) (layer F.Fab) (width 0.1)) 12 | (fp_line (start 1.27 6.35) (end -1.27 6.35) (layer F.Fab) (width 0.1)) 13 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) (layer F.Fab) (width 0.1)) 14 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) (layer F.Fab) (width 0.1)) 15 | (fp_line (start -1.33 6.41) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) 16 | (fp_line (start -1.33 -0.66) (end -1.33 6.41) (layer F.SilkS) (width 0.12)) 17 | (fp_line (start 1.33 -1.5) (end 1.33 6.41) (layer F.SilkS) (width 0.12)) 18 | (fp_line (start -0.5 -1.5) (end 1.33 -1.5) (layer F.SilkS) (width 0.12)) 19 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -1.8 6.85) (end 1.8 6.85) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) (layer F.CrtYd) (width 0.05)) 22 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05)) 23 | (fp_text user %R (at 0 2.54 90) (layer F.Fab) 24 | (effects (font (size 1 1) (thickness 0.15))) 25 | ) 26 | (fp_line (start -0.5 -1.5) (end -1.33 -0.66) (layer F.SilkS) (width 0.12)) 27 | (pad 1 thru_hole circle (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 28 | (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 29 | (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)) 30 | ) 31 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.kicad_mod: -------------------------------------------------------------------------------- 1 | (module RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (layer F.Cu) (tedit 5CBF76A3) 2 | (descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html") 3 | (tags "rotary encoder") 4 | (fp_text reference REF** (at -4.7 -7.2) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles (at 0 7.9) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 3.6 3.8) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -0.5 0) (end 0.5 0) (layer F.SilkS) (width 0.12)) 14 | (fp_line (start 0 -0.5) (end 0 0.5) (layer F.SilkS) (width 0.12)) 15 | (fp_line (start -3 0) (end 3 0) (layer F.Fab) (width 0.12)) 16 | (fp_line (start 0 -3) (end 0 3) (layer F.Fab) (width 0.12)) 17 | (fp_line (start -6 -4.7) (end -5 -5.8) (layer F.Fab) (width 0.12)) 18 | (fp_line (start -6 5.8) (end -6 -4.7) (layer F.Fab) (width 0.12)) 19 | (fp_line (start 6 5.8) (end -6 5.8) (layer F.Fab) (width 0.12)) 20 | (fp_line (start 6 -5.8) (end 6 5.8) (layer F.Fab) (width 0.12)) 21 | (fp_line (start -5 -5.8) (end 6 -5.8) (layer F.Fab) (width 0.12)) 22 | (fp_line (start -9 -7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05)) 23 | (fp_line (start -9 -7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05)) 24 | (fp_line (start 8.5 7.7) (end 8.5 -7.7) (layer F.CrtYd) (width 0.05)) 25 | (fp_line (start 8.5 7.7) (end -9 7.7) (layer F.CrtYd) (width 0.05)) 26 | (fp_circle (center 0 0) (end 3 0) (layer F.SilkS) (width 0.12)) 27 | (fp_circle (center 0 0) (end 3 0) (layer F.Fab) (width 0.12)) 28 | (pad S1 thru_hole circle (at 7 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 29 | (pad S2 thru_hole circle (at 7 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 30 | (pad MP thru_hole circle (at 0 5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask)) 31 | (pad MP thru_hole circle (at 0 -5.6) (size 3.2 3.2) (drill 2.6) (layers *.Cu *.Mask)) 32 | (pad B thru_hole circle (at -7.5 2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 33 | (pad C thru_hole circle (at -7.5 0) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 34 | (pad A thru_hole rect (at -7.5 -2.5) (size 2 2) (drill 1) (layers *.Cu *.Mask)) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/pec11r-4220k_l13-8_w12-4_h26-5.stp 36 | (offset (xyz 0 0 1.5)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 90)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/SW_Cherry_MX1A_1.00u_PCB.kicad_mod: -------------------------------------------------------------------------------- 1 | (module SW_Cherry_MX1A_1.00u_PCB (layer F.Cu) (tedit 5CBF76F3) 2 | (descr "Cherry MX keyswitch, MX1A, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf") 3 | (tags "cherry mx keyswitch MX1A 1.00u PCB") 4 | (fp_text reference REF** (at 0.06 -7.894) (layer F.SilkS) 5 | (effects (font (size 1 1) (thickness 0.15))) 6 | ) 7 | (fp_text value SW_Cherry_MX1A_1.00u_PCB (at 0.06 7.854) (layer F.Fab) 8 | (effects (font (size 1 1) (thickness 0.15))) 9 | ) 10 | (fp_text user %R (at 0.06 -7.894) (layer F.Fab) 11 | (effects (font (size 1 1) (thickness 0.15))) 12 | ) 13 | (fp_line (start -6.29 -6.37) (end 6.41 -6.37) (layer F.Fab) (width 0.15)) 14 | (fp_line (start 6.41 -6.37) (end 6.41 6.33) (layer F.Fab) (width 0.15)) 15 | (fp_line (start 6.41 6.33) (end -6.29 6.33) (layer F.Fab) (width 0.15)) 16 | (fp_line (start -6.29 6.33) (end -6.29 -6.37) (layer F.Fab) (width 0.15)) 17 | (fp_line (start -6.54 6.58) (end -6.54 -6.62) (layer F.CrtYd) (width 0.05)) 18 | (fp_line (start 6.66 6.58) (end -6.54 6.58) (layer F.CrtYd) (width 0.05)) 19 | (fp_line (start 6.66 -6.62) (end 6.66 6.58) (layer F.CrtYd) (width 0.05)) 20 | (fp_line (start -6.54 -6.62) (end 6.66 -6.62) (layer F.CrtYd) (width 0.05)) 21 | (fp_line (start -9.465 -9.545) (end 9.585 -9.545) (layer Dwgs.User) (width 0.15)) 22 | (fp_line (start 9.585 -9.545) (end 9.585 9.505) (layer Dwgs.User) (width 0.15)) 23 | (fp_line (start 9.585 9.505) (end -9.465 9.505) (layer Dwgs.User) (width 0.15)) 24 | (fp_line (start -9.465 9.505) (end -9.465 -9.545) (layer Dwgs.User) (width 0.15)) 25 | (pad 1 thru_hole circle (at 2.6 -5.1) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask)) 26 | (pad 2 thru_hole circle (at -3.75 -2.56) (size 2.2 2.2) (drill 1.5) (layers *.Cu *.Mask)) 27 | (pad "" np_thru_hole circle (at 0.06 -0.02) (size 4 4) (drill 4) (layers *.Cu *.Mask)) 28 | (pad "" np_thru_hole circle (at -5.02 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask)) 29 | (pad "" np_thru_hole circle (at 5.14 -0.02) (size 1.7 1.7) (drill 1.7) (layers *.Cu *.Mask)) 30 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/cherrymx.step 31 | (offset (xyz 0.05 0 5.6)) 32 | (scale (xyz 1 1 1)) 33 | (rotate (xyz -90 0 -180)) 34 | ) 35 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/mxKeycap.STEP 36 | (offset (xyz -9 9 10)) 37 | (scale (xyz 1 1 1)) 38 | (rotate (xyz -90 0 0)) 39 | ) 40 | ) 41 | -------------------------------------------------------------------------------- /Hardware/0.3/Libraries/keyboard.pretty/Small_Tact_Switch.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Small_Tact_Switch (layer F.Cu) (tedit 5CBED444) 2 | (fp_text reference REF** (at 0.01 -2.53) (layer F.SilkS) 3 | (effects (font (size 1 1) (thickness 0.15))) 4 | ) 5 | (fp_text value Small_Tact_Switch (at 0.08 2.78) (layer F.Fab) 6 | (effects (font (size 1 1) (thickness 0.15))) 7 | ) 8 | (fp_line (start 2 -1.5) (end -2 -1.5) (layer F.SilkS) (width 0.15)) 9 | (fp_line (start -2 1.5) (end 2 1.5) (layer F.SilkS) (width 0.15)) 10 | (fp_line (start -3.5 -2) (end 3 -2) (layer F.CrtYd) (width 0.12)) 11 | (fp_line (start 3 -2) (end 3 2) (layer F.CrtYd) (width 0.12)) 12 | (fp_line (start 3 2) (end -3.5 2) (layer F.CrtYd) (width 0.12)) 13 | (fp_line (start -3.5 2) (end -3.5 -2) (layer F.CrtYd) (width 0.12)) 14 | (pad 2 smd rect (at 2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask)) 15 | (pad 1 smd rect (at -2.4 0) (size 0.8 1.5) (layers F.Cu F.Paste F.Mask)) 16 | (model ${KIPRJMOD}/Libraries/keyboard.3dshapes/b3u-1000p.stp 17 | (at (xyz 0 0 0)) 18 | (scale (xyz 1.3 1 1)) 19 | (rotate (xyz -90 0 0)) 20 | ) 21 | ) 22 | -------------------------------------------------------------------------------- /Hardware/0.3/bom/Hub16_BOM.csv: -------------------------------------------------------------------------------- 1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,DNP,Notes 2 | 2,"C1, C13",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC ,1276-1871-1-ND ,C85713,, 3 | 11,"C10, C11, C12, C14, C15, C16, C21, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,, 4 | 4,"C17, C18, C2, C3",22p,Capacitor_SMD:C_0603_1608Metric,CL10C220JB8NFNC ,1276-2228-1-ND ,C1653,, 5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,, 6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,150060VS75000,732-4980-1-ND ,C364559,, 7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,keyboard:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,WS2812B-B,,LCSC - Black Model 8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",D,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND, C83528,, 9 | 1,F1,500mA,keyboard:Fuse_0805_2012Metric,0ZCK0050FF2E,507-1813-1-ND, C181350,,LCSC: Substitute PN 10 | 4,"FB1, FB2, FB3, FB4",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18AG601SN1D,490-1014-1-ND,C19330,, 11 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,DNP, 12 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_Receptacle_GT-USB-7010,U262-161N-4BVC11,,C319148,,"Cannot source from Digikey, available on AliExpress: https://www.aliexpress.com/item/33045191307.html" 13 | 1,J2,AVR-ISP-6,keyboard:AVR_Programmer_SMD,,,,DNP, 14 | 10,"JP1, JP10, JP2, JP3, JP4, JP5, JP6, JP7, JP8, JP9",Jumper,Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm,,,,DNP, 15 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,DNP, 16 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",KEYSW,keyboard:SW_Cherry_MX1A_1.00u_PCB,,,,, 17 | 1,R1,2K2,Resistor_SMD:R_0603_1608Metric,CR0603-JW-222ELF ,CR0603-JW-222ELFCT-ND ,C113303,, 18 | 3,"R10, R13, R9",100K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-104ELF ,CR0603-JW-104ELFCT-ND ,C203223,DNP, 19 | 5,"R11, R12, R2, R5, R8",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,, 20 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,,,"Cannot source from LCSC, no substitutes available " 21 | 2,"R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,, 22 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,, 23 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0402,RAVF104DJT10K0,RAVF104DJT10K0CT-ND,C136853,, 24 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0402,RAVF104DJT10K0,RAVF104DJT10K0CT-ND,C136853,, 25 | 1,SW1,SW_Push,josh-buttons-switches:BT_Small_2_Pin,KSR223GLFG,401-1704-1-ND,C354946,,LCSC: Substitute PN 26 | 2,"SW2, SW3",Rotary_Encoder_Switch,keyboard:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,EC11E1834403,987-1398-ND,C361165,,Similar to: https://www.aliexpress.com/item/32839106848.html 27 | 1,U1,TPD2S017,Package_TO_SOT_SMD:SOT-23-6,TPD2S017DBVR,296-25216-1-ND ,,,"Cannot source from LCSC, no substitutes available " 28 | 1,U2,ATMEGA32U4,Package_QFP:TQFP-44_10x10mm_P0.8mm,ATMEGA32U4-AU,ATMEGA32U4-AURCT-ND,C44854,, 29 | 1,U3,CY7C65632-28LTXCT,Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,, 30 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-B2-T,535-9134-1-ND ,C179641,, 31 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-B2-T,535-9826-1-ND,C276421,, 32 | -------------------------------------------------------------------------------- /Hardware/0.3/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name keyboard)(type KiCad)(uri ${KIPRJMOD}/Libraries/keyboard.pretty)(options "")(descr "")) 3 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 4 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 5 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 6 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 7 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 8 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 9 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 10 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 11 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 12 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 13 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.3/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name keyboard)(type Legacy)(uri ${KIPRJMOD}/Libraries/keyboard.lib)(options "")(descr "")) 3 | (lib (name Hub16-rescue)(type Legacy)(uri ${KIPRJMOD}/Hub16-rescue.lib)(options "")(descr "")) 4 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 5 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 6 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 7 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 8 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 9 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 10 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 11 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 12 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 13 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.4/Hub16.pro: -------------------------------------------------------------------------------- 1 | update=Sun 16 Feb 2020 19:39:10 AEDT 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [schematic_editor] 16 | version=1 17 | PageLayoutDescrFile= 18 | PlotDirectoryName=./ 19 | SubpartIdSeparator=0 20 | SubpartFirstId=65 21 | NetFmtName=Pcbnew 22 | SpiceAjustPassiveValues=0 23 | LabSize=50 24 | ERC_TestSimilarLabels=1 25 | [pcbnew] 26 | version=1 27 | PageLayoutDescrFile= 28 | LastNetListRead=Hub16.net 29 | CopperLayerCount=2 30 | BoardThickness=1.6 31 | AllowMicroVias=0 32 | AllowBlindVias=0 33 | RequireCourtyardDefinitions=0 34 | ProhibitOverlappingCourtyards=1 35 | MinTrackWidth=0.2 36 | MinViaDiameter=0.6 37 | MinViaDrill=0.3 38 | MinMicroViaDiameter=0.2 39 | MinMicroViaDrill=0.09999999999999999 40 | MinHoleToHole=0.25 41 | TrackWidth1=0.25 42 | TrackWidth2=0.2 43 | TrackWidth3=0.5 44 | TrackWidth4=1 45 | ViaDiameter1=0.6 46 | ViaDrill1=0.3 47 | ViaDiameter2=0.6 48 | ViaDrill2=0.3 49 | dPairWidth1=0.2 50 | dPairGap1=0.25 51 | dPairViaGap1=0.25 52 | SilkLineWidth=0.12 53 | SilkTextSizeV=1 54 | SilkTextSizeH=1 55 | SilkTextSizeThickness=0.15 56 | SilkTextItalic=0 57 | SilkTextUpright=1 58 | CopperLineWidth=0.2 59 | CopperTextSizeV=1.5 60 | CopperTextSizeH=1.5 61 | CopperTextThickness=0.3 62 | CopperTextItalic=0 63 | CopperTextUpright=1 64 | EdgeCutLineWidth=0.05 65 | CourtyardLineWidth=0.05 66 | OthersLineWidth=0.15 67 | OthersTextSizeV=1 68 | OthersTextSizeH=1 69 | OthersTextSizeThickness=0.15 70 | OthersTextItalic=0 71 | OthersTextUpright=1 72 | SolderMaskClearance=0 73 | SolderMaskMinWidth=0 74 | SolderPasteClearance=0 75 | SolderPasteRatio=-0 76 | [pcbnew/Layer.F.Cu] 77 | Name=F.Cu 78 | Type=0 79 | Enabled=1 80 | [pcbnew/Layer.In1.Cu] 81 | Name=In1.Cu 82 | Type=0 83 | Enabled=0 84 | [pcbnew/Layer.In2.Cu] 85 | Name=In2.Cu 86 | Type=0 87 | Enabled=0 88 | [pcbnew/Layer.In3.Cu] 89 | Name=In3.Cu 90 | Type=0 91 | Enabled=0 92 | [pcbnew/Layer.In4.Cu] 93 | Name=In4.Cu 94 | Type=0 95 | Enabled=0 96 | [pcbnew/Layer.In5.Cu] 97 | Name=In5.Cu 98 | Type=0 99 | Enabled=0 100 | [pcbnew/Layer.In6.Cu] 101 | Name=In6.Cu 102 | Type=0 103 | Enabled=0 104 | [pcbnew/Layer.In7.Cu] 105 | Name=In7.Cu 106 | Type=0 107 | Enabled=0 108 | [pcbnew/Layer.In8.Cu] 109 | Name=In8.Cu 110 | Type=0 111 | Enabled=0 112 | [pcbnew/Layer.In9.Cu] 113 | Name=In9.Cu 114 | Type=0 115 | Enabled=0 116 | [pcbnew/Layer.In10.Cu] 117 | Name=In10.Cu 118 | Type=0 119 | Enabled=0 120 | [pcbnew/Layer.In11.Cu] 121 | Name=In11.Cu 122 | Type=0 123 | Enabled=0 124 | [pcbnew/Layer.In12.Cu] 125 | Name=In12.Cu 126 | Type=0 127 | Enabled=0 128 | [pcbnew/Layer.In13.Cu] 129 | Name=In13.Cu 130 | Type=0 131 | Enabled=0 132 | [pcbnew/Layer.In14.Cu] 133 | Name=In14.Cu 134 | Type=0 135 | Enabled=0 136 | [pcbnew/Layer.In15.Cu] 137 | Name=In15.Cu 138 | Type=0 139 | Enabled=0 140 | [pcbnew/Layer.In16.Cu] 141 | Name=In16.Cu 142 | Type=0 143 | Enabled=0 144 | [pcbnew/Layer.In17.Cu] 145 | Name=In17.Cu 146 | Type=0 147 | Enabled=0 148 | [pcbnew/Layer.In18.Cu] 149 | Name=In18.Cu 150 | Type=0 151 | Enabled=0 152 | [pcbnew/Layer.In19.Cu] 153 | Name=In19.Cu 154 | Type=0 155 | Enabled=0 156 | [pcbnew/Layer.In20.Cu] 157 | Name=In20.Cu 158 | Type=0 159 | Enabled=0 160 | [pcbnew/Layer.In21.Cu] 161 | Name=In21.Cu 162 | Type=0 163 | Enabled=0 164 | [pcbnew/Layer.In22.Cu] 165 | Name=In22.Cu 166 | Type=0 167 | Enabled=0 168 | [pcbnew/Layer.In23.Cu] 169 | Name=In23.Cu 170 | Type=0 171 | Enabled=0 172 | [pcbnew/Layer.In24.Cu] 173 | Name=In24.Cu 174 | Type=0 175 | Enabled=0 176 | [pcbnew/Layer.In25.Cu] 177 | Name=In25.Cu 178 | Type=0 179 | Enabled=0 180 | [pcbnew/Layer.In26.Cu] 181 | Name=In26.Cu 182 | Type=0 183 | Enabled=0 184 | [pcbnew/Layer.In27.Cu] 185 | Name=In27.Cu 186 | Type=0 187 | Enabled=0 188 | [pcbnew/Layer.In28.Cu] 189 | Name=In28.Cu 190 | Type=0 191 | Enabled=0 192 | [pcbnew/Layer.In29.Cu] 193 | Name=In29.Cu 194 | Type=0 195 | Enabled=0 196 | [pcbnew/Layer.In30.Cu] 197 | Name=In30.Cu 198 | Type=0 199 | Enabled=0 200 | [pcbnew/Layer.B.Cu] 201 | Name=B.Cu 202 | Type=0 203 | Enabled=1 204 | [pcbnew/Layer.B.Adhes] 205 | Enabled=1 206 | [pcbnew/Layer.F.Adhes] 207 | Enabled=1 208 | [pcbnew/Layer.B.Paste] 209 | Enabled=1 210 | [pcbnew/Layer.F.Paste] 211 | Enabled=1 212 | [pcbnew/Layer.B.SilkS] 213 | Enabled=1 214 | [pcbnew/Layer.F.SilkS] 215 | Enabled=1 216 | [pcbnew/Layer.B.Mask] 217 | Enabled=1 218 | [pcbnew/Layer.F.Mask] 219 | Enabled=1 220 | [pcbnew/Layer.Dwgs.User] 221 | Enabled=1 222 | [pcbnew/Layer.Cmts.User] 223 | Enabled=1 224 | [pcbnew/Layer.Eco1.User] 225 | Enabled=1 226 | [pcbnew/Layer.Eco2.User] 227 | Enabled=1 228 | [pcbnew/Layer.Edge.Cuts] 229 | Enabled=1 230 | [pcbnew/Layer.Margin] 231 | Enabled=1 232 | [pcbnew/Layer.B.CrtYd] 233 | Enabled=1 234 | [pcbnew/Layer.F.CrtYd] 235 | Enabled=1 236 | [pcbnew/Layer.B.Fab] 237 | Enabled=1 238 | [pcbnew/Layer.F.Fab] 239 | Enabled=1 240 | [pcbnew/Layer.Rescue] 241 | Enabled=0 242 | [pcbnew/Netclasses] 243 | [pcbnew/Netclasses/Default] 244 | Name=Default 245 | Clearance=0.15 246 | TrackWidth=0.25 247 | ViaDiameter=0.6 248 | ViaDrill=0.3 249 | uViaDiameter=0.3 250 | uViaDrill=0.1 251 | dPairWidth=0.2 252 | dPairGap=0.25 253 | dPairViaGap=0.25 254 | -------------------------------------------------------------------------------- /Hardware/0.4/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.4/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/0.5/Hub16.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.5/Hub16.pdf -------------------------------------------------------------------------------- /Hardware/0.5/Hub16.pro: -------------------------------------------------------------------------------- 1 | update=Mon 30 Mar 2020 21:05:31 AEDT 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [eeschema/libraries] 15 | [pcbnew] 16 | version=1 17 | PageLayoutDescrFile= 18 | LastNetListRead=Hub16.net 19 | CopperLayerCount=2 20 | BoardThickness=1.6 21 | AllowMicroVias=0 22 | AllowBlindVias=0 23 | RequireCourtyardDefinitions=0 24 | ProhibitOverlappingCourtyards=1 25 | MinTrackWidth=0.2 26 | MinViaDiameter=0.6 27 | MinViaDrill=0.3 28 | MinMicroViaDiameter=0.2 29 | MinMicroViaDrill=0.09999999999999999 30 | MinHoleToHole=0.25 31 | TrackWidth1=0.25 32 | TrackWidth2=0.2 33 | TrackWidth3=0.5 34 | TrackWidth4=1 35 | ViaDiameter1=0.6 36 | ViaDrill1=0.3 37 | ViaDiameter2=0.6 38 | ViaDrill2=0.3 39 | dPairWidth1=0.2 40 | dPairGap1=0.25 41 | dPairViaGap1=0.25 42 | SilkLineWidth=0.12 43 | SilkTextSizeV=1 44 | SilkTextSizeH=1 45 | SilkTextSizeThickness=0.15 46 | SilkTextItalic=0 47 | SilkTextUpright=1 48 | CopperLineWidth=0.2 49 | CopperTextSizeV=1.5 50 | CopperTextSizeH=1.5 51 | CopperTextThickness=0.3 52 | CopperTextItalic=0 53 | CopperTextUpright=1 54 | EdgeCutLineWidth=0.05 55 | CourtyardLineWidth=0.05 56 | OthersLineWidth=0.15 57 | OthersTextSizeV=1 58 | OthersTextSizeH=1 59 | OthersTextSizeThickness=0.15 60 | OthersTextItalic=0 61 | OthersTextUpright=1 62 | SolderMaskClearance=0 63 | SolderMaskMinWidth=0 64 | SolderPasteClearance=0 65 | SolderPasteRatio=-0 66 | [pcbnew/Layer.F.Cu] 67 | Name=F.Cu 68 | Type=0 69 | Enabled=1 70 | [pcbnew/Layer.In1.Cu] 71 | Name=In1.Cu 72 | Type=0 73 | Enabled=0 74 | [pcbnew/Layer.In2.Cu] 75 | Name=In2.Cu 76 | Type=0 77 | Enabled=0 78 | [pcbnew/Layer.In3.Cu] 79 | Name=In3.Cu 80 | Type=0 81 | Enabled=0 82 | [pcbnew/Layer.In4.Cu] 83 | Name=In4.Cu 84 | Type=0 85 | Enabled=0 86 | [pcbnew/Layer.In5.Cu] 87 | Name=In5.Cu 88 | Type=0 89 | Enabled=0 90 | [pcbnew/Layer.In6.Cu] 91 | Name=In6.Cu 92 | Type=0 93 | Enabled=0 94 | [pcbnew/Layer.In7.Cu] 95 | Name=In7.Cu 96 | Type=0 97 | Enabled=0 98 | [pcbnew/Layer.In8.Cu] 99 | Name=In8.Cu 100 | Type=0 101 | Enabled=0 102 | [pcbnew/Layer.In9.Cu] 103 | Name=In9.Cu 104 | Type=0 105 | Enabled=0 106 | [pcbnew/Layer.In10.Cu] 107 | Name=In10.Cu 108 | Type=0 109 | Enabled=0 110 | [pcbnew/Layer.In11.Cu] 111 | Name=In11.Cu 112 | Type=0 113 | Enabled=0 114 | [pcbnew/Layer.In12.Cu] 115 | Name=In12.Cu 116 | Type=0 117 | Enabled=0 118 | [pcbnew/Layer.In13.Cu] 119 | Name=In13.Cu 120 | Type=0 121 | Enabled=0 122 | [pcbnew/Layer.In14.Cu] 123 | Name=In14.Cu 124 | Type=0 125 | Enabled=0 126 | [pcbnew/Layer.In15.Cu] 127 | Name=In15.Cu 128 | Type=0 129 | Enabled=0 130 | [pcbnew/Layer.In16.Cu] 131 | Name=In16.Cu 132 | Type=0 133 | Enabled=0 134 | [pcbnew/Layer.In17.Cu] 135 | Name=In17.Cu 136 | Type=0 137 | Enabled=0 138 | [pcbnew/Layer.In18.Cu] 139 | Name=In18.Cu 140 | Type=0 141 | Enabled=0 142 | [pcbnew/Layer.In19.Cu] 143 | Name=In19.Cu 144 | Type=0 145 | Enabled=0 146 | [pcbnew/Layer.In20.Cu] 147 | Name=In20.Cu 148 | Type=0 149 | Enabled=0 150 | [pcbnew/Layer.In21.Cu] 151 | Name=In21.Cu 152 | Type=0 153 | Enabled=0 154 | [pcbnew/Layer.In22.Cu] 155 | Name=In22.Cu 156 | Type=0 157 | Enabled=0 158 | [pcbnew/Layer.In23.Cu] 159 | Name=In23.Cu 160 | Type=0 161 | Enabled=0 162 | [pcbnew/Layer.In24.Cu] 163 | Name=In24.Cu 164 | Type=0 165 | Enabled=0 166 | [pcbnew/Layer.In25.Cu] 167 | Name=In25.Cu 168 | Type=0 169 | Enabled=0 170 | [pcbnew/Layer.In26.Cu] 171 | Name=In26.Cu 172 | Type=0 173 | Enabled=0 174 | [pcbnew/Layer.In27.Cu] 175 | Name=In27.Cu 176 | Type=0 177 | Enabled=0 178 | [pcbnew/Layer.In28.Cu] 179 | Name=In28.Cu 180 | Type=0 181 | Enabled=0 182 | [pcbnew/Layer.In29.Cu] 183 | Name=In29.Cu 184 | Type=0 185 | Enabled=0 186 | [pcbnew/Layer.In30.Cu] 187 | Name=In30.Cu 188 | Type=0 189 | Enabled=0 190 | [pcbnew/Layer.B.Cu] 191 | Name=B.Cu 192 | Type=0 193 | Enabled=1 194 | [pcbnew/Layer.B.Adhes] 195 | Enabled=1 196 | [pcbnew/Layer.F.Adhes] 197 | Enabled=1 198 | [pcbnew/Layer.B.Paste] 199 | Enabled=1 200 | [pcbnew/Layer.F.Paste] 201 | Enabled=1 202 | [pcbnew/Layer.B.SilkS] 203 | Enabled=1 204 | [pcbnew/Layer.F.SilkS] 205 | Enabled=1 206 | [pcbnew/Layer.B.Mask] 207 | Enabled=1 208 | [pcbnew/Layer.F.Mask] 209 | Enabled=1 210 | [pcbnew/Layer.Dwgs.User] 211 | Enabled=1 212 | [pcbnew/Layer.Cmts.User] 213 | Enabled=1 214 | [pcbnew/Layer.Eco1.User] 215 | Enabled=1 216 | [pcbnew/Layer.Eco2.User] 217 | Enabled=1 218 | [pcbnew/Layer.Edge.Cuts] 219 | Enabled=1 220 | [pcbnew/Layer.Margin] 221 | Enabled=1 222 | [pcbnew/Layer.B.CrtYd] 223 | Enabled=1 224 | [pcbnew/Layer.F.CrtYd] 225 | Enabled=1 226 | [pcbnew/Layer.B.Fab] 227 | Enabled=1 228 | [pcbnew/Layer.F.Fab] 229 | Enabled=1 230 | [pcbnew/Layer.Rescue] 231 | Enabled=0 232 | [pcbnew/Netclasses] 233 | [pcbnew/Netclasses/Default] 234 | Name=Default 235 | Clearance=0.15 236 | TrackWidth=0.25 237 | ViaDiameter=0.6 238 | ViaDrill=0.3 239 | uViaDiameter=0.3 240 | uViaDrill=0.1 241 | dPairWidth=0.2 242 | dPairGap=0.25 243 | dPairViaGap=0.25 244 | [schematic_editor] 245 | version=1 246 | PageLayoutDescrFile= 247 | PlotDirectoryName=./ 248 | SubpartIdSeparator=0 249 | SubpartFirstId=65 250 | NetFmtName=Pcbnew 251 | SpiceAjustPassiveValues=0 252 | LabSize=50 253 | ERC_TestSimilarLabels=1 254 | -------------------------------------------------------------------------------- /Hardware/0.5/assembly/BOM.csv: -------------------------------------------------------------------------------- 1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,Manufacturer,DNP,Notes 2 | 2,"C1, C13",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC ,1276-1871-1-ND ,C85713,Samsung Electro-Mechanics,, 3 | 11,"C10, C11, C12, C14, C15, C16, C21, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,Samsung Electro-Mechanics,, 4 | 4,"C17, C18, C2, C3",22p,Capacitor_SMD:C_0603_1608Metric,CL10C220JB8NFNC ,1276-2228-1-ND ,C1653,Samsung Electro-Mechanics,, 5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,Samsung Electro-Mechanics,, 6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,150060VS75000,732-4980-1-ND ,C364559,Wurth Electronik,,LCSC: Substutite PN 7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,C114586,Worldsemi,, 8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",D,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND,C83528,Diodes Inc,, 9 | 1,F1,500mA,josh-passives-smt:Fuse_0805_2012Metric,0ZCK0050FF2E,507-1813-1-ND,C181350,Bel Fuse,,LCSC: Substitute PN 10 | 4,"FB1, FB2, FB3, FB4",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18AG601SN1D,490-1014-1-ND,C19330,Murata,, 11 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,,DNP, 12 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_U262-161N-4BVC11,U262-161N-4BVC11,,C319148,XKB Enterprise,,Cannot source from DigiKey 13 | 1,J2,AVR-ISP-6,josh-connectors:AVR_PROG_2.54_SMT,,,,,DNP, 14 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,,DNP, 15 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",KEYSW,josh-keyboard:MX_KEYSWITCH,,,,,DNP, 16 | 1,LOGO1,Josh-Logo,josh-logos:josh-johnson-logo-11x2,,,,,DNP, 17 | 1,LOGO2,Josh-Details,josh-logos:josh-details,,,,,DNP, 18 | 1,LOGO3,Board-Details,josh-logos:board-title,,,,,DNP, 19 | 1,LOGO4,Logo_Open_Hardware_Small,josh-logos:OSHW_Logo_3.6x3.6_F.Mask,,,,,DNP, 20 | 1,R1,2K2,Resistor_SMD:R_0603_1608Metric,CR0603-JW-222ELF ,CR0603-JW-222ELFCT-ND ,C113303,Bourns,,LCSC: Substitute PN 21 | 5,"R11, R12, R2, R5, R8",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,Bourns,,LCSC: Substitute PN 22 | 2,"R13, R9",100K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-104ELF ,CR0603-JW-104ELFCT-ND ,C203223,Bourns,,LCSC: Substitute PN 23 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,C403314,Rohm Semiconductor,,LCSC: Substitute PN 24 | 2,"R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,Bourns,,LCSC: Substitute PN 25 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,Bourns,,LCSC: Substitute PN 26 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C29718,Bourns,,LCSC: Substitute PN 27 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C29718,Bourns,,LCSC: Substitute PN 28 | 1,SW1,KMR2,josh-buttons-switches:SW_Push_KMR2,KSR223GLFG,401-1704-1-ND,C354946,C&K,,LCSC: Substitute PN 29 | 2,"SW2, SW3",Rotary_Encoder_Switch,josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,EC11E1834403,987-1398-ND,C361165,,DNP,Similar to: https://www.aliexpress.com/item/32839106848.html 30 | 1,U1,USBLC6-2SC6,Package_TO_SOT_SMD:SOT-23-6,USBLC6-2SC6,497-5235-1-ND ,C7519,STmicroelectronics,, 31 | 1,U2,ATMEGA32U4,Package_QFP:TQFP-44_10x10mm_P0.8mm,ATMEGA32U4-AU,ATMEGA32U4-AURCT-ND,C44854,Microchip/Atmel,, 32 | 1,U3,CY7C65632-28LTXCT,josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,Cypress Semiconductor,, 33 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-B2-T,535-9134-1-ND ,C179641,Abracon LLC,, 34 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-B2-T,535-9826-1-ND,C276421,Abracon LLC,, 35 | -------------------------------------------------------------------------------- /Hardware/0.5/assembly/gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.5/assembly/gerbers.zip -------------------------------------------------------------------------------- /Hardware/0.5/assembly/stencil.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Hardware/0.5/assembly/stencil.zip -------------------------------------------------------------------------------- /Hardware/0.5/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.5/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/0.6/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.6/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/0.7-hs/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.7-hs/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/0.7/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/0.7/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/1.0-hs/Hub16.csv: -------------------------------------------------------------------------------- 1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,Manufacturer,DNP,Notes,Substitue Allowed? 2 | 2,"C1, C12",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC,1276-1871-1-ND,C85713,Samsung Electro-Mechanics,,,Y - X5R or better 3 | 27,"C10, C11, C13, C14, C15, C16, C21, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,Samsung Electro-Mechanics,,,Y - X5R or better 4 | 4,"C17, C18, C2, C3",15p,Capacitor_SMD:C_0603_1608Metric,CL10C150JB8NNNC,1276-1296-2-ND,C1644,Samsung Electro-Mechanics,,,Y - NP0 / C0G 5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,Samsung Electro-Mechanics,,,Y - X5R or better 6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,OSK40603C1E,,C268294,OptoSupply,,,Y - Any Pink / Purple 7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,C114586,Worldsemi,,Black only,N 8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",1N4148,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND,C83528,Diodes Inc,,,Y - Any 1N4148 9 | 1,F1,1A,josh-passives-smt:Fuse_0805_2012Metric,0805L100WR,F2774CT-ND,C80270,Littelfuse,,,Y - 1A hold / >1.5A trip 10 | 3,"F2, F3, F4",500mA,josh-passives-smt:Fuse_0805_2012Metric,0805L050WR,F2772CT-ND,C207022,Littelfuse,,,Y - 500mA hold / 1A trip 11 | 5,"FB1, FB2, FB3, FB4, FB5",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18KG601SN1D, 490-5258-1-ND ,C85833,Murata,,,"Y - 600R, > 1A current" 12 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,,DNP,, 13 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_U262-161N-4BVC11,U262-161N-4BVC11,,C319148,XKB Enterprise,,Cannot source from DigiKey,Y - Footprint / pinout compatiable 14 | 1,J2,AVR-ISP-6,josh-connectors:AVR_PROG_2.54_THT,,,,,DNP,, 15 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,,DNP,, 16 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",Kailh Hotswap Socket,josh-keyboard:Kailh_Hotswap_1U,CPG151101S11,,,Kailh Switch,,Not available from Digikey / LCSC,N 17 | 1,LOGO1,Josh-Logo,josh-logos:josh-johnson-logo-17x3,,,,,DNP,, 18 | 1,LOGO2,Josh-Details,josh-logos:josh-details,,,,,DNP,, 19 | 1,LOGO3,Board-Details,josh-logos:board-title,,,,,DNP,, 20 | 1,LOGO4,Logo_Open_Hardware_Small,josh-logos:OSHW-Logo2_9.8x8mm_Mask,,,,,DNP,, 21 | 3,"R1, R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,Bourns,,LCSC: Substitute PN,Y - Same spec 22 | 7,"R10, R11, R12, R2, R5, R8, R9",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,Bourns,,LCSC: Substitute PN,Y - Same spec 23 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,C403314,Rohm Semiconductor,,LCSC: Substitute PN,Y - Same spec 24 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,Bourns,,LCSC: Substitute PN,Y - Same spec 25 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec 26 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec 27 | 1,SW1,EVQPUL,josh-buttons-switches:Panasonic_EVQPUL_EVQPUC,EVQ-PUL02K,P10853SCT-ND,C397351,Panasonic,,LCSC: Substitute PN,Y - Same footprint 28 | 2,"SW2, SW3",EC11 Encoder,josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,PEC11L-4120F-S0020,PEC11L-4120F-S0020-ND,,Bourns,DNP,,Y - 20 PPR 29 | 4,"U1, U4, U5, U6",USBLC6-2SC6,Package_TO_SOT_SMD:SOT-23-6,USBLC6-2SC6,497-5235-1-ND ,C7519,STMicroelectronics,,,N 30 | 1,U2,ATMEGA32U4,josh-dfn-qfn:QFN-44-1EP_7x7mm_P0.5mm_EP5.2x5.2mm_ThermalVias,ATMEGA32U4-MU,ATMEGA32U4-MU-ND,C45874,Microchip/Atmel,,,N 31 | 1,U3,CY7C65632-28LTXCT,josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,Cypress Semiconductor,,,N 32 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-10-1-U-T,535-9675-6-ND,C164044,Abracon LLC,,LCSC: Substitute PN,"Y - 16 MHz, 10/12pF" 33 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-12-B1U-T,535-14962-6-ND,C164041,Abracon LLC,,LCSC: Substitute PN,"Y - 12 MHz, 10/12pF" 34 | -------------------------------------------------------------------------------- /Hardware/1.0-hs/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/1.0-hs/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/1.0.1-hs/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/1.0.1-hs/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Hardware/1.0/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name josh-buttons-switches)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-buttons-switches.pretty)(options "")(descr "")) 3 | (lib (name josh-connectors)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connectors.pretty)(options "")(descr "")) 4 | (lib (name josh-dfn-qfn)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-dfn-qfn.pretty)(options "")(descr "")) 5 | (lib (name josh-led)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.pretty)(options "")(descr "")) 6 | (lib (name josh-logos)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logos.pretty)(options "")(descr "")) 7 | (lib (name josh-mechanical)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechanical.pretty)(options "")(descr "")) 8 | (lib (name josh-oscillators)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillators.pretty)(options "")(descr "")) 9 | (lib (name josh-passives-smt)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passives-smt.pretty)(options "")(descr "")) 10 | (lib (name josh-rf)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.pretty)(options "")(descr "")) 11 | (lib (name josh-soic-sot-etc)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-soic-sot-etc.pretty)(options "")(descr "")) 12 | (lib (name josh-test-point)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-test-point.pretty)(options "")(descr "")) 13 | (lib (name josh-keyboard)(type KiCad)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-keyboard.pretty)(options "")(descr "")) 14 | ) 15 | -------------------------------------------------------------------------------- /Hardware/1.0/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name josh-ic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-ic.lib)(options "")(descr "")) 3 | (lib (name josh-led)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-led.lib)(options "")(descr "")) 4 | (lib (name josh-logic)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-logic.lib)(options "")(descr "")) 5 | (lib (name josh-mechnanical)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-mechnanical.lib)(options "")(descr "")) 6 | (lib (name josh-memory)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-memory.lib)(options "")(descr "")) 7 | (lib (name josh-oscillator)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-oscillator.lib)(options "")(descr "")) 8 | (lib (name josh-passive)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-passive.lib)(options "")(descr "")) 9 | (lib (name josh-power)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-power.lib)(options "")(descr "")) 10 | (lib (name josh-rf)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-rf.lib)(options "")(descr "")) 11 | (lib (name josh-connector)(type Legacy)(uri ${KIPRJMOD}/../../josh-kicad-lib/josh-connector.lib)(options "")(descr "")) 12 | ) 13 | -------------------------------------------------------------------------------- /Mechanicals/plate/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name keyboard)(type KiCad)(uri C:/Users/jonno/Dropbox/Projects/MacroKeyboard/Hardware/Libraries/keyboard.pretty)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /Mechanicals/plate/plate-gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Mechanicals/plate/plate-gerbers.zip -------------------------------------------------------------------------------- /Mechanicals/plate/topCover.pro: -------------------------------------------------------------------------------- 1 | update=22/05/2015 07:44:53 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [pcbnew] 9 | version=1 10 | LastNetListRead= 11 | UseCmpFile=1 12 | PadDrill=0.600000000000 13 | PadDrillOvalY=0.600000000000 14 | PadSizeH=1.500000000000 15 | PadSizeV=1.500000000000 16 | PcbTextSizeV=1.500000000000 17 | PcbTextSizeH=1.500000000000 18 | PcbTextThickness=0.300000000000 19 | ModuleTextSizeV=1.000000000000 20 | ModuleTextSizeH=1.000000000000 21 | ModuleTextSizeThickness=0.150000000000 22 | SolderMaskClearance=0.000000000000 23 | SolderMaskMinWidth=0.000000000000 24 | DrawSegmentWidth=0.200000000000 25 | BoardOutlineThickness=0.100000000000 26 | ModuleOutlineThickness=0.150000000000 27 | [cvpcb] 28 | version=1 29 | NetIExt=net 30 | [eeschema] 31 | version=1 32 | LibDir= 33 | [eeschema/libraries] 34 | -------------------------------------------------------------------------------- /Mechanicals/plate/topCover.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 2 2 | EELAYER 25 0 3 | EELAYER END 4 | $EndSCHEMATC 5 | -------------------------------------------------------------------------------- /Production/1.0-hs/.~lock.bom.csv#: -------------------------------------------------------------------------------- 1 | ,josh,desktop,11.12.2020 22:35,file:///home/josh/snap/libreoffice/196/.config/libreoffice/4; -------------------------------------------------------------------------------- /Production/1.0-hs/Gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/Gerbers.zip -------------------------------------------------------------------------------- /Production/1.0-hs/Hub16-Acrylic.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/Hub16-Acrylic.zip -------------------------------------------------------------------------------- /Production/1.0-hs/bom.csv: -------------------------------------------------------------------------------- 1 | Qty,Reference(s),Value,Footprint,MPN,DigiKey,LCSC,Manufacturer,DNP,Notes,Substitue Allowed? 2 | 2,"C1, C12",10u,Capacitor_SMD:C_0603_1608Metric,CL10A106MP8NNNC,1276-1871-1-ND,C85713,Samsung Electro-Mechanics,,,Y - X5R or better 3 | 27,"C10, C11, C13, C14, C15, C16, C21, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C6, C7, C8, C9",100n,Capacitor_SMD:C_0603_1608Metric,CL10B104KB8NNNC,1276-1000-1-ND,C1591,Samsung Electro-Mechanics,,,Y - X5R or better 4 | 4,"C17, C18, C2, C3",15p,Capacitor_SMD:C_0603_1608Metric,CL10C150JB8NNNC,1276-1296-2-ND,C1644,Samsung Electro-Mechanics,,,Y - NP0 / C0G 5 | 5,"C19, C20, C22, C4, C5",1u,Capacitor_SMD:C_0603_1608Metric,CL10A105MP8NNNC ,1276-1866-1-ND ,C29936,Samsung Electro-Mechanics,,,Y - X5R or better 6 | 1,D1,LED,LED_SMD:LED_0603_1608Metric,OSK40603C1E,,C268294,OptoSupply,,,Y - Any Pink / Purple 7 | 11,"D10, D16, D2, D22, D23, D29, D3, D30, D31, D32, D4",WS2812B,LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm,WS2812B,1528-1104-ND,C114586,Worldsemi,,Black only,N 8 | 16,"D11, D12, D13, D14, D17, D18, D19, D20, D24, D25, D26, D27, D5, D6, D7, D8",1N4148,Diode_SMD:D_SOD-123,1N4148W-7-F,1N4148W-FDICT-ND,C83528,Diodes Inc,,,Y - Any 1N4148 9 | 1,F1,1A,josh-passives-smt:Fuse_0805_2012Metric,0805L100WR,F2774CT-ND,C80270,Littelfuse,,,Y - 1A hold / >1.5A trip 10 | 3,"F2, F3, F4",500mA,josh-passives-smt:Fuse_0805_2012Metric,0805L050WR,F2772CT-ND,C207022,Littelfuse,,,Y - 500mA hold / 1A trip 11 | 5,"FB1, FB2, FB3, FB4, FB5",600R,josh-passives-smt:Ferrite_Bead_0603,BLM18KG601SN1D, 490-5258-1-ND ,C85833,Murata,,,"Y - 600R, > 1A current" 12 | 4,"H1, H2, H3, H4",MH-M3,MountingHole:MountingHole_3.2mm_M3_ISO14580,,,,,DNP,, 13 | 4,"J1, J3, J4, J5",USB_C_Receptacle_USB2.0,josh-connectors:USB_C_U262-161N-4BVC11,U262-161N-4BVC11,,C319148,XKB Enterprise,,Cannot source from DigiKey,Y - Footprint / pinout compatiable 14 | 1,J2,AVR-ISP-6,josh-connectors:AVR_PROG_2.54_THT,,,,,DNP,, 15 | 1,JP11,LED_ON,Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm,,,,,DNP,, 16 | 16,"K1, K11, K12, K13, K14, K16, K17, K18, K19, K2, K3, K4, K6, K7, K8, K9",Kailh Hotswap Socket,josh-keyboard:Kailh_Hotswap_1U,CPG151101S11,,,Kailh Switch,,Not available from Digikey / LCSC,N 17 | 1,LOGO1,Josh-Logo,josh-logos:josh-johnson-logo-17x3,,,,,DNP,, 18 | 1,LOGO2,Josh-Details,josh-logos:josh-details,,,,,DNP,, 19 | 1,LOGO3,Board-Details,josh-logos:board-title,,,,,DNP,, 20 | 1,LOGO4,Logo_Open_Hardware_Small,josh-logos:OSHW-Logo2_9.8x8mm_Mask,,,,,DNP,, 21 | 3,"R1, R3, R4",5K1,Resistor_SMD:R_0603_1608Metric,CR0603-JW-512ELF ,118-CR0603-JW-512ELFCT-ND ,C14677,Bourns,,LCSC: Substitute PN,Y - Same spec 22 | 7,"R10, R11, R12, R2, R5, R8, R9",10K,Resistor_SMD:R_0603_1608Metric,CR0603-JW-103ELF ,CR0603-JW-103ELFCT-ND ,C144116,Bourns,,LCSC: Substitute PN,Y - Same spec 23 | 1,R14,649R,Resistor_SMD:R_0603_1608Metric,MCR03ERTF6490 ,RHM649CFCT-ND ,C403314,Rohm Semiconductor,,LCSC: Substitute PN,Y - Same spec 24 | 2,"R6, R7",22R,Resistor_SMD:R_0603_1608Metric,CR0603-JW-220ELF ,CR0603-JW-220ELFCT-ND ,C203424,Bourns,,LCSC: Substitute PN,Y - Same spec 25 | 2,"RN1, RN3",10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec 26 | 1,RN5,10K,Resistor_SMD:R_Array_Convex_4x0603,RAVF164DJT10K0,RAVF164DJT10K0CT-ND,C107374,Bourns,,LCSC: Substitute PN,Y - Same spec 27 | 1,SW1,EVQPUL,josh-buttons-switches:Panasonic_EVQPUL_EVQPUC,EVQ-PUL02K,P10853SCT-ND,C397351,Panasonic,,LCSC: Substitute PN,Y - Same footprint 28 | 2,"SW2, SW3",EC11 Encoder,josh-buttons-switches:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles,PEC11L-4120F-S0020,PEC11L-4120F-S0020-ND,,Bourns,DNP,,Y - 20 PPR 29 | 4,"U1, U4, U5, U6",USBLC6-2SC6,Package_TO_SOT_SMD:SOT-23-6,USBLC6-2SC6,497-5235-1-ND ,C7519,STMicroelectronics,,,N 30 | 1,U2,ATMEGA32U4,josh-dfn-qfn:QFN-44-1EP_7x7mm_P0.5mm_EP5.2x5.2mm_ThermalVias,ATMEGA32U4-MU,ATMEGA32U4-MU-ND,C45874,Microchip/Atmel,,,N 31 | 1,U3,CY7C65632-28LTXCT,josh-dfn-qfn:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm_ThermalVias,CY7C65632-28LTXCT,428-3156-1-ND,C466886,Cypress Semiconductor,,,N 32 | 1,Y1,16MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-16.000MHZ-10-1-U-T,535-9675-6-ND,C164044,Abracon LLC,,LCSC: Substitute PN,"Y - 16 MHz, 10/12pF" 33 | 1,Y2,12MHz,josh-oscillators:Crystal_SMD_3225-4Pin_3.2x2.5mm,ABM8-12.000MHZ-12-B1U-T,535-14962-6-ND,C164041,Abracon LLC,,LCSC: Substitute PN,"Y - 12 MHz, 10/12pF" 34 | -------------------------------------------------------------------------------- /Production/1.0-hs/fab-notes.txt: -------------------------------------------------------------------------------- 1 | PCB Fabrication 2 | 3 | PCB is two layers, FR4 material, finished thickness 1.6mm. 4 | Matte black soldermask, white silkscreen. All vias to be tented. 5 | Lead free HASL surface finish. 6 | No manufacturer markings (logo / UL / date code / RoHS etc) are to be placed on the board. 7 | All boards are to be 100% electically tested. 8 | PCB's are to be panelised with mouse bites, in a way which ensures smooth edges on all sides after depanelisation. 9 | Production gerbers are to be approved by Josh before fabrication begins. 10 | 11 | Assembly Instructions 12 | 13 | PCBs are to be assembled using a lead free process. 14 | BOM items with "DNP" are not to be purchased or assembled. 15 | Substutions are allowed where noted on BOM, ensuring parts meet specifications. 16 | Boards are to be depanlised, edges smoothed, and placed individually in resealable ESD bags. 17 | 18 | If there are any discrepancies or questions during the process, please stop work and ask Josh. -------------------------------------------------------------------------------- /Production/1.0-hs/photo-close.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/photo-close.JPG -------------------------------------------------------------------------------- /Production/1.0-hs/photo.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/photo.JPG -------------------------------------------------------------------------------- /Production/1.0-hs/plate-gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/plate-gerbers.zip -------------------------------------------------------------------------------- /Production/1.0-hs/render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joshajohnson/Hub16/7511b985a5bf1ee4da3f0505ab6da831a4c0709a/Production/1.0-hs/render.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hub16 2 | 3 | ![Hub16 assembled](Documents/imgs/new-header.JPG) 4 | 5 | Hub16 is a macropad with a bunch of features you never knew you needed. They include: 6 | 7 | - 16 Cherry MX compatible keys, along with switches in each encoder. 8 | - Two rotary encoders, enabling intuitive controls for a wide range of tools including CAD and photo / video editing. 9 | - Inbuilt USB 2.0 Hub with Type-C connectors, allowing connection to other keyboards, memory sticks, wireless receivers and more! 10 | - VIA and QMK compatibility, including a "macro" mode enabling the keys to be dynamically remapped on a host computer. 11 | - 11 addressable RGB LEDs to display state, or just light your desk up. 12 | 13 | ## Project Status 14 | 15 | Project is stable, with assembled boards available at [Tindie](https://www.tindie.com/products/joshajohnson/hub16-programmable-macro-keyboard/). 16 | 17 | ![Hub16 on desk](Documents/imgs/all-the-cables.JPG) 18 | 19 | ## Getting Started Guide 20 | 21 | - [Keyboard Assembly](Documents/keyboard-assembly.md) 22 | - [VIA Keymap Configuration](Documents/via.md) 23 | - [Macro Configuration](Documents/macro.md) 24 | 25 | ## Detailed Info 26 | 27 | - [Advanced Firmware / Software Configuration](Documents/advanced-config.md) 28 | - [PCB SMT Assembly Guide](Documents/pcba.md) 29 | - [Enclosure Manufacturing](Documents/enclosure.md) 30 | 31 | ### Repo Contents 32 | 33 | - `Documents` contains all documentation and images for the project. 34 | - `Firmware` contains both the source and precompiled binaries for Hub16. 35 | - `Hardware` contains the KiCad design files for the keyboard. 36 | - `josh-kicad-lib` is my personal KiCad parts library which contains many of the parts used. 37 | - `Mechanicals` contain the plate and case design for Hub16. 38 | - `Production` contains all the files required to produce the PCB. It also contains test scripts and jigs. 39 | - `Software` contains all the VIA config, along with template script to use Hub16 as a macropad with software on your computer. 40 | 41 | ### Notes on the USB Hub 42 | 43 | The hub is a four port USB 2.0 Hub with Type-C connectors, aimed at allowing connection of keyboards, mice, memory sticks, wireless receivers, and other small devices (including a second Hub16!) to your computer. 44 | 45 | Due to cost and space constraints, the hub has some limitations. The hub **is not**: 46 | 47 | - USB 3.x, Power Delivery, Thunderbolt, DisplayPort, etc compatible. 48 | - Designed to charge your phone quickly. Only 100mA is guaranteed per port. 49 | - Designed to work with power hungry devices such as spinning hard drives. 50 | - Guaranteed to provide full USB 2.0 speeds and performance on all ports. 51 | 52 | Might you be able to charge your phone whilst copying files at full speed of a spinning hard drive over a long cable? Maybe. However Hub16 is a macropad first, USB hub second, so if you are looking for a high performance device I'd suggest picking up a dedicated USB hub and just using Hub16 as a macropad. 53 | 54 | ### Errata 55 | 56 | - Boards assembled in 2021 will have an issue with VIA where the LED controls are incorrect. [Follow these instructions to resolve](Documents/via.md#install-via) 57 | - Boards purchased between June 12 and June 22 2020 will not go into the bootloader upon resting from software. Workaround: reset board with physical reset button on bottom of PCB. Fix: reflash the bootloader following [these instructions](Documents/advanced-config.md#Bootloader-Flashing). 58 | - Firmware builds prior to 27th June do not continually send characters when the encoders are depressed. 59 | - Firmware builds prior to 9th June have issues with the bottom right key `p` not functioning correctly. 60 | - Some rotary encoders output flipped signals (clockwise instead of counterclockwise), if after assembly your encoders appear to be sending the wrong signals, comment in line 84 in [config.h](Firmware/hub16/config.h), or alter the setting in your [software](Software). 61 | 62 | If you have any questions or comments please get in touch. Asking in the [No Sharp Corners Discord](nosharpcorners.com) Discord or opening an issue / pull request will result in the quickest response. 63 | -------------------------------------------------------------------------------- /Software/hub16-autokey/.enc1-anticlockwise1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "enc1-anticlockwise", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 38, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "r" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.enc1-button.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "enc1-button", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 6, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "s" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.enc1-clockwise.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "enc1-clockwise", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 18, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "q" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.enc2-anticlockwise.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "enc2-anticlockwise", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 10, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "u" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.enc2-button1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "enc2-button", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 1, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "v" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.enc2-clockwise1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "enc2-clockwise", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 6, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "t" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.folder.json: -------------------------------------------------------------------------------- 1 | { 2 | "usageCount": 0, 3 | "abbreviation": { 4 | "wordChars": "[\\w]", 5 | "abbreviations": [], 6 | "immediate": false, 7 | "ignoreCase": false, 8 | "backspace": true, 9 | "triggerInside": false 10 | }, 11 | "modes": [], 12 | "title": "macro-keyboard-autokey", 13 | "hotkey": { 14 | "hotKey": null, 15 | "modifiers": [] 16 | }, 17 | "filter": { 18 | "regex": null, 19 | "isRecursive": false 20 | }, 21 | "type": "folder", 22 | "showInTrayMenu": false 23 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-1", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 21, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "a" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-10.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-10", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 14, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "j" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-11.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-11", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 24, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "k" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-12.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-12", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 65, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "l" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-13.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-13", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 10, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "m" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-14.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-14", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 6, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "n" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-151.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-15", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 6, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "o" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-2", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 35, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "b" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-3", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 39, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "c" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-4", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 56, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "d" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-5.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-5", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 25, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "e" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-6", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 6, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "f" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-7", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 7, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "g" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-8", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 10, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "h" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/.key-9.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "script", 3 | "description": "key-9", 4 | "store": {}, 5 | "modes": [ 6 | 3 7 | ], 8 | "usageCount": 13, 9 | "prompt": false, 10 | "omitTrigger": false, 11 | "showInTrayMenu": false, 12 | "abbreviation": { 13 | "abbreviations": [], 14 | "backspace": true, 15 | "ignoreCase": false, 16 | "immediate": false, 17 | "triggerInside": false, 18 | "wordChars": "[\\w]" 19 | }, 20 | "hotkey": { 21 | "modifiers": [ 22 | "" 23 | ], 24 | "hotKey": "i" 25 | }, 26 | "filter": { 27 | "regex": null, 28 | "isRecursive": false 29 | } 30 | } -------------------------------------------------------------------------------- /Software/hub16-autokey/enc1-anticlockwise1.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+w") # Previous track width 5 | else: 6 | system.exec_command("amixer -D pulse sset Master unmute 5%-") -------------------------------------------------------------------------------- /Software/hub16-autokey/enc1-button.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | # keyboard.send_keys("") 5 | pass 6 | else: 7 | system.exec_command("amixer -D pulse sset Master mute") -------------------------------------------------------------------------------- /Software/hub16-autokey/enc1-clockwise.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("w") # Next track width 5 | else: 6 | system.exec_command("amixer -D pulse sset Master unmute 5%+") -------------------------------------------------------------------------------- /Software/hub16-autokey/enc2-anticlockwise.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+n") # Previous grid size 5 | else: 6 | system.exec_command("playerctl previous") -------------------------------------------------------------------------------- /Software/hub16-autokey/enc2-button1.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | # keyboard.send_keys("") 5 | pass 6 | else: 7 | system.exec_command("playerctl play-pause") -------------------------------------------------------------------------------- /Software/hub16-autokey/enc2-clockwise1.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("n") # Next grid size 5 | else: 6 | system.exec_command("playerctl next") -------------------------------------------------------------------------------- /Software/hub16-autokey/key-1.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | pass 5 | else: 6 | keyboard.send_key('') 7 | 8 | -------------------------------------------------------------------------------- /Software/hub16-autokey/key-10.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+h") # High contrast 5 | if "visual studio code" in winTitle.lower(): 6 | keyboard.send_keys("+") # Stop 7 | else: 8 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-11.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("e") # For edit 5 | elif "eeschema" in winTitle.lower(): 6 | keyboard.send_keys("e") # For edit 7 | else: 8 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-12.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+M") # Move item exactly 5 | if "visual studio code" in winTitle.lower(): 6 | keyboard.send_keys("miniterm --echo") # init sig gen 7 | time.sleep(0.5) 8 | keyboard.send_keys("2") 9 | else: 10 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-13.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | pass 5 | else: 6 | system.exec_command("gnome-screenshot -i") -------------------------------------------------------------------------------- /Software/hub16-autokey/key-14.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | pass 5 | else: 6 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-151.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | pass 5 | else: 6 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-2.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | pass 5 | if "visual studio code" in winTitle.lower(): 6 | keyboard.send_keys("++") # Build 7 | else: 8 | keyboard.send_keys("+w") -------------------------------------------------------------------------------- /Software/hub16-autokey/key-3.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+") # Stop 7 | else: 8 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-4.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+r") # Redo 5 | elif "eeschema" in winTitle.lower(): 6 | keyboard.send_keys("") # Insert 7 | elif "visual studio code" in winTitle.lower(): 8 | keyboard.send_keys("") # Debug / Continue 9 | else: 10 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-5.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("\\") # Decrease Via Size 5 | if "visual studio code" in winTitle.lower(): 6 | keyboard.send_keys("") # Step Over 7 | else: 8 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-6.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("'") # Increase via size 5 | if "visual studio code" in winTitle.lower(): 6 | keyboard.send_keys("") # Step in 7 | else: 8 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-7.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("`") # Highlight net 5 | if "visual studio code" in winTitle.lower(): 6 | keyboard.send_keys("+") # Step Out 7 | else: 8 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-8.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("+r") # Position relative 5 | elif "eeschema" in winTitle.lower(): 6 | keyboard.send_keys("+y") # Position relative 7 | elif "visual studio code" in winTitle.lower(): 8 | keyboard.send_keys("") # Pause 9 | else: 10 | pass -------------------------------------------------------------------------------- /Software/hub16-autokey/key-9.py: -------------------------------------------------------------------------------- 1 | winTitle = window.get_active_title() 2 | 3 | if "pcbnew" in winTitle.lower(): 4 | keyboard.send_keys("++h") # Dimension 5 | else: 6 | pass -------------------------------------------------------------------------------- /Software/hub16-example.ahk: -------------------------------------------------------------------------------- 1 | #NoEnv 2 | #InstallKeybdHook 3 | #UseHook On 4 | #SingleInstance force ;only one instance of this script may run at a time 5 | #MaxHotkeysPerInterval 2000 6 | SetTitleMatchMode, 2 ; Partial title string matching 7 | 8 | ;Hub16 9 | ;------------------ ENC1:Clockwise: q 10 | ;| ENC1 ENC2 | ENC1:Anticlockwise: r 11 | ;| a b c d | ENC1:Button: s 12 | ;| e f g h | ENC2:Clockwise: t 13 | ;| i j k l | ENC2:Anticlockwise: u 14 | ;| m n o p | ENC2:Button: v 15 | ;------------------ 16 | 17 | ; Remember to uncomment lines before using them, and restart the script each time! 18 | 19 | #if (getKeyState("F24", "P")) 20 | F24::return 21 | 22 | ;------------------------------------------------------------------------------ 23 | ; Row 0 / Encoders 24 | ;------------------------------------------------------------------------------ 25 | 26 | ;q::{} 27 | 28 | ;r::{} 29 | 30 | ;s::{} 31 | 32 | ;t::{} 33 | 34 | ;u::{} 35 | 36 | ;v::{} 37 | 38 | ;------------------------------------------------------------------------------ 39 | ; Row 1 40 | ;------------------------------------------------------------------------------ 41 | 42 | ;a::{} 43 | 44 | ;b::{} 45 | 46 | ;c::{} 47 | 48 | ;d::{} 49 | 50 | ;------------------------------------------------------------------------------ 51 | ; Row 2 52 | ;------------------------------------------------------------------------------ 53 | 54 | e:: 55 | { ; Update URL, keeping ID number 56 | Send {control down}{l}{control up} ; Get URL Bar 57 | Sleep, 50 58 | Send {right} ; End of URL 59 | Sleep, 50 60 | Send {control down}{left}{control up} ; Move left of number 61 | Send {control down}{shift down}{home}{shift up}{control up} ; Select URL other than ID 62 | Send www.url-before-number.com/number= ; Update with URL 63 | Send {enter} 64 | return 65 | 66 | } 67 | 68 | f:: 69 | { 70 | 71 | Send ¯\\\_(ツ)_/¯ 72 | return 73 | } 74 | 75 | g:: 76 | { 77 | Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe https://website.com 78 | return 79 | } 80 | 81 | h:: 82 | { ; Login into application 83 | if WinActive("application name"){ 84 | Send area {enter} 85 | Sleep, 1500 86 | Send team {enter} 87 | Sleep, 1500 88 | Send username {tab}{tab} 89 | } 90 | 91 | ; Activate application 92 | if WinExist("application name") 93 | WinActivate 94 | else if WinExist("launcher name") 95 | WinActivate 96 | else 97 | Run, C:\ProgramData\Microsoft\Windows\path-to-application 98 | return 99 | 100 | } 101 | 102 | ;------------------------------------------------------------------------------ 103 | ; Row 3 104 | ;------------------------------------------------------------------------------ 105 | 106 | ;i::{} 107 | 108 | ;j::{} 109 | 110 | k:: 111 | { 112 | Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe https://another-website.com 113 | return 114 | } 115 | 116 | l:: 117 | { 118 | ; If Excel Active, open sceen 119 | if WinActive("ahk_exe EXCEL.EXE") 120 | Send {control down}{o}{control up} 121 | ; If Excel not active, activate excel 122 | else if WinExist("ahk_exe EXCEL.EXE") 123 | WinActivate 124 | else 125 | Run, EXCEL.EXE 126 | return 127 | } 128 | 129 | ;------------------------------------------------------------------------------ 130 | ; Row 4 131 | ;------------------------------------------------------------------------------ 132 | 133 | m:: 134 | { ; Replace text to fix website 404 135 | Send {control down}{l}{control up} 136 | Send {right} 137 | Send {control down}{left}{left}{left}{left}{left}{control up} 138 | Send {control down}{shift down}{right}{control up}{shift up} 139 | Send new-text/ 140 | Send {enter} 141 | return 142 | } 143 | 144 | ;n::{} 145 | 146 | o:: 147 | { ; Pull Webex Teams to front / open if closed 148 | if WinActive("Webex Teams") 149 | return 150 | else if WinExist("Webex Teams") 151 | WinActivate 152 | return 153 | } 154 | 155 | p:: 156 | { 157 | ; If outlook Active, new email 158 | if WinActive("ahk_exe OUTLOOK.EXE") 159 | Send {control down}{n}{control up} 160 | ; If Outlook not active, activate outlook 161 | else if WinExist("ahk_exe OUTLOOK.EXE") 162 | WinActivate 163 | else 164 | Run, OUTLOOK.EXE 165 | return 166 | 167 | } -------------------------------------------------------------------------------- /Software/hub16-template.ahk: -------------------------------------------------------------------------------- 1 | #NoEnv 2 | #InstallKeybdHook 3 | #UseHook On 4 | #SingleInstance force ;only one instance of this script may run at a time 5 | #MaxHotkeysPerInterval 2000 6 | SetTitleMatchMode, 2 ; Partial title string matching 7 | 8 | ;Hub16 9 | ;------------------ ENC1:Clockwise: q 10 | ;| ENC1 ENC2 | ENC1:Anticlockwise: r 11 | ;| a b c d | ENC1:Button: s 12 | ;| e f g h | ENC2:Clockwise: t 13 | ;| i j k l | ENC2:Anticlockwise: u 14 | ;| m n o p | ENC2:Button: v 15 | ;------------------ 16 | 17 | ; Remember to uncomment lines before using them, and restart the script each time! 18 | 19 | ; Run the below when in KiCad 20 | #if (getKeyState("F24", "P")) and if WinActive("ahk_exe kicad.exe") 21 | F24::return 22 | 23 | ;------------------------------------------------------------------------------ 24 | ; Row 0 / Encoders 25 | ;------------------------------------------------------------------------------ 26 | 27 | ;q::{} 28 | 29 | ;r::{} 30 | 31 | ;s::{} 32 | 33 | ;t::{} 34 | 35 | ;u::{} 36 | 37 | ;v::{} 38 | 39 | ;------------------------------------------------------------------------------ 40 | ; Row 1 41 | ;------------------------------------------------------------------------------ 42 | 43 | ;a::{} 44 | 45 | ;b::{} 46 | 47 | ;c::{} 48 | 49 | ;d::{} 50 | 51 | ;------------------------------------------------------------------------------ 52 | ; Row 2 53 | ;------------------------------------------------------------------------------ 54 | 55 | ;e::{} 56 | 57 | ;f::{} 58 | 59 | ;g::{} 60 | 61 | ;h::{} 62 | 63 | ;------------------------------------------------------------------------------ 64 | ; Row 3 65 | ;------------------------------------------------------------------------------ 66 | 67 | ;i::{} 68 | 69 | ;j::{} 70 | 71 | ;k::{} 72 | 73 | ;l::{} 74 | 75 | 76 | ;------------------------------------------------------------------------------ 77 | ; Row 4 78 | ;------------------------------------------------------------------------------ 79 | 80 | ;m::{} 81 | 82 | ;n::{} 83 | 84 | ;o::{} 85 | 86 | ;p::{} 87 | 88 | ; Otherwise, run the below 89 | #if (getKeyState("F23", "P")) 90 | F23::return 91 | 92 | ;------------------------------------------------------------------------------ 93 | ; Row 0 / Encoders 94 | ;------------------------------------------------------------------------------ 95 | 96 | ;q::{} 97 | 98 | ;r::{} 99 | 100 | ;s::{} 101 | 102 | ;t::{} 103 | 104 | ;u::{} 105 | 106 | ;v::{} 107 | 108 | ;------------------------------------------------------------------------------ 109 | ; Row 1 110 | ;------------------------------------------------------------------------------ 111 | 112 | ;a::{} 113 | 114 | ;b::{} 115 | 116 | ;c::{} 117 | 118 | ;d::{} 119 | 120 | ;------------------------------------------------------------------------------ 121 | ; Row 2 122 | ;------------------------------------------------------------------------------ 123 | 124 | ;e::{} 125 | 126 | ;f::{} 127 | 128 | ;g::{} 129 | 130 | ;h::{} 131 | 132 | ;------------------------------------------------------------------------------ 133 | ; Row 3 134 | ;------------------------------------------------------------------------------ 135 | 136 | ;i::{} 137 | 138 | ;j::{} 139 | 140 | ;k::{} 141 | 142 | ;l::{} 143 | 144 | 145 | ;------------------------------------------------------------------------------ 146 | ; Row 4 147 | ;------------------------------------------------------------------------------ 148 | 149 | ;m::{} 150 | 151 | ;n::{} 152 | 153 | ;o::{} 154 | 155 | ;p::{} --------------------------------------------------------------------------------