AutoHotKey приостанавливает часть скрипта

У меня запущен скрипт, который привязывает числа цифровой клавиатуры к встроенным числам (чтобы легко добавлять символы Unicode на лету, потому что я на ноутбуке без цифровой клавиатуры), а также связывает Home и End с Ctrl+Left и Ctrl+ Правый соответственно. Теперь весь скрипт можно приостановить, нажав клавишу Apps, но я бы хотел, чтобы привязки цифровой клавиатуры были единственной переключаемой частью, а привязка Ctrl + Arrows всегда работала. Как я могу изменить этот скрипт, чтобы сделать это?

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

^Left::Send {Home}
+^Left::Send {LShift down}{Home}{LShift up}
^Right::Send {End}
+^Right::Send {LShift down}{End}{LShift up}

0::Numpad0
1::Numpad1
2::Numpad2
3::Numpad3 
4::Numpad4
5::Numpad5
6::Numpad6
7::Numpad7
8::Numpad8
9::Numpad9

Appskey::
Suspend,Toggle
return

person Alain D'Ettorre    schedule 18.02.2018    source источник


Ответы (1)


#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance Force

 ; These hotkeys are always active (even if the script is suspended):

^Left::
    Suspend Toggle
    Send {Home}
    Suspend Toggle
return

+^Left::
    Suspend Toggle
    Send {LShift down}{Home}{LShift up}
    Suspend Toggle
return

^Right::
    Suspend Toggle
    Send {End}
    Suspend Toggle
return

+^Right::
    Suspend Toggle
    Send {LShift down}{End}{LShift up}
    Suspend Toggle
return

Appskey:: Suspend,Toggle


; These hotkeys are inactive if the script is suspended:

0::Numpad0
1::Numpad1
2::Numpad2
3::Numpad3
4::Numpad4
5::Numpad5
6::Numpad6
7::Numpad7
8::Numpad8
9::Numpad9

https://autohotkey.com/docs/commands/Suspend.htm#Remarks:

Любая подпрограмма «горячая клавиша» или «горячая строка», самая первая строка которой — «Приостановить» (кроме «Приостановить при включении»), будет освобождена от приостановки. Другими словами, горячая клавиша останется включенной, даже если приостановка включена. Это позволяет отключить приостановку с помощью такой горячей клавиши.

person user3419297    schedule 18.02.2018
comment
Спасибо, но скрипт делает то же самое, что и раньше: приостановка скрипта с помощью клавиши Apps (превращает зеленую H в S на панели задач) приостанавливает весь скрипт, а не только привязки цифровой клавиатуры. - person Alain D'Ettorre; 19.02.2018
comment
Теперь все отлично работает, спасибо! Я вижу, вы дважды вызываете Suspend Toggle при каждом нажатии Ctrl+Стрелки. Может ли это повредить какой-либо производительности? Думаю нет, но хотел спросить. Еще раз спасибо - person Alain D'Ettorre; 20.02.2018
comment
Я тоже так не думаю, потому что скрипт возвращается (выходит из этой подпрограммы, завершая текущий поток) сразу после выполнения последней команды. - person user3419297; 20.02.2018