前回、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が光るようになっています。
