ぴょんぴょんブログ

QMK Firmwareでテンキーレイヤーを追加

はじめに

前々回と前々回では,Mint60を作成し,キーマップを自分用に変更しました.

前々回 [ 電子工作初心者が思ったMint60製作注意点 - 趣味を語りたいブログ ]

前回 [ WSLでのキーマップ変更方法と分割キーボードで右をマスターにする方法 - 趣味を語りたいブログ ]

自作キーボードを作った後,たまに使うしテンキーも買おうかなと思っていました.でもテンキーのレイヤーを追加すれば場所もとらないし完璧ではと思い,今回作成しました.

キーマップの焼き方は前回の記事に書いてるので,そちらをご覧ください.

作成するキーマップ

作成するキーマップは次のようにしました.

f:id:ocucraqp:20190629021040p:plain
標準のレイヤー(レイヤー0)
f:id:ocucraqp:20190629021125p:plain
ファンクションレイヤー(レイヤー1)
f:id:ocucraqp:20190629021203p:plain
テンキーレイヤー(レイヤー2)
レイヤー0が標準のレイヤー,レイヤー1がfnキーを押したときに使うレイヤー,レイヤー2がテンキー用のレイヤーにしています.

テンキーレイヤーはfn+Aで呼び出せるようにしています.レイヤー1のTO(2)という部分です.TO(X)とすると,それを押したときにXのレイヤーに切り替わります.MO(X)は押している間だけそのレイヤーに切り替わるのですが,テンキー使用中にどこかのキーを押しっぱなしにするのは辛いので,TO(X)を使いました.

ソースコード

このキーマップのコードは次のようになります.

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, \
 MO(1), 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_RCTL, KC_UP, MO(1),   \
    KC_LCTL, KC_LGUI, KC_LALT, KC_F7, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, 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, XXXXXXX, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, KC_CAPSLOCK, KC_PSCREEN, KC_INSERT, \
 _______, TO(2), XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, _______, \
 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_PGUP, _______, \
 _______, _______, _______, _______,
LALT(KC_GRV), KC_DEL, _______, _______, KC_HOME, KC_PGDN, KC_END \

),
[2] =
LAYOUT( \
    KC_ESC, KC_KP_7, KC_KP_8, KC_KP_9, KC_PSLS, KC_BSPC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
 KC_TAB, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
 _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, KC_NUMLOCK, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, \
 _______, KC_KP_0, KC_KP_DOT, KC_PENT, KC_PPLS, TO(0), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_UP, _______, \
 _______, _______, _______, _______, KC_SPC, KC_SPC, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT \
)
};

KC_KP_Xというのが,テンキー用のキーコードになっています.テンキーは左のキーボードにだけ割り当てて,右のキーボードは適当なキーコードにしておきました.

最後に

Mint60は格子状の配列ではなく,行ごとにずれているため,普通のテンキーの感覚で使うと使いづらいです(ノーパソでテンキーを使うときのような感覚).テンキーの使用頻度が高い人は普通にテンキーを購入した方がいいと思います.僕はそんなに使用頻度が高くないのと,机が狭いのでテンキーを置きたくないという理由でしばらくこれで頑張ろうかなと思っています.

(もっと玄人っぽいキーマップにしたいけど,これ以上すると普通のキーボード使うときに辛くなりそう……)