1 (изменено: OmTatSat, 2015-11-08 02:15:19)

Тема: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Оставлю здесь то, что в итоге получилось.

; lbutton wheelup, WheelUp прокручен медленно - запустить Firefox, либо активировать если запущен, либо CtrlTab если открыт.
; lbutton wheelup, WheelUp прокручен быстро - AltTab.
; ctrl lbutton wheelup, WheelUp  - WheelUp.
; ctrl отпущен перед Lbutton - lbutton wheelup выполняет роль lbutton wheelup. 
; ctrl отпущен после Lbutton - lbutton wheelup выполняет хоткеи заданные в скрипте. 

#HotkeyInterval 0

Delay := 25 ; задержка между нажатиями хоткея
Repeat := 0
 
~LButton:: LButtonDown := 1 
~LButton Up:: LButtonDown := 0 

#If LButtonDown
LCtrl:: CtrlDown := 1 
LCtrl Up:: CtrlDown := 0  
WheelUp::  
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return
#If

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
				send {wheelup}
			
			Else
	{
		If _Repeat < 2 ;ToolTip lbutton wheelup`, WheelUp прокручен до 2 раз - одно действие.
			{
        ifwinactive, _class MozillaWindowClass
        {
    send, {Ctrl down}{Tab} 
    sleep, 500
    send, {left}
}
IfWinExist, _class MozillaWindowClass
WinActivate _class MozillaWindowClass
else
{
	run, "C:\Ярлыки\m Google url.lnk"
#Persistent
ToolTip, Firefox запускается`nподожди момент.
SetTimer, RemoveToolTip, 5000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
    }
		Else ; ToolTip lbutton wheelup`, WheelUp прокручен больше 2 раз - второе действие.
			{
        ; sleep, 350
    send, {alt down}{Tab} 
    sleep, 800
    send, {left}
      }
       return
}
	 
	Return
	
#ifwinactive, _class MozillaWindowClass
^WheelUp::Left
^WheelDown::Right
^LButton:: send {ctrl up}


#if (MouseIsOver("_class TaskSwitcherWnd") && !winactive("_group test"))
!lButton::
MouseGetPos, varx, vary
ControlClick, x%varx% y%vary%, _class TaskSwitcherWnd
send, {alt up}
return
^!lButton:: 
MouseGetPos, varx, vary
ControlClick, x%varx% y%vary%, _class TaskSwitcherWnd
send, {ctrl up} {alt up}
    return
    
#ifwinactive, _class TaskSwitcherWnd
!lButton:: send, {alt up}
^!lButton:: send, {ctrl up} {alt up}
    return
    
GroupAdd, test, _class TaskSwitcherWnd

MouseIsOver(WinTitle) {
      MouseGetPos, , , Win
    return WinExist(WinTitle . " _id " . Win)
}

2

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

OmTatSat пишет:

Иногда при ctrl lbutton wheelup происходит масштабирование страницы, то-есть зажат Ctrl. Помогите понять как убрать баг.

Бывает, что до системы не доходит информация об отпускании клавиши. Можно вставить куда-нибудь Send, Ctrl Up для профилактики.

3

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

ypppu, дело в том, что вроде уже вставлено

...
If Count_Presses = 1 ; если клавиша нажата однажды...
    {
        SendInput, {ctrl up}{LButton down}{WheelUp}
    }
    
    If Count_Presses >= 2
		send {ctrl up}{wheelup}
            Hotkey, ctrl Up, lUp
...

4

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Ну так нажатие спамится, отпуская искуственно, при удержании ctrl сразу зажимается снова.
Надо не через GetKeyState проверять, а хоткей установить, что бы само зажатие до системы не доходило.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

serzh82saratov, каким образом это реализовать через хоткей? Можете пожалуйста маленький примерчик, чтобы было от чего отталкиваться...

6

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Как то так:

LCtrl::
	CtrlDown := 1
	KeyWait, LControl
	CtrlDown := 0
	Return
	
#If CtrlDown
~lButton & WheelUp:: ToolTip % A_ThisHotkey
#If
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Вот так придумал, но всё равно как-то результат не 100%

#SingleInstance force

~lButton & WheelUp::
;#Persistent
GetKeyState, keystate, Ctrl, p
if keystate = D    ; D = down
{
    Hotkey, ctrl, cdown, on
    Count_Presses += 1 ; выставляем флаг, что клавиша один раз нажата
    SetTimer, Timer_Presses_5, 20 ; переходить к указанной подпрограмме через каждые 5 миллисекунд
Return ; закончить обработку горячей клавиши

Timer_Presses_5: ; подпрограмма действий в зависимости от количества нажатий
    SetTimer, Timer_Presses_5, off ; выключить таймер
    If Count_Presses = 1 ; если клавиша нажата однажды...
    {
		
           Send, {ctrl up}
		   Send, {ctrl up}
        Send, {LButton down}
		Hotkey, ctrl Up, lUp, on
        Send, {WheelUp}
		ToolTip, If Count_Presses = 1
		 return
    }
    
    If Count_Presses >= 2
    {
		ToolTip, If Count_Presses >= 2
		;send {ctrl up}
        send {wheelup}
           
			
		}	
			
    ;Count_Presses = 0

return


}
else
{
If Count_Presses > 0 ; если таймер уже запущен, то...
    {
        Count_Presses += 1 ; плюсуем каждое нажатие клавиши (число будет обрабатываться в подпрограмме соответствующего таймера)
        Return ; закончить обработку горячей клавиши (ее дальнейшую обработку уже определяет таймер и его подпрограмма)
    }
    ; иначе - это первое нажатие из новой серии
    Count_Presses = 1 ; выставляем флаг, что клавиша один раз нажата
    SetTimer, Timer_Presses_4, 700 ; переходить к указанной подпрограмме через каждые 300 миллисекунд
Return ; закончить обработку горячей клавиши

Timer_Presses_4: ; подпрограмма действий в зависимости от количества нажатий
    SetTimer, Timer_Presses_4, off ; выключить таймер
    If Count_Presses < 5 ; если клавиша нажата однажды...
    {
        ifwinactive, ahk_class MozillaWindowClass
        {
    send, {Ctrl down}{Tab} 
    sleep, 500
    send, {left}
}
IfWinExist, ahk_class MozillaWindowClass
WinActivate ahk_class MozillaWindowClass
else
{
	run, "C:\ярлыки\m Google url.lnk"
#Persistent
ToolTip, Firefox запускается`nподожди момент.
SetTimer, RemoveToolTip, 5000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
    }
    
    If Count_Presses > 5
    {
        sleep, 200
    send, {Ctrl up}{alt down}{Tab} 
    sleep, 500
    send, {left}
      }
    Count_Presses = 0
    return
}
lUp:
ToolTip, ctrlup
Send {lbutton up}
 Hotkey, ctrl Up, lUp, off
 Hotkey, ctrl, cdown, off
 Count_Presses = 0
