言葉にしないと伝わらない。文字にしないと残らない。

dz60にファームウェアを書き込んで自分専用のキーマップを作ろう!

f:id:Ziddorie:20190428232119j:plain

ファームウェアを書き込んで本当の完成です。

dz60の組み立ては終わった?

dz60などの自作キーボードを作ってからがこの記事の工程になります。dz60の組み立てが終わっていないのだったら、この記事を参考にしてまずはdz60をハード面での組み立てを完了してください。

組み立てが終わったらファームウェアを書き込みます。これで本当の意味での完成を見ることができます。自作キーボード界隈ではQMKファームウェアというのがメジャーなプラットフォームです。まずはQMKファームウェアを書き込める環境を整えます。

今回はQMKファームウェアを書き込んで、キーレイアウトのカスタマイズまで行いますが、主にMacでのファームウェアの書き込み方法を紹介していきます。

 

【Mac】QMKファームウェアのインストール

QMKファームウェアをインストールするために下準備が必要です。まずはQMKファームウェアをインストールするのに必要なgitがインストールされているかを確認します。gitのインストールに関してはこの記事を参考にしました。

tracpath.com

gitのインストールが終わったらQMKファームウェアをクローン(ダウンロード)してきます。gitがインストールされていればコマンド一発で完了します。まずはターミナルを開いてQMKファームウェアをクローンします。このコマンド一発で完了します。

$ git clone https://github.com/qmk/qmk_firmware

ダウンロードにちょっと時間がかかります。ダウンロードが終わったらQMKファームウェアのプログラムがあるフォルダに移動します。

$ cd qmk_firmware

移動が終わったらQMKファームウェアのインストールを行います。

$ ./util/qmk_install.sh

これが結構な時間がかかります。QMKファームウェアのインストールに必要なファイルをたくさんダウンロードしてくるので30分以上かかりました。ここでQMKファームウェアを書き込める準備が整いました。

 

【Windows】QMKToolboxのインストール

WindowsではQMKファームウェアをインストールしなくてもQMKToolboxという超便利なアプリがあります。

qiita.com

上記のページで一通りのファームウェアの書き込み環境が整います。ファームウェアの書き込みの難易度はやっぱりwindowsのほうが簡単かもしれませんね。

 

キーレイアウトの編集

ここからはmacもwindowsも同じ作業です。C言語で書かれているキーレイアウトの設定ファイルを編集していきます。QMKファームウェアのフォルダの下にqmk_firmware→keyboards→dz60とたどっていきます。なお、keyboard以下にはたくさんのキーボードのレイアウトがあるので試しに見てみるのも楽しいですよ。

さて、dz60のフォルダに移動したらkeymapsというフォルダがあります。dz60で使用できるキーレイアウトがたくさんあります。自分のキーレイアウトに一番近いキーレイアウトの設定ファイルを編集するのが一番楽です。

今回はHHKBにカーソルキーを追加したようなキーレイアウトなのでbillypythonを選びました。自分用にカスタマイズするのだったら元ファイルをコピーして残しておくことをおすすめします。キーレイアウトの設定ファイルの編集はSublime Textを使用しました。

f:id:Ziddorie:20190429000757p:plain

ぼくがかんがえた さいきょうの きーれいあうと

キーレイアウトで使用できるコマンドはここのページから確認できます。

github.com

キーレイアウトと実際の配列記述はある程度リンクしているので感覚的に設定ファイルを作る事ができると思います。ここで自由にキーレイアウトを編集できます。キーボード自体に設定を組み込むのでどんなPCやスマホに接続しても自分だけの環境をキーボードに覚え込ますことができます。このへんは自作キーボードだけにしか出来ない魅力的なところですね。

 

ファームウェアファイルの作成

テキストで設定ファイルを編集するのが難しい!って人はここのページから直接ファームウェアを作成することができます。

Keyboard Firmware Builder

実際のキーレイアウトを確認しながらファームウェアファイルを作成することができるので、テキストファイルをいじるのに抵抗がある人は上記のページでファームウェアを作るのが良いかもしれませんね。

