Edited at

ErgoDox 購入からキーマップ作成まで

More than 1 year has passed since last update.


目的

ErgoDox-EZ を購入しました。キーマップ作成からビルドまでの流れを忘れないよう記事にしました。


導入してみて感想

 今この記事もErgoDox で書いていますが、慣れるまでに時間がかかりそうです。何気なく打っていた Alt + Tab や矢印キー、Ctrl + Alt + Del、Ctrl + Z、記号、すべてのキーを意識的に打つ必要があり、初めて HHK を使った時を超える違和感があります。

 あと自分が微妙にホームポジションを崩して打っていたことにも気付かされました。

 なぜ人はそうまでして ErgoDox に拘るのでしょうか?少なくとも買ってしまったからという要素があるのは否めません。とりあえず慣れるまでがんばります。


購入

 以下の記事を大いに参考にして ErgoDox-EZ を購入しました。

はじめてのErgoDox EZ購入ガイド - Qiita


キーマップのカスタマイズ

 キーマップカスタマイズできる2つのサイトがあり、最初は楽しいのですが、

ErgoDox Keyboard Configurator - Massdrop

ErgoDox EZ Configurator

 いずれも一部日本語キーに対応しておらず全角/半角キー押せない問題に行き着き、結局テキストで編集するのが楽という結論に至ります。Windows では「LALT(KC_ZKHK)」というキーを割り当ててあげるとIMEをトグル切替えできます。


ビルドまで

 以下を参考にしてビルドしました。Linux 環境です。

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

$ sudo -E apt-get install avr-libc

$ sudo -E apt-get install dfu-programmer
$ git clone https://github.com/qmk/qmk_firmware

ergodox ディレクトリで default キーマップをためしに make

$ cd ./qmk_firmware/keyboards/ergodox/

$ make KEYMAP=default
$ ls -l qmk_firmware/.build

ergodox_ez_default.hex が出力されていることを確認。

次に、default キーマップをディレクトリごとコピー編集して自分のを作成、その後ビルドする。

$ cd keyboards/ergodox/

$ make KEYMAP=mykeymap


Ergodox にロード

 Teensy というツールを使います、省略。

Teensy Loader app for Ubuntu Linux


キーマップ修正

 以下を見ながら微修正します。

ErgoDoxのキーマップをいじる時に見るチートシート - Qiita


とりあえず自分用に完成したキーマップ

 なるべく一般的な英語キーボードに近づけてみました。まんなかのスペースはブラウジング用にいろいろ割り当てています。記号キーはどこに置くのがいいか悩んでます。


keymap.c

/* Keymap 0: Basic layer

*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | BS | |Ctrl-W| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Tab | Q | W | E | R | T | Ctrl | | Ctrl | Y | U | I | O | P | BS |
* |--------+------+------+------+------+------|-PgDn | |-PgUp |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| Enter |
* |--------+------+------+------+------+------| ALT-L| | ALT-R|------+------+------+------+------+--------|
* | LShift | Z | X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |LCtrl | | CADel|Alt-全| LAlt | | RAlt | ~ | | RWin | RCtrl|
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | Home | End | | LEFT | RIGHT|
* ,------|------|------| |------+--------+------.
* | | | PgUp | | Up | | |
* | Space| TG1 |------| |------| MO1 |Enter |
* | | | PgDn | | Down | | |
* `--------------------' `----------------------'
*/

// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = KEYMAP( // layer 0 : default
// left hand
KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_BSPACE,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, LCTL(KC_PGUP),
KC_CAPSLOCK, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, LALT(KC_LEFT),
KC_LCTL ,KC_NO,LALT(LCTL(KC_DEL)),LALT(KC_ZKHK), KC_LALT,
KC_HOME, KC_END,
KC_PGUP,
KC_SPACE, TG(1), KC_PGDOWN,

// right hand
LCTL(KC_W), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
LCTL(KC_PGDOWN), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_ENTER,
LALT(KC_RIGHT), KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSHIFT,
KC_RALT, KC_TILD, KC_NO, KC_RGUI, KC_RCTRL,
KC_LEFT, KC_RIGHT,
KC_UP,
KC_DOWN, MO(1) , KC_ENTER
),
/* Keymap 1: Symbol Layer
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | DEL |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | EPRM | | | | | | | . | 0 | = | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/

// SYMBOLS
[SYMB] = KEYMAP(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_DEL,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),



参考にしました

ErgoDox EZ カスタマイズ情報のまとめ - Okapies' Archive

CIサービスだけでErgoDoxのファームウェアをビルドして公開する - YAMAGUCHI::weblog