Quantcast
Channel: 簡睿隨筆
Viewing all articles
Browse latest Browse all 897

在小小輸入法裡調用AutoHotkey v2腳本,以字串替換(使用命令直通車 $GO)

$
0
0

新版的小小輸入法提供的命令直通車 $GO() 提供了管道(Pipe)的擴充功能,能在輸入法裡叫用外部程式而取得其輸出資料,因此我們便能透過這個功能在外部運算而取到動態資料了,例如下例將剪貼簿裡的字串內的半形標點符號替換成全形標點符號後直接輸出。

使用OCR工具擷取到的文字標點大半都是半形,透過自訂編碼替換成全形標點。

小小輸入法目前無法取得滑鼠標示內容,必須透過剪貼簿取得來源資料,因此使用$CLIPBOARD以得到剪貼簿內的文字。

AutoHotkey V2 script yong-replace.ahk2 (副檔名可自行修改為.ahk) :

#Requires AutoHotkey v2.0
#SingleInstance Force
/**
 * @version: 2024-10-23 09:06:37
 * @author: Jerry
 * @Purpose: AutoHotkey v2 script. Called by Yong IME.
 * @example: 
 * zrpf $[替換成全形標點]$GO(|c:\util\AHK\autohotkey64.exe$_j:\ahk2\yong-replace.ahk2$_$CLIPBOARD$_F)$SPACE
 * zrph $[替換成半形標點]$GO(|c:\util\AHK\autohotkey64.exe$_j:\ahk2\yong-replace.ahk2$_$CLIPBOARD$_H)$SPACE
*/
sMsg := A_Args[1]
sFormat := A_Args[2]
aHalfShapes := [ ",", ".", ":", "?" ]
aFullShapes := [ ",", "。", ":", "?" ]
if (sFormat == "H") {  ; to Half shape
  aFromShapes := aFullShapes
  aToShapes := aHalfShapes
} else {  ; to Full shape
  aFromShapes := aHalfShapes
  aToShapes := aFullShapes
}

for sFromItem in aFromShapes {
  sToItem := aToShapes[A_Index]
  sMsg := StrReplace(sMsg, sFromItem, sToItem)
}

FileAppend sMsg, "*"

碼表裡的編碼:

zrpf $[替換成全形標點]$GO(|c:\util\AHK\autohotkey64.exe$_j:\ahk2\yong-replace.ahk2$_$CLIPBOARD$_F)$SPACE
zrph $[替換成半形標點]$GO(|c:\util\AHK\autohotkey64.exe$_j:\ahk2\yong-replace.ahk2$_$CLIPBOARD$_H)$SPACE

原文字:

曾子曰:「吾日三省吾身,為人謀而不忠乎?與朋友交而不信乎?傳不習乎?」

調用腳本轉換後:

曾子曰:「吾日三省吾身,為人謀而不忠乎?與朋友交而不信乎?傳不習乎?」

##

您可能也會有興趣的類似文章


Viewing all articles
Browse latest Browse all 897

Trending Articles