キーが単独で押されたかどうかに応じてキーを再マップする

キーが単独で押されたかどうかに応じてキーを再マップする

Autohotkeyを使ってキーやキーの組み合わせを再マップする方法を知っています。キャップスロックCtrl, Capslock+ は+Anykeyのように動作します。CtrlAnykey

CapsLock単独で別のホットキー (たとえばCtrl+ ) にバインドし、 +を+にバインドするにはどうすればよいでしょうか?1CapslockAnykeyCtrlAnykey

答え1

さて、不完全な回避策があります:

Capslock::Control  ;--Holding Caps = holding Ctrl

Capslock Up:: ;--If you press Caps fast, it types "No"
SendInput, {Control Up}  ;--For stability
If A_TimeSincePriorHotkey < 100  ;--Vary the time as it suits you
{
Sendinput, No  ;--Replace with what you want Caps to do on its own
}
Else
return
return

Caps キーを 100 ミリ秒以上押して放すと、何も起こりません。100 ミリ秒未満押して放すと、「No」と入力されます。押したまま任意のキーを押すと、control+Key が実行されます。Caps キーを 100 ミリ秒未満押して、Caps キーを放す前に任意のキーを押すと、control+Key が実行され、「No」と入力されます。タイミングは変更できます。これが私ができる最善のことですが、もっと良い方法があるかもしれません。

答え2

私はC++でまさにこれと同じことを行うプログラムを書きました。CapsLockではなくAppsキーを再マッピングしますが、変更するのは簡単です。ソースコード(および詳細情報)はgithubにあります。https://github.com/russelldavis/KeyFix4000

関連情報