This is my keyboard project.
A bit of background. I first started on this a couple of years ago, but ran out of time. I have returned to this project this summer and have an updated design.
The intent/purpose is that Logitech discontinued my favorite keyboards. I am concerned about the longevity of my 20+ year old membrane keyboards, and am not aware of any suitable replacement products. Used keyboards (!) are going for a premium. The Logitech G15 is available for around $450 the last time I checked. And that is for a very old, used, item.
I decided to make my own. And while I'm at it, change the design a bit. I don't need the display (I'm looking at real monitors not my keyboards), and I want more keys. The original G13 had an excellent arrangement of 3x6 keys which was great for touch-typing. The G15 had more keys, but it was too easy to lose my position on the keys. So I doubled the G13 arrangement of G-keys, but am not including any alphanumeric keys (like the G15).
Firmware won't be a problem, as I have captured the raw USB traffic from my working keyboards and understand the format of the HID reports. I can emulate Logitech's products exactly.
OK, that is enough backstory. I am using an STM32F105 because I want the USB bootloader. I am using a 16-Pin USB-C connector for USB 2.0 traffic and power. The board should pull 170mA max.
I have had a fit with that USB connector, as the library footprint does not pass DRC checks for JLCPCB due to hole/pad clearance issues with the connector. This makes no sense to me, as JLCPCB has about 40K of those connectors in stock. They use them. So I am not worred about those DRC issues.
The board is 4 layers, in a Signal-Ground-Power-Signal stackup. Power is split between 3.3 and 5v.
I am attaching three sheets of schematics, and 3 of the layer layouts. I would greatly appreciate any comments/suggestions before I send this off to be made.
This will be my first board. I am a CS person, who has done a lot of low level OS/firmware work, but self-taught on electronics. Any obvious silliness is because I really don't know what I'm doing yet. But I'm learning.
Thanks for your time.