adds keyboardio post
This commit is contained in:
parent
98cd93b90b
commit
7f59a40446
141
content/keyboard.io.md
Normal file
141
content/keyboard.io.md
Normal 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...* |
|
||||
|
||||
|  |
|
||||
| :--: |
|
||||
| *Look at that small rj45 cable! It's so cute!* |
|
||||
|
||||
|  |
|
||||
| :--: |
|
||||
| *Without the wooden enclosure...* |
|
||||
|
||||
|  |
|
||||
| :--: |
|
||||
| *The back of the PCBs have cute little messages! Thanks!* |
|
||||
|
||||
|  |
|
||||
| :--: |
|
||||
| *The "octopi" that allow one to adjust the keyboard tilt* |
|
||||
|
||||
|  |
|
||||
| :--: |
|
||||
| *The wooden enclosures* |
|
||||
|
||||
|  |
|
||||
| :--: |
|
||||
| *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...
|
Loading…
x
Reference in New Issue
Block a user