Help us understand the problem. What is going on with this article?

ErgoDox EZのキーマップを変更する

More than 3 years have passed since last update.

ErgoDox EZを購入したらやっぱりキーマップを弄りたくなると思います(?)ので、キーマップの変更方法を簡単に書いておきます。

結構リポジトリ構成が変わることがあるので、間違いなどあれば編集リクエストいただけますと助かります:pray:

環境

以下環境を前提としています。

  • Mac OSX
  • Homebew

Teensyをインストールする

作成したキーマップをキーボードのマイコンに転送するためにTeensyが必要になります。

GUI版を使う

Teensy Loader Disk Imageからダウンロード&インストールしてください。
インストールといっても、dmgファイルをマウントしてアプリケーションフォルダに移動するだけです。

CLI版を使う

コマンドラインで完結させたい場合はteensy_loader_cliを入れると良いです。homebrewで以下のようにインストールしてください。

$ brew install teensy_loader_cli

キーマップファイルを作成する

キーマップファイルの作成方法は2つあります。

  1. massdropのconfiguratorで作成&ダウンロードする
  2. ソースからビルドする

方法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

TeensyアプリのFile>Openから、作成したhexファイルを開きます。
(ファイルアイコンからでも開けます)

下記のようにAutoを有効にしておくと、Teensyキーを押したら自動的に転送+リブートが実行されます。
スクリーンショット 2016-04-17 15.19.05.png

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を持っていない方はこちら

ReSTARTR
フリーランスのソフトウェアエンジニアです。 Go/Ruby/AWSあたりをさまよっています。
https://medium.com/@restartr
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした