概要
たとえば、
- Markdownを記載中
- 設定ファイルの記述中
- vimで入力モードからノーマルモードへの移行
これらで日本語と英語の入力が混在するときに、
英語入力 → IME ON → 日本語入力 → IME OFF → 英語入力
とやるの、結構ストレスじゃありません?
たまに切り替えを忘れて、せっかく入力したのが無駄になったときは特に。
そこで、英語で[Shift]キー押してなら小文字入力から大文字入力になるみたいに、
何かのキーを押している間だけ日本語入力できて、放したら英語入力に戻れるようになったら、便利だなーと思って作ってみました
環境
OS : Windows 10 64bit
IME : Microsoft IME
作ってみた
キーリマッピングにはレジストリ変更型と常駐型の方法がありますが
押下状態を見るには監視しないといけないので常駐が組める AutoHotKey を使います
またeamat氏 作成のIME制御のスクリプトを拝借させていただきました(感謝!!)
https://w.atwiki.jp/eamat/pages/17.html
実装した部分はこんな感じです
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#Include lib\IME.ahk
#InstallKeybdHook
; メイン
_Main:
SetTimer,_ImeAutoSwitch,ON
return
_ImeAutoSwitch:
; キーの入力状態を取得する
; vk1C 変換キー
; キーリスト
; http://ahkwiki.net/KeyList
; 英数、ひらがな/カタカナ、全角/半角キーは動作不安定
; AutoHotkeyのバージョンが上がってvk~, sc~を分けて判定できるようになっている
GetKeyState, KeyState, vk1C, P
; IME ON/OFFの状態を取得![capture_2020-12-19 214638.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83304/3e1d093a-bc1b-2929-e74e-6477b4fb7152.png)
ImeState := IME_GET()
; キーを離している場合
If KeyState = U
{
; IME ONだったらOFFにする
If ImeState = 1
{
IME_SET(0)
}
}
; キーを押している場合
Else If KeyState = D
{
; IME OFFだったらONにする。ひらがなモードにしている。
If ImeState = 0
{
IME_SET(1)
IME_SetConvMode(0x09)
}
}
; ウェイト
Sleep 200
return
使ってみたい?
下記の手順で行います
AutoHotKey をインストールする
AutoHotKeyの公式ページからダウンロードします
AutoHotKey
https://www.autohotkey.com/download/
この記事では version 1.1.33 で動作確認しています
IMEの変換キーの制御を変更する
Microsoft IME の標準設定だと
半角入力の後に[変換]キーを押した際に再変換が行われてしまうので無効にします
- タスクバーの[IME]アイコンを右クリック
- メニューから[プロパティ]を選択する。
- [Microsoft IMEの設定]画面で、[詳細設定]ボタンをクリック
4.[Microsoft IMEの詳細設定]画面が開く - 「変換」キーの項目があれば2列目の"入力/変換済み文字なし"の機能選択を"-"に変更して[OK]を押す
(最低限はこれだけですが、筆者は他の入力切替の箇所も"-"にしてます)
ファイル設置
ここから任意の場所に git clone するかダウンロードしてください
起動
ImeAutoSwitch.ahk をダブルクリックか、右クリックで[Run Script]
タスクバーのインジケーターに緑のHマークがつけばOKです
使い方は単純。テキスト入力する場面で、
全角入力、つまり日本語入力したいときはスペースキーの横の[変換]キーを親指で押しっぱなし
半角入力、英字入力したいしたいときは[変換]キーを放して入力します
停止
起動時についたインジケーターにある緑のHマークを右クリックして[Exit]を選択します
感想
この記事もこのスクリプトを実行しながら書いてますが、思った以上に便利(自画自賛)
IME切り替えが頻繁に必要な場面では便利だけど、長い文章を書き続けるときは押しっぱなしが結構大変かも。。
常駐ON/OFFできる機能を加えたいですね
もし使っていただけたらレビューもらえるとうれしいです