Microsoft IMEの句読点を一発で切り替えるソフト「句読点スイッチャー」をAutoHotkeyで自作した

Featured image of the post

目次

まえがき

📄Arrow icon of a page linkGoogle日本語入力の句読点を一発で切り替えるソフト「句読点スイッチャー」をAutoHotkeyで自作した

先日上にある記事を書きました。折角作るので公開したいと思い、公開するのであれば設定を変更できるようにしたいと思い、そうしたらとんでもなく時間が掛かりました。

ツールを作った目的は「、。」(句点読点)と「,.」(カンマピリオド)を切り替えることで、Google日本語入力で句読点を切り替えるソフトを作ったのは参考になる手法を発見したからです。

かなり時間掛けて作ったのですが、完成してからMicrosoft IMEでも設定を変更する方法を発見してしまいました。

こっちの方がシンプルで、Google日本語入力を追加でインストールするとかそういうのが無いのですぐ導入できます。

コードの殆どを流用したらすぐできたのでこっちも公開します。

手順

「句読点スイッチャー」の準備

GitHubの最新リリースはここから

直接ダウンロードはここから↑

上のZIPファイルをダウンロードして任意の場所で解凍します。
※ C:\Program Files など、ユーザーアカウント制御により書き込みが制限される場所は避けてください。

PunctuationSwitcher.exeをダブルクリックで句読点スイッチャーが起動できます。Windowsから警告が表示されると思います。

Image in a image block

コードサイニング証明書を取得していない個人開発のソフトウェアであるため、このようにWindowsの警告が表示されます。

詳細情報から実行をクリックして実行します。

Windowsの起動時に自動起動させる場合は下記の方法でスタートアップに登録してください。

スタートアップへの登録(必要であれば)

PC起動時から実行させるのであれば、実行ファイルの右クリックメニューからショートカットを作成し、スタートアップフォルダに放り込みます。

個別ユーザーのスタートアップフォルダのパス
C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

全ユーザー共通のスタートアップフォルダのパス
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

使い方

Image in a image block
使用中にアイコンをクリックすると、句読点の設定を切り替えることができます。
Image in a image block
ショートカットキーでも句読点の設定を切り替えることができます。

デフォルトのショートカットキーは「Ctrl+Shift」です。

設定項目

アイコンを右クリックすることで設定が可能です。

Image in a image block

ショートカットキーの有効化

「ショートカットキーの有効化」をクリックすると、ショートカットキーの有効/無効を切り替えることができます(チェックマークで現在の状態をチェック可能)。

ショートカットキーの設定

「ショートカットキーの設定」をクリックすると、ショートカットキーの設定画面へと進みます。

Image in a image block

任意のショートカットキーを設定する場合はチェックマークを外した後に、

Image in a image block

赤枠内をクリックしてフォーカスを当て、設定したいショートカットキーを実際に押します。

Image in a image block

ショートカットキーが表示されたら、Saveボタンをクリックします(自動的に設定ウィンドウは閉じます)。

config.iniから直接編集も可能ですが、特殊なショートカットキーで登録できないなどの理由が無い限りはこの方法が楽なのでオススメです。

既知の不具合

  • ショートカットキーで句読点を切り替えた際、アイコンは変わっているのに入力する句読点が切り替わらない

Microsoft IMEの仕様っぽいんですが、レジストリ上で句読点の設定を書き換えても、フォーカスがそのままだと変更前の設定がキャッシュされていて句読点が切り替わりません。

タスクトレイアイコンをクリックすることで実行した場合、マウスクリックでフォーカスがリセットされるので問題なく変更が反映されるのですが、ショートカットキーによる実行ではフォーカスがそのままです。

ショートカットキーからの実行時に限り、フォーカスをリセットする(一瞬外して戻す)ために「コマンドプロンプトのウィンドウを最小化状態で0.5秒間出す」というダミーの処理を入れていますが、これでもたまに反映されないことがあります。

反映されないときは、テキスト入力欄以外のどこかを一旦クリックするなどしてフォーカスを再読み込みさせてください。

もっといい方法は無いものかと考えていますが、今のところ解決の目途は立っていません