tbsmcd.net
Dark mode
index, archives, tags, search, profile

AHK(AutoHotkey) V2.0系でローマ字再変換

Series: AutoHotkey

  1. 2024-03-17 AHK(AutoHotkey) V2.0系で「どのアプリからでもコピペしてググる」
  2. 2024-03-14 AHK(AutoHotkey) V2.0系でローマ字再変換
  3. 2024-03-13 Windows 初心者がやってみた AutoHotkey 設定. ショートカット/ホットキー/キーリマップ/GUI など

前回の続き。


これをやる↓

ek_


IME オフになってるのに気付かずタイピングしたとき

 ダルい。基本的にディスプレイを見ていても何文字かは止まらずに打ってしまい、IME を有効にしたあとに再度打つ羽目に。こういう時のための AutoHotkey の設定を先人は残してくれている。

これをリスペクトしつつ、自身が必要な機能を V2.0 系で書き直してみた。

実装

ということをする

/*
===================================
ローマ字を再変換
右シフト 2連打で発火 Interval <= 400ms
選択中のテキストが `半角英数-~のみ1文字以上` の場合だけ有効
===================================
*/

RShift::{
    if (A_ThisHotkey == A_PriorHotkey && A_TimeSincePriorHotkey <= 400) {
        clip_data := ClipboardAll()
        A_Clipboard := ""
        Send "^c"
        ClipWait 0.5
        copied := String(A_Clipboard)
        if (RegExMatch(copied, "^[0-9a-zA-Z\-\~]+$")) {
            Send "{F13}" copied
        }
        A_Clipboard := clip_data
        return
    }
}

ClipWait が必要なことに注意。

直前の Send "^c" はあくまでキーを送出しているだけなのでクリップボードの状態は見ていない。そのためクリップボードにデータが入るのを待機する必要がある。

String(A_Clipboard) は何か文字列以外のものをコピーしてしまった場合のためだが、不要かもしれない。

., については、この機能は単語単位で使うだろうと思って除外している。


Tags: AutoHotkey Windows