前回、meishi2キーボードを買って、キーを押したら「こんにちは~~」と出るようにしてみたというエントリを書いてみました。
ちょっとカスタマイズを加えてみます。
キーが4つだと寂しいのでレイヤー機能を使って、もう少しいろんなことをできるようにします。そしてどのレイヤーになっているかわかるようにレイヤーの状態に応じてオンボードLEDを光らせます。
変更するのは、keymap.cで以下のように変更します。
-----------------#include QMK_KEYBOARD_H
#define PRO_MICRO_LED_TX D5
#define PRO_MICRO_LED_RX B0
#define SW_DEF_LAY TO(_DEFAULT)
#define SW_MES_LAY TO(_MESSAGE)
//KC_Q,KC_W,KC_Eを指定していますが、使わないキーを適当に割り当てています
enum custom_keycodes {
HASE = KC_Q,
WATA = KC_W,
NORI = KC_E,
};
enum meishi2_moc_layers {
_DEFAULT,
_MESSAGE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT( /* Base */
SW_MES_LAY, LCTL(KC_A), LCTL(KC_C), LCTL(KC_V)
),
[_MESSAGE] = LAYOUT( /* Base */
SW_DEF_LAY,HASE, WATA, NORI
),
};
void matrix_init_user(void) {
setPinOutput(PRO_MICRO_LED_TX);
writePinHigh(PRO_MICRO_LED_TX);
setPinOutput(PRO_MICRO_LED_RX);
writePinHigh(PRO_MICRO_LED_RX);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case HASE:
if (record->event.pressed) {
send_unicode_string("こんにちは~~");
}
return false;
break;
case WATA:
if (record->event.pressed) {
send_unicode_string("うるせ~よ");
}
return false;
break;
case NORI:
if (record->event.pressed) {
send_unicode_string("のりのりまさのり");
}
return false;
break;
case SW_DEF_LAY:
if (record->event.pressed) {
writePinHigh(PRO_MICRO_LED_TX);
writePinHigh(PRO_MICRO_LED_RX);
}
break;
case SW_MES_LAY:
if (record->event.pressed) {
writePinLow(PRO_MICRO_LED_TX);
writePinLow(PRO_MICRO_LED_RX);
}
break;
}
return true;
}
-----------------
これで6つのキーが使えるようになりました。
そして、メッセージが出てくるレイヤーになっているときにはオンボードLEDが光るようになっています。