web-dev-qa-db-ja.com

Windows 8:ドイツ語のウムラウトを米国のキーボードレイアウトに追加(おそらくAutoHotKeyを使用)

Microsoft Keyboard Layout Creator がWindows8では機能しなくなったことに気づきました。Windows7で正常に使用して、米国のレイアウトの上にカスタムキーボードレイアウトを作成し、AltGr +を追加しました。 a、AltGr + o、AltGr + u(対応するumlautsä、ö、ü)。

Windows 8でも同じことをしたいと思いますが、新しいラップトップにはAltGrキーがなく、CrtlキーとAltキーが1つだけで、対応するa、o、uの組み合わせがほとんど使用されているという問題があります。そこで、 AutoHotKey を使用してSpace + a、Space + o、Space + uのホットキーを作成できるかどうか疑問に思いました。これは私がどこまで得たかです:

~space & a::
Send ä

このスクリプトは、Space + aを正しいウムラウトにマップし、アンパサンドは、このホットキーを使用しない場合でもスペースキーを使用できることを確認します。ただし、これは常に「ä」の前にスペースを挿入します。さらに、実際に「a」と入力したい場合は、スペースキーとaキーをすばやく連続して使用すると、ウムラウトが生成されます。

対応するホットキーが押されたときにスペースなしで単一の文字を挿入し、それ以外の場合は効果がない、つまり、スペースと{a、o、u}を連続して(同時にではなく)押すソリューションを探しています。何もしません。さらに、入力言語を切り替えるためのWindows + Spaceのようなシステム全体のホットキーを台無しにしないでください。これがAutoHotKeyなしで実行できる場合、私もその解決策を喜んで受け入れます。

4
pederpansen

他の答えはすでに選択されているようですが、これが私の個人的な解決策です。いくつかのホットストリングを作成しました。例えば "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\::Œ
4
Robert Ilbrink

前回の投稿に触発されて、上記が書き込み中に問題を引き起こすことがあったので、私は追加の解決策を考え出しました。

  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
Daniel

自分の質問に答えるのは変だと思いますが、誰も考えがなかったので、自分で考えました。次の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
}

重要な部分は、ホットキーケースの1つがアクティブ化されたときにスペースを削除するbackspace関数を使用することです。また、Shiftキーの状態を確認することで、大文字と小文字を区別して文字を挿入できます。便宜上、ドイツ語の「シャープ」(小文字でのみ存在)とユーロ記号のホットキーも追加しました。

非常に素晴らしい指示に従って、ログオン時に管理者権限でこのスクリプトを開始してください ここ

このスクリプトでは、スペースキーは以前と同じように機能し、キーaousまたはe、それは私が探していた解決策である特別な何かをします。

0
pederpansen

少し長くても標準キーを使用することもできますAlt + 132 = ä Alt + 137 (or 0235) = ë Alt + 139 (or 0239) = ï Alt + 148 (or 0246) = ö Alt + 129 (or 0252) = ü