デフォルトのドイツ語キーボードレイアウトでは^
とbacktick/forwardtickはデッドキーです。
しかし、プログラマーとして、私は通常、ccccntsを書く必要はありませんが、文字そのものを書く必要があります。この場合、キーを2回押してバックスペースまたはキーとスペースを押す必要があるので、かなり面倒です。
したがって、これらのキーを変更して、2番目の文字を待たずにすぐに文字を作成できるかどうか(および方法)を知りたいのです。
Microsoft's Keyboard Layout Creator を使用して、レイアウトを変更できます。ダウンロードしてインストールしたら、次のようにします。
割り当てと割り当て解除が完了したら、[プロジェクト]-> [プロパティ]に移動して、説明を編集します。 「名前」には(何らかの理由で)8文字の制限があるため、「Deutsch」に設定し、説明を「Deutsch-No Dead Keys」などの好きなものに設定します。
完了したら、[プロジェクト]に移動し、[ビルドDLL and Setup Package)]を選択します。作成時に、ログファイルに警告が表示されますが、おそらく無視できます。 。次のプロンプトでは、ファイルが書き込まれたディレクトリを開くかどうかを尋ねられます-開く場合は、ワンクリックでレイアウトをインストールできます。
Windowsでキーボード設定を開き、新しいキーボードレイアウトがWindowsのリストに追加されているかどうかを確認します。私
できた!
キーボードの作成者に基づくメソッドを機能させることができませんでした。代わりに、 AutoHotKey スクリプトを思いつきました。現在のキーボードレイアウトを検出する方法は 現在のキーボードレイアウトを見つける方法は? から取得されます。
アイデアは、シーケンス「デッドキー+スペース」の送信を自動化することです。これはデッドキーのないレイアウトでは間違った影響を与えるので、ドイツ語キーボードの場合はパターン0x0407????
を満たすロケールIDに基づいてフィルタリングします。キーボードレイアウトがハードコードされていない場合、この値は移植できない場合があります。
GetKeyboardLayoutNameA
の使用を検討しましたが、値が古い場合があります。
;;;; ------ NO DEAD KEYS ------
GetCurrentLocaleId()
{
;; Source:
;; https://autohotkey.com/board/topic/
;; 22900-how-to-find-out-what-is-the-current-keyboard-layout/
WinGet, WinID,, A
ThreadID := DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", 0)
InputLocaleID := DllCall("GetKeyboardLayout", "Int", ThreadID)
Return InputLocaleID
}
IsGermanKbdLayout()
{
Return GetCurrentLocaleId()//0x10000 == 0x407
}
#If IsGermanKbdLayout()
SC029::SendRaw % "^ "
SC00D::SendRaw % "´ "
+SC00D::SendRaw % "`` "
;; Find scan codes by viewing script's console > view > key history