Layout challenge: make this contact pad with KiCad?

I’d like to duplicate this pattern as a device:

The challenge is that the gold-colored meandering bit is not a conductive trace; it’s the non-conductive gap between the gray-colored conductive areas. For those who care, this is where the conductive pad of a rubber keypad makes contact on the PCB.

I my head I picture this as two adjacent filled areas separated by a meandering “keep-out” line.

How best to do this in KiCad? Also, there are 30-ish of these, so I’d like to make it a footprint of a switch device that I can then place and route.


I’d say min thickness for copper and clearances will be roadblocks for that approach.
Especially considering the via and track sizes around it…
You got some dimension for the diameter there?

I can see it being done with pads in a footprint. Not as slick though.

I guess a dimension would help. The circle is about 6mm in diameter.

Don’t worry about the vias or the areas outside the circle. It’s the pattern exposed by the solder resist that’s important.

I took a few more measurements. It looks like the narrowest copper feature is 10 mils wide, and the non-conductive gap is 20 mils wide. I wouldn’t think that’d be a problem for any decent fab. The question is how can I lay this out most easily in KiCad.

Fortunately it’s a conductive switch, not inductive or capacitive, so the actual pattern isn’t critical. The idea behind the weird layout is to maximize the chance that the conductive pad under the key will bridge the two conductors, regardless of where it actually contacts the PCB.

For anyone who is curious, the conductive surfaces on the original PCB doesn’t appear to be copper. I’m sure it’s something unlikely to oxidize but it isn’t terribly conductive. The resistance of one of these traces from via to via across about a 4 inch span was above 200 ohms (I had to change the scale on my ohmmeter to get a reading). I’m planning on using ENIG for my prototype.

You can take advantage of the symmetry of the pattern shown.

I would use FidoCadJ with its 5 mil grid to do one quadrant of the pad, using it’s cubic Bezier and cubic spline capabilities to reproduce the pattern.

I would then export the layout to pcb-rnd, which will convert the cubic beziers and cubic splines to linear elements during export.

In pcb-rnd I would then copy, rotate and/or mirror the quadrant elements to create the entire pad structure.

Having done so, I would save the layout in kicad format from within pcb-rnd, at which point you have something to work with in Kicad.

Much the same technique was used for these boards:

P.S. you’d need to use the current git version of FidoCadJ which now includes the export to pcb-rnd code



1 Like

Thanks for the ideas, Erich, but that sounds like a very Rube Goldberg way to do it. Or Heath Robinson, if you’re British. But it got me thinking.

I’m going to try to import my photos into Inkscape and trace the patterns in another layer. Then I’m going to see if I can coax svg2mod into spitting out a footprint.

Another approach is to export DXF from Inkscape, which KiCad will import. I’m not sure whether I can pull that into a footprint or not.

While chalenging, is this really very superior to just using something like a “WW” shaped gap

Each to their own.

It seemed easy enough:

I’ll see if I can stick a copy of the footprint primitives on



Addendum: Here’s a basic footprint, but none of the pads have appropriate pin numbering. That’s an exercise for the reader… :slight_smile:
TouchPadFP.fp (22.8 KB)

And saved in kicad format from pcb-rnd

TouchPadAsCopperTracks.kicad_pcb (36.7 KB)

1 Like

I’m not sure it is. It would seem better in that it “WW” shaped contacts might have a directional sensitivity that the round meander pattern doesn’t suffer from. For my purposes “WW” (or interleaved “EƎ” patterns, which might be easier to draw) would probably be sufficient. What I’m doing is replacing the PCB in an electronic calculator with one of my own design. I’d like to use as much of the original design features as I can to avoid learning why they used this particular pattern the hard way. But as a hobbyist experiment it’s not critical that this design have mass-production quality reliability.

BTW, a similar question was posed by another user some months back. Their proposed pattern was a round pad in the middle (a hub, if you will) surrounded by a circle (a wheel). Alternating spokes radiating from the hub and wheel approached, but did not connect with, the other contact. I suspect their aim was similar.

But my question really isn’t which pattern is better. I asked my question because I’m trying to learn how to use KiCad effectively. I know how to create an arbitrarily-shaped footprint on top of a tiny SMD pad in Eagle, and I want to know how to do it with KiCad. The suggestions help me learn KiCad’s capabilities and limitations. It seems the best way at the moment is to draw the footprint in another tool, import the shape into KiCad, and fiddle with it from there.

All suggestions and comments are welcome and appreciated!

bitmap2component seems a good choice for this kind of things:

image provided–>gimp–>bitmap2comp–>library editor–>pcbnew (Ok it need a bit more of work, but the idea is that).

1 Like

How do you connect each pad of this symbol to a net? I want this kind of feature to make a solder bridge and I was making two copper zones with a soldermask zone on them, so I can get bare copper.

Looking at the source code for bitmap2component, it seems to be a front end for Peter Selinger’s potrace library

so the output would appear to be a set of polygons approximating the bitmap outline.

Am I right in thinking that in the absence of footprint element support for arbitrary polygonal copper pads, or local subtractive editing of the solder mask layer, solder mask apertures would need to be achieved with some sort of overlaid arrangements of pads to achieve the needed apertures with the output of bitmap2component?



in library editor just add a pad on each side, also you need to make a similar work for the soldermask
attached is the file I made (right now is useless because of the size)
cont.kicad_mod (36.4 KB)

on the output file generated by bmp2component the use of the copper layers is not an option, the trick is generate the image on any layer then change it in a text editor by the layer F.Cu on each poligon

1 Like

Or you could use svg2mod. This way you can put your design on any layer. (The inkscape layer name defines the kicad layer.)
You can also say that by using inkscape to create your design you have a nice user interface build in already.

Here my attempt using inkscape and svg2mod: (I used 10x10mm for the overall size, this way you should be able to easily scale it to whatever size you need.)
I used the path difference tool to get the isolation gab. (The isolation gab is designed with a simple path. This path has a stroke with set to an appropriate value. When happy with the settings simply convert the stroke to a path and subtract it form a circle.

The svg file: (rightclick to download as svg.)

The kicad mod file with circular pads (type connector):
my_attempt_with_pads.kicad_mod (49.9 KB)

I used precision (-p) = 0.25, this gives good results but if you scale it smaller you could increase the value.
python -i [absolute path]/my_attempt.svg -o [absolute path]/my_attempt --format pretty -p 0.25

If you want to use it i would suggest you download the svg, open it in inkscape and scale it to your final dimensions.
Set the isolation path width to your desired value, convert it with stroke to path. Create a new circle on the Cu layer and remove the artwork from the circle with path->difference.

To get a circle on cu ou can simply copy the circle from the mask layer and move it to the cu layer. But you need to remove the stroke. This way the stroke width of the circle on the mask layer defines the mask clearance. But remember that half of the stroke is inside the filled area.