OXO-tech

知識0経験0のキーボード大好きマンが自作キーボードを作る その3 ファームウェアの書き込み

この記事は前回の記事の続きです。

前回は、はんだ付けをしたところでした。今回はキーボードの頭脳に当たるファームウェアの書き込みをしていきます。

そもそもファームウェアとはなにか

市販のキーボードや、ノートパソコンについているキーボードで「Aを押すとAを入力できる」のは当たりまえだと思います。

しかし、これは「Aの印字がされているキーが押されたら、Aの信号を送る」という設定が、キーボードにされているからなんです。

この「このキーが押されたら、この信号をパソコンに送る」という設定がファームウェアです。

自作キーボードはキーボードのサイズから形状まで、多種多様なものがあります。よくあるキー配置だけでなく、全てのキーが上下左右きれいに並ぶ配置や、そもそも左と右に分割されているキーボードなどなど、何でもあります。
そのため、どのキーを押すとどの信号が送信されるかを、自分好みに設定する必要があるんですね。(一応デフォルト設定はあるので、最悪しなくてもつかえる。かも。)

ファームウェアの作り方

設定とか、信号とかちょっと難しそうな言葉が出てきましたが、やり方は簡単です。

QMK Configuratorというサイトで作成できます。やり方は簡単で、

  1. PCB(キーボード)の種類を選択
  2. レイアウトを選択
  3. デフォルトのキー配置をお好みで編集
  4. ファームウェアを生成、ダウンロード

の簡単4ステップです。

PCB(キーボード)の種類を選択、レイアウトを選択

まず、PCBの選択ですが、これは買ったキーボード、もしくはPCBの名前を探して選択しましょう。

僕が今回買ったPCBは「YMDK64MQ」というPCBだったので、これを選択します。

また、レイアウトについては基本は初期のLAYOUT ALLみたいな選択肢で良いと思います。

デフォルトのキー配置をお好みで編集

キーボードとレイアウトを選択すると、下にキーボードと、たくさんのキーが表示されると思います。

変更したいキーに、下からドラッグ・アンド・ドロップでキーを持っていくと、キーの設定を上書きできます。


普通に好きなようにキーを設定していけばOKなんですが、いくつかテクニックと言うか、大事な要素があるので紹介しておきます。

レイヤー

キーマップの左に、レイヤーというリストがあることに気づいたかもしれません。

レイヤーとは、キーボードの設定のまとまりのようなもので、レイヤーが切り替わることで、同じキーでも違った動作をすることができます。

例えば、60%レイアウトのキーボードにはF1,F2などのファンクションキーはありませんが、Fnキーを押しながら数字の1を押すと、F1キーとして動作します。
これは、Fnキーが押されている間は、レイヤーが切り替わり、そのレイヤーでは数字のキーはファンクションキーとして設定されているためです。

これを使うことで、本来必要な2つ以上のキーを1つのキーに割り振る事ができるので、結果的にキーの数を減らして、キーボード自体を小さくすることができるんですね。

もちろん、小さくすることだけが目的ではないので、自分の使いやすいようにレイヤーを設定して、ショートカットを入力しやすくしたり、擬似的なテンキーを作ることも可能です。

ちなみに僕のレイヤー1はこんな感じ。
Homeキーたちや、右側にテンキーのように数字キーを配置してたりします。

タップとホールドで動作を変える

レイヤーに加えてもう一つ重要なのが、タップとホールドでの動作切り替えです。これがめっちゃ大事。(だと思う。個人的に。)

60%レイアウトでは、素直に矢印キーを配置すると、?キーの配置がとても変なところになります。

↑キーの右という謎の場所にいますね。何してるんだそんなところで!

自作キーボードを作成する猛者たちは、「矢印キーなんて要らない」「レイヤー1でWASDを矢印キーにしとけばおk」みたいな感じっぽいです。いや矢印キー普通に要るだろ。

矢印キーはほしいけど、?キーの位置も通常通りであってほしい。これを叶えるのが、タップとホールドで動作を変える設定です。


このRSft_Tというキー設定は、「ホールドすると右シフト(RShift)だけど、タップすると設定しているキーとして動作する」というものです。
Shiftキーは、ほとんど長押しして他のキーと一緒に押すことになるので、これはとても合理的です。

こうすることで、キーの形は違えど矢印キーは今までの指の感覚で使えるし、?キーの位置も一般的なものになりました!

似たようなもので長押しでAltとか、長押しで⌘/Winとかもあるので、色々ためして最強の設定を作り上げてください。

ちなみに僕は左Shiftのタップには`キーを
Zキーは長押しでレイヤー切り替えとして動作するようにしてます。(テンキーを右手で使いたいため)


ちなみに、キーボードのリセットをキーに割り当てる事ができます。後述するファームウェアの書き込み時にあると便利なので、どこかに設定しておくのをおすすめします。


ファームウェアの生成、ダウンロード

編集の話が長くなりましたが、お好みの配置ができたらファームウェアを作ってダウンロードしましょう。

右上のCOMPILEをクリックしてコンパイルします。回転するじゃがいもを見て待ちましょう。(なんでこのサイトじゃがいも推しなんだろうね)

終わったら右下のボタンからファームウェアをダウンロードします。.hexというファイルです。

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

ファームウェアが準備できたので、キーボードに書き込みます。

QMK Toolboxをインストール

ファームウェアを書き込むためのアプリケーションであるQMK Toolboxをインストールします。

ここからインストーラーをダウンロードできます。OSや環境に合わせてダウンロード、インストールします。

ファームウェアをセット、書き込み準備

QMK Toolboxを開いて、Openから先ほどダウンロードしたファームウェアを開きます。

また、Auto Flashにチェックを入れておきましょう。キーボード側のリセットを検知して、自動的に書き込んでくれるようになります。


キーボードをリセットする

最後に、キーボード側のリセットを行います。QMK ToolsのAuto Flashを有効にしているので、リセットを行うと自動的にファームウェアが書き込まれます

リセットの方法はPCBによって様々です。説明書を読みましょう。(関係ないけど「僕説明書読まないタイプなんですよね」って言う人いるよね。)

ちなみに、今回使っているYMDKのPCBは、ショートさせるとリセットされる回路が準備されていたので、そこにピンセットをあててショートさせることでリセットできました。

ファームウェアでリセットが割り当てられていれば、PCBをショートさせる必要はないので、ケースに入れた後もファームウェアの書き込みはできます。

ここにピンセットを当ててショートさせるとリセットされました
(はんだ付けがヘッタクソですがこの後修正しました。ごめんなさい。)

QMK Toolboxになんか色々とログが出て、Completeって表示されればOKです。たぶん。

キーボードをポチポチして、設定どおりになっているか確認しましょう。

頭で考えるのと、実際に使ってみるのではかなり感覚が違うので、書き込んで使ってみて、だめだったら修正して書き込んで、と繰り返すことで、理想のキー配置になっていくと思います。


これでファームウェアの作業はおしまいです。なんだか難しそうですが、やってみるととても簡単で、自分だけのキーボードを作っている感じがして楽しいです。ぜひやってみてください。

最後に、僕の今の時点でのキーマップを置いておきます。何かの参考(?)にしてください。

次回 組み立て

もうキーボードはできたようなものです。見た目や利便性を無視するとすでにキーボードとして使えます。

続きの記事を投稿しました!

記事の投稿はTwitterでお知らせするので良かったらフォローしてください。そんなにつぶやきません。

https://twitter.com/Yuta_Spade