Saturday, May 30, 2026

How to Make KiCAD Not Suck

I love KiCAD.   I really do.  It's one of the few pieces of Free, Open Source Software that I feel actually does the job well (unlike so many other "FOSS alternative to X proprietary software" lists full of essentially toy applications that only barely scratch the surface of an appearance at doing the job).  But it's not without its problems.  And if I had to rank those problems, number one by a mile, is that it seems like every single time KiCAD has an option to select a behavior, the devs chose the worst option off all and decided that should be the one to make the default config.  Its infuriating how many times I've fought with some absolutely awful UI/UX issue, go to write up a bug report for it, only to discover that actually, it's a solved problem, they already have the ability to do the thing correctly, they just decided that by default it should do the stupid thing instead.  And as a fairly new user still discovering these stupid decisions on a regular basis, this is a TERRIBLE new-user out-of-box-experience.  I don't have the ability to change these decisions, but what I do have the ability to do is document them here as I run into them, so hopefully some other new users might avoid some of the same headaches that I've run into.


Cursor Warp On Zoom Sucks

This one's going to be controversial.  Long-term KiCAD users will tell you they love the re-centering behavior on scroll-zoom.  I don't care.  Love it or hate it, scroll-zoom is one of those common user-interface design language behaviors that has existed for decades, and if you want to change the common language because you think you can do it better, fine, but making it the *default* is terribly disorienting to anybody who has ever used scroll-zoom in any application... ever.  Warp on Zoom is Apple scrollwheel levels of backwards, but at least Apple does it system-wide, and it's not just one random application acting completely differently from every other application you've ever used.  I'm not going to argue with you if you think that randomly flinging my mouse cursor around on the screen when I didn't move it there is ok, I'm simply going to tell you that if you think it's ok to do that to a new user, you're wrong.  This should never have been made default.

How To Make It Not Suck

From the main project window, select Preferences > Preferences (there's a whole side rant there, but I'm just going to let that one go...) > Mouse and Touchpad > Pan and Zoom > Uncheck "Center and warp cursor on zoom"


Mouse Move vs Drag Sucks

