AutoHotkey を使用して「shift」キーを「shift」+「capslock」にマッピングするにはどうすればよいですか?

AutoHotkey を使用して「shift」キーを「shift」+「capslock」にマッピングするにはどうすればよいですか?

私は Vim を使用しているので、capslockに再マップしましたesc。しかし、それでも時々必要になります。そこで、 +にcapslock再マップしようかと考えています。shiftshiftcapslock

  1. 通常の方法で使用する場合: 長押しして放すと、入力を大文字に変更するキーshiftとして機能します。shift
  2. をタップするとshift(短く押して放す)、 が切り替わりますcapslock

このようなことは可能ですか? AutoHotkey スクリプトや、これを行うためのヒントを知っている人はいますか?

答え1

このAutoHotkeyスクリプトを少し変更して使用しますエリオット・デノルフの回答:

~Shift::
    duration := 0
    If (GetKeyState("Shift","p"))
    {
        start := A_TickCount
        While (GetKeyState("Shift"))
            Sleep, 1
        duration := A_TickCount - start
    }
    if (duration < 100) ;Change this value as needed
        if GetKeyState("CapsLock", "T") = 1
        {
            SetCapsLockState, off
        }
        else if GetKeyState("CapsLock", "T") = 0
        {
            SetCapsLockState, on
        }
    Return

Shiftキーが 100 ミリ秒未満押されて放されると、キーが切り替わりますCapsLk。100 ミリ秒を超えると、通常の修飾キーとして機能します。

100 ミリ秒が長すぎる場合は、条件で適切な値を選択してくださいif

関連情報