WSLでのキーマップ変更方法と分割キーボードで右をマスターにする方法

はじめに

先日Mint60を作りました.

ocucraqp.hatenablog.com

自分用にキーマップを変更したので,その方法について書きたいと思います. WSLの導入方法やgit,makeのインストール方法についてはここでは書きませんが,ググればすぐ出てくると思います.

また今回自分はWindowsにDockerを入れるのが面倒だったのでmakeでビルドしたのですが,Dockerでもビルドできます(WSLでDocker使えるようになるのはいつ......). また,QMK ToolboxのLinux版は更新がかなり前に止まっているっぽかったので,QMK Toolboxを使う場合はWindowsMacでやりましょう.

以下の記事を参考にさせていただきながら書きました. www.urong-answer.org

環境

必要な物のインストール

キーマップを変更するのに必要なソフトは

の二つです.

QMK Firmware

QMK Firmwareオープンソースの自作キーボード用ファームウェアです. c言語でキーマップを自由に作ることができます. QMK Firmwareはgitでローカルにクローンします. WSL上で適当なディレクトリに移動してから以下のコマンドを入力してください.

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

他に必要な物をまとめてインストールしてくれるスクリプトがあるので,次のコマンドで実行します.

./util/qmk_install.sh

QMK Toolbox

QMK ToolboxはQMK Firmwareで作ったキーマップをキーボードに焼くために使います. まず以下のページからqmk_driver_installer.exeをダウンロードしてドライバをインストールしてください. github.com 次に以下のページからqmk_toolbox.exeをダウンロードしてください. github.com 特に理由がなければどちらも最新版でいいと思います.

キーマップの焼き方

まずqmk_firmwareディレクトリに入ります.

cd qmk_firmware

Mint60のデフォルトのキーマップはqmk_firmware/keyboards/mint60/keymaps/default/keymap.cに書かれています. このキーマップ試しにキーボードに焼いてみます.

焼くときは,まずqmk_firmwareディレクトリ下でキーマップをビルドします.

make <keyboard name>:<keymap name>

Mint60のデフォルトキーマップの場合は

make mint60:default

です.

エラーが出た場合は,必要に応じてエラーに表示されているソフトをインストールすれば解決するかもしれません. コンパイルできていればqmk_firmware下にmint60_default.hexというファイルが生成されているはずです.

次にqmk_toolbox.exeを起動します. 起動したら,左上のlocal fileという部分に先程生成したmint60_default.hexを選択します. キーマップを焼くキーボードを接続して,リセットボタンを押してください.

*** Caterina device connected: Arduino Micro bootloader ~~~***

という風な文字が表示されると接続されています. 右上のFlashボタンを押すとキーマップを焼いてくれます. Thank youと表示され,接続が切れると完了です.

キーマップ変更方法

defaultのキーマップを元にオリジナルのキーマップを作成するので,まずはdefaultをコピーします.今回はオリジナルのキーマップ名はcustomとします.

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

次にcustom内のkeymap.cを編集します. 34行目以降を変えていきます. defaultのkeymap.cでは次のようになっています.

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]とか[1]がレイヤーになっていて,MO(1)が割り当てられているキーを押しながら押すと[1]のレイヤーのキーになるという感じです. キーは左上から右に順に書かれていてキーボード上の位置と対応しているのですぐ分かると思います.

KC_から始まるキーコードがどのキーか表しているので,ここを書き換えればキーマップを編集できます. キーコードは以下のサイトで確認してください. Keycodes Overview

編集できたら,defaultのキーマップ同様以下のコマンドでコンパイルします.

make mint60:custom

コンパイルできたら,qmk_toolboxでmint60_custom.hexを選択し,キーボードに焼いて完了です.

右をマスターにする方法

分割キーボードは普通は左のキーボードをマスターとしてUSBを挿して使用するそうですが,右に挿して使いたい場合もあります. keyboards/mint60/keymaps/custom/config.hの23行目のコメントを外すと右がマスターになります.

#define MASTER_RIGHT

また,左右にそれぞれをマスターにしたキーマップを焼いてやることで,それぞれを独立したキーボードとして使うことができるようになります. TRSケーブルやコネクタが壊れた時や,左右の間隔をTRSケーブルを無視して広げたい時にするといいと思います.

最後に

TRSケーブルが奥まで挿さっていないのに気づかず,普通の状態で使えなかったときに,左右それぞれをマスターにして使っていました. Fnキーは左右それぞれ押さないといけないので,左のFnを押しながら右のキーを押したりできないのが辛かったです. あとUbuntuで使ったときに,左右のキーボードを順番に入力すると一瞬入力がフリーズしてしまっててUbuntuでは使い物になりませんでした. もしかしたら,複数キーボードを快適に使う方法があるかもしれませんが……

あと,QMK Toolboxを使わなくても

make mint60:custom:avrdude

とかで焼き込みできるって書いてる記事もあったんですが,自分の環境ではうまく行かなかったです.