Group Build prototyping phase

User avatar
matt3o
-[°_°]-

07 May 2014, 23:30

webwit wrote:
matt3o wrote:I believe I nailed it :)

...

this is so funky :) I might end up making it. Look at it, it's adorable... and still stabilizer-free!

The problem with 1.75u is still anecdotal so not worth commenting until I did some serious testing.
I like it!
got the duck seal of approval! :)

edit: I do hope 1.75 works as spacebars, otherwise I'll try with 1.5 as Muir suggested.
Last edited by matt3o on 07 May 2014, 23:37, edited 2 times in total.

User avatar
Muirium
µ

07 May 2014, 23:37

Can't argue with Duckthority…

User avatar
webwit
Wild Duck

07 May 2014, 23:51

Muirium wrote:It's an anecdote you can test for yourself: try wobbling your Caps Lock / Control key, and then try Tab just above it. That's the difference between 1.75u and 1.5u. It's not horrible, but it is there. 1.75u is very close to needing a stab.
Old Korean trick, applied differently. What happens if you remove the 1.75u cap, cut a small square of scotch tape, apply it on the stem, and put the keycap back on again? Is the wobble still the same?

User avatar
bearcat

08 May 2014, 00:52

QQ: what's the motivation behind avoiding stabs? hard to source?

also, curious if anyone's tried this: if you have e.g. a 3 unit or greater, can you just mount three switches and take the springs out of all but the middle switch? does that work?

User avatar
Muirium
µ

08 May 2014, 00:59

Not too difficult to source. I have hoarded a few for these projects anyway! The reasons to avoid them are: general simplicity (no need to consider their mounting points in our plate and PCB designs), more compact layouts with smaller keys, and arguably better feel and sound. You can surely hear and feel the stabilised keys in your board while typing. Stabs make a difference.

I'm not against using them (I picked them up for a reason) but the idea of going stab-free is interesting in its own right. At least as an experiment.

As for using switches as stabs:

http://deskthority.net/workshop-f7/grou ... ro#p160876

It doesn't quite work. Those wires that stabs have are there for a reason!

User avatar
bearcat

08 May 2014, 01:17

ah, ok; so even if you take the springs out, you're missing the torsion wire?

Here's the svg for the plate, if anyone wants to put a border around it & ponoko it:

Code: Select all