上記のウェブサイトでファームウェアをビルドしないのであればコマンドラインからビルドする必要があります。

$ make dz60:billypython

このコマンドを解説すると、

$ make (キーボードの名前):(キーマップファイル)

となっています。他のキーボードのファームウェアを書き込むときの参考にしてください。

これで.hexファイルが作成されます。キーレイアウトに応じてbillypythonの部分をキーレイアウトの名前に変更します。このコマンドを実行するとファームウェアファイルが作成されます。

もしキーレイアウトファイルに変な記述があるとコマンドが途中で止まるのでキーレイアウトファイルを見直しましょう。キーの記述がおかしかったりするので英語アレルギーを起こさず、しっかりエラー文を読みましょう。

コマンドが通ると.hexファイルが作成されます。これがファームウェアファイルとなります。これをキーボードに書き込めば完了です。

 

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

いよいよファームウェアの書き込みを行います。ファームウェアの書き込みコマンドは下記の通りです。

$ make dz60:billypython:dfu

このコマンドを解説すると、

$ make (キーボード名):(キーレイアウト名):(オプション)

となっています。

このコマンドを実行すると下記のようなコマンドが表示されます。

QMK Firmware 0.6.340
Making dz60 with keymap billypython and target dfu

avr-gcc (GCC) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copyig conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
   text    data     bss     dec     hex filename
      0   22752       0   22752    50ea .build/dz60_billypython.hex

Compiling: tmk_core/common/command.c                                                             [OK]
Linking: .build/dz60_billypython.elf 
 [OK]
Creating load file for flashing: .build/dz60_billypython.hex
[OK]
Copying dz60_billypython.hex to qmk_firmware folder
[OK]
Checking file size of dz60_billypython.hex
[OK]
* The firmware size is fine - 22752/28672 (5920 bytes free)
dfu-programmer: no device present.

Detecting USB portが表示されたらリセットボタンを押します。PCBでボタンを設置してる人は少ないと思いますので、ボタンを設置せずにリセットする方法を紹介します。

PCBの裏側にRESETと書かれている部分があります。

f:id:Ziddorie:20190429003336j:plain

ここをピンセットで軽くれます。

ピンセットなどの通電性の素材で触れるとキーボードがリセット状態となり、ファームウェアの書き込みが実行されます。触れるのは一回で大丈夫です。あとは書き込み処理が完了するまでじっと待ちます。

Error: Bootloader not found. Trying again in 5s.
Bootloader Version: 0x00 (0)
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
Checking memory from 0x0 to 0x58FF... Empty.
0% 100% Programming 0x5900 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0% 100% Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
Validating... Success
0x5900 bytes written into 0x7000 bytes memory (79.46%).

これでファームウェアの書き込みが完了します。実際にキーボードを触ってみて、想像通りに動くか確認しましょう。

この辺は試行錯誤が楽しい部分です。自分にしっくり来るキーレイアウトをいろいろ試してみましょう。

私はファームウェアの書き込みのオプションの違いで1時間近く悩みました。

$ make dz60:billypython:avrdude

でファームウェアを書き込もうとしていたのですが、キーボードを検知してくれず途方に暮れました。正しくは、

$ make dz60:billypython:dfu

でした。間違わないように注意しましょうね。

 

最高の自作キーボードを

dz60などは自分でキーレイアウトを考えないと行けないのがハードルであり、メリットでもあります。自分の好きなレイアウトにできるとういうのは市販品にはない自分専用のキーボードを作れるってことです。

キーボードに自分を合わせるのは簡単ですが、自分にキーボードを合わせることで最高のインタフェースになります。コンピュータと仲良くなるためにもインタフェースにはお金をかけるべきです。

どうでしょう?自作キーボードを作りたくなってきませんか?自作キーボードといえばハードルが高いように感じますが、実際にやってみると思ったより簡単です。案ずるより産むが易しというようにサクッと作れたりします。

この記事が自作キーボードの世界に飛び込むあなたの背中をポンと押せたら幸いです。あと一つ注意を。この沼は深いぞ!

この記事はdz60で作成しました。