Skip to content

Instantly share code, notes, and snippets.

@wez wez/Flutterby.kbd.json
Last active Sep 1, 2018

Embed
What would you like to do?
Flutterby
[
{
"name": "Flutterby",
"author": "Wez Furlong",
"switchMount": "cherry",
"switchBrand": "cherry",
"switchType": "MX1A-G1xx",
"plate": true
},
[
{
"r": 15,
"rx": 8,
"ry": 1.125,
"x": -4,
"c": "#c4c8c5",
"a": 7
},
"3"
],
[
{
"y": -0.875,
"x": -5
},
"2",
{
"x": 1
},
"4"
],
[
{
"y": -0.875,
"x": -2
},
"5"
],
[
{
"y": -0.875,
"x": -6
},
"1",
{
"x": 4
},
"M0"
],
[
{
"y": -0.375,
"x": -4
},
"E"
],
[
{
"y": -0.875,
"x": -5
},
"W",
{
"x": 1
},
"R"
],
[
{
"y": -0.875,
"x": -2
},
"T"
],
[
{
"y": -0.875,
"x": -7,
"c": "#009057"
},
"",
{
"c": "#c4c8c5"
},
"Q",
{
"x": 4
},
"["
],
[
{
"y": -0.375,
"x": -4
},
"D"
],
[
{
"y": -0.875,
"x": -5
},
"S",
{
"x": 1,
"n": true
},
"F"
],
[
{
"y": -0.875,
"x": -2
},
"G"
],
[
{
"y": -0.875,
"x": -7,
"c": "#cd2f2c"
},
"",
{
"c": "#c4c8c5"
},
"A",
{
"x": 4
},
"-"
],
[
{
"y": -0.375,
"x": -4
},
"C"
],
[
{
"y": -0.875,
"x": -5
},
"X",
{
"x": 1
},
"V"
],
[
{
"y": -0.875,
"x": -2
},
"B"
],
[
{
"y": -0.875,
"x": -7,
"c": "#909596"
},
"Shift",
{
"c": "#c4c8c5"
},
"Z"
],
[
{
"r": 30,
"rx": 6.375,
"ry": 5.375,
"y": -1,
"c": "#ffc100"
},
"Gui"
],
[
{
"x": -1,
"c": "#009057"
},
"L1",
{
"c": "#f16f3b"
},
"Hyper"
],
[
{
"x": -1,
"c": "#009057"
},
"BkSp",
"Tab"
],
[
{
"r": -30,
"rx": 10.25,
"y": -1,
"x": -1,
"c": "#ffc100"
},
"Gui"
],
[
{
"x": -1,
"c": "#f16f3b"
},
"Esc/Ctrl",
{
"c": "#009057"
},
"L2"
],
[
{
"x": -1,
"c": "#0075ad"
},
"Enter",
{
"c": "#909596"
},
"Space"
],
[
{
"r": -15,
"rx": 8.625,
"ry": 1.125,
"x": 3,
"c": "#c4c8c5"
},
"8"
],
[
{
"y": -0.875,
"x": 2
},
"7",
{
"x": 1
},
"9"
],
[
{
"y": -0.875,
"x": 1
},
"6"
],
[
{
"y": -0.875
},
"M1",
{
"x": 4
},
"0"
],
[
{
"y": -0.375,
"x": 3
},
"I"
],
[
{
"y": -0.875,
"x": 2
},
"U",
{
"x": 1
},
"O"
],
[
{
"y": -0.875,
"x": 1
},
"Y"
],
[
{
"y": -0.875
},
"]",
{
"x": 4
},
"P",
"\\"
],
[
{
"y": -0.375,
"x": 3
},
"K"
],
[
{
"y": -0.875,
"x": 2,
"n": true
},
"J",
{
"x": 1
},
"L"
],
[
{
"y": -0.875,
"x": 1
},
"H"
],
[
{
"y": -0.875
},
"=",
{
"x": 4
},
";",
"'"
],
[
{
"y": -0.375,
"x": 3
},
","
],
[
{
"y": -0.875,
"x": 2
},
"M",
{
"x": 1
},
"."
],
[
{
"y": -0.875,
"x": 1
},
"N"
],
[
{
"y": -0.875,
"x": 5
},
"/",
{
"c": "#909596"
},
"Shift"
],
[
{
"y": -0.375,
"x": 3,
"c": "#c4c8c5"
},
"UP"
],
[
{
"x": 2
},
"LEFT",
"DOWN",
"RIGHT"
]
]

Motivation

I wanted something very close to the ergodox but in a form factor that would work with my laptop. The goals were:

  • Must fit over the keyboard of a 13" macbook pro
  • Ortholinear layout with thumb clusters
  • Avoid shoulder tension by increasing separation

This particular layout has the halves each rotated 15 degrees from vertical; this happens to feel more comfortable for my shoulder separation than the 10 degrees of the Atreus.

The thumb clusters are similar to the ergodox but are a bit more compact; it doesn't require such an extreme thumb stretch when you are reaching from the home row position. Similarly, the key positioning and layout on the halves is very similar to the ergodox, but eliminates a couple of the outlying keys to avoid extreme hand/finger stretches and to reduce the footprint of the board.

Some technical notes

The left half has its origin at the key that would be to the right of the copy key (that's the key to the right of the top right key of the left half). The right half has its origin at the key that is at the top left of the right half (the paste key).

For the thumb clusters, the origins are similar: the origin is the inside corner of the L shape.

Placing the origins in this way makes it simpler to rotate the halves and make sure that they line up: the ry values of the left and right halves should be the same.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.