QMK で かなキー を Hold している間だけローマ字入力になるようにしてみる

created at: 2022-05-07

history

何がしたいのか

普段文章を入力する時、 英字 と かな を交互に切り替えながら入力すると思います。
私はよく切り替え忘れたり今どっちなのか分からなくなったりして、打ち間違いが発生してイライラしていました。(vim で i って打とうとしたら い になってたり)
そこで、「普段は英字入力、 かなキー を押している間のみローマ字入力」とすることで現在の入力ソースが明確になりストレスが軽減されるのではないかと思いやってみることにしました。

最小限のコード

process_record_user を使ってカスタマイズします。
やっていることは単純で、押下したら かな を、離したら 英字 を送信しています。
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case KC_LANG1:
        if(record->event.pressed) {
            tap_code(KC_LANG1);
        } else {
            tap_code(KC_LANG2);
        }
        return false;
    }
    return true;
}

より便利にする

この入力方法を利用する場合、キー配置がとても重要です。
かなキー は Hold しつつローマ字入力できる場所に置く必要があり、かつ変換もしたいのでスペースキーも押せると良いです。
色々考えた結果私はこのようになりました。
まず スペースキー と かなキー は左右で分けています。
そして かなキー を離したら Enter を送信するようにしています。これで入力後 Enter を押す手間が一つ減ります。
で、このままだと BS が押せないのでローマ字入力中は左手の Enter が BS になるようにしました。
実際のコードはこんな感じです。KC_LANG1_ENT という独自のキーを定義しています。
ちなみに使ってるのは keyball61 というトラックボール搭載の左右分離型キーボードです。
最高のキーボードなのでぜひ。

感想

現在の入力ソースが明確になったことで大分ストレスが減りました。
私は心配性なので文章を入力する際は かな/英字 キーを押してから入力するようにしていましたが、それを考える必要がなくなって、常に英字という確証があるのは非常に心地よいです。
また副次効果として、キーを離したときに Enter も送信されるのが通常の切替方法より一手間減って気に入っています。
まだこの入力方法を使って 3 日くらいしか経ってないので、もうしばらく使ってみようと思います。