Help us understand the problem. What is going on with this article?

QMK_firmwareで自作キーボードのキーマップの変更

はじめに

先日はじめての自作キーボードMint60を作成し,その際キーマップを変更したときの手順をまとめています.

Mint60の制作については,また後日まとめて出そうと思います.

目標

image.png

この初期のキーマップから
- aキーの横のCapsLock→Ctrl
- 左半分の下段を左からESC,Ctrl,Alt,Command,Space
- 右半分の下段を左からSpace,Command,Alt,←,↓,→
に変更します.

普段はMacBookで使っていこうと思っているので,Spaceの横はCommandキーを置いています.Windowsで使うときは,CommandとAltを入れ替えて使う予定です.

CapsLockは使わないキーなのでファームウェア上でCtrlに置き換えることで排除します.

変更手順

  1. QMK Firmware をクローンしてくる.
  2. QMK FirmWare のビルド環境を作る.
  3. キーマップの変更
  4. ビルド
  5. 左右のPro Microに書き込む.

が大まかな流れになります.

QMK Firmwareをクローンしてくる.

ターミナルなどで下のコマンドをたたくと,Githubからクローンしてきます.
$ git clone https://github.com/qmk/qmk_firmware

クローンが終わったらqmk_firmwareに移動しましょう.

QMK FirmWare のビルド環境を作る.

ビルドに必要なものをインストールしてくれるスクリプトがあるので,これを実行してビルド環境を作ります.
$ ./util/qmk_install.sh

キーマップの変更

今回Mint60のキーマップを変更するのでMint60での方法を書きますが,ほかでもあまりやっていることは変わらないです.mint60のところを自分の自作キーボードに書き換えればできます.

Mint60のキーマップは,keyboards/mint60/keymapsの中にあって,defaultとeucalynの二種類があると思います.

$ ls keyboards/mint60/keymaps
default eucalyn

eucalynはMint60の製作者のゆかりさんが考えた配列です.

キーマップをいじるためにdefaultをコピーして書き換えます.

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

custom_for_macのところは自分でわかる好きな文字列にして大丈夫です.

keyboards/mint60/keymaps/custom_for_mac/keymap.cを好きなエディタを用いて書き換えます.

内部で書かれてるマクロの定義は,tmk_core/common/keycode.hの中に書かれているので,わからなくなったらここのを確認してみましょう.

書き換えた結果僕は下のようになりました.

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_LCTL,     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_LALT,    KC_LGUI,    KC_SPC,        KC_SPC, KC_RGUI,  KC_RALT,               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 \
  )
};

ビルド

$ make mint60:custom_for_mac

を実行してファームウェアのビルドをします.

左右のPro Microに書き込む.

ビルドしたものをPro Microに書き込みます.
まずパソコンとキーボードを接続して,下のコマンドをたたきます.

$ make mint60:custom:avrdude

すると,デバイスの検知が始まるので,キーボードについているリセットボタンを押すと検知され,自動的に書き込みが始まると思います.

書き込みが終わったら完了です.

(補足)
左右のキーボードに書き込んで,確認したところなぜか左右のキーマップが逆転する事態が発生した.もう一度書き込みなおしたらなおったので,もしかすると書き込むときの順番が関係あるのかも知れない.

おわりに

ファームウェアの書き込みは,難しそうと思ってましたが以外に簡単にできました.

レイヤー機能があるのでもっといかせるようにキーマップを魔改造していきたいですね.

mei28
機械学習がメインだけど,ときどきUnity.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした