左手骨折したので右手専用キーボードを自作した話

# 左手骨折しました

エンジニアにとって、手は商売道具です。手が使えなければ一般的なタイピングができず、コードを書くことができない。すなわち**エンジニアとしての死**を意味します。多くのキーボードは両手が使えることを前提に設計されているため、片手が使えないだけでも一気にハードモードになります。

わかっていた。わかっていたのに、事故というのは突然起きてしまうものです。

2週間ほど前、陽キャの真似をして人生2回目のスノーボードに挑戦しました。思ったより自由に滑れるなぁ、陽キャの道も近いなぁ、と調子に乗った次の瞬間でした。スピードを出し過ぎ、恐怖から重心を崩してしまい、派手に転んでしまいました。しかも、お尻からではなく左手から転んでしまったのです。。。

直後、左手首があらぬ方向へ曲がった感覚と、経験したことのない痛みが走りました。僕はこの人生、骨折の経験は一度もなかったのですが、それでも一瞬で骨が逝ったことを悟りました。

すぐに病院へ駆け込み、レントゲンを撮影すると。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266704/b11ea79a-ce37-d208-91ca-393db4599b60.png)
(引用：https://ja.wikipedia.org/wiki/%E6%A9%88%E9%AA%A8%E9%81%A0%E4%BD%8D%E7%AB%AF%E9%AA%A8%E6%8A%98)

折れてました。（画像はWikipediaから拾ったものですが、ほぼ同じ様な折れ方でした）

全治2ヶ月。目の前が真っ暗になりました。しかも、当時僕は2週間後に入社式・研修を控えていたのです。社員・友人・家族…今後周囲にかけてしまう迷惑を想像し、情けなさと申し訳なさで涙がこぼれ落ちました…（ガチ）

が、僕はどうやら本当に追い詰められると意外とポジティブになるらしく、一通り落ち込んだ後ある事を思いついてしまうのです。

「まだ右手が残ってるじゃないか…」

「そうだ、**右手専用キーボードを自作しよう！！！！**」

# 要件

前置きも踏まえて、自作するキーボードは以下の要件を満たす必要がありました。

- 右手だけでほぼ全てのキーを打てる様にする
- あくまで左手が完治するまでの一時的なキーボード
- 2週間である程度の速度で打てる様にする
- Vimキーバインド使いたい

### 右手だけでほぼ全てのキーを打てる様にする

大前提です。option, ファンクションキーは普段ほとんど使わないので必要ありませんが、それ以外のキーは全て右手だけで打てるようにする必要があります。

### あくまで左手が完治するまでの一時的なキーボード

左手を失ったわけではないので、完治したらスムーズに両手打ちへ移行できるようにします。そのためqwerty配列っぽい感じが望ましいです。

### 2週間である程度の速度で打てる様になる

要は学習コストを下げたいという話です。そのためqwerty配列っぽい感じが望ましいです。（二回目）

### Vimキーバインド使いたい

Vim (or (IntelliJ + vim)) を使う人間なので、できるだけ楽にVimキーバインドを使えるようにしたいです。特にh, j, k, lは横に並んでないと死活問題です。

以上の要件に沿うようにキーボードを自作する必要がありました。

# 既存の片手キーボード

片手キーボードという発想自体は特に新しいものではありません。有名な片手キーボードとしてFrogpadがあるようです。現在は入手困難っぽいのですが、このFrogpadを自作キーボードで有名なHelixで再現したFroggyというものがあるようです。

詳しくはこちらの記事を参照。。。

> 左右分割キーボードHelixをFrogpadライクな片手キーボードとして使う
https://hum-id.jp/blog/gadget/597


Froggy、とても素晴らしいキーボードですが、今回の要件には合わない点があります。

まず、Froggyは左手用です。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266704/5bf6e49e-eaea-28aa-7f11-321ed223561b.png)
（Froggyのキーマップ）

反転して右手向けにカスタムすることも考えましたが、要件であるVimキーバインドやqwertyっぽい配列が厳しそうでした。。。

そこで、Froggyと同じくハード面はHelixで作り、キーマップを独自で作る方針にしました。

