ErgoDox EZを購入したらやっぱりキーマップを弄りたくなると思います(?)ので、キーマップの変更方法を簡単に書いておきます。
結構リポジトリ構成が変わることがあるので、間違いなどあれば編集リクエストいただけますと助かります
環境
以下環境を前提としています。
- Mac OSX
- Homebew
Teensyをインストールする
作成したキーマップをキーボードのマイコンに転送するためにTeensyが必要になります。
GUI版を使う
Teensy Loader Disk Imageからダウンロード&インストールしてください。
インストールといっても、dmgファイルをマウントしてアプリケーションフォルダに移動するだけです。
CLI版を使う
コマンドラインで完結させたい場合はteensy_loader_cliを入れると良いです。homebrewで以下のようにインストールしてください。
$ brew install teensy_loader_cli
キーマップファイルを作成する
キーマップファイルの作成方法は2つあります。
- massdropのconfiguratorで作成&ダウンロードする
- ソースからビルドする
方法1. massdropのconfiguratorを使用する
1の場合、最低限のキーマップは作成できますが、LEDの設定や特殊なキーの挙動までは設定することができません。
ErgoDoxシリーズ共通の最低限の設定だけで十分という場合はこちらの方法でも問題ないです。
方法2. ソースからビルドする
ErgoDox EZのデフォルトキーマップはこのconfiguratorでは再現できないため、元の設定を維持したまま一部変更を加えたい場合は2のソースからビルドする必要があります。
ここではソースからビルドする方法を記載しますが、massdropのconfiguratorからダウンロードした場合はビルド作業はとばしてその後の「キーマップを適用する」に進んでください。
ソースからビルドする
avr-libcをインストールする
ビルドにはAVRライブラリが必要になるので、Homebrewでインストールしておきます。
時間がかかるのでキーマップファイルを弄る前に実行しておくのが良いです。
$ brew tap osx-cross/avr
$ brew install avr-libc
リポジトリをgit cloneする
ソースが含まれたリポジトリをクローンしてきます。
$ git clone https://github.com/jackhumbert/qmk_firmware.git
キーマップファイルをビルドする
詳しくは以下を参考にしてください
このリポジトリにはErgoDox EZ以外のソースも含まれています。
ErgoDox EZ用のソースは以下にあります。
- keyboards/ergodox/keymaps/default/keymap.c
$ cd keyboards/ergodox/keymaps/default/
$ vim keymap.c
指定するキーのパターンは既存のキーマップや、下記を参考に設定してください
例えば、Aキー左側のBackspaceをCtrlにしたい場合は以下のように変更します。
--- a/keyboards/ergodox/keymaps/default/keymap.c
+++ b/keyboards/ergodox/keymaps/default/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
- KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
こんな感じで編集した後、ビルドを実行します。
keymap=default
の指定はkeyboards/ergodox/keymaps/${keymap}
のディレクトリ名と対応しているので、ディレクトリがdefault以外の場合はこの値も変える必要があります。
$ cd keyboards/ergodox/
$ make clean && make keymap=default
# リポジトリ下の`.build`にhexファイルが生成されます
$ ls ../../.build/ergodox_ez_default.hex
../../.build/ergodox_ez_default.hex
makeのオプション指定はいくつか指定可能なパターンがあり、qmk_firmwareリポジトリ直下にて
make keyboard=ergodox subproject=ez keymap=default
もしくは
make ergodox-ez-default
という指定でビルドすることもできます。
ビルドが完了したらqmk_firmwareリポジトリ下に.build/ergodox_ez_default.hex
というファイル名で出力されます。
※ファイル名の命名規則は${keyboard}_${subproject}_${keymap.hex}
となっています。
キーマップファイルをロードする
GUI版を使う場合
TeensyアプリのFile>Openから、作成したhexファイルを開きます。
(ファイルアイコンからでも開けます)
下記のようにAutoを有効にしておくと、Teensyキーを押したら自動的に転送+リブートが実行されます。
CLI版を使う場合
以下を実行すればHEXを読み込んでリブート待ちの状態になります。
$ make teensy
他makeタスク同様、keymap指定の場合は下記のように指定します。
$ make teensy keymap=default
実行すればこのように待ち状態になります。
:
:
Teensy Loader, Command Line, Version 2.0
Read "./.build/ergodox_ez_default.hex": 18230 bytes, 56.5% usage
Waiting for Teensy device...
(hint: press the reset button)
ですので、キーマップのビルドとリブート待ちまでの処理を一括で行いたいのであれば、コマンドでつなげてしまうことが可能です。CLIに慣れている方であればこちらの方法が良いかと思います。
$ make && make teensy
キーマップを適用する(キーボードをリセットする)
RESETキーコードが送信できれば良いのですが、ErgoDox EZのデフォルトキーマップには設定されていないため、
右手キーボード上部のLED横にある小さな穴からアクセスしないといけません。
(L2とか適当なキーにRESET
をアサインしておくと物理的なアクセスが不要になります)
僕はギター弦の6弦の切れ端が運良く手元にあったのでそれを利用しましたが、それなりに長さがないとアクセスできないので注意です。ボールペンの先とかでは長さがたりません。1cm程度の長さが必要ですので、クリップ等を利用しても良いかと思います。
リブートが完了すると、LEDが光ります。
(以下はUSB接続時の映像ですが、リブート時も同様のLEDパターンで光ります)
#ErgoDox EZは、usbケーブルを繋ぐと三色のLEDが光ります。あと、選択してるレイヤーによって色が変わるしかけ。 さらにファームをカスタムすれば色々できそう。 pic.twitter.com/MXOKSkWtaa
— Masaki Yoshida (@ReSTARTR) 2016年4月6日
あとは、実際にキーボードを使ってみて設定が反映されているか確認できれば完了です。
参考までに
僕が今使用しているキーマップを以下で公開していますので、こちらも参考にしていただければ幸いです。