Ergo42,ADKB96ともにマイコンボードには事前にファームウェアを書き込み済みです。キー配列をオリジナルに変更する場合に参考にしてください。

キーボード キーマップ変更

キーマップを変更するには、

  • Web上のエディタ・コンパイラを使ってキーマップを変更したファームを作り、ツールで書き込む
  • 手元にソースコードとコンパイル環境を構築し、ソースを編集してファームを作り書き込む の2つの手順が主に用いられています。

また、割り当てるキーには通常のキーボードのキー のほか、マウス機能やマクロなどを割り当てたり、 「レイヤー」という、一時的に別のキーマップに切り替えるためのキーなどがあります。

簡単にですが、解説をしていきます。

Web上のエディタ・コンパイラを使用する場合

QMK Configuratorを使用します。 Ergo42/ADKB96は登録済みですので、解説に従ってください。Ergo42を対象に解説いたしますが、ADKB96の場合は解説を読み替えて変えてください。

ADKB96のソースコードにつきまして

ソースコードを直接編集、コンパイルする場合。
ファームウェアはこちらからダウンロードをお願いいたします。
https://github.com/qmk/qmk_firmware/tree/master/keyboards/adkb96

カスタムキーマップを作成してみます。
キーボード一覧から[ergo42/rev1]もしくはADKB96を選択します。

下のキー配置がErgo42の、左右に4×7が2つの配置になります。
この部分にキーを配置し、キーマップを作成していきます。
設定したいキーをクリックし、設定したい文字を入力することで、キーに文字を割り当てていきます。

また、下にあるキーコード一覧よりドラッグ&ドロップで配置していくことも可能です。

配置したキーはキーマップ上をドラッグ&ドロップすることで移動させることも出来ます。

一部記号キーやコマンドキーはキーコードが対応していないため、下の一覧よりドラッグ&ドロップする必要があります。
”ISO/JIS”タブを開くと、日本語専用のコマンドキーなどがあります。

今回は図のように配置してみました。
親指が届くところにEnterキー、BackSpaceキーを設けることで、効率の良いタイピングが期待できます。
自作キーボードならではの配列と言えます。

しかし、このままでは数字キーなど多くのキーを配置することが出来ません。
これを解決するのがレイヤー機能です。
レイヤー機能は、キーコード一覧の”Quantum”タブにあるキーで制御します。

レイヤーには順位があり、通常は0番がデフォルトレイヤーとして扱われます。

レイヤー制御キー機能
MO押している間だけ、指定した順位のレイヤーに切り替わります。
TG一度押すと、指定した順位のレイヤーに切り替わります。
OSL一度押すと、次に押したキーを指定した順位のレイヤーの入力と扱い、その後デフォルトに戻ります。
TT押している間だけ、または複数回(デフォルトでは5回)連打すると、指定した順位のレイヤーに切り替わります。
DF指定した順位のレイヤーを、電源が切れるまでデフォルトにします。
TO現在のレイヤーと指定したレイヤーの順位を入れ替えます。他の制御キーによる切り替えにも適用されます。
LT (0~15)一度押すと指定したキーを入力します。押し続けると各順位のレイヤーに切り替わります。

レイヤー制御キーは通常のキーと同様に配置出来ますが、中に入力欄があります。
ここに移動したいレイヤーの順位を入力して下さい。

デフォルトレイヤーはこの様になりました。
1番レイヤーは一時的な切り替え、2番レイヤーには押すたびに切り替わるようにしました。

別のレイヤーを編集するときは左側のボタンから移動して下さい。
このボタンはレイヤー制御キーに順位が入力されると有効になります。

レイヤーを移動すると、このように既に配置されたキーがあります。

この”∇”が配置されたキーは「上位レイヤーのキー配置をそのまま引き継ぐ」という動作をします。

一時的に切り替える場合は、同じ箇所に切り替えキーが無いと切り替えが解除されてしまうため、 押すたびに切り替える場合は、切替キーが無くなるとデフォルトに戻れないため配置されています。

”∇”は下のキーコード一覧の”Quantum”タブにあります。
この”∇”キーを利用して、デフォルトキーマップから引き継ぎたいキーを設定することも出来ます。

このマップでは、SpaceキーとEnterにBackSpace、矢印キーやコマンドキーなどをデフォルトから引き継いでいます。
また、ファンクションキーや数字キーを設定しました。
これで第1レイヤーに切り替え、数字やファンクションを使うことが出来ます。

また、第2レイヤーは下のように設定しました。

テンキー風配置やカーソル制御などが入力出来るようになっています。
また、単独のキーでCtrlとの同時押しとして働くキーも設定しています。
このキーは,キーコード一覧の”Quantum”タブにあります。

“LSft_T”のように後ろに”T”がつくものは、一回押したときは内部に設定したキーとして振る舞い、 長押ししたときにShiftキーやCtrlキーとして動作するキーになります。

設定するにはまず同時押しさせたい特殊キー(Shift、Ctrlなど)を配置したあと、 それらのキーの中に同時押しさせたい通常キーをキーコード一覧からドラッグ&ドロップで配置します。

これでキーマップが完成しました。いよいよコンパイルをします。
右上にある”COMPILE”ボタンをクリックして下さい。

すると、画面が暗転してジャガイモが回り出します。

Baking!!!!!!

ジャガイモが消え、”↓FIRMWARE”のボタンが緑色になっていたらコンパイル成功です。

ボタンをクリックして、ファームウェアをダウンロードして下さい。

ファームウェアの書き込みにはQMK Toolboxをダウンロードし、使用します。
ファームウェアはこちらからダウンロードしてください。

ダウンロードしたQMK Toolboxを起動します。

起動したら、最上部の[Open]ボタンをクリックし、先程ダウンロードしたファームウェアを選択します。


ファームウェアを選択したら、右上のMicrocontrollerが[atmega32u4]であることを確認し、そのすぐ下[Auto-Flash]のチェックボックスをONにします。

ここで、キーボードにある2つのPro Microの片方とPCをUSBで接続し、Pro Microのすぐ横にあるスイッチをすばやく2回クリックします。

すると、Pro Microがブートローダモードになり、自動でファームウェアが書き込まれます。

“avrdude.exe done. Thank you.”と表示されたら、もう片方のPro Microも同様に書き込みを行います。

両方のPro Microにファームウェアの書き込みが終わったら、入力テストを行います。表面から見て左側のPro MicroとPCをUSBで接続し、キー入力を行います。
問題が無ければキーマップ変更終了です!


コンパイル環境を構築する場合

QMK Configuratorによる設定では、一部設定が行えないことがあります。
その場合にはコンパイル環境を構築し、直接ソースコードを変更してコンパイル・書き込みを行う必要がございます。
Windowsの場合、コンパイル環境は”MSYS2”というUnixシェル環境を構築し、その中にコンパイルや書き込みのツールをインストールする方法が一般的です。

1.MSYS2インストール

公式サイトより、最上部のボタンからインストーラをダウンロードします。

32bitOSを使用している場合はmsys2-i686-\~~.exeの方を、
64bitOSを使用している場合はmsys2-x86_64-\~~.exeの方をダウンロードして下さい。

※使用中のOSのbitバージョンがわからない場合、
Windows10:「設定」→「システム」→左側のメニュー「バージョン情報」→「システムの種類」欄
Windows7 :「コントロールパネル」→「システム」→「システムの種類」欄
を確認して下さい。

Windows10の場合
Windows7の場合
※画像はWindows10を使用しています

ダウンロードが終わったら、インストールを実行します。

2.システムアップデート・Gitインストール

インストールが終わると、自動でMSYS2が立ち上がります。
起動したら、最初に下記のコマンドを実行して下さい。

$ pacman -Syuu

pacmanはMSYS2標準のパッケージ管理ツールです。(Ubuntuで言うapt-getコマンドのようなもの)
このコマンドで、サーバー上にある各パッケージの最新版・推奨版を確認し、手元の環境と違う場合は自動でアップグレード(場合によってはダウングレード)を行います。

サーバーとの同期が終わると、インストールを実行するか[Y/n]の確認が出てきますので、Enterを押して続行して下さい。
また、途中で

 warning: terminate MSYS2 without returning to shell and check for updates again
warning: for example close your terminal window instead of calling exit

と表示され、動作が止まったときはMSYS2を一度終了し、再度起動して下さい。

pacmanの実行が終了した、もしくはMSYS2を再起動したら、もう一度$ pacman -Syuuを実行します。

 :: Synchronizing package databases...
mingw32 is up to date
mingw64 is up to date
msys is up to date
:: Starting core system upgrade...
there is nothing to do
:: Starting full system upgrade...
there is nothing to do

このように表示され実行が終了したら、アップデート完了です。

アップデートが終わったら、Gitをインストールします。
下記のコマンドを実行し、pacmanを使ってインストールしてください。

$ pacman -S git

途中で、インストールを実行するか[Y/n]の確認が出てきますので、Enterを押して続行して下さい。

3.QMK Firmwareクローン・ツールインストール

以下のコマンドを実行して下さい 。