<svg width="1000mm" height="400mm" ng-show="renderSvg" viewBox="0 0 1000 400" class="">
    <!-- ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(20 20) rotate(0 0.5 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(40.05 20) rotate(0 -19.549999999999997 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(60.1 20) rotate(0 -39.6 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(80.15 20) rotate(0 -59.650000000000006 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(100.2 20) rotate(0 -79.7 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(120.25 20) rotate(0 -99.75 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(140.3 20) rotate(0 -119.80000000000001 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(160.35 20) rotate(0 -139.85 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(180.4 20) rotate(0 -159.9 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(200.45000000000002 20) rotate(0 -179.95000000000002 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(220.5 20) rotate(0 -200 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(240.55 20) rotate(0 -220.05 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(260.6 20) rotate(0 -240.10000000000002 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(280.65000000000003 20) rotate(0 -260.15000000000003 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(300.7 20) rotate(0 -280.2 0.5)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(20 40.05) rotate(0 0.75 -19.549999999999997)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(50.075 40.05) rotate(0 -29.575000000000003 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(70.125 40.05) rotate(0 -49.625 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(90.175 40.05) rotate(0 -69.675 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(110.22500000000001 40.05) rotate(0 -89.72500000000001 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(130.275 40.05) rotate(0 -109.775 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(150.32500000000002 40.05) rotate(0 -129.82500000000002 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(170.375 40.05) rotate(0 -149.875 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(190.425 40.05) rotate(0 -169.925 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(210.475 40.05) rotate(0 -189.975 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(230.525 40.05) rotate(0 -210.025 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(250.57500000000002 40.05) rotate(0 -230.07500000000002 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(270.625 40.05) rotate(0 -250.125 -19.549999999999997)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(290.675 40.05) rotate(0 -269.925 -19.549999999999997)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(20 60.1) rotate(0 0.875 -39.6)">
<path d="M10.54375 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="33.3375" height="19.05" x="0.875" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(55.0875 60.1) rotate(0 -34.5875 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(75.1375 60.1) rotate(0 -54.6375 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(95.1875 60.1) rotate(0 -74.6875 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(115.2375 60.1) rotate(0 -94.7375 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(135.28750000000002 60.1) rotate(0 -114.78750000000002 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(155.3375 60.1) rotate(0 -134.8375 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(175.38750000000002 60.1) rotate(0 -154.88750000000002 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(195.4375 60.1) rotate(0 -174.9375 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(215.4875 60.1) rotate(0 -194.9875 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(235.5375 60.1) rotate(0 -215.0375 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(255.5875 60.1) rotate(0 -235.0875 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(275.63750000000005 60.1) rotate(0 -255.01250000000005 -39.6)">
<path d="M5.53125 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="23.8125" height="19.05" x="0.625" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(300.7 60.1) rotate(0 -280.2 -39.6)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(20 80.15) rotate(0 0.625 -59.650000000000006)">
<path d="M5.53125 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="23.8125" height="19.05" x="0.625" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(45.0625 80.15) rotate(0 -24.5625 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(65.11250000000001 80.15) rotate(0 -44.61250000000001 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(85.16250000000001 80.15) rotate(0 -64.66250000000001 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(105.2125 80.15) rotate(0 -84.7125 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(125.2625 80.15) rotate(0 -104.7625 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(145.3125 80.15) rotate(0 -124.8125 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(165.3625 80.15) rotate(0 -144.8625 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(185.4125 80.15) rotate(0 -164.9125 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(205.4625 80.15) rotate(0 -184.9625 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(225.51250000000002 80.15) rotate(0 -205.01250000000002 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(245.5625 80.15) rotate(0 -225.0625 -59.650000000000006)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(265.6125 80.15) rotate(0 -244.8625 -59.650000000000006)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(295.6875 80.15) rotate(0 -275.0625 -59.650000000000006)">
<path d="M5.53125 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="23.8125" height="19.05" x="0.625" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(20 100.2) rotate(0 0.75 -79.7)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(50.075 100.2) rotate(0 -29.575000000000003 -79.7)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(70.125 100.2) rotate(0 -49.375 -79.7)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(100.2 100.2) rotate(0 -79.325 -79.7)">
<path d="M10.54375 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="33.3375" height="19.05" x="0.875" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(135.28750000000002 100.2) rotate(0 -114.41250000000002 -79.7)">
<path d="M10.54375 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="33.3375" height="19.05" x="0.875" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(170.375 100.2) rotate(0 -149.5 -79.7)">
<path d="M10.54375 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="33.3375" height="19.05" x="0.875" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(205.4625 100.2) rotate(0 -184.5875 -79.7)">
<path d="M10.54375 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="33.3375" height="19.05" x="0.875" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(240.55 100.2) rotate(0 -219.8 -79.7)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(270.625 100.2) rotate(0 -250.125 -79.7)">
<path d="M3.0250000000000004 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="19.05" height="19.05" x="0.5" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() --><g ng-repeat="key in keys()" ng-mouseover="hoveredKey=key" ng-mouseleave="hoveredKey=null" ng-bind-html="key.svg" class="ng-scope ng-binding"><g transform="translate(290.675 100.2) rotate(0 -269.925 -79.7)">
<path d="M8.037500000000001 3.0250000000000004 h1 v-1 h3.5 v1 h5.05 v-1 h3.5 v1 h1v1 h1 v3.5 h-1 v5.05 h1 v3.5 h-1 v1h-1 v1 h-3.5 v-1 h-5.05 v1 h-3.5 v-1 h-1v-1 h-1 v-3.5 h1 v-5.05 h-1 v-3.5 h1 v-1" fill="lightgrey" stroke="black" stroke-width=".1mm"></path><rect width="28.575000000000003" height="19.05" x="0.75" y="0.5" stroke="black" stroke-width=".1mm" fill="none"></rect>
</g>
</g><!-- end ngRepeat: key in keys() -->
  </svg>


User avatar
bearcat

08 May 2014, 01:46

(looks like this)
plate.png
plate.png (36.38 KiB) Viewed 9282 times

User avatar
matt3o
-[°_°]-

08 May 2014, 08:46

bearcat wrote:QQ: what's the motivation behind avoiding stabs? hard to source?

also, curious if anyone's tried this: if you have e.g. a 3 unit or greater, can you just mount three switches and take the springs out of all but the middle switch? does that work?
the stab-free is mainly an exercise in style. Also consider that the most expensive caps are 2u and up. If you remove them from the equation you end up with a rather inexpensive keyset.

There are many numpad and pos (mainly) with 2u/2-stems caps. For bigger keys you need the stabilizer because the metal wire distributes the force along the whole size of the keycap. So if you press on one end, the wire brings part of the force to the other side.

woody
Count Troller

08 May 2014, 09:42

What is the choice of stabilizers for PCB (no plate)?

User avatar
matt3o
-[°_°]-

08 May 2014, 10:00

woody wrote:What is the choice of stabilizers for PCB (no plate)?
PCB mounted cherry stabilizer. don't think we have much options there.

User avatar
Broadmonkey
Fancy Rank

08 May 2014, 10:28

Fortunately it's also the best option ;)

User avatar
DanielT
Un petit village gaulois d'Armorique…

08 May 2014, 11:15

This is what I was thinking for the Teensy and USB :
ScreenShot1.png
ScreenShot1.png (185.3 KiB) Viewed 9233 times
ScreenShot.png
ScreenShot.png (337.55 KiB) Viewed 9234 times

User avatar
matt3o
-[°_°]-

08 May 2014, 11:26

yes it's totally feasible, but I don't think it fits a poker case. At least it wouldn't fit the Alu one I have that admittedly is very slimline

User avatar
DanielT
Un petit village gaulois d'Armorique…

08 May 2014, 11:47

I would pass on the Poker case compatibility, the cases are expensive, not easy to source in EU, and building a custom case is more fun :d . There are so many options for cases: wood, steel, gheto' style, aluminum, acrylic. Localy I found a fablab where a case would be around 30-40EUR in acrylic, with a nice choice of colors.

The PCB is a more interesting part :D

User avatar
Muirium
µ

08 May 2014, 14:13

Well, if they're good and we come up with a nice design, I might take you up on that! I bet cut acrylic is more expensive up here.

But I'm still keen to see how the wood test run works out. We're waiting on Matt's next paycheck, right!?

Metal Poker cases are pretty dashing, and I've always found them more appealing than the Poker itself. So I'm interested in a compatible PCB just in case. (Ugh!) Because I'm sure I can cook up something much more interesting, layout wise, in that size. Especially if there's cases that can take the PCB mounted header you showed!

User avatar
DanielT
Un petit village gaulois d'Armorique…

08 May 2014, 14:26

O yes! Poker cases are cool, I would love one for my Poker. If the PCB could fit the case that would bee something :evilgeek: and I think than it is only a matter of finding the right position on the pcb for the Teensy. I have to find the topic where I saw a custom PCB + Teensy fitted on a Poker case, I saw that and it worked, the guy did some really nice things there.

I'm curious about the wooden case also, I'm waiting for the first experiments. Metal and wood are really cool combination.

L.E: I found it :D http://geekhack.org/index.php?topic=24082.0

The teensy is placed on the upper side of the PCB under the space bar:
ScreenShot2.png
ScreenShot2.png (116 KiB) Viewed 9193 times

woody
Count Troller

08 May 2014, 16:09

matt3o wrote:
woody wrote:What is the choice of stabilizers for PCB (no plate)?
PCB mounted cherry stabilizer. don't think we have much options there.
Thanks. I lack somewhat in the stabilizer department

User avatar
matt3o
-[°_°]-

08 May 2014, 16:26

DanielT wrote:The teensy is placed on the upper side of the PCB under the space bar:
ScreenShot2.png
that can be done with PCB mounted switches only though. Or you could place a big hole in the plate just under the spacebar

User avatar
Muirium
µ

08 May 2014, 16:29

Which you pretty much do already for PCB mount Cherry stabs.

User avatar
DanielT
Un petit village gaulois d'Armorique…

08 May 2014, 17:06

Exactly :D and hole will not be vizible because is hidden behind the key caps. I think this is a good option if we want the PCB to be copatible with the Poker case. There are some problems if the bottom row has no classic space bar ... :(

User avatar
matt3o
-[°_°]-

08 May 2014, 17:50

DanielT wrote:Exactly :D and hole will not be vizible because is hidden behind the key caps. I think this is a good option if we want the PCB to be copatible with the Poker case. There are some problems if the bottom row has no classic space bar ... :(
yes, definitely an option, but considering that GH60 is just around the corner, I don't find "standard" 60% layouts very appealing. Anyway if you want to experiment with that config, I'll be glad to help!

In the meantime I've probably found another laser cutter that is way cheaper than the other I was using so far!

User avatar
Muirium
µ

08 May 2014, 17:58

Nice! Because I've too many projects in mind this year to settle on just one…

User avatar
DanielT
Un petit village gaulois d'Armorique…

08 May 2014, 19:13

GH60.... I lost that boat, maybe I'll find one after the boards are shipped.
But is more fun building something from scrach, that's why I love this topic :)

User avatar
Muirium
µ

08 May 2014, 19:53

When the going gets weird, the weird turn custom!

Besides, I've M84s to put to good use. PCB mount only, and cute little buggers with MX mounts!

Image

Bet the GH60 doesn't support those. I have low profile plans for these little guys. Hopefully even wireless ones…

User avatar
pyrelink

08 May 2014, 23:08

Muirium wrote:When the going gets weird, the weird turn custom!

Besides, I've M84s to put to good use. PCB mount only, and cute little buggers with MX mounts!
How well do most key caps fit on those? They look like they would need some sort of low profile cap...

User avatar
Muirium
µ

08 May 2014, 23:12

Everything I have works fine. Including SA profile, believe it or not! The switch travel is only 2mm, but the mount holds even tall caps just nicely.

User avatar
pyrelink

08 May 2014, 23:36

Speaking of key caps, the way that this is going, I assume it would be a good idea (now that 7bit has returned) to add a bunch of space bar options from whats left of Round 5?

I am really liking the stab-less ideas by the way.

User avatar
Muirium
µ

08 May 2014, 23:52

Correct!

User avatar
Vierax

09 May 2014, 15:58

“Can read my, can read my, no you can't read my Poker case…”
I'm already out :mrgreen:

User avatar
matt3o
-[°_°]-

09 May 2014, 16:06

Vierax wrote:“Can read my, can read my, no you can't read my Poker case…”
I'm already out :mrgreen:
Image

Post Reply

Return to “Workshop”