Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@mei28

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

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

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

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

おわりに

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

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

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
2
Help us understand the problem. What are the problem?