0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

概要

たとえば、

  • 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 の標準設定だと
半角入力の後に[変換]キーを押した際に再変換が行われてしまうので無効にします

  1. タスクバーの[IME]アイコンを右クリック
  2. メニューから[プロパティ]を選択する。
  3. [Microsoft IMEの設定]画面で、[詳細設定]ボタンをクリック
    4.[Microsoft IMEの詳細設定]画面が開く
  4. 「変換」キーの項目があれば2列目の"入力/変換済み文字なし"の機能選択を"-"に変更して[OK]を押す
    (最低限はこれだけですが、筆者は他の入力切替の箇所も"-"にしてます)

capture_2020-12-19_193102.png

ファイル設置

ここから任意の場所に git clone するかダウンロードしてください

起動

ImeAutoSwitch.ahk をダブルクリックか、右クリックで[Run Script]

タスクバーのインジケーターに緑のHマークがつけばOKです

capture_2020-12-19 214638.png

使い方は単純。テキスト入力する場面で、
全角入力、つまり日本語入力したいときはスペースキーの横の[変換]キーを親指で押しっぱなし
半角入力、英字入力したいしたいときは[変換]キーを放して入力します

停止

起動時についたインジケーターにある緑のHマークを右クリックして[Exit]を選択します

感想

この記事もこのスクリプトを実行しながら書いてますが、思った以上に便利(自画自賛)

IME切り替えが頻繁に必要な場面では便利だけど、長い文章を書き続けるときは押しっぱなしが結構大変かも。。
常駐ON/OFFできる機能を加えたいですね

もし使っていただけたらレビューもらえるとうれしいです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?