2018-02-27 ぼくのキーボードのいま
ぼくのキーボードのいまを書く。
ぼくはいま MacBook Air と Let's Split を使っている。以前のものは 2018-02-03 にそこそこ書いた。改めて列挙すると Nyquist / MiniDox / ErgoDox EZ / REALFORCE91 UDK-G / REALFORCE106 あたりを使っている。 MacBook Air のキーボードなんてどうでもいいので、これ以降は書かない。
Let's Split は 4 * 6 * 2 の 48 キーのキーボードだ。格子型配列で左右分離型だ。文章で説明しても分かりづらいのでリンク先の画像を見ると良い。詳しくは検索したほうがいい。ぼくは 36 キーにして、これを使っている。リンクは組み立てなどのガイドのあるリポジトリだ。
なぜ 36 キーなのか。手の形と動かせる範囲から押しやすいキーを残したらそうなったというだけだ。
理想の物理配列は手にピッタリとくるもの(おそらくお椀型や親指用に横向きのスイッチがついたもの)だが、平面に限定すると 2017-09-01 にも書いた 36 キーだ。改めて書くと↓のような形だ。
.----------------------------------. ,----------------------------------.
| 1,1 | 1,2 | 1,3 | 1,4 | 1,5 | | 1,8 | 1,9 | 1,10 | 1,11 | 1,12 |
|------+------+------+------+------| |------+------+------+------+------|
| 2,1 | 2,2 | 2,3 | 2,4 | 2,5 | | 2,8 | 2,9 | 2,10 | 2,11 | 2,12 |
|------+------+------+------+------| |------+------+------+------+------|
| 3,1 | 3,2 | 3,3 | 3,4 | 3,5 | | 3,8 | 3,9 | 3,10 | 3,11 | 3,12 |
`--------------------+------+------+------.,------+------+------+--------------------'
| 4,4 | 4,5 | 4,6 || 4,7 | 4,8 | 4,9 |
`--------------------'`--------------------'
(3 * 5 + 3) * 2 の 36 キー。これにもっとも近いのは MiniDox だ。
Minidox は 18 * 2 の 36 キーのキーボードだ。格子型ではなく、左右は揃っていて上下にズレている。親指の島は独立し、すこしずつ傾いており、中央の 2 キーは 1.5u になっている。文章で説明しても分かりづらいのでリンク先の画像を見ると良い。リンクは PCB データの置かれているリポジトリだ。
MiniDox は人差し指〜小指について Let's Split よりもしっくりきたのだけど、親指の位置がしっくりこなかった。ぼくの理想では外側のキー ((4,4), (4,9)) は人差し指の真下までに留めてほしい。内側のキー ((4,6), (4,7)) の傾きはもうすこし控えめで良い。小指はもう数 mm ほど下げてほしい。
次にキーマップだ。
ErgoDox EZ 以降は QMK Firmware を使っている。 QMK は TMK から派生したものだ。 QMK のドキュメントに書いてある 。
QMK はいろいろごちゃごちゃしている。説明しはじめると大変だ。ぼくにとって大切なのはレイヤーだ。レイヤーはドキュメントの Keymap Overview を見ると良い。
なぜ、レイヤーが大切なのか。それは 36 キーというキー数の制約があるからだ。
36 キーで通常のキーボードと同等の機能を実現しようとすると、どうしてもひとつの(物理的な)キーで複数の(論理的な)キーの役割を果たさなければいけない。レイヤーごとに役割を持たせ、それらを切り替えることで、実現する……というわけだ。
また、ぼくにはひとつこだわりがある。「同時押し」が嫌いということだ。 Ctrl / Shift / Alt / GUI (Cmd / Win) のモディファイアキーほか、上記のレイヤーを切り替えるレイヤーキー。これらは通常「同時押し」を要求する。ぼくはそれを避けたい。
QMK は OSL (oneshot layer) や OSM (oneshot modifier) という機能を持っている。これは Sticky Key とか複合キーなどと呼ばれているものだ。……が、いろいろ制約があって使いづらい。ぼくはいま v22 を使っているのだけど、このキーマップはわりと QMK Firmware の機能から外れている。独自で OSL や OSM に近い機能を実装しているからだ。
v22 は、「キー数の制約」・「同時押し」のふたつを克服できるように実装している。詳細は面倒なので書かない。
最後に具体的なキーマップ (レイヤー) を挙げる。
親指はスペースを除いて、すべてレイヤーキーだ。モディファイアキーでさえ別のレイヤー (L4, L5) に押し込んでいる。ここまで徹底されているキーマップはあまりないと思う。この判断のおかげでモディファイアキーはゆとりをもって配置でき、左右対称にできている。
Layer0
.----------------------------------. ,----------------------------------.
| Q | W | E | R | T | | Y | U | I | O | P |
|------+------+------+------+------| |------+------+------+------+------|
| A | S | D | F | G | | H | J | K | L | L3 |
|------+------+------+------+------| |------+------+------+------+------|
| Z | X | C | V | B | | N | M | , | . | / |
`--------------------+------+------+------.,------+------+------+--------------------'
| L4 | L1 | SP || L2 | L1 | L5 |
`--------------------'`--------------------'
Layer4
,----------------------------------. ,----------------------------------.
| | Eisu | ____ | | | | | | | | |
|------+------+------+------+------| |------+------+------+------+------|
| Ctrl |Shift | Alt | GUI | | | | | | | |
|------+------+------+------+------| |------+------+------+------+------|
| | | | | | | | | | | |
`--------------------+------+------+------.,------+------+------+--------------------'
| | | || | | |
`--------------------'`--------------------'
Layer5
,----------------------------------. ,----------------------------------.
| | | | | | | | | ____ | Kana | |
|------+------+------+------+------| |------+------+------+------+------|
| | | | | | | | GUI | Alt |Shift | Ctrl |
|------+------+------+------+------| |------+------+------+------+------|
| | | | | | | | | | | |
`--------------------+------+------+------.,------+------+------+--------------------'
| | | || | | |
`--------------------'`--------------------'
2 つめのレイヤー (L1) には数字・記号・カーソルを押し込んでいる。数字は標準の並び、カーソルは HJKL 、記号は ASCII コード順だ。
Layer1
,----------------------------------. ,----------------------------------.
| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|------+------+------+------+------| |------+------+------+------+------|
| : | ; | , | - | . | | Left | Down | Up |Right | |
|------+------+------+------+------| |------+------+------+------+------|
| / | @ | [ | \ | ] | | ^ | _ | | | |
`--------------------+------+------+------.,------+------+------+--------------------'
| | | || | | |
`--------------------'`--------------------'
3 つめのレイヤー (L2) は適当。普段押さないキーを押し込んでいる。
Layer2
,----------------------------------. ,----------------------------------.
| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|------+------+------+------+------| |------+------+------+------+------|
| F11 | F12 | F13 | F14 | F15 | | Mute |VolDn |VolUp | | |
|------+------+------+------+------| |------+------+------+------+------|
| F16 | F17 | F18 | F19 | F20 | | | | | |RESET |
`--------------------+------+------+------.,------+------+------+--------------------'
| | | || | | |
`--------------------'`--------------------'
4 つめのレイヤー (L3) は Ctrl との組み合わせで表現できそうな、通常のキーボードでは(物理的な)キーが用意されているようなものを配置している。このレイヤーへのレイヤーキーは ;
の位置 (L1) を使っている。この位置は特等席だ。ホームポジションを維持したまま押せる。
Layer3
,----------------------------------. ,----------------------------------.
| Esc | | End | | | | | | Tab | | |
|------+------+------+------+------| |------+------+------+------+------|
| Home | | Del | | | | BS | | | | |
|------+------+------+------+------| |------+------+------+------+------|
| | | | | | | |Enter | | | |
`--------------------+------+------+------.,------+------+------+--------------------'
| | | || | | |
`--------------------'`--------------------'
まだこのキーマップにして日が浅いので、慣れるまではもうしばらくかかりそうだ。
まだ理想の物理配列にはたどり着いていない。キーマップは先週あたりで随分マシになってきたが、 QMK の余計な機能を取り除いた独自のものをつくりたい。まだまだ先は長い。