变音脚本在我的设备上有效,但在朋友上无效
Umlaut script does work on my device but not on a friends
我运行遇到了一个问题,我为自己制作了一个 AutoHotkey 脚本,用于在英文键盘上键入德语文本。
因为它对我非常有用,所以我想与朋友分享它,但奇怪的是,当我尝试在朋友的 PC 上 运行 它时,它确实会导致奇怪的输出:
Ä -> Ä
ä -> ä
Ö -> Ö
ö -> ö
Ü -> Ü
ü -> ü
ß -> ß
~ 根本不起作用,° 是唯一有效的热键。
这是脚本:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.\
!+A::
Send, Ä
return
!a::
Send, ä
return
!+O::
Send, Ö
return
!o::
Send, ö
return
!+U::
Send, Ü
return
!u::
Send, ü
return
!s::
Send, ß
return
!e::
Send, €
return
!m::
Send, µ
return
!d::
Send, °
return
!]::
Send, {Alt down}{Numpad1}{Numpad2}{Numpad6}{Alt up}
return
^!#right::
Run C:\Users\cmcdi\Documents\Shortcuts\display64.exe /rotate:90
return
如果您需要更多信息,我很乐意提供。
这可能是一个编码问题,正如评论中的人所指出的那样,但是当 正常 发送不发送的字符时,Send
也可能会遇到一些意外行为存在于当前键盘布局中。
解决此问题并且不必担心任何编码问题的好方法是使用 Unicode character notation.
指定这些 special 字符
另外,因为你有单行热键,你可以省略 Return
s 并像这样:
!+A::SendInput, {U+00C4}
!a::SendInput, {U+00E4}
!+O::SendInput, {U+00D6}
!o::SendInput, {U+00F6}
要获取字符的 Unicode,您可以使用例如this 网站。
我还使用 SendInput
而不是 Send
,因为这样做是一种很好的做法。即使它在这里没有任何区别(如我上面 link 中关于 Unicode 字符符号的描述)。
此外,您的脚本似乎在顶部包含自动生成的 ahk 代码,该代码指定 SendMode, Input
,这意味着 Send
的所有实例都会自动转换为 SendInput
。
如果您想要一个漂亮的轻量级脚本,可以删除顶部的所有自动生成的代码。 None 的东西可以为您做任何事情。
即使您的问题很可能是字符编码问题,我还是决定加入我的特殊字符解决方案。您可以键入两个字符来创建特殊字符。
示例 ` a 将写成 à 或 sss 会写成 ß。我还使用 ' 和 " 来创建像 ö 或 é[ 这样的字符=36=]. 由于我使用元音变音的次数远多于重音aigu,所以我决定"swap" '/ 键的功能。所以要写 ö,我按 '/" 键,然后按 'o". If I want to write the é, I press the Shift+'/" 然后 e 得到 é。这个方法的"disadvantage"是,如果你需要单个",你需要按'/"和Space.
;================================== SPECIAL CHARACTERS FOR US KEYBOARD ==================================
:?C*:`` :: ; Turn `{Space} into neutral `, else ` will be used in next vowel.
Send, ``{Space}{BackSpace}
Return
:?C*:``a::à
:?C*:``i::ì
:?C*:``e::è
:?C*:``o::ò
:?C*:``u::ù
:?C*:``A::À
:?C*:``I::Ì
:?C*:``E::È
:?C*:``O::Ò
:?C*:``U::Ù
:?C*:^ :: ; Turn ^{Space} into neutral ^, else ^ will be used in next vowel.
Send, {^}{Space}{BackSpace}
Return
:?C*:^a::â
:?C*:^i::î
:?C*:^e::ê
:?C*:^o::ô
:?C*:^u::û
:?C*:^A::Â
:?C*:^I::Î
:?C*:^E::Ê
:?C*:^O::Ô
:?C*:^U::Û
:?C*:`" :: ; Turn "{Space} into neutral ", else " will be used in next vowel.
Send, +{'}{Space}{BackSpace}
Return
:?C*:`'a::ä
:?C*:`;a::ä
:?C*:`'i::ï
:?C*:`;i::ï
:?C*:`'e::ë
:?C*:`;e::ë
:?C*:`'o::ö
:?C*:`;o::ö
:?C*:`'u::ü
:?C*:`;u::ü
:?C*:`'A::Ä
:?C*:`'I::Ï
:?C*:`'E::Ë
:?C*:`'O::Ö
:?C*:`'U::Ü
:?C*:' :: ; Turn '{Space} into neutral ', else ' will be used in next vowel.
Send, {'}{Space}{BackSpace}
Return
:?C*:`"a::á
:?C*:`"i::í
:?C*:`"e::é
:?C*:`"o::ó
:?C*:`"u::ú
:?C*:`"A::Á
:?C*:`"I::Í
:?C*:`"E::É
:?C*:`"O::Ó
:?C*:`"U::Ú
:?C*:`'c::ç
:?C*:`'C::Ç
:?C*:ss]::ß
:?C*:sss::ß
:?C*:ae]::æ
:?C*:AE]::Æ
:?C*:oe]::œ
:?C*:OE]::Œ
我运行遇到了一个问题,我为自己制作了一个 AutoHotkey 脚本,用于在英文键盘上键入德语文本。 因为它对我非常有用,所以我想与朋友分享它,但奇怪的是,当我尝试在朋友的 PC 上 运行 它时,它确实会导致奇怪的输出:
Ä -> Ä
ä -> ä
Ö -> Ö
ö -> ö
Ü -> Ü
ü -> ü
ß -> ß
~ 根本不起作用,° 是唯一有效的热键。
这是脚本:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.\
!+A::
Send, Ä
return
!a::
Send, ä
return
!+O::
Send, Ö
return
!o::
Send, ö
return
!+U::
Send, Ü
return
!u::
Send, ü
return
!s::
Send, ß
return
!e::
Send, €
return
!m::
Send, µ
return
!d::
Send, °
return
!]::
Send, {Alt down}{Numpad1}{Numpad2}{Numpad6}{Alt up}
return
^!#right::
Run C:\Users\cmcdi\Documents\Shortcuts\display64.exe /rotate:90
return
如果您需要更多信息,我很乐意提供。
这可能是一个编码问题,正如评论中的人所指出的那样,但是当 正常 发送不发送的字符时,Send
也可能会遇到一些意外行为存在于当前键盘布局中。
解决此问题并且不必担心任何编码问题的好方法是使用 Unicode character notation.
另外,因为你有单行热键,你可以省略 Return
s 并像这样:
!+A::SendInput, {U+00C4}
!a::SendInput, {U+00E4}
!+O::SendInput, {U+00D6}
!o::SendInput, {U+00F6}
要获取字符的 Unicode,您可以使用例如this 网站。
我还使用 SendInput
而不是 Send
,因为这样做是一种很好的做法。即使它在这里没有任何区别(如我上面 link 中关于 Unicode 字符符号的描述)。
此外,您的脚本似乎在顶部包含自动生成的 ahk 代码,该代码指定 SendMode, Input
,这意味着 Send
的所有实例都会自动转换为 SendInput
。
如果您想要一个漂亮的轻量级脚本,可以删除顶部的所有自动生成的代码。 None 的东西可以为您做任何事情。
即使您的问题很可能是字符编码问题,我还是决定加入我的特殊字符解决方案。您可以键入两个字符来创建特殊字符。 示例 ` a 将写成 à 或 sss 会写成 ß。我还使用 ' 和 " 来创建像 ö 或 é[ 这样的字符=36=]. 由于我使用元音变音的次数远多于重音aigu,所以我决定"swap" '/ 键的功能。所以要写 ö,我按 '/" 键,然后按 'o". If I want to write the é, I press the Shift+'/" 然后 e 得到 é。这个方法的"disadvantage"是,如果你需要单个",你需要按'/"和Space.
;================================== SPECIAL CHARACTERS FOR US KEYBOARD ==================================
:?C*:`` :: ; Turn `{Space} into neutral `, else ` will be used in next vowel.
Send, ``{Space}{BackSpace}
Return
:?C*:``a::à
:?C*:``i::ì
:?C*:``e::è
:?C*:``o::ò
:?C*:``u::ù
:?C*:``A::À
:?C*:``I::Ì
:?C*:``E::È
:?C*:``O::Ò
:?C*:``U::Ù
:?C*:^ :: ; Turn ^{Space} into neutral ^, else ^ will be used in next vowel.
Send, {^}{Space}{BackSpace}
Return
:?C*:^a::â
:?C*:^i::î
:?C*:^e::ê
:?C*:^o::ô
:?C*:^u::û
:?C*:^A::Â
:?C*:^I::Î
:?C*:^E::Ê
:?C*:^O::Ô
:?C*:^U::Û
:?C*:`" :: ; Turn "{Space} into neutral ", else " will be used in next vowel.
Send, +{'}{Space}{BackSpace}
Return
:?C*:`'a::ä
:?C*:`;a::ä
:?C*:`'i::ï
:?C*:`;i::ï
:?C*:`'e::ë
:?C*:`;e::ë
:?C*:`'o::ö
:?C*:`;o::ö
:?C*:`'u::ü
:?C*:`;u::ü
:?C*:`'A::Ä
:?C*:`'I::Ï
:?C*:`'E::Ë
:?C*:`'O::Ö
:?C*:`'U::Ü
:?C*:' :: ; Turn '{Space} into neutral ', else ' will be used in next vowel.
Send, {'}{Space}{BackSpace}
Return
:?C*:`"a::á
:?C*:`"i::í
:?C*:`"e::é
:?C*:`"o::ó
:?C*:`"u::ú
:?C*:`"A::Á
:?C*:`"I::Í
:?C*:`"E::É
:?C*:`"O::Ó
:?C*:`"U::Ú
:?C*:`'c::ç
:?C*:`'C::Ç
:?C*:ss]::ß
:?C*:sss::ß
:?C*:ae]::æ
:?C*:AE]::Æ
:?C*:oe]::œ
:?C*:OE]::Œ