「ç」を「,」と「c」で入力したい

us配列におけるフランス語対応インプットメソッドの開発

「ç」を「,」と「c」で入力したい
Page content

経緯

僕はいま、フランスに留学をしているのだが、フランス語で文章を書くときに「ä」などのアクセント付き文字や、「æ」などのリガチャを入力する必要があることがある。 既存の方法でも、大抵のアクセント記号は入力できるのだが、何故か「ç」 やリガチャなどの入力は複雑だったり、他のキーバインドと競合したりして、文字を打つリズムというか、文章を書く流れを遮られてしまうように感じていた。

これらの文字の入力頻度はそこまで高くないし、僕自身、フランス語を書く機会が特別多いわけでもない。(まだ全然理解していないし。) けれど、なんとなくその不便さに耐えられなくなってしまって、とりあえず自分が納得できるキーバインドを持つ、US配列ベースでフランス語用のインプットメソッド(以下、IM)を作ることにした。

US配列におけるフランス語入力

じゃあ、フランス人はどうやってこれらの文字を入力しているかというと、QWERTY配列ではなく、AZERTY配列というものを使っているらしい。QWERTY配列との主な違いは、アクセント付きの文字には専用のキーがあり、代わりに数字はShiftキーと同時に押すことで入力できる点だ。 ただし、すべてのアクセント付き文字に専用キーが設けられているわけではなく、Dead Key1 という仕組みを用いて、連続するキー入力を組み合わせてアクセント付き文字を作成するようだ。

一方、US配列のフランス語IMでは、アクセント付き文字用の専用キーを持つことができないため、すべてDead Keyやその他のキーの組み合わせを駆使して、これらの文字を入力している。

つくってみた

https://github.com/msshtdev/fcitx5-cedilla

僕はlinuxユーザーでIMフレームワークはfcitx5を使っているので、それにあわせて作成した。実装は自分の思い通りのキーバインドでIMを作成するだけなので、大したことはしていない。ただ、1 ~ 2日でパァーっと書いてしまったので汚かったり、ロジックをシンプルにできる箇所があるので、気が向いたら直したい。

実は、不満に感じているのはcedillaと呼ばれる「ç」の入力が「,」+「c」でできないこと、リガチャの変換がTabキーでできないこと以外にもう一つある。 それは、US配列のフランス語IMはコードを書くのに適していないことだ。

「`」とか、「:」とかのあとに「e」や「u」と打とうものなら、「è」や「ü」に変換されてしまう。フランス語のIM的には正しい動作なのだけど、コードを書くときには邪魔でしかない。 なら、コードを書くときはUSのIMを使えばよいではないかと考えるかもしれないがこれがなかなかめんどくさい。

普段の生活では、コードを書く、文章を日本語で書く、英語で書く、フランス語で書くという行為を横断的に行う必要がある。それぞれにIMを用意しようと思うと、最低3つ(英語、日本語、フランス語)のIMが必要になる。「3つのIMをローテーションしながら利用するのはかなりめんどくさい。基本的には2つ以下がよい。」というのが私の考えだ。

そこで、US配列用のフランス語IMと言っておきながら、「Shift & Space」でフランス語と英語の入力を切り替えられるようにした。こうすることで、IM自体はこのIMと日本語用のIM (僕の場合mozc)の2つにとどめておき、フランス語の入力が必要な場面では上記のキーバインドで入力をフランス語に切り替えて入力できる。

すべてたいした機能はないけれど、数日使ってみた限りでは、以前よりだいぶストレスを感じなくなった気がする。