自作キーボードを作ってみた！: Keyball44

自作キーボードを初めて作りました！

本記事は勤務先のアドベントカレンダーの当番記事として書いておりますが、この記事の内容は業務といっさい関係なく、趣味の話に終始しております。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490207/d30ae9fd-08f0-8ee6-8379-a63178d5e8f2.png)

Keyball44という自作キーボードのキットです。

以下のキット製作者さんのサイトで購入できます。

https://shirogane-lab.net/items/64b7a006eb6dbe00346cd0c5

キットのほかにキースイッチなどのパーツは別途用意する必要があります。組み立てにははんだ付け作業が必要です。

はんだ付け箇所300か所以上ありましたが、はんだ付け初心者の私でも無事動くまでに作り上げることができました。

はんだ付け等の制作作業は前回までの記事に書きました。

https://qiita.com/suzuki-navi/items/8bbd8b14d2b08f5de011

https://qiita.com/suzuki-navi/items/01966d5ec6a08639f82b


# 自作に至った経緯

自分の指遣いに合ったキーバインディングをPCのソフトウェアの設定で再現することにいい加減疲れ、キーボード側のファームウェアでOSの制約なくチューニングしようと思ったためです。

自作したかったわけではなく、ファームウェアを自由にいじれるキーボードが欲しかったのです。

# Keyball44を選択した理由

自作キットの中でKeyball44を選択した理由は、トラックボールが右手のホームポジションから触れることです。トラックボールは自作のきっかけではありませんが、マウスに手を伸ばす必要もなくなるのが魅力的です。右手の下のエリアにキーがあっても私はどうせ押さないので、デッドスペースの有効活用になります。

キーの数や配置もちょうどいいように見えます。腕の動きが少なくなります。動かなくていいので、右手がマウスなのかキーボードにあるかによってPC操作方法を考える必要がなく、PC操作のハードルが下がります。Keyball44ではすべての操作がホームポジションを崩さずにできるので、快適です。

# 使ってみての感想

## メリット

繰り返しですが、ホームポジションから崩さずにすべての操作が行えることが大変快適です。マウス操作も含めてホームポジションから行えます。使い始めて1週間ほどで、もう離れられないです。ただし、腕を動かさなくていいので疲れないという記事をよく見るのですが、私は「疲れない」というまでは感じていないです。PC操作が素早く行えることをメリットと捉えています。

また、これはKeyballだからというわけではありませんが、ノートPCが熱すぎの指先低温やけど疑惑から解放されました。ノートPCがどんなに高温でも文字を打つことができます。自作する直前1週間ぐらいは低温やけどに悩まされて、早くキーボードを完成させたいと待ち望んでいました。


## デメリット

分離型のために持ち運びが手間です。基盤がむき出しで、構造が脆弱なため、手で掴む場所が限られ、非常に慎重な取り回しが必要です。自宅など固定の場所でしか使わない場合には問題ありませんが、私は自宅とオフィスとで持ち運びたいため、デメリットとなります。


## 訓練が必要

キーが格子状に並んでいるのが最初のうちは慣れずにミスタイプが多かったです。普通のキーボードはキーの上下が斜めの位置関係になっていますが、このキーボードは格子状に並んでいます。そのため1段目と3段目の文字を打つときに指が横にずれやすく、ミスタイプが多かったです。これは1週間ほどで慣れました。

キーの数が44個と少ないため、数字や記号は直接入力ができず、キーの組み合わせが必要になります。数字はすぐに慣れたのですが、記号は1週間以上たった今でも慣れません。記号は日々キー配置から見直しています。記号はまだまだ訓練が必要のようです。

トラックボールを初めて使うのでこれも慣れるのに大変でした。1週間ほどたった今だいぶ慣れてきましたが、親指が痛くなる気がします。まだ変な力が入っているのかもです。


# キー配置

キー配置は、キーボードのファームウェア書き換えとRemapというツールを組み合わせて自由にカスタマイズできます。単純なキー配置の設定はRemapで行い、Remapでは対応できない処理をファームウェアの修正で対応しています。ファームウェアはC言語です。

キーの数が少ないため、なにかを押しながらなにかを押すという組み合わせでの入力が多く必要です。例えばEnterはAの左にあるキーを押しながらMを押します。

キー配置はまだ慣れてないところも多いのと、まだ調整中で頻繁に位置が変わりますので、キー配置を書いたカンペをいつも開いています。

## ファームウェアでカスタマイズしているポイント

- レイヤーをKeyball標準の4つから8つに増やしています
- Ctrl+Tab, Alt+Tab （私のレイヤー修飾キーとの兼ね合いの都合です。普通はファームウェアでの対応は不要だと思います）
- Ctrl+Z （配置の関係と私の指使いの関係で、左Shift+ZをCtrl+Zになるようにしました）
- Ctrl+マウス左クリック（一定時間のスリープがが必要だった）
- テキスト選択（Shift押しながらのカーソル移動）
- 漢字変換On/Off、言語切り替え

まだ自分の書いたソースコードに不具合が多く、よくキーボードが固まっています。固まったときはケーブル抜き差しします。

## キー配置カスタマイズのポイント

- 数字と記号
    - マイナス（日本語入力時の長音記号）など一部を除いてほとんどは修飾キーを押しながらの打鍵
    - 数字は右手でテンキーの配列だけど、1～5は左手にもある
- 修飾キー
    - Shift, Ctrl, Altは左右にある
    - 左Ctrlと左Altはレイヤーで実装し、右Ctrlや右Altとは違う挙動のキーが多い
    - 左Shiftもファームウェアでカスタマイズしている箇所がある
- カーソル移動、Enter、Escape、BS、Del、コピペ、保存など
    - 左Ctrlまたは左Altを押しながらなにか
    - **Emacsキーバインド** （←これが私にとって一番重要なポイント）
        - 一部は2ストローク
        - Ctrl+Spaceでテキスト選択開始というEmacsの挙動も再現
- アルファベット
    - B
        - 左右にある
        - 右手は親指の位置
    - Q
        - キーが少ないためQの位置には最初は特殊キーを置き、「Q」は記号と同じく修飾キーが必要だった。しかしlessコマンドやgitコマンドでQを多用していることに気が付き、復活させた
- トラックボール
    - マウスカーソル移動またはスクロールができる
    - 漢字変換Offもトラックボールでできる
- 左手親指のキーキャップ
    - 左手親指で押すべきキーが多くて押しわけが難しかったので、キーキャップを変えることで触った瞬間にわかるようにした。肉球のキーキャップはお店にたまたま売っていたのでなんとなく買ってみただけだったが、左手親指に置くことできわめて実用的なキーキャップになった。

以上、私のキーボードの紹介でした。