2016年05月11日

AutoHotKeyの串刺し辞書検索での語尾変化対応

AutoHotKeyで串刺し辞書検索をするスクリプト。

1.文字列が選択されていない場合、ポインター(カーソルではないので注意)が置かれている場所の単語を取得します。
2.単語末が「ied」または「ies」の場合は、「y」に置換。例、「studied」や「studies」は「study」に置換。
3.単語末が「ed」の場合は「ed」を削除。例、「folded」は「fold」に。
4.単語末が「s」の場合は、「s」を削除。例、「approvals」は「approval」に。

Windows key+dを押すと、以上の処置を実施後にLogophileで辞書引きをします。
1単語の辞書引きの場合は、わざわざ単語を選択する必要がなく、ポインターを引きたい単語の上に置き、windows keyとdを押すだけです。

====ここからスクリプト====
;ウインドウズキー+dで以下を実行
#d::

;とりあえずクリップボードに入っているものを避難させる
Backup := ClipboardAll
sleep, 50

;クリップボードを空にする
clipboard =
sleep, 50

;選択範囲をコピー
Send,^c
sleep, 50

;選択されているかどうかの判断。選択されていなかった場合、マウスを左クリック2回で単語選択してコピー

If StrLen(clipboard)=0
{
Mouseclick,Left,,,2
Send,^c
}

;最後の1文字を取得して「半角スペースかどうか判定。
StringRight,spacecheck,clipboard,1

;半角スペースの場合は削除
If spacecheck = %A_SPACE%
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-1
clipboard := clipboard1
}

;複数形(ies)および過去形(ied)への対応
;最後の3文字を取得(iescheck)
StringRight,iescheck,clipboard,3

;最後の3文字が「ies」か「ied」を判断して、一致する場合は「y」に変更
If iescheck in ies,ied
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-3
clipboard := clipboard1 "y"
}

;過去形(ed)への対応
;最後の2文字を取得(edcheck)
StringRight,edcheck,clipboard,2

;最後の2文字が「ed」かを判断して、「ed」なら削除
If edcheck = ed
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-2
clipboard := clipboard1
}

;複数形(s)への対応
;最後の1文字を取得(scheck)
StringRight,scheck,clipboard,1

;最後の1文字が「s」かを判断して、「s」なら削除
If scheck = s
{
StringLeft,clipboard1,clipboard,StrLen(clipboard)-1
clipboard := clipboard1
}

clipwait,0.5,1
;logophileにクリップボードの内容を送る
Run,"C:\Program Files (x86)\Logophile\Logophile.exe" -s"%clipboard%" -g

Send,^v
Send, {enter}

;クリップボードを最初の内容に戻す
Clipboard := Backup

Return

====ここまでスクリプト====
posted by 完治 at 12:05| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする