qmk_firmwareでキーマップを変更する

【結論】

・自作キーボードは、キーマップを自由に設定できるのが大きな特徴

・キーマップを設定するには、qmk_firmwareを利用する

・qmk_firmwareに任意のキーマップを記述して、書き込む事で設定が完了する

【目次】

【本題】

自作キーボードのキーマップ

先日、自作キーボードを制作しましたが、初期のキーマップは若干MacBookと異なり、使いづらい部分がありました。

なので、キーマップを書き換えることにしたので、その過程で調べた事をまとめます。

↓過去記事

ryoutaku-jo.hatenablog.com

ryoutaku-jo.hatenablog.com

qmk_firmwareの導入

まずは、キーマップを設定する為のqmk_firmwareを導入します。

qmk_firmwareGItHubからcloneしてきます。

$ git clone https://github.com/qmk/qmk_firmware
$ cd qmk_firmware

そして、下記コマンドでビルド環境を整えます。

$ ./util/qmk_install.sh

デフォルトのキーマップをコピー

私が制作したキーボード(Mint60)のデフォルトのキーマップの設定が記述されたファイルは、下記の階層に保存されています。

qmk_firmware
 - keyboards
  - mint60
   - keymaps
    - default

そちらを土台にキーマップをカスタマイズして行くので、ファイルをコピーします。

なお、ファイル名は「custom」としています。

$ cp -r keyboards/mint60/keymaps/default keyboards/mint60/keymaps/custom

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

コピーしたファイルを開きます。

キーマップに関する記述は下記のコードになります。

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT( \
    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,    KC_BSPC,  \
    KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,  \
    KC_CAPS,     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,      KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,        KC_ENT,   \
    KC_LSFT,       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,      KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,   KC_UP,  MO(1),   \
    KC_ESC,    KC_LCTL,    KC_LGUI,    KC_LALT,    KC_SPC,        KC_BSPC, KC_ENT,  LALT(KC_GRV),               KC_LEFT,KC_DOWN,KC_RGHT \
  ),
  [1] = LAYOUT( \
    KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,     KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,    KC_DEL, \
    RGB_TOG,   RGBRST,  RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
    XXXXXXX,     RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,        XXXXXXX, \
    _______,       XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_PGUP, _______, \
    XXXXXXX,   _______,    _______,    _______,    XXXXXXX,       XXXXXXX, XXXXXXX, XXXXXXX,                   KC_HOME, KC_PGDN, KC_END \
  )
};

これは実際にキー配列と同じ内容になっています。

[0]の内容がベースで、「MO(1)」に対応するキーを押す事で、[1]のキーが反応する様になっています。

それぞれのコードがどのキーに対応するかは、下記から確認できます。

qmk_firmware/docs/keycodes_basic.md at master · qmk/qmk_firmware · GitHub

今回はあまり凝った内容にしない様に、下記の様に変更しました。

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT( \
    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,   KC_5,        KC_6,    KC_7,    KC_8,     KC_9,    KC_0,      KC_MINUS, KC_EQUAL, KC_BSPC,         \
    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,        KC_Y,    KC_U,    KC_I,     KC_O,    KC_P,      KC_RBRC,  KC_BSLS,  KC_NONUS_BSLASH, \
    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,        KC_H,    KC_J,    KC_K,     KC_L,    KC_SCOLON, KC_QUOTE, KC_ENT,                    \
    KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,   KC_B,        KC_N,    KC_M,    KC_COMMA, KC_DOT,  KC_SLASH,  KC_ESC,   KC_UP,    KC_SLCK,           \
    MO(1),   KC_LCTL, KC_LALT, KC_LGUI, KC_SPC,              KC_SPC,                     KC_RGUI, KC_RALT,   KC_RSFT,  KC_DOWN,  KC_RGHT          \
  ),
  [1] = LAYOUT( \
    KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,      KC_F6,   KC_F7,   KC_F8,    KC_F9,   KC_F10,    KC_F11,   KC_F12,   KC_DEL,  \
    RGB_TOG, RGBRST,  RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,   XXXXXXX,  XXXXXXX,  XXXXXXX, \
    XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,   XXXXXXX,  XXXXXXX,           \
    _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,   _______,  KC_PGUP,  _______, \
    XXXXXXX, _______, _______, _______, XXXXXXX,             XXXXXXX,                    XXXXXXX, XXXXXXX,   KC_HOME,  KC_PGDN,  KC_END   \
  )
};

あとは、これをキーボードに書き込みます。

make mint60:custom:avrdude

これで設定完了です。

参考情報

GitHub - qmk/qmk_firmware: Open-source keyboard firmware for Atmel AVR and Arm USB families

http://www.urong-answer.org/2018/08/changed-keymap-for-mint60/