Windows 8:将德语变音符号添加到美国键盘布局(可能使用 AutoHotKey)

Windows 8:将德语变音符号添加到美国键盘布局(可能使用 AutoHotKey)

我刚刚意识到Microsoft 键盘布局创建器在 Windows 8 下不再起作用。我成功地在 Windows 7 下使用它在美国布局之上创建了自定义键盘布局,其中我另外添加了 AltGr+a、AltGr+o、AltGr+u 来表示相应的变音符号 ä、ö 和 ü。

现在我想在 Windows 8 中执行同样的操作,但额外的困难是,我的新笔记本电脑没有任何 AltGr 键,只有一个 Crtl 和一个 Alt 键,并且与 a、o 和 u 的对应组合几乎已被占用。所以我想知道我是否可以使用自动热键创建 Space+a、Space+o 和 Space+u 的热键。这是我的成果:

~space & a::
Send ä

此脚本会将 Space+a 映射到正确的变音符,而 & 符号会确保您在未使用此热键时仍可使用空格键。但是,这始终会在“ä”前插入一个空格。此外,快速连续按下 Space 和 a 键也会产生变音符,而我实际上想要输入的是“a”。

我正在寻找一种解决方案,当按下相应的热键时,它会插入单个字符而不带任何空格,并且不会产生任何影响,这意味着连续(而不是同时)按下 Space 和 {a,o,u} 不会产生任何影响。此外,它不应该干扰系统范围的热键,例如用于切换输入语言的 Windows+Space。如果可以在没有 的情况下做到这一点AutoHotKey,我也很乐意接受该解决方案。

答案1

我看到另一个答案已被选中,但这是我的个人解决方案。我创建了一些热字符串。例如"a将给出ä

:?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*:`"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*:`'c::ç
:?C*:`'C::Ç
:?C*:ss\::ß
:?C*:ae\::æ
:?C*:AE\::Æ
:?C*:oe\::œ
:?C*:OE\::Œ

答案2

受到上一篇文章的启发,我找到了一个额外的解决方案,因为上述内容有时会在写作时引起问题。

  1. 我首先重新映射CapsLock到,RShift因为我总是使用LShift大写字母键
  2. 设置映射

Rshift & a::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ä
  else
    sendinput, ä    
  return
}

Rshift & o::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ö
  else
    sendinput, ö    
  return
}

Rshift & u::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ü
  else
    sendinput, ü
  return
}

Rshift & s::
{
  sendinput, ß
  return
}

Rshift & e::
{
  sendinput, €
  return
}

答案3

回答自己的问题感觉很奇怪,但由于其他人都没有想法,所以我自己想出了办法。以下AutoHotKey脚本可以解决问题:

#SingleInstance force

~space & a::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ä
  else
    sendinput, {backspace 1}ä

  return
}

~space & o::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ö
  else
    sendinput, {backspace 1}ö
  return
}

~space & u::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ü
  else
    sendinput, {backspace 1}ü
  return
}

~space & s::
{
  sendinput, {backspace 1}ß
  return
}

~space & e::
{
  sendinput, {backspace 1}€
  return
}

关键部分是使用backspace函数,当其中一个热键被激活时,该函数会删除空格。此外,检查 Shift 键的状态可以启用区分大小写的字符插入。为了方便起见,我还添加了德语“sharp s”(仅存在于小写中)和欧元符号的热键。

请确保在以管理员权限登录时启动此脚本,并遵循非常好的说明这里

使用此脚本,空格键的功能与以前一样,并且只有在同时按下aou或之一键时,它才会执行一些特殊操作,这就是我一直在寻找的解决方案。se

答案4

你也可以使用更长一点的标准钥匙 Alt + 132 = ä Alt + 137 (or 0235) = ë Alt + 139 (or 0239) = ï Alt + 148 (or 0246) = ö Alt + 129 (or 0252) = ü

相关内容