LoginSignup
5
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-05-30

目的

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

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2