qmk_firmwareでキーマップを変更する
【結論】
・自作キーボードは、キーマップを自由に設定できるのが大きな特徴
・キーマップを設定するには、qmk_firmwareを利用する
・qmk_firmwareに任意のキーマップを記述して、書き込む事で設定が完了する
【目次】
【本題】
自作キーボードのキーマップ
先日、自作キーボードを制作しましたが、初期のキーマップは若干MacBookと異なり、使いづらい部分がありました。
なので、キーマップを書き換えることにしたので、その過程で調べた事をまとめます。
↓過去記事
qmk_firmwareの導入
まずは、キーマップを設定する為のqmk_firmwareを導入します。
qmk_firmwareはGItHubから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/