$ git clone https://github.com/kit-bto/qmk_firmware.git

※現在、公式のリポジトリにADKB96がアップロードされていないため、暫定アップロード用のリポジトリからのクローンとなります

コマンドが終了すると、現在のディレクトリに”qmk_firmware”フォルダが作成されます。
$ lsでディレクトリが正常に出来ていることを確認したら、

./qmk_firmware/util/msys2_install.sh

を実行し、ツール群をインストールします。途中、何度かユーザーに確認を求められるので
Enter a selection (default=all):で止まったら空欄のままEnter
(Y/N)で止まったら”y”を入力してEnter
(A/C/F/N)で止まったら”a”を入力してEnter
としてください。

また、途中でユーザーアカウント制御の許可を求められるので、許可をして下さい。
しばらく時間がかかるので、気長に待ちましょう。

Installation completed!
Please close this Window and restart MSYS2 MinGW

と表示されたら、ツール類のインストール完了です。
MSYS2を再起動して下さい。

4.キーマップ書き換え・コンパイル・書き込み

キーマップの変更には、ソースコードを直接書き換える必要があります。
ですが、基本的にはキーマップ設定の部分だけがそれぞれのキーボードごと、またそれぞれのキーマップごとに独立しているため、「変な部分を書き換えてしまってキーボードが動かない!」という心配は少ないです。

ソースコードを書き換えるにはエディタが必要になります。
MSYS2上で動くエディタにはnanovimなどがありますが、操作の癖が強いため、今回はWindows上のエディタからファイルを編集します。
MSYS2上のファイルにアクセスするには、MSYS2のインストールフォルダを参照します。
デフォルトでは

C:\msys64\home\ユーザー名\  (64bit版の場合)

に、QMK Firmwareのファイルがあります。
キーマップはqmk_firmware\keyboards\キーボード名\keymapsにあります。
既に1つかそれ以上のマップが同梱されていますが、オリジナルキーマップを作る場合はdefaultフォルダをまるごとコピーし、名前を変更して下さい。

Ergo42の場合

今回、defaultフォルダをそのままコピーし、__btoフォルダとして作成しました。
このフォルダの中には、以下のファイルが格納されています。

・config.h
・keymap.c 

この内、キーマップ変更のため編集するのはkeymap.cとなります。
では、ファイルの中身を見てみましょう。今回はエディタとしてVisual Studio Codeを使用します。

最上部、白い枠の部分でレイヤー順位とレイヤー名を紐づけています。
下の大きい枠が、一番上からデフォルト・第一レイヤー・第二レイヤーになります。
キーの位置は、各行はそのまま行で、各列はカンマで区切られ、キーコードを設定しています。

キーコードの種類はこちらをご覧ください。
QMK Cofiguratorで扱えるキーコード以外にも、非常に多くの種類のキーコードがあります。
今回は、先程QMK Configuratorで作成したキーマップと同じマップを作成してみます。

キーマップが作成できたら保存し、MSYS2に戻って下さい。

ファームウェアをコンパイルするには、MSYS2上でqmk_firmwareフォルダに入り、以下のコマンドを実行します。

$ make "キーボード名":"キーマップ名" 

このようにコンパイルが進み、

* The firmware size is fine - 17890/28672 (10782 bytes free)

のようにサイズチェックが入ったあと、コマンドが終了すればコンパイル成功です。
出来上がったファームウェアは、*qmk_firmware*フォルダの下にキーボード名_(場合によりリビジョン番号)_キーマップ名.hexとして出力されます。
今回の場合はergo42_rev1___bto.hexとなります。
これを、QMK toolboxで書き込むことでキーマップを変更できます。
また、コンパイル時に

$ make "キーボード名":"キーマップ名":avrdude 

と最後に:avrdudeを付けて実行することで、コンパイル後直接書き込みを行うことが出来ます。
このとき、コンパイルが終了すると

* The firmware size is fine - 17890/28672 (10782 bytes free)
Detecting USB port, reset your controller now...

と表示されるので、キーマップを変更するキーボードをPCに接続し、RESETスイッチをすばやく2回クリックします。

すると、このように自動で書込が実行されます。
書込が終わると

avrdude.exe done. Thank you. 

と表示されるので、もう片方のPro Microも同様にコンパイル・書き込みを行います。
※avrdudeを直接扱い、コンパイルをせず書き込むことも出来ますが、その場合はQMK Toolboxを使用することをおすすめします。

両方のPro Microにファームウェアの書き込みが終わったら、入力テストを行います。表面から見て左側のPro MicroとPCをUSBで接続し、キー入力を行います。 問題が無ければキーマップ変更終了です!