Enable 45/90 Contraints In KiCAD 6?

In KiCAD 5, the CTRL key would constrain tracks, lines, etc. to 45/90 degrees. This applied, for example, re track routing, drawing graphic lines, and using the measure tool. The CTRL key doesn’t do this in KiCAD 6 and I didn’t see any options in Preferences to enable it. How can it be enabled?

Shift+space on standard installation. Can be configured with prefrences–>hotkeys–>pcb editor–> constrain to H,V,45

It works re the measure tool and graphic lines, but not when routing tracks. How can it be enabled for track routing?

Also, on my Win 10 machine at least, the graphic line and measure tool oscillate back and forth rapidly between the current mouse cursor position and the nearest 45 degree position. It doesn’t do that on KiCAD 5. Is that something that can be fixed via a setting or is it a bug?

It works …, but not when routing tracks. How can it be enabled for track routing?

I’m not sure I understand correctly. For me track-routing is always constrained to H+V+45° in all routing modes.
The only exception is if checkbox “allow free angle mode” is enabled in the router settings (only possible in highlight collisions mode)
free_angle_mode.bmp (497.3 KB)

In KiCAD 5, holding CTRL while routing tracks forced the track to stay in that direction - 45 degrees, vertical, horizontal, etc.

Edit: This is incorrect. Holding Ctrl in KiCAD 5 constrained the track routing to only H/V (not H/V/45). So the Ctrl hotkey effectively disabled the 45 degree routing but also enabled other functionality - like being able to control where the track ends to e.g. join tracks precisely at 90 degrees, truly constrain tracks to 90 degrees (I have routed 45 degree tracks in KiCAD 6 with the 90 degree corner mode enabled), and possibly others.

As far as I know not available in v6. I would also like this feature (I found it more useful than the current CTRL==“ignore grid” modifier), but I think thats a design-decision (which naturally can’t please everyone) belonging to the limited number of available modifier-keys.

When free angle mode is not enabled, you should be able to use ctrl-/ to cycle through 45° miter, 90° miter, 45° arc and 90° arc mode.

This was added in V6 because holding the ctrl doesn’t work anymore in V6, added in the Merge Request:

Edit: This is only for routing tracks.

1 Like

That is not the same functionality. In other words, none of those modes forces the track to remain in the previous direction (e.g., 45 degrees, vertical, horizontal, etc.).

Edit: again, this is incorrect. It should only be constrained to H/V (not H/V/45). See the edit to my post 3 posts above for some other differences between the 90 degree corner mode in KiCAD 6 and the previous H/V only mode (or whatever it was called) in KiCAD 5 with the Ctrl key depressed during routing.

What do you mean with:

In KiCad, as far as I can remember, the default has always been to constrain tracks to multiples of 45 degrees. Maybe you changed that default long ago?

Can you do anything with:
Pcb Editor / Preferences / Preferences / Pcb Editor / Editing Options

1 Like

This was a feature I used every time I routed tracks - surprised more didn’t use it.

Not sure how else I can describe it. Perhaps “constrain” is a confusing term. Yes, the tracks only go horizontally, vertically, and 45 degrees when using the automated routing. However, it does not constrain them to the previous direction.

For example, start routing a track vertically then move your mouse cursor to the right - it will begin to bend at a 45 degree angle to the right. However, in KiCAD 5.1.10 for example, pressing the CTRL button (at least on Windows machines) would cause it to remain in the previous direction (vertical in the example I gave).

I usually turn off Pcb Editor / route / Interactive Router Settings / Fix all segments on click

This gives me the best of both worlds.
I can fix intermediate points while routing tracks, but still easily prevent extraneous 45 degree sgements from getting “fixed” in locations I do not want them.


That is not the same functionality. In other words, none of those modes forces the track to remain in the previous direction (e.g., 45 degrees, vertical, horizontal, etc.).

It is true that this is not the same function. But ctrl did not force to remain in the previous direction, also not in KiCad 5.
The mentioned MR did allow to go route a off-grid point to on-grid while only use 90° angles, which could be achieved with the ctrl-key in KiCad 5.

What is actually your goal?
If you just want the same direction, which had an angle of n*45°, move your mouse to that direction. Maybe you need to press / once to change 45° first vs 90° first.

Maybe you could show us what you did in KiCad 5 that you want to do in KiCad 6?

That is incorrect. Yes, it did. I have it running on KiCAD 5.1.10 now and observe that behavior.

I can draw one track segment, press and hold the ctrl-key, move the mouse around the starting point and the track direction changes. It changes it in only 90° steps but it does it in all 4 directions.

Edit: This is not completely correct. When i hold ctrl and i move to a point that is exactly diagonally, the track will be diagonal.

My KiCad 5 version:

Application: Pcbnew
Version: 5.1.9+dfsg1-1, release build
    wxWidgets 3.0.5
    libcurl/7.74.0 OpenSSL/1.1.1k zlib/1.2.11 brotli/1.0.9 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.43.0 librtmp/2.3
Platform: Linux 5.10.0-10-amd64 x86_64, 64 bit, Little endian, wxGTK
Build Info:
    wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
    Boost: 1.74.0
    OpenCASCADE Technology: 7.5.0
    Curl: 7.72.0
    Compiler: GCC 10.2.1 with C++ ABI 1014

Build settings:

Exactly! It doesn’t make the 45 degree bend.

Exactly! It doesn’t make the 45 degree bend.

If you don’t want 45° bends, switch to a 90° corner mode with ctrl-/.

I am not sure if i understand your goal. Can you explain a bit better what you actually try to achieve?

Are you aware that you see 2 new tracks when you route but when you press the mouse button, only 1 track will be placed, the second track will not be placed?

I see that, but it’s a lot less efficient - switching modes, laying a bunch of intermediate tracks, etc. And it doesn’t allow you to do some other stuff that you could do before. For example, joining tracks at 90 degree angles (with only two mouse clicks and a single press of the CTRL key).

At any rate, how do you tell what mode is active?

Statusbar, second column from left.

I see that, but it’s a lot less efficient - switching modes

For me, the most efficent way to route is to do most corners in 90° on a 0.2mm grid. The grid should be chosen to match with track with and clearance, so that tracks with the minimal clearance between them can be both on the grid. I am much faster with a 90° mode than 45° mode and i don’t see any EMC disadvantages for non-differential tracks. On some places, like near mounting holes and for differential tracks, i use 45° tracks.

Anyway, you could make a feature request here to add this feature again, maybe with a different key? Or implement it yourself and make a MR in the hope that the maintainers think it is a good idea.

Thanks! Missed that somehow.