HELP! Переназначение функциональных клавиш

Помощь в написании скриптов
Sandro_spb
Posts: 23
Joined: 05 Oct 2021, 15:22

HELP! Переназначение функциональных клавиш

Post by Sandro_spb » 05 May 2023, 17:22

День добрый, досталась чертовски удобная клавиатура, НО при нажатии на функциональные кнопки F1..F12 вызываются разные функции:

F2 = Ctrl+A
F3 = Ctrl+C
F4 = Ctrl+V
F5 = Ctrl+X

Для штатной работы функциональных клавиши необходимо использовать в сочетании с FN.

Так выглядит лог нажатий:

Code: Select all

F2:

A2  01D	 	d	9.39	LControl 
41  01E	 	d	0.00	a              	
A2  01D	 	u	0.09	LControl       	
41  01E	 	u	0.00	a 

Ctrl+A:
             	
A2  01D	 	d	2.67	LControl       	
41  01E	 	d	0.41	a              	
41  01E	 	u	0.14	a              	
A2  01D	 	u	0.26	LControl

Как лучше отлавливать нажатие на F2 и подменять его на F2, чтобы сочетание Ctrl+A продолжило функционировать?

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

Re: HELP! Переназначение функциональных клавиш

Post by mcl » 06 May 2023, 15:02

Sandro_spb wrote: Как лучше отлавливать нажатие на F2 и подменять его на F2, чтобы сочетание Ctrl+A продолжило функционировать?
Хм, хорошая загадка!
Возможно, получится измерять время между Ctrl и Ctrl-A - у FN-клавиши разница должна быть околонулевой.

Code: Select all

~SC01D::
	ctrlTick := A_TickCount
	Return

<^SC01E::
	deltaT := (A_TickCount - ctrlTick)
	If (deltaT < 50) {
		TrayTip, DeltaT: %deltaT%, FN
		; Send {F2}
	} Else {
		TrayTip, DeltaT: %deltaT%, Ctrl+A
		; Send ^{a}
	}
	Return
UPD: #InputLevel, похоже, не нужен.

Sandro_spb
Posts: 23
Joined: 05 Oct 2021, 15:22

Re: HELP! Переназначение функциональных клавиш

Post by Sandro_spb » 06 May 2023, 17:12

@mcl, спасибо! Подскажите, у вас код компилируется без ошибки? У меня на V2 выдает ошибку при компиляции, на V1 при запуске:

Image

Image

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

Re: HELP! Переназначение функциональных клавиш

Post by mcl » 06 May 2023, 17:42

Sandro_spb wrote: @mcl, спасибо! Подскажите, у вас код компилируется без ошибки?
Никогда не компилировал скрипты, вдруг понадобится поменять. Под AHK.v1 работает и компилируется.

Для AHK.v2 код, разумеется, должен быть немного другим:

Code: Select all

#Requires AutoHotkey v2.0

~SC01D::
{
	Global ctrlTick := A_TickCount
	Return
}

<^SC01E::
{
	Global ctrlTick
	deltaT := (A_TickCount - ctrlTick)
	If (deltaT < 50) {
		TrayTip( "FN", "DeltaT:" deltaT )
		; Send "{F2}"
	} Else {
		TrayTip( "Ctrl+A", "DeltaT:" deltaT )
		; Send "^{a}"
	}
	Return
}

Post Reply

Return to “Помощь”