web-dev-qa-db-ja.com

AutoHotkeyを使用して「Shift」キーを "Shift" + "Capslock"にマッピングする方法

私はヴィムを使っているので、私は「再マッピングしました capslock に esc。しかし、私はまだ欲しいです capslock 時折。だから私は再訓練するのだろうか shift に shift+capslock

  1. いつ shift 通常の方法で使用されています:ロングプレスとリリース、それはまだ働くべきです shift 大文字への入力を変更します。
  2. いつ shift タップされている(ショートプレスアンドリリース)、それは切り替えられるべきです capslock

このようなものはありますか?誰もが、これを行う方法についてのAutoHotkeyスクリプトやヒントを知っていますか?

1
Aaron Shen

このAUTOHOTKEYスクリプトをわずかに変更してから Elliot Denolf's Answer

~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 msecを超えると、通常の修飾キーとして機能します。

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

1
Vinayak