すっかり在宅に慣れてきましたが、ちょっと出かけることも出来ないというのが割とストレスですね・・・。

最近は出勤時間分の時間が空いたので、環境の改善をよく行っています。そんな中で、日本語入力も改善したので、それについて書こうかと思います。

qmk_firmwareと日本語入力

いくつかqmk_firmwareでカナ入力の方式を実装してきましたが、今までの実装だと、以下のような問題がありました。

  • どうしてもローマ字で入力させる必要があったため、マッピングが肥大する
    • 肥大すると、当然ながら他の機能を追加できないため、使い勝手が悪い
  • 濁音を後置する場合、どうしても不自然になる
    • 本来であればIME側でやってくれることを、ファームウェア側でやる必要がある
    • 遅延で入力させることもできるが、いかんせん表示がかなり不自然になる

特にnew stickney配列を使うようになって顕著なのが、濁音後置になったため、濁音の入力時に考えなければならないことが増えました。 timerを使った遅延入力にすると、出力自体が遅延するため、今入力している内容を把握するのが大変です。濁音キーを入れた時に、一回入れた文字を消して新しい文字を入れる、ということもしてみたりしましたが、これはこれで誤動作が多く、今ではお蔵入りになっています。

なぜIMEのかな入力を使わないのかと

IMEでローマ字ではないかな入力を使えば、こういう問題はある程度解決されます。今までやってなかったのは、ひとえに マッピングがめんどくさい という点が大きかったです。

また、ローマ字では、キーボードのレイアウトがUSでもJPでも全く問題なく扱うことが出来ますが、かな入力では、USではそもそも入力できないキーコードが必要になります。こういった点を解決できるのかが把握できなかったため、放置していましたが、一念発起して対応してみました。

対応した結果

こんな感じになりました。key sequenceが1文字になったことと、濁音と半濁音のハンドリングを自分で行う必要が無くなったため、全体の容量は減っています。

https://github.com/derui/qmk%5Ffirmware/tree/master/keyboards/crkbd/keymaps/derui

ただ、小書き文字に対する対応が必要であるため、母音を入力するときだけは遅延が発生する状態です。慣れればdelayを低くしてもいいとは思いますが、今のところは置いておいてます。この小書き文字の部分をスマートに実装できれば、かなりの使い勝手になりそうだと勝手に思ってます。

また、Emacsでの設定も追加しました。

(setq mozc-keymap-kana mozc-keymap-kana-101us)

この対応をした結果、以下のようになりました。

  • Fcitx + mozcでは特に問題なく使える
  • Emacs + mozcでは、 に対応するkey codeをハンドリング出来ていないため、本来の入力と異なるmappingが行われてしまっている
    • この2つ以外は、問題なくnew stickney配列を再現できている
    • Emacsでもfcitxを使って、mozc.elを使わない、とかすればいいかもしれないが・・・
      • mozc-keymap-kana-106jp というkeymapに変更すると、異なる文字が入れられるようになってしまう
      • 多分USレイアウトとJPレイアウトで記号が異なる部分で違っている
    • USレイアウトにないkey codeをハンドリングすることが出来ればなんとかなるので、mozc.elの中を覗いているところ
  • 仕事で使うMacでは試していない

ローマ字でいいじゃん、という誘惑との戦い

正直、これだけやっていても、仕事で急いでいるときにはローマ字で入力してしまっているという体たらくなので、ローマ字でいいんじゃないか?と思うときがないわけではありません。

特に、価値のあること(大抵金銭的なもの)以外に時間を使うことに対して否定的な環境にいると、非効率自体が無駄とみなされがちです。

しかし、異なる入力方法に親しむということは、異なる能力開発をしている、ということでもあります。この入力を自然に行うためにはどうするべきか?という問いに答えるのは自分しかいません。問題解決能力を鍛えるということは、みんな大好き人生100年時代にもマッチするのではないでしょうか。

なんだかんだ書いてみましたが、つまるところ自分の趣味なので、まー好きにさせてくれよ、というところでしょうか。

かな入力はIMEに任せよう

濁音後置型のかな入力は、IMEのJISかなに任せると楽が出来ます。新下駄配列とかの濁音も一モーションで入力するような配列では工夫する必要がありそうですが、送信するキーシーケンスの数は減るはずです。

qmk_firmwareでカナ入力を実装している方の参考になれば幸いです。