# Blank SVG template

**URL:** <https://community.keyboard.io/t/blank-svg-template/226>\
**Category:** Model 01 Layouts\
**Created:** [December 7, 2016, 6:20am UTC](https://community.keyboard.io/t/blank-svg-template/226 "2016-12-07T06:20:31Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 7, 2016, 6:20am UTC](https://community.keyboard.io/t/blank-svg-template/226/1 "2016-12-07T06:20:32Z")

</div>

I’m still playing around with Linear A (for the [Runic keycap layout](https://community.keyboard.io/t/runic-keycap-layout/14/144) discussion), and decided I had to fix some of the tiny errors in the SVG file I was using. In case anyone else wants an arguably-improved version, I’ve put it up [on Dropbox](https://www.dropbox.com/s/pnk4whnrwg8l8nl/keyboardio-blank.svg?dl=0). It looks like this:

 ![](https://canada1.discourse-cdn.com/flex031/uploads/keyboard/original/1X/ced26009b24715ed4ac08811d31dbf1c2d4943a3.png)

Every time I play with Inkscape, I learn a whole bunch of fiddly things, then forget almost all of them by the next time I need to use it for something…

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 15, 2016, 8:46am UTC](https://community.keyboard.io/t/blank-svg-template/226/2 "2016-12-15T08:46:00Z")

</div>

I’ve just created and checked into git the templates we’ll use to communicate with the factory about key layouts.

You can find them here:

> **[keyboardio/Model01-Legends](https://github.com/keyboardio/Model01-Legends/tree/master/template)**
>
> Key legends for the Model 01. Contribute to keyboardio/Model01-Legends development by creating an account on GitHub.

Red shows the keycaps themselves, including the top profile, the outline, the homing dots and the keystems.

Yellow shows some orientation features.

Guidelines on where to place the key labels are in black.

I’d welcome cleanup to the SVG template 🙂

Feel free to ask me questions about it here, though with the baby, my attention is a little scattered.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 15, 2016, 4:56pm UTC](https://community.keyboard.io/t/blank-svg-template/226/3 "2016-12-15T16:56:21Z")

</div>

> [@jesse](#):
>
> I’d welcome cleanup to the SVG template 🙂

I’d be happy to do that, since I’ve already done it once. Does it matter how exactly precise those corners are? Some of them have eight nodes in a path less than 1mm long. Does it matter if rounding isn’t exactly the same? If not, I can greatly simplify those corners (just two nodes in almost all cases, maybe some would require three. Either way, it would be good to at least join the different path segments, which is easy enough.

All the “prog” text elements look like they’re in the wrong layer. They’re in the layer “key legends - character”, but I’m guessing they should be in “key legends - word”. Very easy to fix, if that’s the case.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 15, 2016, 5:34pm UTC](https://community.keyboard.io/t/blank-svg-template/226/4 "2016-12-15T17:34:12Z")

</div>

Forgive my ignorance of the jargon; I’m not totally certain about the term “keystem”. I’m supposing thats the part of the keycap that connects the visible part to the keyswitch underneath. In which case, that would include the bits in green in the below image?

 ![](https://canada1.discourse-cdn.com/flex031/uploads/keyboard/original/1X/4e91e5311fb7538f0827718c9e931d813f0e84e3.png)

And the outer red lines are the outline (base profile), and the inner red lines are the top profile?

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 15, 2016, 9:43pm UTC](https://community.keyboard.io/t/blank-svg-template/226/5 "2016-12-15T21:43:37Z")

</div>

> [@merlin](#):
>
> I’d be happy to do that, since I’ve already done it once. Does it matter how exactly precise those corners are? Some of them have eight nodes in a path less than 1mm long. Does it matter if rounding isn’t exactly the same? If not, I can greatly simplify those corners (just two nodes in almost all cases, maybe some would require three. Either way, it would be good to at least join the different path segments, which is easy enough.

That’s just fine and entirely unimportant from a factory-facing perspective. These were DXF exports from 3D CAD, imported into Inkscape.

> [@merlin](#):
>
> All the “prog” text elements look like they’re in the wrong layer. They’re in the layer “key legends - character”, but I’m guessing they should be in “key legends - word”. Very easy to fix, if that’s the case.

You’re correct. It was late and I was getting tired. Also, my layers are…not gospel.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 15, 2016, 9:50pm UTC](https://community.keyboard.io/t/blank-svg-template/226/6 "2016-12-15T21:50:09Z")

</div>

@merlin - I was playing a little bit fast and loose with my terminology.

Ih the image you pasted, the inner and outer red lines are the bottom side of the keycap.

The rounded green loop is the key top surface, which deserves to be its own layer.

The 2.x by 4.x rectangle in the center is the tip of the key stem. It’s the part that slides into the keyswitch.

The other four green rectangles are the internal structural supports, sometimes called webbing or ribs.

One additional thing - I’m not 100% sure that the export came out of CAD at the exact angles it should have. (It’s very, very close, if not.) Within each hand’s keys, everything should be consistent, but there’s a slight chance that either or both hands are rotated a fraction of a degree. The key stems for the fingers should be at 5, 2, 1 or 0 degrees.

This won’t affect the factory’s lasering (since they’re using this as a guide and then manually placing everything to match the injection molds), but it’s a bit untidy.

Anyway, thanks so much for taking a look at this!

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 16, 2016, 3:53am UTC](https://community.keyboard.io/t/blank-svg-template/226/7 "2016-12-16T03:53:10Z")

</div>

The yellow positioning rectangles are rotated by 5º, 2º, 1º, and 0º exactly, according to Inkscape. The red keystem rectangles are within 0.01º of that, but in the SVG, they’re not actually rectangles, so it’s already slightly imprecise. I hope to get the time to clean it all up in the next few days, but my three kids might not allow that; we’ll see. I’ll redo the keystems as rectangles, and I’ll put everything in layers that I think make sense.

All of the paths and rectangles in the SVG have a stroke of 1px, which isn’t really all that precise. (Half-rhetorical question: is the boundary the line at the center, or at one of the edges of the stroke? The answer isn’t really important, of course, since this is only a reference guide).

The homing dots are the most impressively messy (26 nodes to make a tiny circle!). 😲

Unless there’s a good reason not to, I’m just going to do the left side, then copy and flip that before overlaying it to make the right side.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 16, 2016, 4:36am UTC](https://community.keyboard.io/t/blank-svg-template/226/8 "2016-12-16T04:36:34Z")

</div>

> [@merlin](#):
>
> The yellow positioning rectangles are rotated by 5º, 2º, 1º, and 0º exactly, according to Inkscape.

That makes sense, since I added those in inkscape. My process was to create a template for a “key” legend, clone it into four of them spaced 18mm apart vertically and then rotate them into place.

> [@merlin](#):
>
> The red keystem rectangles are within 0.01º of that, but in the SVG, they’re not actually rectangles, so it’s already slightly imprecise. I hope to get the time to clean it all up in the next few days, but my three kids might not allow that; we’ll see.

Sure. I might recommend instead just using the top bars of the stems on innermost 3 columns on the left hand to rotate all of the formerly red parts on the left hand to be straight. It all should be internally consistent.

> [@merlin](#):
>
> I’ll redo the keystems as rectangles, and I’ll put everything in layers that I think make sense.

Sure. Of course, if you’re sure the yellow bits are aligned with the red ones, you can just delete the red ‘rectangles’

> [@merlin](#):
>
> All of the paths and rectangles in the SVG have a stroke of 1px, which isn’t really all that precise. (Half-rhetorical question: is the boundary the line at the center, or at one of the edges of the stroke? The answer isn’t really important, of course, since this is only a reference guide).

It’s the center of the stroke. (not that it really matters)

> [@merlin](#):
>
> The homing dots are the most impressively messy (26 nodes to make a tiny circle!). 😲

Yep. project from a sphere to a plane ought to just work, but heck, it might or might not have been right in the DXF.

> [@merlin](#):
>
> Unless there’s a good reason not to, I’m just going to do the left side, then copy and flip that before overlaying it to make the right side.

That’s what I did the first time, so that’s fine 🙂

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 16, 2016, 6:19am UTC](https://community.keyboard.io/t/blank-svg-template/226/9 "2016-12-16T06:19:10Z")

</div>

I’m starting to look at the details, which are probably not important, but it looks like the stems in the SVG (~3.9x1.75mm) are smaller than the dimensions given in the [Matias blueprints](http://matias.ca/switches/quiet/blueprints/?p=2) (4.5x2.2mm). Measuring to the outside dimension of the stroke, it’s closer, but still smaller. I suppose this has to do with the tolerances involved, which probably also make any tiny angular alignment issues moot.

I’m imagining trying to work on this in three spatial dimensions. The idea is daunting!

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 16, 2016, 6:31am UTC](https://community.keyboard.io/t/blank-svg-template/226/10 "2016-12-16T06:31:23Z")

</div>

> [@merlin](#):
>
> I’m starting to look at the details, which are probably not important, but it looks like the stems in the SVG (~3.9x1.75mm) are smaller than the dimensions given in the Matias blueprints (4.5x2.2mm). Measuring to the outside dimension of the stroke, it’s closer, but still smaller. I suppose this has to do with the tolerances involved, which probably also make any tiny angular alignment issues moot.
> 
> I’m imagining trying to work on this in three spatial dimensions. The idea is daunting!

It’s actually simpler than that. The keycap stems have a tapered end to make them easier to insert. The rectangles are from the end of the taper.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 16, 2016, 7:38pm UTC](https://community.keyboard.io/t/blank-svg-template/226/11 "2016-12-16T19:38:37Z")

</div>

> [@jesse](#):
>
> It’s actually simpler than that. The keycap stems have a tapered end to make them easier to insert. The rectangles are from the end of the taper.

Well, now that you say that, it seems obvious…

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 17, 2016, 7:05am UTC](https://community.keyboard.io/t/blank-svg-template/226/12 "2016-12-17T07:05:43Z")

</div>

I finally got some time to work on this today. I’m about halfway through cleaning up the paths, and I removed the troublesome gradients attached to all the text objects.

I’ve separated various elements into different layers, but I haven’t organized them to make them presentable yet. That won’t take long, but it won’t be comprehensible until that’s done. Then I can make a pretty version similar to the last one, if people want.

One small problem I have is the lack of the correct font. I’m not going to shell out the money to get a license for Gotham Rounded, but without it, I’m not sure exactly where all the text elements should be positioned. Everthing will retain coordinates, though, so any machine with the right font should render it correctly. I’m not going to touch those labels at all (though I will re-do the “Runic” layouts with the correct positioning, and necessary size adjustments.

One question: Do the homing dots have a 1mm diameter? And how much space around them should we leave as a margin? (I’m thinking we shouldn’t try to put a label right up against one of them.)

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 18, 2016, 7:09am UTC](https://community.keyboard.io/t/blank-svg-template/226/13 "2016-12-18T07:09:27Z")

</div>

> [@jesse](#):
>
> One additional thing - I’m not 100% sure that the export came out of CAD at the exact angles it should have. (It’s very, very close, if not.) Within each hand’s keys, everything should be consistent, but there’s a slight chance that either or both hands are rotated a fraction of a degree.

After carefully re-working the left side, flipping it and overlaying it, I’ve found that the right side is rotated almost exactly 0.2º clockwise relative to the left side. @jesse: Would you prefer it if I try preserve that miniscule rotation, or remove the whole right side and re-create the text objects with the correct positions?

It looks like the only key stems on the left side that aren’t in almost-perfect alignment with your positioning guides are the ones on the thumb and palm keys. I’m guessing this is simply because the guides on those keys were harder to position in Inkscape.

I’m still working on fixing it up, but you can look at what I’ve got right now on [Dropbox](https://www.dropbox.com/s/k8duob396ul2uot/model01-template-wip.svg?dl=0).

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 18, 2016, 8:28am UTC](https://community.keyboard.io/t/blank-svg-template/226/14 "2016-12-18T08:28:02Z")

</div>

> [@merlin](#):
>
> After carefully re-working the left side, flipping it and overlaying it, I’ve found that the right side is rotated almost exactly 0.2º clockwise relative to the left side. @jesse: Would you prefer it if I try preserve that miniscule rotation, or remove the whole right side and re-create the text objects with the correct positions?

Blow it away, if you’d be so kind.

thank you!

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 18, 2016, 3:11pm UTC](https://community.keyboard.io/t/blank-svg-template/226/15 "2016-12-18T15:11:16Z")

</div>

> [@jesse](#):
>
> Blow it away, if you’d be so kind.

In that case, does it matter exactly how far apart the two halves are? (I can’t think of a reason, but maybe there is one.)

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 18, 2016, 9:55pm UTC](https://community.keyboard.io/t/blank-svg-template/226/16 "2016-12-18T21:55:28Z")

</div>

It does not matter.

Part of me would be tempted to place the two halves inside an image of the enclosure, but at least for factory communications purposes, having the default rotation for a bunch of the keys being 0 degrees is a win. (The factory will end up rotating everything to 0 degrees. The setup is a little byzantine…)

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 19, 2016, 7:18am UTC](https://community.keyboard.io/t/blank-svg-template/226/17 "2016-12-19T07:18:06Z")

</div>

Finally, a decent version of the [keycap template](https://www.dropbox.com/s/rsksi43tzx2fvv8/model01-keycap-template.svg?dl=0) on Dropbox. Fill and stroke styles of the objects are radically different, because I found it useful when doing fiddly positioning; it’s a fairly trivial matter to change those style properties now that everything is in logical layers. Many objects are clones, so it’s possible to mass-update them by just changing the parent object groups.

I’m not absolutely sure that I got the positioning for all the text labels correct, partly because I don’t have the Gotham Rounded font to work with. I’ll re-do runic keycap mockups starting from this template, but those don’t require fonts (or at least not ones that I don’t have access to).

Edit: Also note that my version of the positioning guide includes both the approximate stem tip, and a larger rectangle around it showing the dimensions of the “mortise” that it fits into on the keyswitch.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 19, 2016, 8:02am UTC](https://community.keyboard.io/t/blank-svg-template/226/18 "2016-12-19T08:02:26Z")

</div>

That’s lovely. Would you be ok with me checking it into git? If so, how would you prefer to be credited?

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 19, 2016, 6:23pm UTC](https://community.keyboard.io/t/blank-svg-template/226/19 "2016-12-19T18:23:35Z")

</div>

I’m okay with you checking it in, no credit required. I am making some further tweaks for the sake of consistency, with a touch of OCD. I also made a [wireframe version](https://www.dropbox.com/s/tfw13vzv965mwzb/model01-keycap-template-wireframe.svg?dl=0) that preserves the previous colors, if you want it to look more like the original.

---

<div class="post-metadata">

**Author:** ![fishheadsoup](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/fishheadsoup/32/161_2.png) [@fishheadsoup](https://community.keyboard.io/u/fishheadsoup)\
**Post date:** [December 19, 2016, 6:34pm UTC](https://community.keyboard.io/t/blank-svg-template/226/20 "2016-12-19T18:34:43Z")

</div>

Very nice @merlin.

Thanks for all your efforts.

[Next page](https://community.keyboard.io/t/blank-svg-template/226.md?page=2)
