ぴろりのくせになまいきだ。

世間に平和はおとずれなぁい

自作キーボードを作った話

はじめに

何を思ったかは正確に覚えていませんが、突然自作キーボード(ErgoDash*1 )を作ってみました。

パーツを選ぶ際、ファームウェアを書き込む際等、先人たちの個人ブログに助けられましたので、わたしも多少書き記しておこうと思いました。
主にこちらのブログを参考にさせていただきましたので、お礼とともにリンクを貼っておきます。
salicylic-acid3.hatenablog.com

きっかけ

なぜ作ろうと思ったは覚えていませんが、普段からこういった思いがありました。

  • 使っているキーボード*2、全体的に悪くないが音がちょっといまいち
  • リニア軸(ひっかかりがないタイプ)は打ったかどうかの感触がわかりにくい
  • 何故しょっちゅう打つはずのバックスペースキーが遠いのか
  • エンターキーは日本語入力だとよく使うんだけどなあ
  • そもそもなぜキーが行方向にずれて配置されているのか
  • 親指って精々スペースキーを打つのにしか使ってないのでは

そんな折、こんなものが発売になりました。
https://www.amazon.co.jp/dp/B0B1Q636K7?psc=1&ref_=cm_sw_r_cp_ud_dp_CJTS4K2TB9YGXEEBD4DY
店頭にも出ていたので触ってきたのですが、まあ悪くはないがあえて買い替えるまでもないかなあという感じでした。

そんなとき、自作キーボードの存在をふと思い出したのです。
「自作キーボードなら全ての要件を満たすのでは?」
もともと少しは興味があった*3ので、そこからは割と早かったように思います。
結構悩みつつもキットと各種パーツを決め、作ってみたわけです。

用意した物

先人の教えに従って、以下のものを用意しました。

  • ErgoDashキット
  • TRRSケーブル*4
  • USBケーブル(A-micro)
  • キースイッチ 70個
  • キーキャップ
  • 潤滑剤(GPL 205G0)
  • 温度調整機能つきはんだごて
  • はんだごて台
  • 2液混合型エポキシ系接着剤
  • シリコーン製マット
  • マスキングテープ

一応はんだ吸い取り線は用意しましたが、結局使いませんでした。
なお、ニッパーやドライバー等の工具も必要ですが、これらはもともとあったのであえて記載していません。
組み立ててみて思ったのですが、シリコーン製マットとエポキシ系接着剤はほぼ必須だと思います。
シリコーン製マットは、結構切った線等が飛び出したりしているので、クッション性のある作業台として使いやすかったです。
エポキシ系接着剤は、キーボードの心臓部であるところのPro MicroのUSB端子の補強に使いました。先人によると、USB端子が結構もげるらしく、「モゲマイクロ」とまで称されているので、おそらく必須なんでしょう。

組み立て作業

組み立て自体はだいたい3時間くらいで終わりました。
はんだ付けは学生の頃に簡単な電子工作をした以来でしたが、ちゃんとできてよかったです。
後で知ったのですが、初期不良、はんだ付け不良などのチェックのために、適宜導通などを確認しながらやったほうが良いらしいです。
確かにそれはそうだと思いましたが、今回は一発でうまくいってよかったです。

ちなみに、はんだ付けが必要な部品は結構な数があり、はんだ付けの箇所とすると300箇所以上になるはずなので、それなりの忍耐力は必要かもしれません。
このキットはそこまで難易度の高いはんだ付けはないと思いましたが、そもそもはんだ付けが面倒くさい、はんだ付けに自信がないという方は、はんだ付け不要のキット、または、練習用のキー数が少ないキットを選ばれたほうが良いかもしれません。

わたしが唯一この記事で他の記事などには書かれていない有益な情報を提供できるとしたら、それははんだ付けのコツです。というより、細かい作業全般におけるコツです。
はんだ付けそのもののコツは、様々なところで公開されています*5
わたしがいう細かい作業のコツは、「手首または肘を作業台につけて固定すること」です。
人間、宙に浮いた状態で細かい作業をしようとすると、だいたいぷるぷるします。これを解消するために、作業に必要な可動域が確保できるレベルで、手を台などにつけて固定してしまうのです。
特に、はんだ線を持っているほうの手(右利きなら大体左手)を固定するのが重要かと思います。手を台につけて固定した状態で、はんだ線を指先でコントロールするのです。また、人によっては、台に固定し、指先もだいたい固定した状態で、腕ごと動かす方がやりやすいかもしれません。
参考になるかはわかりませんが、お試しあれ。

