怎样让热字串不影响中文 | 怎样改进这个现有脚本?

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

pk23
Posts: 110
Joined: 24 Apr 2015, 00:49

怎样让热字串不影响中文 | 怎样改进这个现有脚本?

Post by pk23 » 11 Apr 2023, 09:44

1 需求
快速输入各种bbcode代码,例如

Code: Select all

[u][/u]、[mediainfo][/mediainfo]、[url][/url]、[img][/img]
2 现有方案
下面脚本是我正在使用的(用到了一个 regexHotString 库):

Code: Select all

	#Include Hotstring.ahk
	Hotstring("(img|url|quote|i|code|u|mention|hide|spoiler|youtube|s|color|b|size|hover|center|torrent|user|thumb|pre|cocks|mediainfo|thread|align|video|del)\\", "bbcode", 3)
	return
	
	;移动光标
    CaretMove(match, step)
    {
        length := strlen(match)         ;取得捕获的字符串长度
        length += step                  ; 加上 < / > 三个符号的长度
        Send, {Left %length%}           ;将光标左移
    }
	
	bbcode($) {
		Send, % "[" . $.Value(1) . "][/" . $.Value(1) . "]"
		CaretMove($.Value(1), 3)
		return
	}
3 现有方案的问题
经常干扰中文输入,例如先输入“肺部”两字、空格上屏,再按退格键删除“部”字,再按顿号,期望的结果是输入“肺、”,结果却变成了下图:
Image
原因推测是:输入肺部的拼音的最后一个字母是u,敲击完feibu后按空格是中文上屏,再按退格键是把“部”字删掉,但在脚本的视角上,是把刚刚的空格删掉了,因此又变成了最后一个击键是u,此时输入\,就会触发hotstring。问题还是在无法区分中英文。

4 请教的问题
请问:怎样改进这个脚本,让不影响中文输入?
或者推倒这个脚本,怎样用其它方式满足原需求?


pk23
Posts: 110
Joined: 24 Apr 2015, 00:49

Re: 怎样让热字串不影响中文 | 怎样改进这个现有脚本?

Post by pk23 » 12 Apr 2023, 04:10

@kazhafeizhale 还有这种大杀器啊,感谢推荐! :D

User avatar
Zach47
Posts: 13
Joined: 15 Nov 2021, 10:05

Re: 怎样让热字串不影响中文 | 怎样改进这个现有脚本?

Post by Zach47 » 15 Jun 2023, 13:08

可以试试使用以下函数。

Code: Select all

Send(get_Unicode_Str("肺、肺、肺、"))

;使用`Unicode按键`字符串可以避免触发中文输入法;同时不必使用剪贴板。
get_Unicode_Str(str)
{
    out := ""
    charList := StrSplit(str)
    for key, val in charList
        out .= format("{U+{1:x}}", ord(val))
    Return out
}

Post Reply

Return to “请求帮助”