ATOK を使用でスニペットツール ( send ) が日本語入力モードでランダムフリーズする場合
記事の執筆に AI な類は使用しておりません。
はじめに
Windows10 を使用していて文字を多く入力するこういうブログの執筆でもいいのですが、その場合に
変換効率を上げるために日本語入力 ATOK を
繰り返しの入力をスニペットツールにて使用する場合
相性により、エディタがプチフリーズする場合があります。
具体的には変換確定直後に1分ほどフリーズする。
1分待機すると何事もなかったように動き出すが症状。
確定ではありませんが原因である?と思われる解消の方法です。
【 目次へ戻る 】
原因と思われる日本語入力がON
さて、ATOK とスニペットツールでのプチフリーズが発生する事案で観察していましたところ
日本語入力がONになっている状況がほぼでした。
つまり、スニペットツールが文字を変換する時に
英字モードで動作すればいい、という話になります。
スニペットツールは多くが海外で開発、動作していると思われ
日本語で半角全角で切り替えを想定/重要視していないと思う。
英語が打てればいいのでして。
【 目次へ戻る 】
AutoHotkey系を使用しているものなら対策が可能
スニペットツールの設定で IME を自動で ON / OFF が出来ればいいのですが無理な場合は自分で設定をするしかない。
AutoHotkey を内蔵している物であれば設定は簡単。
見分け方は全てのアプリで該当するかは不明ではありますが
スニペットツール内のフォルダを検索して以下の拡張子があるかないか。
.ahk
これは AutoHotkey 系で使用する拡張子なので
あれば使用している可能性が高い。
以下は設定です。
【 目次へ戻る 】
対策
対策の流れとしましては日本語が OFF ならそのまま send で出力し日本語モードが ON なら OFF にして send で出力後 ON にすればよい。
以下にて簡単に IME 状態と切り替えが可能な
IME.ahk があるので使う。
GitHub - karakaram/alt-ime-ahk
右上に About があるので、すぐ横の Code → Download ZIP
解凍して IME.ahk を使用する。
スニペットツールの実行起動ファイルと同じフォルダに以下のフォルダを作成し
Lib
Lib のフォルダ内に IME.ahk をコピー。
~ Lib\IME.ahk とする。
【 目次へ戻る 】
スクリプト
AutoHotkey で使用できるスクリプトはこうなります。;ここに出力する文字を入れる - を5つ書き込むの例 clip = ----- ;IMEの状態を取得 ime := IME_GET() ;IMEが英字モードなら if (%ime% = 0) { ;文字を打ち込む send でもいいが私は SendRaw を使用している SendRaw, %clip% } else { ;IMEが英字モード以外なら ( 日本語入力モード ) ;IME状態を英字モードに指定 IME_SET(0) ;必ず 50 以上の待機をしてください Sleep 50 ;send の出力文字数が多いと、途中で IME が ON に戻り ;正常に出力できないので一手間かける WinGet, hWnd, ID, A ControlGetFocus, vCtlClassNN, % "ahk_id " hWnd Loop, Parse, clip SendMessage, 0x102, % Ord(A_LoopField), 1, % vCtlClassNN, % "ahk_id " hWnd ;WM_CHAR := 0x102 ;必ず 50 以上の待機をしてください Sleep 50 ;IME状態を日本語入力モードへ戻す IME_SET(1) }
【 目次へ戻る 】
スクリプト ( ぷ、ぶなど濁点を含む )
上のスクリプトで通常は平気なのですが「 ぶ 」 や 「 ぷ 」 などの 「 ゛ 」 や 「 ゜ 」 が含まれていると
変換が削れる場合があります。
わかりやすく仮名入力で説明しますと
あっぷる
あっふ゜る
入力して削る文字数が、4文字と5文字に分かれます。
英字では、「 ふ 」 に 「 ゜ 」 が合体するなどはないので?
( あるかも知れませんが ) 考慮されていません。
なので {Backspace} キーで自分で打った文字数を削らなければなりません。
ちなみにスペニットツールの設定で 「 打ち込んだ文字を消さない 」
などの設定がないと使えませんが。
流れとしましては
文字を打ち込む → {Backspace} を押して打ち込んだキーの数だけ消す →
send で文字を打ち込む、という流れ。
;ここに出力する文字を入れる clip = コマンドプロンプト ;スニペットツールで打ち込み呼び出す場合の文字数 ; ( カナ入力の場合で 「 こまんと゛ふ゜ 」 なら7文字 ) del_su = 7 ;日本語状態取得 ime := IME_GET() ;IMEが英字モードなら If (%ime%=0) { ;必ず 50 以上の待機をしてください Sleep 50 ;Backspace キーで打ち込んだ呼び出し文字を消す/指定回数を押す Send, {Backspace %del_su%} ;文字を打ち込む send でもいいが私は SendRaw を使用している SendRaw, %clip% } else { ;IMEが英字モード以外なら ( 日本語入力モード ) ;ATOK は ESCキー で打ち込んだ文字を消せるので ESCキー を押します ;Microsoft IME なら 上の Send, {Backspace %del_su%} に置き換えてください Send, {Escape} ;必ず 50 以上の待機をしてください Sleep 50 ;IME状態を英字モードに指定 IME_SET(0) ;必ず 50 以上の待機をしてください Sleep 50 ;send の出力文字数が多いと、途中で IME が ON に戻り ;正常に出力できないので一手間かける WinGet, hWnd, ID, A ControlGetFocus, vCtlClassNN, % "ahk_id " hWnd Loop, Parse, clip SendMessage, 0x102, % Ord(A_LoopField), 1, % vCtlClassNN, % "ahk_id " hWnd ;WM_CHAR := 0x102 ;必ず 50 以上の待機をしてください Sleep 50 ;IME状態を日本語入力モードへ戻す IME_SET(1) }
-----
とまあ、こんな感じでスニペットツールと ATOK の
組み合わせのプチフリーズ対策でした。
これが設定できないスニペットツールは
スニペットを起動してからエディタを起動すればよい。
スニペットを起動し直したらエディタも一度終了させて
起動しなくてはならないので、面倒は面倒ではありますが。
この設定と起動し直し、どちらが面倒かは個人の感じ方にもよる。
それでは、皆様のパソコンがプチフリーズしないようにと
お祈りいたしまして、これにて終了です。
以上。
おすすめリンク
・Amazon- 関連記事
-
- WinRAR RAR5形式を使用してコマンドライン/バッチファイルで圧縮する (2023/08/16)
- WinRAR 右クリックメニューのメール送信を消す/右クリックメニューの編集 (2023/08/08)
- WinRAR v6.22 64bit ファイル選択の右クリックメニュー/~に圧縮 が2つあるを片方消す (2023/08/01)
- JPEGView Portable 開いている画像と同じ画像を別のウィンドウで開く/全画面切り替え (2023/05/25)
- RmaDisk を TEMP に割り当てている環境で AUTOMATIC1111 の初回起動エラー (2023/05/15)
- Converseen で AVIF 拡張子な画像を JPG PNG BMP に変換/日本語化 (2023/04/08)
- XYplorer Free で HDD / SSD の容量を食っているフォルダを探す、空き容量改善 (2023/03/14)
- XYplorer のスクリプトで2つのフォルダの同期をする/スクリプトの関連付け方法 (2023/02/21)
- VMware ホスト側のOSを巻き込んでフリーズ改善のためGPU支援を止める設定方法 (2022/12/17)
- EmEditor v22 Pro 増えたメインメニュー項目 ( メニューバー ) を元に戻す設定方法 (2022/10/11)