This one, I can admit is probably down to my personal usage, but I basically never use the "Move" feature (the one that disconnects the selected item/s from all nets as if they weren't connected at all).  If I want to disconnect something from the existing schematic, I'll just cut and paste.  Maybe that's just dumb of me, and I'll own that, but what I WON'T back down on is that simply dragging things around with the mouse should NOT disconnect them.

How To Make It Not Suck

Again, from the main project window, open Preferences > Preferences (from here on, unless I specify otherwise, just assume that any reference to Preferences or settings is this one, because I'm going to get really annoyed if I have to remind myself of that redundancy every time) > Schematic Editor > Editing Options > Editing > Check "Mouse drag performs Drag (G) operation".

The PCB Editor's Coordinate System Sucks

For some wild reason, the PCB Editor defaults to a coordinate system that not only puts the origin in the top-left, it puts it in the top-left of the page frame.  Who in the world wants to lay out a board on a coordinate system where the origin is nowhere near the actual board?  Who in the world labels their Y axis so it increases as you go down?  I have to believe there's some kind of industry legacy reason for this, because for all the memeing about the lack of standardization of axes in 3D applications (I'm on team 3D printing myself), 2D coordinate systems are pretty hard to screw up, but boy howdy did they manage to do it.  What's even worse is there's a tool in the PCB Editor to place a origin point anywhere you want on the page BUT THE DEFAULT SETTINGS JUST COMPLETELY IGNORE IT.

How To Make It Not Suck

Preferences > PCB Editor > Origins & Axes > Display Origin > Select "Grid origin", then under Y Axis select "Increases up".  In order to actually use this feature, in the PCB Editor, click Place > Grid Origin.  I usually start out a new design by immediately drawing the outline of my PCB on the Edge.Cuts layer (or, if it will be a non-rectangular board, I start with a rectangle representing the bounding box), which I then center in the page frame, then Place > Grid Origin on the bottom-left corner of the board.  It's a good idea to also Place > Drill/Place File Origin on the same corner.  Now, you actually have a sane coordinate system for your layout.

Creating Large Pin-Count Symbols Sucks

If you've never tried creating a symbol for a 100+ pin microcontroller or FPGA using the intended workflow, allow me to describe the process.

- Click on the Draw Pins tool.  This will bring up a large dialog.
- Fill out all of the information to define your pin.
- Upon clicking "OK", your cursor is now holding the pin you just defined, which you must place into the symbol.  Not sure where it's going to go yet, because you have 100 more to go?  Just slap it down anywhere.
- Now your cursor is acting as the Draw Pins tool, and you can click anywhere to create another pin.
- That big dialog shows up again, but fun fact, it didn't auto-increment the pin number, it just cleared it.  You have to type in each and every one.  Have fun with that.
- Upon clicking "OK" you might think that because you clicked on the symbol in order to create the pin that the pin will be created at the spot where you clicked, right?  WRONG.  The cursor is now holding that pin and you have to click again to place it down.  Oh, you used the mouse to navigate the dialog and click the OK button?  Well, now you're holding onto that pin randomly in the middle of the screen, not in the spot that you already just clicked, where you wanted it to go.
- Repeat the process 100 more times.  Eventually the screen will fill up with all of these pins and you'll have to keep scrolling as you add more.  Oh, and if you made a typo or want to change something after you've created a pin, you have to exit out of the Draw Pins tool in order to select the one you want to fix, then bring up the Draw Pins tool again.

How To Make It Suck Less

I cannot possibly stress enough the fact that defining pins and placing them onto the symbol are two completely different tasks and should be handled by two completely different tools, for the same reason that the schematic and layout are two separate tasks handled by two separate tools.  Simply put, unless you're drawing a device with a very small handful of pins, the Draw Pins tool is trash and should be avoided.  Turns out, there's already a bulk pin editor that does work for creating/defining new ones.  It does have 2 really annoying issues, but it's WAY better than the default workflow for creating a bunch of pins.  The tool you ACTUALLY want to use is found under Edit > Pin Table.  You create a new pin simply by clicking the '+' in the lower-left corner, then filling out the details.  Unfortunately, this tool ALSO fails to include the basic functionality of auto-incrementing pin numbers, and it also can't change multiple pins at once (e.g. if you want to change the pin type for a whole block of pins, you have to do them each one-by-one).  But at least it separates the definition stage from the placement, and just drops them in a nice line for you to lay out yourself afterward, kind of like the PCB editor does with all of your components.  If they could just add the pin numbering bit and allow you to edit multiple rows at once, this would basically be everything I would want from such a tool.  It even allows importing a pin list from a file.  The only other thing I would suggest is that they ought to push this thing right out in front of the workflow.  Automatically open this dialog right in your face as soon as you create a new symbol, don't bury it in a drop-down menu.  But that would be making the right default choice, which as I know, KiCAD will never do.

Plotting PDFs In Dark Mode Sucks

I don't personally use a dark color theme for KiCAD, which is kind of weird, because I do use it for most applications whenever possible.  However, I know a lot of people who do use dark color themes, and more power to them.  But if you're going to export your schematic to a PDF for other people to read (or possibly even print) without having to load up KiCAD themselves, that schematic should be exported using the standard light mode color scheme.  Period.  But for some reason, KiCAD chooses to default to plotting PDF exports in user's current color scheme.  One of my big rants about open-source hardware projects is not exporting their schematics to PDF, so sure, *technically* you've released the source files, but nobody can actually view them unless they have the same EDA as you installed.  This is much more of an issue for expensive proprietary EDA suites than for something like KiCAD, but still... if you're gonna call it open-source, publish a PDF of the schematic please.  And please use a legible *and printable* color scheme when you do.

How To Make It Not Suck

Not sure if this one can be changed in a globally persistent manner, or only per-project, but File > Plot > Select "Color theme: KiCad Default".  There are two copies of the KiCad Default theme in the list as of writing this, for... reasons.  They disambiguate them in some dialogs like Preferences > Schematic Editor > Colors > Theme, but not in the Plot dialog for some reason.

Conclusions

KiCAD is great.  You'd just never know that as a new user, because the out-of-box defaults are just so terrible.  There are almost certainly more of these that I've changed at some point and forgotten about, and even more that I have yet to discover.  I will probably come back to update this document as I discover new things to add, but I likely won't keep it up-to-date with things that may cease to be an issue with newer versions, because I'm not going to go reverting my settings to the defaults just to see if they've improved the OOBE.  If there are any other default behaviors that you've run into that need to be changed, please let me know in the comments.

No comments:

Post a Comment