我想创建一个类似于Textexpander或Atext的 Mac 应用程序。这两个应用程序都允许用户定义片段及其各自的触发词。在任何应用程序中键入触发词,都会用定义的实际代码段替换该触发词。
我假设该应用程序侦听在任何应用程序中键入的所有字符串,并且当它检测到与定义的触发词之一匹配的字符串时,它会将其替换为代码段。
这是它实际工作的方式,还是有其他方式?
我想创建一个类似于Textexpander或Atext的 Mac 应用程序。这两个应用程序都允许用户定义片段及其各自的触发词。在任何应用程序中键入触发词,都会用定义的实际代码段替换该触发词。
我假设该应用程序侦听在任何应用程序中键入的所有字符串,并且当它检测到与定义的触发词之一匹配的字符串时,它会将其替换为代码段。
这是它实际工作的方式,还是有其他方式?
制作两个字段。在字段 2 中输入如下内容:
time xyz
come ABC
在字段 1 的脚本中:
on textChanged
if the last char of me = space then
put the last word of me into temp
if temp is in fld 2 then
repeat for each word tWord in fld 2
put the last word of line lineOffset(temp,fld 2) of fld 2 into the last word of me
exit repeat
end repeat
end if
select after text of me
end if
end textChanged
现在输入 fld 1,你知道,“现在是所有好人来援助他们国家的时候了”。使用数组可以更好地做到这一点,但这里的概念可能更容易理解。
这是一个更好的处理程序,因为它不会对触发词做出反应:
on textChanged
if the last char of me = space then
put the last word of me into stringOfInterest
put fld 2 into dataToSearch
if stringOfInterest is in dataToSearch then
repeat for each line tLine in dataToSearch
if word 1 of tLine = stringOfInterest then
put word 2 of tLine into the last word of me
exit repeat
end if
end repeat
end if
select after text of me
end if
end textChanged