キーボードのキーを、すばやく押したか、1 秒以上押し続けたかに応じて再マップするにはどうすればよいですか?

キーボードのキーを、すばやく押したか、1 秒以上押し続けたかに応じて再マップするにはどうすればよいですか?

新しいキーボード (Keychron K6) を入手したのですが、簡単に言うと、Escキーを 1 秒間押したままにしたときだけキーがマッピングされるようにしたいのですEsc。通常のキーストロークのようにタップするだけでは、代わりにバックティック/チルダ キーにする必要があります。

それで:

  • プレスEsc:結果は~
  • Esc1秒間押し続けると、Esc

PowerToys のキーボード マネージャー ツールを調べ、AutoHotKey も少しいじってみましたが、どちらも非常に強力に思えますが、キーが押されたままになっているのか、それとも短く押されているのかを考慮できるものはないようです。

そんなことが可能なのでしょうか?

乾杯!

答え1

試してみたところ、このAutoHotKeyスクリプトは動作するはずです

$esc::
 KeyWait,esc,T0.5 ;wait 0.5 seconds for release key
 If (ErrorLevel) ;more than 0.5 sec have passed
 {
  Send {esc}
  keyHeld = 1
  KeyWait,esc
 }
Return

$esc up::
 If (keyHeld = 0) ;If not held down
  Send ``
 Else
  keyHeld = 0
Return

shift & esc::
 Send ~
 keyHeld = 1
Return

関連情報