AutoHotkey - 使用 dictionary/lookup 进行热字串替换
AutoHotkey - use dictionary/lookup to make hotstring replacements
我正在尝试编写一个 AutoHotkey 脚本来提供一种简单的方法来输入修改后的拉丁字符(例如 ö、å、é、ñ 等)。假设我想将组合 (vowel)
+ ;
+ \
发送到 (vowel)
并带有变音符号。我可以做类似
的事情
:?*:a;\::ä
:?*:e;\::ë
:?*:i;\::ï
:?*:o;\::ö
:?*:u;\::ü
但是,我想知道是否有更“灵活”或“抽象”的方法来实现,我可以预先定义一组映射,例如
Umlaut = { a -> ä, e -> ë, i -> ï, o -> ö, u -> ü }
然后将模式应用于此映射的所有元素,例如
forall x in Umlaut
:?*:(x.key);\::(x.value)
在 AutoHotkey 中可以实现这样的功能吗?
如果是,我想知道 是否也可以将抽象更进一步。 例如假设我还想将组合 (vowel)
+ '
+ \
发送到 (vowel)
并带有锐音符。然后,我想定义一个映射,例如
Diacritics = {
";" -> { a -> ä, e -> ë, i -> ï, o -> ö, u -> ü },
"'" -> { a -> á, e -> é, i -> í, o -> ó, u -> ú },
}
并应用相同的模式
forall x in Diacritics
forall y in x.value
:?*:(y.key)(x.key);\::(y.value)
当然,这对于 Hotstring()
(docs) function and a for-loop 非常可行。
umlaut := { "a" : "ä"
, "e" : "ë"
, "i" : "ï"
, "o" : "ö"
, "u" : "ü" }
for key, value in diacritics
Hotstring(":?*:" key ";\", value)
此外,我不太确定问题的第二部分是什么意思,但我假设你的意思是
a + ; + \ 产生 ä
和
a + ' + \ 产生 á,
那么这段代码就可以工作了:
diacritics := { ";" : { "a" : "ä"
, "e" : "ë"
, "i" : "ï"
, "o" : "ö"
, "u" : "ü" }
, "'" : { "a" : "á"
, "e" : "é"
, "i" : "í"
, "o" : "ó"
, "u" : "ú" } }
for outer_key, value1 in diacritics
for inner_key, value2 in value1
Hotstring(":?*:" inner_key outer_key "\", value2)
我正在尝试编写一个 AutoHotkey 脚本来提供一种简单的方法来输入修改后的拉丁字符(例如 ö、å、é、ñ 等)。假设我想将组合 (vowel)
+ ;
+ \
发送到 (vowel)
并带有变音符号。我可以做类似
:?*:a;\::ä
:?*:e;\::ë
:?*:i;\::ï
:?*:o;\::ö
:?*:u;\::ü
但是,我想知道是否有更“灵活”或“抽象”的方法来实现,我可以预先定义一组映射,例如
Umlaut = { a -> ä, e -> ë, i -> ï, o -> ö, u -> ü }
然后将模式应用于此映射的所有元素,例如
forall x in Umlaut
:?*:(x.key);\::(x.value)
在 AutoHotkey 中可以实现这样的功能吗?
如果是,我想知道 是否也可以将抽象更进一步。 例如假设我还想将组合 (vowel)
+ '
+ \
发送到 (vowel)
并带有锐音符。然后,我想定义一个映射,例如
Diacritics = {
";" -> { a -> ä, e -> ë, i -> ï, o -> ö, u -> ü },
"'" -> { a -> á, e -> é, i -> í, o -> ó, u -> ú },
}
并应用相同的模式
forall x in Diacritics
forall y in x.value
:?*:(y.key)(x.key);\::(y.value)
当然,这对于 Hotstring()
(docs) function and a for-loop 非常可行。
umlaut := { "a" : "ä"
, "e" : "ë"
, "i" : "ï"
, "o" : "ö"
, "u" : "ü" }
for key, value in diacritics
Hotstring(":?*:" key ";\", value)
此外,我不太确定问题的第二部分是什么意思,但我假设你的意思是
a + ; + \ 产生 ä
和
a + ' + \ 产生 á,
那么这段代码就可以工作了:
diacritics := { ";" : { "a" : "ä"
, "e" : "ë"
, "i" : "ï"
, "o" : "ö"
, "u" : "ü" }
, "'" : { "a" : "á"
, "e" : "é"
, "i" : "í"
, "o" : "ó"
, "u" : "ú" } }
for outer_key, value1 in diacritics
for inner_key, value2 in value1
Hotstring(":?*:" inner_key outer_key "\", value2)