Как переназначить клавишу на клавиатуре в зависимости от того, была ли она нажата быстро или удерживалась в течение секунды или дольше?

Как переназначить клавишу на клавиатуре в зависимости от того, была ли она нажата быстро или удерживалась в течение секунды или дольше?

Я получил новую клавиатуру (Keychron K6), и, если говорить коротко, я хотел бы, чтобы моя Escклавиша была назначена только Escтогда, когда я удерживаю ее в течение секунды. Если я просто нажимаю ее как обычную клавишу, мне нужно, чтобы это была клавиша с обратной кавычкой/тильдой.

Так:

  • Нажмите Esc: Результат в~
  • Удерживайте нажатой Escв течение секунды: РезультатEsc

Я рассмотрел инструмент Keyboard Manager на 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

Связанный контент