# Helixを購入、地獄のはんだ付け

自作キーボードは未経験で何もわからないため、とりあえず自作キーボード専門店として有名な[遊舎工房](https://yushakobo.jp/)さんへ行きました。遊舎工房さんには以前から興味があり、いつかは行きたいと思っていたのですが、まさかこんなきっかけで行く事になるとは…

Helixを作りたいと尋ねたら、何が必要かを丁寧に教えていただけました。（遊舎工房さん、ありがとうございます！）

そして、

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">やっていきます <a href="https://t.co/A0MWa2VIzC">pic.twitter.com/A0MWa2VIzC</a></p>&mdash; tockn (@tockn_s) <a href="https://twitter.com/tockn_s/status/1240259793387806720?ref_src=twsrc%5Etfw">March 18, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">なんとか完成しました <a href="https://t.co/ALzC7r1mte">pic.twitter.com/ALzC7r1mte</a></p>&mdash; tockn (@tockn_s) <a href="https://twitter.com/tockn_s/status/1240338672739708928?ref_src=twsrc%5Etfw">March 18, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

マスキングテープを駆使しながら、なんとか片手でチップダイオード等のはんだ付けを完了させました（地獄だった）。

骨折〜構想〜Helix購入〜組み立て完成まで、三日間の出来事でした。

# キーマップ作成

https://github.com/MakotoKurauchi/helix/blob/master/Doc/firmware_jp.md

こちらを参考にキーマップを作成し、書き込みました。

作成したキーマップ図は以下の通りです。

![keymap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266704/6bfe698d-51e1-0303-47e5-0ffe79209afc.png)

このキーマップは、

- 右手層（黒文字）
- 左手層（赤文字）
- シンボル層(緑文字)

の三つの層から成り立っています。

通常では右手層のキーがマップされています。親指部分にある`LEFT HAND`キーを押している間、左手層に切り替わります。`SYMBOL`キーも同じです。

それぞれの色に対応したキーがマップされ、`ctrl` `space`といった黒文字しか書いてないキーは全層共通でマップされます。

### 特徴・利点

記号を除くほとんどのキーが、普段使っているqwerty配列に準拠しています。通常の右手層はいつも通りの感覚で入力することができ、左手層に関してはqwerty配列の左側部分を反転したものがマップされているので、ある程度の感覚を掴めた状態から使用することができます。そのため要件である

- あくまで左手が完治するまでの一時的なキーボード
- 2週間である程度の速度で打てる様になる
- Vimキーバインド使いたい

を満たせていると考えています。

また、`LEFT HAND`　`ctrl`　`cmd`などのキーを隣り合わせに配置しているので、併用も可能になっています（ショートカットキーとか）。

### 欠点

このキーマップはキーの使用頻度（母音など）に基づいた配置ではないため、入力効率が悪く、疲れます。。。また、スペースキーが中途半端な位置にあるためしょっちゅうctrlやcmdを誤入力してしまいストレスが溜まります。。。

# 使ってみてどうか？

使用開始直後は慣れず、使ってて辛かったです。（骨折をひどく後悔しました。。。）
しかし、約2週間ほぼ毎日練習含め使用した結果、今では殆ど不自由なく、ある程度高速に入力することができています。現に長文になっているこの記事もいい感じに書けています。

ベンチマークとして使っているe-typingでは、A帯まで行きました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">やっとA帯が出るようになってきた…！！ <a href="https://t.co/ARQGzywBug">pic.twitter.com/ARQGzywBug</a></p>&mdash; tockn (@tockn_s) <a href="https://twitter.com/tockn_s/status/1244905679527112705?ref_src=twsrc%5Etfw">March 31, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

そしてそして、ほぼパフォーマンスを下げることなく思う存分プログラミングを楽しめています。

# さいごに

エンジニアの皆さん、とにかく手は大切にしてください。これはあまり知られていない情報なのですが、骨折はしないほうが得です。

もし片手が使えない状況に陥ってしまったら、ぜひこの記事を参考にキーボードを自作してみてはいかがでしょうか。