adds keyboardio post

This commit is contained in:
Clément Hertling 2019-12-13 16:37:07 -05:00
parent 98cd93b90b
commit 7f59a40446

141
content/keyboard.io.md Normal file
View File

@ -0,0 +1,141 @@
Title: My Keyboard.io
Date: 2019-07-19
Author: Wxcafe
Category: Misc
Slug: keyboard.io
My Keyboard.io
--------------
Over a year ago now I bought [a keyboard](https://shop.keyboard.io), and
I wanted to write about it then, but I figured I'd wait until I could type on it
correctly and actually tell if it was a good keyboard.
Turns out, it took me about three weeks to learn how to type correctly, and it's
a really, really good keyboard... but I forgot about writing this 🤦 So here we
go.
So. The keyboardio is a split, ergonomic, very expensive keyboard. It's shipped
with two "tent stands" that are basically tilted octopi that you can put the
keyboard halves on to give them a tilt, two "center bars", one flat and one
tilted, that allow you to attach the two keyboard halves together, a usb-a to
usb-c cable, and two rj45 cables, one very short and one longer, that are used
to connect both halves of the keyboard... and of course both halves of the
keyboard itself.
Personally I use both tented stands and the tilted center bar now, and basically
use the keyboard like a normal single-body keyboard, except each half is tilted,
but you can use it in any way you want. Each half has a camera screw mount on
the bottom so you can even use it on tripods or camera arms I guess.
The layout is pretty different from what "standard" keyboards present. There's
basically three groups of keys: the `fn` keys, that you use with your palms, the
'modifier' keys (`[ctrl]`,`[backspace]`, `[command/super]`, `[shift]`; and
`[shift]`, `[alt]`, `[space]`, `[ctrl]`), that you use with your thumbs, and
finally the "character" keys that you use with the last four fingers (these also
include `[AltGR]`, `[Enter]`, `[PgUp]` and `[PgDn]`, a `[num]` key that switches
to numpad mode, a `[Prog]` key that starts playing prog rock (uh, allows you to
flash the firmware, more on that later), `[esc]`, `[tab]`, a `[led]` key that
switches the led lighting mode, and finally the `[any]` key, which... outputs
a random alphanumerical character). As I said previously though, it's not too
hard to get used to, and it's actively more efficient once you're used to it
(also it reduced my wrist pains from "hurts a bit after a day of work" to
"nonexistent even after 14 hours straight of typing"). The keys are shaped
differently too, as in they follow the shape of fingers resting naturally on the
keyboard.
So, yeah, this is a nice, comfortable, and
weirdly-but-actually-pretty-well-laid-out keyboard. But there's a few more
things that make it worth the (admittedly very high) price:
- First, the body is entirely made of wood, the keys are high-quality, and the
whole thing is hand-assembled. It's generally very well put together, and it
looks really good and will last for a while.
- Second, and most important: the firmware is open-source and entirely
rewritable. The keyboard is basically an Arduino, and you can do anything you
want with it.
Let's talk about the build quality. Actually, let me show you a few pictures of
the build, outside and (more interestingly) inside!
| ![The rainbow colors are good...](https://pub.wxcafe.net/img/keyboardio_dual_face_dark.jpg) |
| :--: |
| *The rainbow colors are good...* |
| ![Look at that small rj45 cable! It's so cute!](https://pub.wxcafe.net/img/keyboardio_dual_back.jpg) |
| :--: |
| *Look at that small rj45 cable! It's so cute!* |
| ![Without the wooden enclosure...](https://pub.wxcafe.net/img/keyboardio_dual_open_front.jpg) |
| :--: |
| *Without the wooden enclosure...* |
| ![The back of the PCBs have cute little messages! Thanks!](https://pub.wxcafe.net/img/keyboardio_dual_pcb_back.jpg) |
| :--: |
| *The back of the PCBs have cute little messages! Thanks!* |
| ![The "octopi" that allow one to adjust the keyboard tilt](https://pub.wxcafe.net/img/keyboardio_dual_octopi.jpg) |
| :--: |
| *The "octopi" that allow one to adjust the keyboard tilt* |
| ![The wooden enclosures](https://pub.wxcafe.net/img/keyboardio_dual_wood.jpg) |
| :--: |
| *The wooden enclosures* |
| ![Finally, the right half just opened up](https://pub.wxcafe.net/img/keyboardio_right_open_dual.jpg) |
| :--: |
| *Finally, the right half just opened up* |
<!-- [insert images here] -->
Now, I said the firmware was open-source. And it is, it's named
[Kaleidoscope](https://github.com/keyboardio/Kaleidoscope). The repo you
probably want is actually [this
one](https://github.com/keyboardio/Model01-Firmware), though. It's really easy
to configure through the `Model01-Firmware.ino` file. This allows you to remap
all the "useless" keys in the default layout, define new functions for these
keys, create "layers" (basically alternate layout that you switch to/from
through a shortcut), importing modules (libraries basically), change the LED
patterns, use the expansion pins if you want... You can do anything, it's just
an arduino with a lot of inputs basically!! It's great. My configuration is
available [here](https://git.wxcafe.net/snippets/21) and is generally pretty
simple to read. The only thing that might be surprising is the third keymap:
`[2] = KEYMAP_STACKED ()`. This is a keymap for Steno, as provided by
[GeminiPR](https://github.com/keyboardio/Kaleidoscope/blob/master/src/Kaleidoscope-Steno.h),
an implementation of Steno protocols for Kaleidoscope, which is imported by
`KALEIDOSCOPE_INIT_PLUGINS(GeminiPR, [...]);`
Steno... Should I talk about steno? Alright, let me talk about steno quickly:
Steno is an input method that allows one to type much, much faster than normal
by pressing multiple keys at the same time (like one would on a piano, for
example). The keys are then interpreted in the fixed order of the system to
reconstruct words, or parts of words. It's pretty involved to learn, but it's
amazing: the best touch typists can reach about 70 words per minute, while
regular stenographers can write at 225 words per minute. The system is entirely
customizable, so you can program on a steno keyboard (in fact the person who
introduced me to the concept, [@Stenoknight](https://twitter.com/stenoknight),
writes python on their steno system). Historically, Steno was used for note
taking in meetings and courtrooms, and the key presses made punches in a ribbon,
which was then read back to make a readable document. Nowadays, since we have
computers, we can have a program that does this translation automatically and in
real time: the free and open-source software that does that is called
[Plover](https://www.openstenoproject.org/plover/). When it comes to the
KeyboardIO, it can be programmed through GeminiPR to switch to a serial
communication mode, that works with plover. I'm still (very early...) in the
process of learning steno, the position of the keys, the combinations and the
vocabulary, but I'm very excited. It might not be very useful in everyday life
(even though typing at even 150wpm would be so cool...) but it's fun and
interesting, so. There.
But yeah, the firmware allows you to switch to serial and then back to
presenting a regular HID keyboard, seamlessly. It allows you to execute code on
the keyboard, in fact I'm pretty sure you could reasonably implement a u2f
device in the keyboard (tho you're lacking a real secure element, I guess...)
And it's editable by someone like me, who doesn't know shit about C or
programming or anything like that. It's great.
So... I'm not saying you should buy this keyboard, obviously. It's really great,
and it suits me really well, but it's still very expensive, and it does take
a little time getting used to. Was this post just an excuse to clean my
keyboard? ... maybe... But I also wanted finally make this, since it's a tool
I use a lot and I had been meaning to write about it for a while...