return
Cdown:
ToolTip, ctrl
KeyWait, ctrl, L
return

8

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Вот так вроде заработал

#SingleInstance force

~lButton & WheelUp::
;#Persistent
GetKeyState, keystate, Ctrl, p
if keystate = D    ; D = down
{
    Hotkey, ctrl, cdown, on
    
    Count_Presses += 1 ; выставляем флаг, что клавиша один раз нажата
    SetTimer, Timer_Presses_5, 20 ; переходить к указанной подпрограмме через каждые 5 миллисекунд
Return ; закончить обработку горячей клавиши

Timer_Presses_5: ; подпрограмма действий в зависимости от количества нажатий
    SetTimer, Timer_Presses_5, off ; выключить таймер
    If Count_Presses = 10000000000000 ; если клавиша нажата однажды...
    {
		
          
		   Send, {ctrl up}
           
        Send, {LButton down}
		Hotkey, ctrl Up, lUp, on
        Send, {WheelUp}
		ToolTip, If Count_Presses = 1
		 return
    }
    
    If Count_Presses >= 2
    {
		ToolTip, If Count_Presses >= 2
		;send {ctrl up}
        send {wheelup}
           
			
		}	
			
    ;Count_Presses = 0

return


}
else
{
If Count_Presses > 0 ; если таймер уже запущен, то...
    {
        Count_Presses += 1 ; плюсуем каждое нажатие клавиши (число будет обрабатываться в подпрограмме соответствующего таймера)
        Return ; закончить обработку горячей клавиши (ее дальнейшую обработку уже определяет таймер и его подпрограмма)
    }
    ; иначе - это первое нажатие из новой серии
    Count_Presses = 1 ; выставляем флаг, что клавиша один раз нажата
    SetTimer, Timer_Presses_4, 700 ; переходить к указанной подпрограмме через каждые 300 миллисекунд
Return ; закончить обработку горячей клавиши

Timer_Presses_4: ; подпрограмма действий в зависимости от количества нажатий
    SetTimer, Timer_Presses_4, off ; выключить таймер
    If Count_Presses < 5 ; если клавиша нажата однажды...
    {
        ifwinactive, ahk_class MozillaWindowClass
        {
    send, {Ctrl down}{Tab} 
    sleep, 500
    send, {left}
}
IfWinExist, ahk_class MozillaWindowClass
WinActivate ahk_class MozillaWindowClass
else
{
	run, "C:\ярлыки\m Google url.lnk"
#Persistent
ToolTip, Firefox запускается`nподожди момент.
SetTimer, RemoveToolTip, 5000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
    }
    
    If Count_Presses > 5
    {
        sleep, 200
    send, {Ctrl up}{alt down}{Tab} 
    sleep, 500
    send, {left}
      }
    Count_Presses = 0
    return
}
lUp:
ToolTip, ctrlup
Send, {ctrl up}
Send {lbutton up}
 Hotkey, ctrl Up, lUp, off
 Hotkey, ctrl, cdown, off
 Count_Presses = 0
return
Cdown:
ToolTip, ctrl
KeyWait, ctrl, L
Hotkey, ctrl, cdown, off
 Hotkey, ctrl Up, lUp, off
ToolTip, ctrl_off
send, {Ctrl up}
Count_Presses = 0
return

Когда освобожусь, нужно будет прибраться в скрипте, удалить лишнее.

serzh82saratov спасибо за наводку.

9

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

serzh82saratov, чёт не увидел ваш ответ, спасибо, позже попробую, отпишусь.

10 (изменено: serzh82saratov, 2015-11-07 17:45:24)

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Например:


Delay := 200 ; задержка между нажатиями хоткея
Repeat := 0

LCtrl:: CtrlDown := 1 
LCtrl Up:: CtrlDown := 0 
	 
~LButton & WheelUp::  
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
	{
		If _Repeat = 1
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен 1 раз - одно действие.
		Else
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен больше 2 раз - второе действие.
	}
	Else
	{
		If _Repeat < 5
			ToolTip lbutton wheelup`, WheelUp прокручен до 5 раз - одно действие.
		Else
			ToolTip lbutton wheelup`, WheelUp прокручен больше 5 раз - второе действие.
	} 
	Return

Хотя да, забыл уточнить что LCtrl при таком методе не сможет использоватся как обычно в системе.

ctrl отпущен - третье действие.

Это не понял.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

serzh82saratov, Спасибо огромное за активную помощь. Сразу заметил не возможность использовать ctrl - не хорошо. Слава Богу, решение нашлось очень быстро ~Lctrl. Может оно не идеальное, пока ничего нового кроме рабочего Ctrl не заметил. Так же нашел один баг при нажатии ctrl lbutton wheelup, появляется сообщение "71 hotkeys have been received in the last 1903ms"
Так понимаю что это связано с зажатым ctrl. Сообщение появляется как в варианте с ~Lctrl так и с Lctrl.

ctrl отпущен - третье действие.

Это не понял.

Я просто не объяснил для чего все это нужно. Всё началось с того, что я вцепил хоткеи на Lbutton Wheel. И как бы всё нормально, за исключением тех ситуаций когда нужно выделить на странице что-то большого размера, содержимое которого не входит в один экран. Так как в этом случае мне как раз и нужны Lbutton Wheel. Вот и появилась идея вернуть обычные действия Lbutton Wheel при зажатом Ctrl.

Идея такая, первое нажатие - lbutton down, последующие Wheel, Ctrl опущен Lbutton up.

12

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Попробовал добавить в ваш вариант хоткей, но он почему-то даже не включается...

Delay := 200 ; задержка между нажатиями хоткея
Repeat := 0

~LCtrl:: CtrlDown := 1 
~LCtrl Up:: CtrlDown := 0 
	 
~LButton & WheelUp::  

Hotkey, ctrl, cdown, on
Send, {Ctrl up}
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return
Cdown:
ToolTip, ctrl
KeyWait, ctrl, L
 Hotkey, ctrl, cdown, off
return

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
	{
		If _Repeat = 1
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен 1 раз - одно действие.
		Else
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен больше 2 раз - второе действие.
	}
	Else
	{
		If _Repeat < 5
			ToolTip lbutton wheelup`, WheelUp прокручен до 5 раз - одно действие.
		Else
			ToolTip lbutton wheelup`, WheelUp прокручен больше 5 раз - второе действие.
	} 
	Return
	

13

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

В ваших примерах было всё что нужно.

Вот такой вариант заработал как надо:

Delay := 200 ; задержка между нажатиями хоткея
Repeat := 0

~LCtrl::
	CtrlDown := 1
	KeyWait, LControl
	CtrlDown := 0
	Return
~LButton & WheelUp::  


Send, {Ctrl up}
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
	{
		If _Repeat = 1
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен 1 раз - одно действие.
		Else
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен больше 2 раз - второе действие.
	}
	Else
	{
		If _Repeat < 5
			ToolTip lbutton wheelup`, WheelUp прокручен до 5 раз - одно действие.
		Else
			ToolTip lbutton wheelup`, WheelUp прокручен больше 5 раз - второе действие.
	} 
	Return
	
	

14

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Как бы ещё сделать, чтобы ctrl lbutton wheelup`, WheelUp прокручен 1 раз, заменить на ctrl lbutton wheelup`, WheelUp прокручен ПЕРВЫЙ раз?

15

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

serzh82saratov, Спасибо огромное за активную помощь.

Да пожалуйста. Благодарность кстати можно увековечить в репутации.

Так же нашел один баг при нажатии ctrl lbutton wheelup, появляется сообщение "71 hotkeys have been received in the last 1903ms"

Да, там надо в начало скрипта добавить:

#HotkeyInterval 0

Как бы ещё сделать, чтобы ctrl lbutton wheelup`, WheelUp прокручен 1 раз, заменить на ctrl lbutton wheelup`, WheelUp прокручен ПЕРВЫЙ раз?

Не совсем понял.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16 (изменено: OmTatSat, 2015-11-07 22:28:24)

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Предыдущий вопрос отменяется, так как вроде работает без этого. Правда иногда масштабирование прорывается, как с этим бороться?

Delay := 10 ; задержка между нажатиями хоткея
Repeat := 0

~LCtrl::
	CtrlDown := 1
	KeyWait, LControl
	CtrlDown := 0
	Return
~LButton & WheelUp::  


;Send, {Ctrl up}
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
				send {wheelup}
			
			Else
	{
		If _Repeat < 5 ;ToolTip lbutton wheelup`, WheelUp прокручен до 5 раз - одно действие.
			{
        ifwinactive, ahk_class MozillaWindowClass
        {
    send, {Ctrl down}{Tab} 
    sleep, 500
    send, {left}
}
IfWinExist, ahk_class MozillaWindowClass
WinActivate ahk_class MozillaWindowClass
else
{
	run, "C:\¤рлыки\m Google url.lnk"
#Persistent
ToolTip, Firefox запускаетс¤`nподожди момент.
SetTimer, RemoveToolTip, 5000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
    }
		Else ; ToolTip lbutton wheelup`, WheelUp прокручен больше 5 раз - второе действие.
			{
        sleep, 200
    send, {Ctrl up}{alt down}{Tab} 
    sleep, 500
    send, {left}
      }
    Count_Presses = 0
    return
}
	 
	Return
	
#ifwinactive, ahk_class MozillaWindowClass
^WheelUp::Left
^WheelDown::Right
^LButton:: send {ctrl up}


#if (MouseIsOver("ahk_class TaskSwitcherWnd") && !winactive("ahk_group test"))
!lButton::
MouseGetPos, varx, vary
ControlClick, x%varx% y%vary%, ahk_class TaskSwitcherWnd
send, {alt up}
return
^!lButton:: 
MouseGetPos, varx, vary
ControlClick, x%varx% y%vary%, ahk_class TaskSwitcherWnd
send, {ctrl up} {alt up}
    return
    
#ifwinactive, ahk_class TaskSwitcherWnd
!lButton:: send, {alt up}
^!lButton:: send, {ctrl up} {alt up}
    return
    
GroupAdd, test, ahk_class TaskSwitcherWnd

MouseIsOver(WinTitle) {
      MouseGetPos, , , Win
    return WinExist(WinTitle . " ahk_id " . Win)
}

17

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Правда иногда масштабирование прорывается, как с этим бороться?

Это и есть главный вопрос. Теоретически, если устраивает сначала зажимать LButton потом LControl и после WheelUp, то может получится это обойти.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

serzh82saratov пишет:

если устраивает сначала зажимать LButton потом LControl и после WheelUp, то может получится это обойти.

В принципе сейчас так и делаю, а каким образом организовать обход проблемы?

19 (изменено: serzh82saratov, 2015-11-08 00:23:06)

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Может так:


#HotkeyInterval 0

Delay := 200 ; задержка между нажатиями хоткея
Repeat := 0
 
~LButton:: LButtonDown := 1 
~LButton Up:: LButtonDown := 0 

#If LButtonDown
LCtrl:: CtrlDown := 1 
LCtrl Up:: CtrlDown := 0  
WheelUp::  
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return
#If

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
	{
		If _Repeat = 1
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен 1 раз - одно действие.
		Else
			ToolTip ctrl lbutton wheelup`, WheelUp прокручен больше 2 раз - второе действие.
	}
	Else
	{
		If _Repeat < 5
			ToolTip lbutton wheelup`, WheelUp прокручен до 5 раз - одно действие.
		Else
			ToolTip lbutton wheelup`, WheelUp прокручен больше 5 раз - второе действие.
	} 
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

serzh82saratov, Огромное Спасибо! Теперь нет никакого масштабирования - то, что надо. Как понимаю отпускать lbutton можно только последним, иначе скрипт останавливается? С какой-то стороны даже полезная фича получилась, на моменты когда нужно много выделять со скролом)

21 (изменено: OmTatSat, 2015-11-08 01:51:57)

Re: AHK: Lbutton WheelUp Firefox CtrlTab AltTab + возмож выделения текста

Оставлю здесь то, что в итоге получилось.

; lbutton wheelup, WheelUp прокручен медленно - запустить Firefox, либо активировать если запущен, либо CtrlTab если открыт.
; lbutton wheelup, WheelUp прокручен быстро - AltTab.
; ctrl lbutton wheelup, WheelUp  - WheelUp.
; ctrl отпущен перед Lbutton - lbutton wheelup выполняет роль lbutton wheelup. 
; ctrl отпущен после Lbutton - lbutton wheelup выполняет хоткеи заданные в скрипте. 

#HotkeyInterval 0

Delay := 25 ; задержка между нажатиями хоткея
Repeat := 0
 
~LButton:: LButtonDown := 1 
~LButton Up:: LButtonDown := 0 

#If LButtonDown
LCtrl:: CtrlDown := 1 
LCtrl Up:: CtrlDown := 0  
WheelUp::  
	SetTimer, % CtrlDown ? "Action_Ctrl" : "Action", -%Delay% 
	++Repeat
	Return
#If

Action:
Action_Ctrl:
	_Repeat := Repeat, Repeat := 0
	If A_ThisLabel = Action_Ctrl
				send {wheelup}
			
			Else
	{
		If _Repeat < 2 ;ToolTip lbutton wheelup`, WheelUp прокручен до 2 раз - одно действие.
			{
        ifwinactive, ahk_class MozillaWindowClass
        {
    send, {Ctrl down}{Tab} 
    sleep, 500
    send, {left}
}
IfWinExist, ahk_class MozillaWindowClass
WinActivate ahk_class MozillaWindowClass
else
{
	run, "C:\Ярлыки\m Google url.lnk"
#Persistent
ToolTip, Firefox запускается`nподожди момент.
SetTimer, RemoveToolTip, 5000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
    }
		Else ; ToolTip lbutton wheelup`, WheelUp прокручен больше 2 раз - второе действие.
			{
        ; sleep, 350
    send, {alt down}{Tab} 
    sleep, 800
    send, {left}
      }
       return
}
	 
	Return
	
#ifwinactive, ahk_class MozillaWindowClass
^WheelUp::Left
^WheelDown::Right
^LButton:: send {ctrl up}


#if (MouseIsOver("ahk_class TaskSwitcherWnd") && !winactive("ahk_group test"))
!lButton::
MouseGetPos, varx, vary
ControlClick, x%varx% y%vary%, ahk_class TaskSwitcherWnd
send, {alt up}
return
^!lButton:: 
MouseGetPos, varx, vary
ControlClick, x%varx% y%vary%, ahk_class TaskSwitcherWnd
send, {ctrl up} {alt up}
    return
    
#ifwinactive, ahk_class TaskSwitcherWnd
!lButton:: send, {alt up}
^!lButton:: send, {ctrl up} {alt up}
    return
    
GroupAdd, test, ahk_class TaskSwitcherWnd

MouseIsOver(WinTitle) {
      MouseGetPos, , , Win
    return WinExist(WinTitle . " ahk_id " . Win)
}