ファームウェアの書き込み

組み立てをしただけでは、ただの置物なので、動作させるためにファームウェアを書き込む必要があります。
わたしはITエンジニアではないので、正直ここが不安でしたが、先人たちのおかげで何とかなりました。
わたしは結局、QMK Configuratorを使って書き込む方法を取りました。以下、参考にした記事です。
salicylic-acid3.hatenablog.com

具体的には、QMK Configuratorを使って書き込み用のファームウェア(.hexファイル)を生成し、それをQMK Toolboxを使って書き込みました。
ErgoDashは分離型のため、TTRSケーブルを外した状態で、片側ずつPro Microに書き込む必要があります。

なお、Remapで書き込もうとも思ったのですが、認識がうまくいかず、結局この方法を取りました。
機種によってはRemapだったり他の楽な方法が適用できるかもしれません。

また、どうもOSにJIS配列のキーボードと認識されるらしく、記号などがJIS準拠のものになってしまいました。US配列として認識させても良かったのですが、一応他のキーボードを使うことも鑑み、JIS配列として認識されたまま何とかするようにする方向で対応しました。
ここで何が問題かというと、設定した記号と、出力される記号が異なってきてしまう点です。
例えば、「[」キーがいくようにしたつもりが、「@」が入力されてしまうなどです。また、「()」を入力しようと思った場合、JIS配列だとShift+89キーを押すと思いますが、US配列だと「()」はShift+90キーに割り当てられているので、ここでもずれが生じます。
解決する方法はあるらしいのですが、会社のPCでそれをやりたくなかったので、すごく泥臭い方法で対処しました。
つまり、設定したキーと入力されるキーの対応関係を確認し、キーの印字と入力される記号をある程度合わせました。
何が入力されるようにしたときに何が出力されるかについては、多分どこにも書いてなかったと思うので、気が向いたらまとめます。需要があるかは不明ですが。

使った感想

結構おおらかな職場なので、作ったキーボードを持ち込んで仕事をしています。
ErgoDashはカラムスタッガード(縦にずれた配列)なので、最初はタイポがありました(例えばiとo、xとz)。
ただ、半日くらいでだいたい慣れました。逆に、今はラップトップのキーボードで打っていますが、5分くらいで元の通りに打てるようになります。なので、意外と大丈夫です(個人の感想です)。
キー配列は自由に変更できるので、親指でスペースキー、エンターキー、デリートキー、バックスペースキーあたりを押せるようにし、半角全角切り替えキー、方向キーなどを近くに持ってくるようにしました。また、比較的よく使う記号を中央付近(分離の内側)に持ってきました。
不合理だと思っていたキー配列を変更できたので、結構快適度は高いです。

また、横にずれない配置にしたので、タイポがあったとは書きましたが、逆にタイポが減ったキーもありました(例えばwとe、rとt、nとm)。これは個々人の癖にもよるものかもしれないですが。
なお、「y」は右手で打ち、「b」は左手で打つのが正しいらしく、分離型はそれを前提に作られています。したがって、分離型に移行するつもりのある方は、そのように癖をつけておくと吉かもしれません。

あと、気に入ったスイッチも使えることが自作キーボードの非常に良い点だと思います。
キースイッチ選びについては後述しますが、今回はDurock T1 Shrimp*6にしました。タクタイル感が強めで、押した感じの感触や音がよく、結構打鍵音が静かだったのでこれにしました。
ちなみに、タクタイル感とは、押したときの抵抗感が押した量によって変化し、途中で抵抗感が増したあと減る感触のことで、悪く言えば引っ掛かりがある感触であり、よく言えばサクッとした感触、ポコッとした感触であるといえます(個人的な定義です)。
押していて楽しいし、押した感があるので、その意味でのタイポも減りました。

今回、キーボードを作ってみて、様々な沼があることを認識しました。参考にさせていただいた記事を書いた人に言わせれば「温泉」または「湯」かもしれませんが。
認識した沼について簡単に書いていこうと思います。

キースイッチ沼

これが最も深い沼かもしれません。
押し心地に関わってくる非常に重要な点です。
わたしもどれにするかは結構悩みました。
様々な動画を見て打鍵音を聞いたり、フォースカーブを見て打鍵感を想像したりしながら決めました。
スイッチによってはフォースカーブが公開されていなかったりするので、可能であれば、実際に押してみて確かめるのが良いと思います。
ただ、店頭で押して確かめる場合、実際の打鍵とは異なる状態で押すことになります。何が言いたいかというと、実際に使うときよりも力が入りやすい状態で押すので、重めのスイッチを選びがちです。わたしもこんなに軽くなくてよいんだけど、と思いつつ選びましたが、実際に使ってみると思ったより重めでした(全然許容範囲ですが)。
重さで迷った場合は、その場でちょうどよいと思ったものよりも一段階軽いもののほうが後悔しないかもしれません。

以下、迷ったスイッチたちを挙げておきます。今回、押した感が欲しいということで、タクタイルタイプにしようと思っていました。それ以外の検討はしていないのであしからず。また、個人の感想なのでご参考までにということで。

Zilent V2 スイッチ(5個)
タクタイルで一番人気らしく、候補には入れました。
静音で打鍵音はかなり静かなのですが、押した際のシャリっとした感じ(おそらくバネ起因)の音が気になり、これにはしませんでした。
押した感触的にはかなり良く、人気なのは頷けます。

Kailh Midnight Silent V2 Switch / Tactile
比較的最近出たスイッチらしいです。
タクタイル感はそこまで強くありませんが、軽めで良いという人もいると思います。
静音で押した感触的にも悪くなく、結構最後まで悩みました。たぶんこっちにしていても楽しく使っていたと思います。

Durock T1 Shrimp / Silent Tactile / 67g
今回買ったスイッチです。
タクタイル感が強めで、山を過ぎると入力されている感じです。人によっては重いと感じるかもしれません。
こちらも静音ですが、底打ち(下まで押し切ったとき)の感触がよく、かなり悩んだ末にこれにしました。
音は静かですが、少し湿った感じのコンという音が鳴ります(後段の動画参照)。

Akko Jelly Blue - (45pcs)
ここから静音でないシリーズです。静音でないシリーズを押してみたところ、結構音がでかいと思い、静音にしようと思いました。ただ、よく考えてみるとそこまで強打するわけでもないし、ほかにもうるさい人はいるので、静音でなくてもよかったかなあとは今更ながら思います(こうして2本目が生えるんだなあと思います。また、スイッチ交換式のものがあるのもよくわかります。)。
さて、押した感触ですが、最初に小さめの山がある感じでした。
悪くはないと思いましたが、個人的にはもう少し山が大きいほうが好みです。

Input Club Hako スイッチ
最初はこれにしようと思っていたやつです。
押した感じも悪くなく、タクタイル感もちょうどいい感じでした。重さは個人の好みで選べばよいかなという感じです。
ただ、音が比較的高めで、結構悩みましたが静音タイプにしました。
多少音がしてもいいやという気になったらこれを選んでいたかもしれません。

Kailh Polia スイッチ
これもこれで悩みました。
タクタイルの山が大き目でかつなだらかな感触を受けるスイッチです。押した感じとしては比較的好みではありましたが、もうちょっとタクタイル感が強めでも良いかなあという感じでした。
また、個人的にはちょっと若干軸のブレが気になりました。

JWK Taro - T1 Tactility / 67g
タクタイルの山が結構後ろの方にあるタイプのスイッチでした。
ある意味でクリッキーの音が鳴る部分をタクタイル感に置き換えたような印象を受けました。
これはこれで悪くないと思いますが、だったらクリッキーのほうが良いのではないかとも思いました。人によっては好きかもしれません。

Kailh BOX スイッチ
定番どころの一つとして押してきました。
可もなく不可もなくといった感じで、特にこだわりがない人であればこれでいいんじゃないかとも思います。
うるさいと思ったらこれの静音タイプ(Kailh BOX Silent)にすればよいと思いますが、静音タイプは売り切れでした。個人的に静音タイプと感触が近いのはKailh Midnight Silent V2かなあと思いました。

Kailh Box V2 Switch / Brown / Tactile
V2も押しておくか、と思って押してきました。
フォースカーブ上、非常に鋭いタクタイルの山がありますが、押した感触としてはそこまででもないかといった印象を受けました。ただ、通常のものよりは強めのタクタイル感があるのは間違いないです。

Cherry MX スイッチ
さすがに超ど定番も押しておかないとね、と思った次第です。
定番だけあって、これもこれで悪くないと思います。比較的山が後ろのほうにあって、山が小さいタイプです。
個人的には山は前のほうにあって、大き目のほうがいいかなあと思うので選びませんでしたが、悪くはないと思います。

キーキャップ沼

せっかく作るのだから、見た目も大事にしたいものです。
そうすると、なかなか深めの沼になります。
まず、そもそもプロファイルといって形が異なるものが存在することを知りました。詳しくはこちらをご参照ください。
salicylic-acid3.hatenablog.com

また、キーキャップの形状によっても結構音が変化します。
youtu.be
youtu.be

今回は、カラムスタッガードであることを加味してXDAプロファイルにしました。
見た目もかなり悩んだのですが、多分記号が一致しない問題に見舞われると思ったので、よくわからん印字がたくさん入ってる
セットにしました。
https://www.amazon.co.jp/dp/B09TQWJXCR?psc=1&ref_=cm_sw_r_cp_ud_dp_03KDJ7HV266EF8M94XV2
*7
ほかのものとして、これとか*8、これとか*9、これとか*10にもしようと思い、2日くらい悩みましたが、結局よくわからん印字のやつがたくさん欲しかったので、上記のものにしました。

これはいつでも交換できるので、気分によって付け替えるのも良いかもしれないと思いました。

配列沼

ある意味ではそもそもの機種選びです。以下が詳しいです。
salicylic-acid3.hatenablog.com
salicylic-acid3.hatenablog.com

キーボード製作者の「思想」と自分の求めているものが合致するか、ということになると思います。
今回は、親指をうまく使いたかった点、数字キーは比較的よく打つので数字キー列があるものという点で選びました。
その意味では、Lily58 Pro*11でもよかったのですが、親指のキー数が多いほうがよかろう、ということでErgoDashにしました。
また、上記要件を満たすものとして、ErgoArrows*12も考えましたが、左の方向キーの用途がいまいち思い浮かばなかったので、ErgoDashにしました。

わたしは早速職場で「これはキーボードですか?」という質問を受けるようなカラムスタッガードのものにしてしまいましたが、移行コストを考えるとロウスタッガード(横にずれた配列)にするのも手だと思います。
ただ、意外とすぐに慣れるし、すぐに戻ってこれます(個人の感想です)。

いろいろなキーボードを見て、いろいろな思想があることを知りました。
意外と配列が異なるものも許容できることが分かったので、また今度は違った配列のものも検討してみたいと思います。

キーマップ沼

キーの物理的な配列を決めた後は、割り当てをどうする問題があります。自作キーボードでは、どのキーでどの文字またはどの記号が入力されたことにするかをプログラムできるので、非常に高い自由度があります。
したがって、アルファキー(アルファベットキー)はいったん置いておくとして、記号系のキー割り当てをどうするかという問題があります。
仕事や用途によってよく使う記号も違うでしょうし、個人の好みもあります。

また、そもそもアルファキーの配列(通常はQWERTY配列)が不合理じゃないかという話もあります(下記参照)。
tomisuke.hatenablog.com

上記記事の内容について、合理性は確かにあると思います。日本語で「で」「せ」「ざ」「く」とかって入力しにくいですもん。
記事を書いた人曰く、他の配列を使っていてもQWERTY配列も使えるらしいので、追々検討したいと思います。

おわりに

久しぶりの電子工作は楽しかったです。また、悩む時間も含めて非常に満足度の高い体験でした。
わたしにとってキーボードは商売道具的な意味合いもあり、仕事の間はかなりの割合で触っているので、ちょっとこだわりたい気持ちがあります。なので、2つ目を作っていたら生暖かい目で見守ってください。
ところですでにこのスイッチが気になっているんですが……あとKailhロープロファイルスイッチも気になる……
Momoka Shark Switch