Как на одну клавишу забиндить два разных действия, по нажатию и по удержанию клавиши Topic is solved

Помощь в написании скриптов
Dentur
Posts: 2
Joined: 27 May 2021, 13:56

Как на одну клавишу забиндить два разных действия, по нажатию и по удержанию клавиши

Post by Dentur » 27 May 2021, 14:11

Я хочу, чтобы при нажатии к примеру Tab в приложения отправлялось нажатие Tab. Но при удержании Tab должна удерживаться клавиша Alt, а табуляция отправляться в приложение не должна.
Как забиндить другую клавишу при нажатии я понимаю, к примеру вот так:

Code: Select all

Tab::Send {Blind}{NumLock}
Но как вешать биндинг на удержание клавиши я не понимаю.
И тем более не понимаю как иметь сразу два биндинга, для нажатия и для удержания.

Может кто подсказать возможно ли подобное вообще?

mcl
Posts: 357
Joined: 04 May 2018, 16:35

Re: Как на одну клавишу забиндить два разных действия, по нажатию и по удержанию клавиши  Topic is solved

Post by mcl » 28 May 2021, 08:10

Code: Select all

$Tab::                     ; Нужен $-модификатор, т.к. код ниже посылает нажатие самого {Tab}
	KeyWait, Tab, T0.3     ; Ждём отпускания {Tab} 300 мс
	
	If (ErrorLevel == 0)   ; {Tab} отпущен раньше:
		Send {Tab}         ; нажимаем {Tab}
		
	Else {                 ; {Tab} всё ещё нажат:
		Send {LAlt Down}   ; Зажимаем {Alt}
		KeyWait, Tab       ; Ждём отпускания {Tab}
		Send {LAlt Up}     ; {Tab} отпущен - отпускаем {Alt}
	}
	
	Return
github://oGDIp - GDI+ wrapper for AHK v1.1

Dentur
Posts: 2
Joined: 27 May 2021, 13:56

Re: Как на одну клавишу забиндить два разных действия, по нажатию и по удержанию клавиши

Post by Dentur » 28 May 2021, 15:08

Замечательно работает, большое спасибо.

Хотел переместить клавиши модификаторы Ctrl и Alt поближе к домашнему ряду, но чтобы они были на главном слое клавиатуры и не нужно было прожимать комбинации клавиш. По умолчанию Ctrl и Alt расположены в каких-то странных местах. Благодаря вашему коду у меня без программируемой механической клавиатуры, на втором столбце мизинцев, будут все три клавиши модификатора.

Post Reply

Return to “Помощь”