(From a complete beginner)

I've had this idea to build my own keyboard from scratch for a while, and I finally got the time (and motivation) this winter break to go ahead and try it for myself. After a couple days of reading forums and googling circuit design stuff, I've created this schematic for my project in KiCAD.

I was wondering if any kind person would be willing to give me a review of my design?

  • I'm using a teensy 4.0 and using its pins for digital IO.

  • For the key switch matrix, I am assuming that cherry switches don't come with their own diodes, so I added my own. Don't know if I need to explicitly make input and output labels, or if normal ones are ok.(for reference rows are input, cols are output)

  • For the rotary encoder, I've got the switch pins integrated into the matrix (felt cool doing that), and the other pins are directly hooked up to pins on the teensy. I read that bouncing is often an issue with these. Is it better to debounce in hardware? (I was just planning on implementing my own debouncing in software).

  • Finally, (The part I'm most concerned with...) I wanted to route a female usb-c connector somewhere on the edge of the PCB so that I could use a male to male wire for my computers. I get this error "Different net assigned to a shared pin in another unit of the same component" for the D+ and D- labels. This really prompted this post as I couldn't find any answers online for this error. I'd love it if someone could explain what this means and how to fix it.

I appreciate any criticism and advice that I can get. Thank you.




I have added a Usb C receptacle and plan to run it on USB 2.0. I also found that I don't need pull down resistors on the columns as the teensy has its own input pull down functionality. I'm also planning on replacing the THT diodes with SMD ones later tonight.

Still open to any comments. Curious what people will say about the rotary encoder

Here is a new updated schematic:enter image description here

Here is my PCB:

enter image description here

  • \$\begingroup\$ We can always make assumptions but a schematic design without specs isn't really a good way to design something. 40percent.club/2017/03/analog-matrix-keyboard.html another way \$\endgroup\$ Jan 2, 2020 at 3:57
  • 1
    \$\begingroup\$ Thank you for the link! Using analog input is a super cool way of detecting key presses that I have never found before! I was intending to create a digital matrix so that in code as I set each Row pin high, I could check each column pin to see if it had changed to a high. Now that I think about it, it seems like I need to add a pull-down resistor at the end of each column to remove floating states to make that happen? I have data sheets for all of the parts that I am planning to use. When you say specs, do you mean including datasheets or a pinout? Sorry for not understanding that part. \$\endgroup\$
    – Henri
    Jan 2, 2020 at 4:26
  • \$\begingroup\$ Specs means how it works like N key rollover and what voltage and key grouping \$\endgroup\$ Jan 2, 2020 at 4:32
  • \$\begingroup\$ I see. So would including something like, "I'm designing a keyboard to have NKRO operating on USB 2.0 with a type-C connector" in the question be more what you would be looking for? For the voltage part, what are you looking for exactly? The Teensy operates at 3.3V. I'm sorry if my questions seem silly. I'm trying to learn from this. \$\endgroup\$
    – Henri
    Jan 2, 2020 at 4:52
  • \$\begingroup\$ I found my answer for the KiCAD issue. I'm still open to other criticisms if other people would be willing to offer them. Thanks \$\endgroup\$
    – Henri
    Jan 2, 2020 at 5:15

1 Answer 1


I found my answer for the KiCAD issue here: https://www.reddit.com/r/KiCad/comments/egm7og/electrical_rules_check_in_eescheema_warnings_when/ My issue was that I didn't understand that there were no physical pins for me to route the data lines from the original micro usb to the new connector I am laying out on my board. I will have to jerry rig the connection and mark the labels as no-connects so that KiCAD doesn't yell at me.

Still open to any suggestions for the schematic though. Thanks

  • \$\begingroup\$ You might want to make a new question as your kicad specific title will reduce the number of people who klick on it. \$\endgroup\$ Jan 3, 2020 at 8:39
  • \$\begingroup\$ Thanks. I'll do that \$\endgroup\$
    – Henri
    Jan 3, 2020 at 18:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.