すっかり在宅に慣れてきましたが、ちょっと出かけることも出来ないというのが割とストレスですね・・・。
最近は出勤時間分の時間が空いたので、環境の改善をよく行っています。そんな中で、日本語入力も改善したので、それについて書こうかと思います。
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でカナ入力を実装している方の参考になれば幸いです。