テキストカーソル(キャレット)にIME状態表示

これまでの問題

Dimeの大きな改善?で書いた通り、IMEの状態表示の理想はテキストカーソル(以下キャレット)のそばに状態を表示することです。その理由は、テキスト入力しているときの視線です。テキスト入力しているときは当然キャレットに注目しているので一番分かりやすい場所に表示されることになります。そこでWindowsの標準に加わったテキストカーソルインジケータを利用して、その色を変える機能をDIMEに追加しました。

表示に関しては申し分ないのですが、大きな欠点としては比較的多くのアプリケーションでテキストカーソルインジケータが表示されないという問題があり、この問題は表示されないということなので致命的な欠点となっています。なのでDIMEでは窓の色を変更したり窓枠の色を変えることをメインとしてテキストカーソルインジケータは補助的な機能に位置づけていました。

キャレット位置の取得

この問題は、キャレットの位置を取得できれば後は分かりやすい表示をするだけなので、キャレット位置をどれだけ取得できるかがポイントとなります。しかし、これまではキャレット位置の取得ができなかったので、この問題を解決することができませんでした。今回DIMEを5.0にバージョンアップするにあたり、改めてキャレット位置の取得方法を調査したところ、かなり多くのアプリケーションで位置を取得できることが分かったので、キャレット位置にIME状態を示すマークを表示する機能を追加しました。

テキストカーソルインジケーターとの比較

では、Windowsの標準機能のテキストカーソルインジケーターと比較してどの程度キャレット位置を取得できるようになったかを説明します。

(1)VSCode(マイクロソフト提供のエディタ)

テキストカーソルインジケーターは一応表示されますが正しい位置に表示されない、消えてしまうという問題があります。

DIMEの場合(点滅する赤い●を表示している)は正しい位置に表示されますし、キャレット位置を動かしても消えずに表示されています。

(2)さまざまなエディタ

①Notepad++

Notepad++では、そもそもカーソルインジケーターは動作しません。

DIMEでは正しく表示されます。

②サクラエディタ

サクラエディタでもカーソルインジケーターは動作しません。

DIMEでは正しく表示されます。

③TeraPad

TeraPadでもカーソルインジケーターは動作しません。

DIMEでは正しく表示されます。

どうやらDIMEは、ほとんどのエディタで正しく動作するようです。

(3)Excel

以前の記事ではOffice2016のExcelでテキストカーソルインジケーターの動作を確認しました。今回Office2021のExcelで確認したところ…

なぜかテキストカーソルインジケーターは表示されませんでした!?
Office2016では表示されています。もしかすると私の環境の問題かもしれません。

DIMEでは正しく表示されます。

(4)Word

以前の記事ではOffice2016のWordでテキストカーソルインジケーターの動作を確認しました。今回Office2021のWordで確認したところ…

Wordでもなぜかテキストカーソルインジケーターは表示されませんでした!?

DIMEでは正しく表示されます。

(5)LibreWriter

以前の記事ではLibreOfficeのアプリケーションはテキストカーソルインジケーターが動作しませんでした。

今回も同じくテキストカーソルインジケータは表示されませんでした。

DIMEでは、入力いしている間は正しく表示されていますが、入力後カーソルを移動しても位置情報が変わらないために赤い●は取り残されています。

(6)Googleドキュメント

Googleドキュメントではカーソルインジケーターは動作しませんでした。

DIMEでは入力中は正しく表示されていますが、入力終了後は位置が取得できないために赤い●が消えてしまいます。この場合DIMEは従来の窓の色を変更することによりIMEの状態を知らせるようにしています。(最後に背景が青く表示されている)

まとめ

Windowsのテキストカーソルインジケーターの機能は一部のアプリケーションでは動作しますが、多くのエディタ、オフィスツール、ブラウザ上のツールでは動作しません。一方DIMEはテストしたものではほぼ正しく動作し、LibreOfficeとGoogleドキュメントで一部表示に問題が残っています。私もしばらくDIMEの赤い●の表示を使っていますが、窓の色全体を変更するよりは大げさではなく、しかも確実にIMEの状態を把握できるので満足しています。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です