1

Тема: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

Доброго времени суток!
Можно ли как-нибудь включать/отключать большой блок переназначенных клавиш не запуская/останавливая выполнение скрипта? Потому что хотелось бы иметь в этом же скрипте еще один большой блок переназначенных клавиш, который бы не включался/выключался по нажатию кнопки, включающей/отключающей первый блок. Просто засунув первый блок в оператор if ... else это нельзя сделать? Думаете будет проще для каждого из блоков создать свой скрипт?

2

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

Hotkey

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Lexanni, 2011-10-29 00:16:23)

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

Да, но таким образом можно отключать только каждое переназначение по отдельности.... Или же можно как-то отключить сразу пачку переназначенных клавиш?

4

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

#if специально для пачек

5

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

О! Кажется то, что нужно! Но я не слишком силен в английском... Как понял, все переназначения, идущие после #if и выражения возле него, становятся зависимыми от значения данного выражения? А докуда распространяется эта зависимость? До конца скрипта? Как формируется здесь та самая "пачка"? Можно ли здесь использовать фигурные скобки?

6

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

Google Translate.  Если подвести курсор к непонятному предложению — появится всплывающее сообщение с переводом.

7

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

Все. Разобрался.
Огромное спасибо за помощь!

8 (изменено: sergeant.coolagin, 2011-10-29 01:25:36)

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

И еще. Если можешь, то выкладывай рабочий вариант скрипта. Другим людям это может помочь...

9 (изменено: Lexanni, 2011-10-29 23:08:29)

Re: AHK: Альтернатива Suspended для вкл/откл нескольких горячих клавиш

Хорошо. Вот что я нагородил:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	    Раскладка клавиатуры Lexanni
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.


Menu, Tray, NoStandard ; удаляем стандартные пункты меню (не пользовательские)
Menu, Tray, Icon, ScriptOn.ico, , 1 ; устанавливаем значек при запуске, "замораживаем" его 
                                    ; чтобы не менялся на значек "S" при остановке скрипта)
                                    ; значки должны лежать рядом со скриптом
Menu, Tray, Tip, Остановлено ; всплывающая подсказка, при наведении курсора
Menu, Tray, Add, KeyHistory, ShowKeyHistory ; создаем свое меню значка в трее
Menu, Tray, Add, &Reload, ReloadScript
Menu, Tray, Add, &Exit, ExitScript


CapsLock:: ; Вкл/откл цифровой раскладки. CapsLock все еще можно включить, нажав его с Alt или с RShift ;)
If NumON := !NumON
{
  Menu, Tray, Icon, NumOn.ico
  Menu, Tray, Tip, Включена цифровая раскладка
  TrayTip,, NumOn ; всплывающая подсказка
}
else
{
  Menu, Tray, Icon, ScriptOn.ico
  Menu, Tray, Tip, Работает! :)
  TrayTip,, NumOff
}
return

<+CapsLock:: ; LShift + CapsLock -> Включение/отключение всех горячих клавиш
Suspend
If A_IsSuspended
{
    Menu, Tray, Icon, ScriptOff.ico
    Menu, Tray, Tip, Скрипт выключен :(
    TrayTip,, Выключено
}
else
{
	Menu, Tray, Icon, ScriptOn.ico
	Menu, Tray, Tip, Работает! :)
	TrayTip,, Банзай %A_UserName%! :)
}
return

;------Четвертый ряд и "."------

vkC0::Send, {U+0027}    ;  Ё -> '
+vkC0::Send, {U+002A}   ;       *
vk31::Send, {U+002D}    ;  1 -> - (Hyphen-Minus)
+vk31::Send, {U+2014}   ;        — (Em Dash)
vk32::Send, {U+0022}    ;  2 -> "
+vk32::Send, {U+2116}   ;        №
vk33::Send, {U+0028}    ;  3 -> (
+vk33::Send, {U+0029}   ;        )
vk34::Send, {U+002C}    ;  4 -> ,
+vk34:: Send, {U+003B}  ;        ;
vk35::Send, {U+002E}    ;  5 -> .
+vk35::Send, {U+003A}   ;        :
vk36::Send, {U+0021}    ;  6 -> !
+vk36::Send, {U+003F}   ;        ?
vk37::Send, {U+002E}    ;  7 -> .
+vk37::Send, {U+003A}   ;        :
vk38::Send, {U+002C}    ;  8 -> ,
+vk38::Send, {U+003B}   ;        ;
vk39::Send, {U+0029}    ;  9 -> )
+vk39::Send, {U+0028}   ;        (
vk30::Send, {U+0022}    ;  0 -> "
+vk30::Send, {U+0027}   ;        %
vkBF::Send, {U+0451}    ;  . -> ё
+vkBF::Send, {U+0401}   ;       Ё

;----- Цифры -----
#If NumON ; блок, заключенный между #If работает, когда NumOn возвращает значение true
    vk41::Send, {U+0031} ; A -> 1
    vk53::Send, {U+0032} ; S -> 2
    vk44::Send, {U+0033} ; D -> 3
    vk46::Send, {U+0034} ; F -> 4
    vk56::Send, {U+0035} ; V -> 5
    vk4E::Send, {U+0036} ; N -> 6
    vk4A::Send, {U+0037} ; J -> 7
    vk4B::Send, {U+0038} ; K -> 8
    vk4C::Send, {U+0039} ; L -> 9
    vkBA::Send, {U+0030} ; ; -> 0
    vkBC::Send, {U+002C} ; , -> ,
    vkBE::Send, {U+002E} ; . -> .
#If
;-----------------

ExitScript:
^CapsLock:: ; Ctrl + CapsLock - > Выход из скрипта
Suspend, Permit ; чтобы не отключалась после команды Suspend
ExitApp 
return 

ReloadScript:
#CapsLock:: ; Win + CapsLock -> Перезапуск
Suspend, Permit
Reload 
return

ShowKeyHistory:
KeyHistory
return

Только чур не задавать вопросов, почему именно такие клавиши на таких местах! Потому что так. Потому что я еще сам не определился с большинством из клавиш... Да и ведь набор на клавиатуре - это сугубо личное дело каждого

Да, и еще надо добавить, что скрипт, наверное, будет работать только в AHK_L.