;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                       ;;
;; конфигурационный файл caesar (c) Андрей Салмов        ;;
;;                                                       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;
;; Комментарием может быть лишь целая строка,
;; которая начинается с символа ';' или '#'.
;;
;; Ключевые слова не чувствительны к регистру.
;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Globals

;;
;; Глобальные настройки.
;; Настройки общие для всей системы и программы.
;;

## --- содержание

XMove                  {on | off}
XMoveKey               {Ctrl | Alt | Shift | ...}
XScroll                {on | off}

OnPressLCtrl           task-name
OnPressRCtrl           task-name
OnPressLShift          task-name
OnPressRShift          task-name
; или
OnPressLCtrl {
  ...
}
; или
task OnPressLCtrl {
  ...
}
; (аналогично и для других задач OnPress*)

QuickKeyDelay          k

XKey                   vk

OnDownXKey             task-name
OnUpXKey               task-name
; или аналогично синтаксису задач OnPress*

OnScrollLockForLayout  LanguageId
OnCapsLockForLayout    LanguageId
OnNumLockForLayout     LanguageId

OnStartCaesar          task-name
; или аналогично синтаксису задач OnPress*

WaitThreads            n

mapkey                 key1 to key2
...
mapkey                 keyX to keyY

osdRectPos             x,y
osdRectSize            w,h
osdTextFlags           flags
osdTextColor           {0xBBGGRR | n}
osdTextBorderColor     {0xBBGGRR | n}
osdFontSize            n
osdFontFlags           n
osdFontName            font-name
osdTime                k

MenuTransparencyAlpha {
  ...
}
MenuTransparencyColor {
  ...
}

## --- описание

; Перемещение любого окна мышью при нажатой Alt.
; Вместо Alt параметром XMoveKey (смотрите описание 
; ниже) можно задать другую клавишу.
; (по умолчанию - on)
XMove                  {on | off}

; Задает клавишу для режима XMove.
; (по умолчанию - Alt)
XMoveKey               {Ctrl | Alt | Shift | Win | lAlt 
                       | rAlt | lCtrl | rCtrl | lShift 
                       | rShift | lWin | rWin}

; Прокрутка колесиком мыши того окна, над которым находится
; указатель.
; (по умолчанию - on)
XScroll                {on | off}

; Выполнение определенной задачи при нажатии на левую клавишу
; Ctrl. Задача выполняется только если клавиша была нажата 
; меньше чем за QuickKeyDelay миллисекунд (смотрите описание
; ниже).
; task-name - имя задачи; синтаксис описания задач приведен
; ниже в разделе Tasks.
OnPressLCtrl           task-name

; Другой синтакcис состоит в том, что бы описать команды
; выполняемые при нажатии на левую клавишу Ctrl без создания
; раздела task.
OnPressLCtrl {
  NewThread            {on | off}
  LogStart             {on | off}
  LogEnd               {on | off}

  ; --- последовательность команд --- ;
  ; (смотрите описание раздела Tasks) ;
}
; или
task OnPressLCtrl {
  ...
}

; Выполнение определенной задачи при нажатии на правую клавишу
; Ctrl. Смотрите описание OnPressLCtrl.
OnPressRCtrl           task-name
OnPressRCtrl {
  ...
}
task OnPressRCtrl {
  ...
}

; Выполнение определенной задачи при нажатии на левую клавишу
; Shift. Смотрите описание OnPressLCtrl.
;
; Если вы хотите использовать клавишу Shift как горячую
; клавишу, то учтите, что по умолчанию в Windows пятикратное 
; нажатие Shift включает так называемый "режим залипания". В
; определенных ситуациях это может вызвать некоторые неудобства
; для вас (например, вы можете случайно включить этот режим).
; Отключить данное поведение клавиши Shift можно через меню
; "Панель управления", "Специальные возможности". В открывшемся
; диалоговом окне, на вкладке "Клавиатура", нажмите кнопку
; "Настройка" в разделах "Залипание клавиш" и "Фильтрация
; ввода" и снимите галочку "использовать такой способ" (т.е.
; использовать клавишу Shift).
OnPressLShift          task-name
OnPressLShift {
  ...
}
task OnPressLShift {
  ...
}

; Выполнение определенной задачи при нажатии на правую клавишу
; Shift. Смотрите описание OnPressLCtrl и OnPressLShift.
OnPressRShift          task-name
OnPressRShift {
  ...
}
task OnPressRShift {
  ...
}

; Задает время в миллисекундах, в течение которого нужно нажать
; клавишу lCtrl, rCtrl, lShift, rShift что бы выполнилась
; задача, ассоциированная с данными клавишами.
; (по умолчанию - 1200)
QuickKeyDelay          k

 
; Задает клавишу, для которой могут быть описаны две задачи - 
; одна на нажатие клавиши, вторая - на ее отпускание.
; vk - виртуальный код клавиши в формате, аналогичном параметру
; Key раздела hotkey. Кроме этого vk может принимать также
; значения
; {lAlt | rAlt | lCtrl | rCtrl | lShift | rShift | lWin | rWin}.
XKey                   vk

; Задача, выполняемая при нажатии на клавишу XKey.
OnDownXKey             task-name
OnDownXKey {
  ...
}
task OnDownXKey {
  ...
}

; Задача, выполняемая при отпускании клавиши XKey.
OnUpXKey               task-name
OnUpXKey {
  ...
}
task OnUpXKey {
  ...
}

; Задачи, выполняемые при нажатии и отпускании клавиши XKey
; следует писать очень внимательно. Учтите, что если задана
; хотя бы одна задача (либо OnDownXKey, либо OnUpXKey), то
; системе не будет сообщаться ни о нажатии клавиши, ни о ее
; отпускании. Поэтому, если выполнением задачи/задач вы не
; хотите отменять стандартное поведение клавиши, то следует ее
; самостоятельно "нажать" в задаче OnDownXKey и (обязательно!)
; "отпустить" в задаче OnUpXKey.
; Пример (вряд ли имеющий практическую ценность):
; Пусть мы хотим, что бы при нажатии на клавишу lShift
; появлялось название текущей раскладки клавиатуры. Сами
; функции клавиши Shift мы при этом перекрывать не будем.
;    XKey                  lShift
;    OnDownXKey {
;      # Показываем наименование раскладки клавиатуры.
;      osdText             %L
;      # Возвращаем стандартное поведение клавиши lShift,
;      # нажимая ее.
;      DownKey             lShift
;    }
;    OnUpXKey {
;      # Даже присутствие одной задачи приводит к тому,
;      # что системе не сообщается ни о нажатии клавиши,
;      # ни о ее отпускании. Поскольку мы решили сохранить
;      # стандартное поведение клавиши lShift, то кроме
;      # нажатия нужно вернуть и отпускание клавиши.
;      UpKey               lShift
;    }
; p.s.
; Использовать в качестве XKey клавишу Alt не рекомендуется.

; Включение подсветки Scroll Lock для раскладки клавиатуры
; LanguageId (0x0419 - русский, 0x0409 - английский и т.п.).
; Если 0 или не задано, то подсветки Scroll Lock при 
; переключении раскладки не происходит. При заданном LanguageId
; световой индикатор не отображает состояние клавиши Scroll
; Lock - он отображает, установлена или нет заданная раскладка.
; (по умолчанию - 0)
OnScrollLockForLayout  LanguageId

; Аналогично OnScrollLockForLayout, но для индикатора Caps Lock.
OnCapsLockForLayout    LanguageId

; Аналогично OnScrollLockForLayout, но для индикатора Num Lock.
OnNumLockForLayout     LanguageId

; Задача выполняемая при старте caesar.
; task-name - имя задачи; синтаксис описания задач приведен 
; ниже в разделе Tasks.
OnStartCaesar          task-name

; Другой синтакcис состоит в том, что бы описать команды
; выполняемые при старте caesar без создания раздела task.
OnStartCaesar {
  NewThread            {on | off}
  LogStart             {on | off}
  LogEnd               {on | off}

  ; --- последовательность команд --- ;
  ; (смотрите описание раздела Tasks) ;
}
; или
task OnStartCaesar {
  ...
}

; Количество ожидающих потоков.
; (значение от 0 до 24. по умолчанию - 2)
; Ожидающий поток - поток, который caesar создает при старте.
; Данный поток "спит" пока не появится какая-нибудь задача
; (task), после чего он пробуждается, выполняет эту задачу и
; снова переходит в режим ожидания. Если все ожидающие потоки
; заняты выполнением задач, то caesar создает новый поток,
; который выполнит задачу и завершится (именно завершится, а
; не перейдет в режим "сна", как ожидающий поток).
; Всего программа может выполнять одновременно до 32 задач
; (создавать до 32 потоков).
WaitThreads            n

; Переопределяет клавишу key1 в клавишу key2.
; Т.е. нажатия клавиши key1 будут восприниматься системой
; как нажатия клавиши key2 (можно использовать, например,
; для переопределения нужных, но неудобно расположенных клавиш
; на клавиатурах ноутбуков).
; key1 и key2 - виртуальные коды клавиш, задаваемые аналогично
; параметру Key, описанному ниже в разделе Hotkeys и в команде
; DownKey раздела task.
mapkey                 key1 to key2

; Координаты верхнего левого угла прямоугольника, в котором
; будет выводится OSD-сообщение.
; (по умолчанию - 20, 20)
osdRectPos             x,y

; Размеры прямоугольника, в котором будет выводиться OSD-текст.
; (по умолчанию - 400, 200)
osdRectSize            w,h

; Выравнивание OSD-текста относительно заданного прямоугольника.
; flags является одним или суммой нескольких значений:
;   0x00000 - выравнивать текст по левому краю;
;   0x00001 - выравнивать текст по центру;
;   0x00002 - выравнивать текст по правому краю;
;   0x00000 - выравнивать текст по верхнему краю;
;   0x00004 - выравнивать текст по центру по вертикали;
;   0x00008 - выравнивать текст по нижнему краю;
;   0x00100 - не обрезать текст, если он не умещается в прямоугольнике;
;   0x20000 - использовать письмо "справа налево" (для арабских шрифтов).
; (по умолчанию - 0x00100)
; При использовании недопустимых значений flags поведение окна
; с OSD-текстом не определено.
osdTextFlags           flags

; Цвет OSD-сообщения.
; Если 0, то прозрачный.
; (по умолчанию - 0x00DD00)
osdTextColor           {0xBBGGRR | n}

; Цвет границы (рамки) OSD-сообщения.
; Если 0, то граница отсутствует.
; (по умолчанию - 0x004400)
osdTextBorderColor     {0xBBGGRR | n}

; Размер шрифта OSD-текста, в пунктах.
; (по умолчанию - 22)
osdFontSize            n

; Модификации шрифта OSD-текста.
; flags является одним или суммой нескольких значений:
;   0x00 - без модификаций;
;   0x01 - жирный шрифт;
;   0x02 - курсив;
;   0x04 - подчеркнутый шрифт;
;   0x08 - зачеркнутый шрифт.
; (по умолчанию - 0)
osdFontFlags           n

; Наименование шрифта, которым отображается OSD-текст.
; (по умолчанию - "Arial Black")
osdFontName            font-name

; Время в миллисекундах, в течение которого отображается
; OSD-сообщение.
; (по умолчанию - 2000)
osdTime                k

; (смотрите также группу OSD в описании команд раздела task)

; Описание своего раздела "Transparency" в XMenu.
; Может быть максимум 9 пунктов.
; Каждая строка - один пункт меню. Сначала идет значение
; прозрачности по альфа-каналу (число от 0 до 255), затем
; текст пункта меню.
; (Пункт меню "No" предопределен - т.е. всегда присутствует
; в меню Transparency.)
; (по умолчанию
;   MenuTransparencyAlpha {
;     234                  &8%
;     229                  &10%
;     219                  1&4%
;     204                  &20%
;     191                  2&5%
;     178                  &30%
;   }
; )
MenuTransparencyAlpha {
  value-1              menu-name-1
  value-2              menu-name-2
  value-3              menu-name-3
  ...
}

; Описание своего раздела "Transparency" в XMenu.
; Может быть максимум 5 пунктов.
; Каждая строка - один пункт меню. Сначала идет значение
; прозрачного цвета (десятичное число или  0xBBGGRR, где RR,
; GG, BB - 16-тиричные представления красной, зеленой и синей
; составляющей цвета), затем текст пункта меню.
; (Пункт меню "No Color Key" предопределен - т.е. всегда
; присутствует в меню Transparency.)
; (по умолчанию
;   MenuTransparencyColor {
;     0x000000             &Black
;     0xFFFFFF             &White
;     0xD4D0C8             &Gray
;   }
; )
MenuTransparencyColor {
  value-1              menu-name-1
  value-2              menu-name-2
  value-3              menu-name-3
  ...
}


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Tasks

;;
;; Список задач.
;; Задачи могут вызываться на выполнение горячими клавишами
;; или при создании определенных окон (смотрите ниже описание
;; раздела window).
;;

## --- содержание

task [task-name-1] {
  NewThread            {on | off}
  LogStart             {on | off}
  LogEnd               {on | off}

  ; --- последовательность команд --- ;
}

## --- описание

task [task-name-2] {
  ; Следует ли выполнять задачу в отдельном потоке приложения
  ; (on) или в основном (off). Если параметр NewThread не 
  ; указан, то caesar сам решает создавать отдельный поток
  ; для задачи или нет. Если в задаче более 8 команд или
  ; имеются операторы перехода (goto) на метки, расположенные
  ; выше них, то поток создается.
  ; Вне зависимости от значения этого параметра задача будет 
  ; выполнена в отдельном потоке, если в ней есть команда,
  ; которая отмечена символом "*" (звездочка) в описании 
  ;команд, приведенном ниже.
  NewThread            {on | off}

  ; Делать запись в лог-файл о том, что задача запущена (on)
  ; или нет (off).
  ; (по умолчанию - off)
  LogStart             {on | off}

  ; Делать запись в лог-файл о том, что задача завершена (on)
  ; или нет (off).
  ; Следует понимать, что, например, в случае, если задача
  ; запускает некоторое приложение, то она не ждет его
  ; завершения, и в лог-файл будет сделана запись 
  ; непосредственно после запуска приложения, а не после его
  ; завершения (исключение - команды раздела task 
  ; RunAppAndWaitForClose, WaitForClose).
  ; (по умолчанию - off)
  LogEnd               {on | off}

  ; Полный список возможных команд приводится в конце этого
  ; файла.
}

task [task-name-3] {
  ...
}

...

; p.s.
; Имена задач нечувствительны к регистру и различаются между
; собой только по первым 48 символам.
; Если задача находится внутри раздела window, hotkey или
; job (смотрите их описание ниже) и у нее нет имени, то ей 
; присваивается имя данного раздела (если оно задано).


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HotKeys

;;
;; Список горячих клавиш.
;; Задают горячие клавиши, выполняемые задачи при их нажатии.
;;

## --- содержание

hotkey [hotkey-name-1] {
  Key                  [модификаторы]ВиртуальныйКод
  Mouse                [модификаторы]КнопкаМыши Область
  Task                 task-name
  Task [task-name] {
    ...
  }
}

## --- описание

hotkey [hotkey-name-2] {
  ; Горячая клавиша.
  ; Задается в формате [модификаторы]ВиртуальныйКод
  Key                  [Ctrl+][Alt+][Shift+][Win+]{0-9 | A-Z
                       | ' | , | - | . | / | ; | = | [ | \ 
                       | ] | ` | BackSpace | Tab | Enter | Escape 
                       | CapsLock | Space | PageUp | PageDown 
                       | End | Home | Apps | Left | Up | Right
                       | Down| PrintScr | Pause | Insert | Delete 
                       | Sleep | Num0-Num9 | NumMult | NumPlus
                       | NumMinus | NumDot | NumDiv | F1-F24 
                       | NumLock | ScrollLock | App1 | App2 
                       | 0xNN (NN - 16-тиричный виртуальный код
                       клавиши; например, '0x70' и 'F1' - это
                       одно и тоже, смотрите файл 
                       tips/virtual-keys.txt)}

  ; Горячая клавиша мыши.
  ; Задает модификатор, кнопку мыши и область в заголовке окна,
  ; на которой нужно кликнуть заданной кнопкой мыши (или
  ; прокрутить колесико мыши в заданном направлении) при нажатых
  ; клавишах-модификаторах, что бы выполнилась задача,
  ; описанная в данном разделе hotkey.
  ; Кнопки мыши:
  ;   LClick       - клик левой кнопкой мыши;
  ;   RClick       - клик правой кнопкой мыши;
  ;   MClick       - клик средней кнопкой мыши;
  ;   X1Click      - клик кнопкой x1;
  ;   X2Click      - клик кнопкой x2;
  ;   WheelUp      - прокрутка колесика вверх (от себя);
  ;   WheelDown    - прокрутка колесика вниз (на себя).
  ; Области в заголовке окна:
  ;   SysMenu      - область системного меню окна;
  ;   CaptionLeft  - левая половина области заголовка окна;
  ;   CaptionRight - правая половина области заголовка окна;
  ;   Minimize     - кнопка "Свернуть / Восстановить";
  ;   Maximize     - кнопка "Развернуть / Восстановить";
  ;   Help         - кнопка "Справка";
  ;   Close        - кнопка "Закрыть".
  Mouse                [Ctrl+][Alt+][Shift+][Win+]{LClick
                       | RClick | MClick | X1Click | X2Click
                       | WheelUp | WheelDown}
                       on {SysMenu | CaptionLeft | CaptionRight
                       | Minimize | Maximize | Help | Close}

  ; Помните, что стандартные действия, которые выполняются
  ; при кликах в области заголовка окна выполняются Windows вне
  ; зависимости от того, нажаты ли клавиши-модификаторы или нет.
  ; Например, клик левой кнопкой мыши на кнопке "Свернуть"
  ; минимизирует окно вне зависимости от того, нажата клавиша
  ; Ctrl (или Alt, или Shift) или нет. Поэтому переопределяя
  ; это действие Windows какой-либо задачей (т.е. задав
  ; "Mouse LClick on Minimize") вы всегда можете кроме своего,
  ; выполнить еще и действие по умолчанию, удерживая, например,
  ; клавишу Ctrl при клике на кнопке минимизации (это если вы
  ; не назначили свою задачу и на "Mouse Ctrl+LClick on Minimize").

  ; Другой синтаксис параметра Mouse позволяет выполнить задачу,
  ; описанную в данном разделе при нажатии кнопок мыши в
  ; произвольной области экрана.
  ; Область экрана представляет собой прямоугольник и задается
  ; координатами его левого верхнего и правого нижнего углов:
  ;   left, top     - координаты левого верхнего угла области;
  ;   right, bottom - координаты правого нижнего угла области.
  ; Левый верхний угол экрана имеет координаты (0, 0).
  Mouse                [Ctrl+][Alt+][Shift+][Win+]{LClick
                       | RClick | MClick | X1Click | X2Click
                       | WheelUp | WheelDown}
                       in Rect left, top, right, bottom
                       
  ; И, наконец, еще один синтаксис параметра Mouse позволяет
  ; выполнять задачу либо при входе указателя мыши в заданную
  ; область экрана, либо при выходе из нее.
  Mouse                move {in | out} Rect left, top, right, bottom

  ; Задача, которая будет выполнена при нажатии на клавишу,
  ; если задан параметр Key, и/или при клике мышкой (прокрутке
  ; колесика мыши), если задан параметр Mouse.
  Task                 task-name

  ; Другой синтаксис - непосредственное описание задачи.
  Task [task-name] {
    ...
  }
  
  ; p.s.
  ; Действия, которые будут выполняться в задаче Task при
  ; нажатии на горячую клавишу Key будут относиться к текущему
  ; (активному) окну верхнего уровня (окну на переднем плане).
  ;
  ; Действия, которые будут выполняться в задаче Task при
  ; нажатии на горячую клавишу мыши Mouse будут относиться к
  ; окну, над которым находится указатель мыши.
  ;
  ; Одновременно несколько задач с разными параметрами Mouse
  ; могут претендовать на выполнение при определенных условиях
  ; (например, две разных области, описанные в разных разделах
  ; hotkey могут пересакаться и, кроме того, в прямоугольнике
  ; пересечения областей может находится заголовок окна для
  ; которого также задана обработка в третьем разделе hotkey).
  ; В таких случаях выполняется только одна задача, которая 
  ; выбирается по следующим правилам (приоритетам):
  ;   - если есть задача для обработки заголовка окна, то 
  ;     выполняется она;
  ;   - если есть несколько задач на нажите кнопки мыши
  ;     (прокрутки колесика мыши) в данной области экрана, то
  ;     из таких задач выполняется первая, описанная в
  ;     конфигурационном файле;
  ;   - если есть несколько задач на вход указателя мыши в
  ;     данную область экрана, то выполняется первая, описанная
  ;     в конфигурационном файле;
  ;   - если есть несколько задач на выход указателя мыши из
  ;     данной области, то из таких задач выполняется первая,
  ;     описанная в конфигурационном файле.
}

hotkey [hotkey-name-3] {
  ...
}

...


 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Windows

;;
;; Список окон.
;; Для окон, заданных вами, можно переопределить глобальные
;; настройки и/или выполнить при создании окна какую-нибудь
;; задачу. Окна также используются в задачах (task) для
;; разграничения действий выполняемых над разными типами
;; окон (смотрите ниже команды WindowIs, SwitchToWindow).
;;

## --- содерждание

window [window-name-1] {
  ClassName            window-class-name
  Title                window-title
  FileName             window-file-name

  XMove                {on | off}
  XScroll              {on | off}

  Task                 task-name
  Task [task-name] {
    ...
  }
}

## --- описание

window [window-name-2] {
  ; Задают отличительные признаки окна: по имени класса,
  ; заголовка или имени файла. Отсутствие параметра обозначает
  ; "любой" (заголовок, класс, файл). Присутствующие параметры
  ; связываются по логическому "И".
  ClassName            window-class-name
  Title                window-title
  FileName             window-file-name

  ; Переопределение глобальных параметров для данного типа
  ; окон.
  XMove                {on | off}
  XScroll              {on | off}

  ; Задача, которая будет выполняться при создании (запуске)
  ; такого окна.
  Task                 task-name

  ; Другой синтаксис - непосредственное описание задачи.
  Task [task-name] {
    ...
  }
  
  p.s.
  ; Действия, которые будут выполняться в задаче Task,
  ; заданной в разделе window, будут относиться к окну,
  ; описываемому данным разделом.
}

window [window-name-3] {
  ...
}

...


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Jobs

;;
;; Список работ.
;; Работа - задача, выполняемая периодически и/или в 
;; определенное время (в соответствии с задаваемым расписанием).
;;

## --- содержание

job [job-name-1] {
  StartTime            YYYY-MM-DD hh:mm:ss  
  Period               d
  CronTime             tMin tHour tDay tMonth tDayOfWeek
  ResumeForRun         {on | off}
  Task                 task-name
  Task [task-name] {
    ...
  }
}

## --- описание

job [job-name-2] {
  ; Время первого запуска задачи.
  StartTime            YYYY-MM-DD hh:mm:ss
  
  ; Периодичность выполнения задачи в секундах.
  ; Например,
  ;   d = 3600   - выполнять задачу один раз в час;
  ;   d = 86400  - выполнять задачу один раз в сутки;
  ;   d = 604800 - выполнять задачу один раз в неделю.
  Period               d

  ; Шаблон времени выполнения задачи в формате сервиса cron 
  ; (планировщик в unix-системах).
  ; tMin, tHour, tDay, tMonth, tWeekOfDay - шаблоны
  ; минут, часов, дней, месяцев и дней недели соответственно.
  CronTime             tMin tHour tDay tMonth tDayOfWeek

  ; Шаблоны могут быть:
  ; - конкретным значением (например, 5 - пятое число или 
  ;   месяц и т.п.);
  ; - перечислением значений через запятую (например, 5,9,13,18);
  ; - интервалом значений (например, 5-13);
  ; - интервалом с определенным шагом (например, 1-9/2 - 
  ;   равносильно 1,3,5,7,9);
  ; - символом * (звездочка), эквивалентным слову "любой" 
  ;   или списку всех допустимых значений (например, * для 
  ;   часов - это тоже, что и 0-23).
  ;
  ; В общем случае шаблоны имеют следующий формат:
  ; {*[/step] | n0[-n1[/step]]}[, ...]
  ; n0, n1 - числа. Для минут - от 0 до 59, для часов - от
  ; 0 до 23, для дней - от 1 до 31, для месяцев - от 1 до 12,
  ; для дней недели - от 0 (воскресение) до 6.
  ; step - число, обозначающее периодичность.
  ; * - эквивалентна записи m0-m1, где m0 - минимальное
  ; значение, m1 - максимальное (для минут, часов, дней и т.д.).
  ; Дни могут задаваться двумя способами - день месяца и день 
  ; недели. Если задан и день месяца и день недели, то задача 
  ; будет выполняться и в указанные дни месяца и в указанные 
  ; дни недели.
  ; Примеры:
  ; 0 * * * * - выполнять работу каждый час (в 0 минут каждого
  ;             часа);
  ; 5 13 * * * - выполнять работу раз в день (каждый день) в 
  ;             13 часов 5 минут;
  ; 1-15,20,45-59/2 */2 * * * - выполнять работу каждые два часа
  ;             (в 0 часов, 2, 4, 6 и т.д.) ежеминутно с 1 по
  ;             15-ю минуты часа, потом в 20 минут, потом через
  ;             одну минуту начиная с 45-ой (в 45 мин, 47, 49,
  ;             51 и т.д.);
  ; 30 4 1,15 1-3 5 - выполнять работу в 4:30 первого и 15
  ;             числа в январе, феврале и марте, а также в 4:30
  ;             каждую пятницу января, февраля и марта.

  ; p.s.
  ; Для каждой работы обязательно должен быть задан хотя бы
  ; один из параметров StartTime, Period, CronTime. Если заданы
  ; и Period, и CronTime, то задача будет выполняться и во время
  ; соответствующее Period, и во время соответствующее CronTime.
  ; Если задано StartTime, то в первый раз задача выполнится в
  ; StartTime независимо от того, удовлетворяет это время
  ; шаблону CronTime, или нет.

  ; Выводить компьютер из ждущего режима для выполнения
  ; задачи (on) или нет (off). Если компьютер находится ждущем 
  ; режиме, то в случае значения off выполнение задачи будет
  ; пропущено.
  ; (по умолчанию - off)
  ResumeForRun         {on | off}

  ; Задача, которая будет выполняться по расписанию.
  Task                 task-name

  ; Другой синтаксис - непосредственное описание задачи.
  Task [task-name] {
    ...
  }
  
  ; p.s.
  ; Действия, которые будут выполняться в задаче Task, заданной
  ; в разделе job, будут относиться к окну на переднем плане.
}

job [job-name-3] {
  ...
}

...


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Transliterations

;;
;; Таблицы, используемые для транслитерации содержимого буфера
;; обмена (смотрите ниже описание команды TranslitClipboard).
;;

## --- содержание

transliteration [translit-table-name1] {
  From                 from-str
  To                   to-str
  ...
}

## --- описание

transliteration [translit-table-name2] {
  ; Строка, задающая (через пробел) КАКИЕ символы будут
  ; транслироваться.
  ; Строка должна начинаться с наиболее длинных
  ; последовательностей. Сами символы можно задавать также в
  ; формате \uNNNN или \xNNNN, где NNNN - шестнадцатиричный код
  ; символа в кодировке Unicode.
  ; Например, "ый ий яя  а б в г ь".
  From                 from-str

  ; Строка, задающая (через пробел) В КАКИЕ символы будут 
  ; транслироваться соответствующие символы из строки From.
  ; Символ "~" (тильда) обозначает "заменить на пустое
  ; значение". (Если необходимо использовать собственно знак
  ; тильда, то его следует записать в виде кода: \u007E).
  ; Например, "y  y  aya a b v g ~".
  To                   to-str

  ...
}

transliteration [translit-table-name3] {
  ...
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                       ;; 
;;       конец конфигурационного файла caesar            ;;
;;                                                       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;
;; Далее идет полный список возможных в разделе task команд. 
;; каждая команда может повторяться в разделе task любое 
;; количество раз.
;; 
;; Команды, описание которых начинается с символа "*"
;; (звездочка), заставляют программу игнорировать параметр
;; NewThread задачи: задача всегда выполняется в отдельном, а
;; не в основном, потоке приложения.
;;
;; Если не оговорено иное, то:
;; - каждая команда присваивает переменной errorlevel (смотрите 
;;   ниже раздел "Управляющие конструкции") значение 0, если 
;;   она выполнена успешно, и значение 1 в противном случае;
;; - переменной result присваивается значение 0.
;;

; Далее,
; t - это время в миллисекундах, в течение которого необходимо 
; ждать выполнения текущей команды прежде чем перейти к 
; следующей команде в задаче. Должно быть в пределах от 100 до
; 60000000 мс. Если не указано, то сразу осуществляется переход
; к следующей команде.
; T - аналогично t, но: должно быть больше 100 мс, и, если не 
; указано, то следует ожидать выполнения текущей команды 
; бесконечно долго.


# Окно ##################################################

## --- содержание

  SetAlwaysOnTop             {on | off}
  SetWindowPos               x,y
  MoveWindow                 dx,dy
  SetWindowSize              w,h
  ResizeWindow               dw,dh
  MaximizeWindow             [t]
  MinimizeWindow             [t]
  RestoreWindow              [t]
  CloseWindow                [t]
* MinimizeWindowToTray
* RestoreWindowFromTray
  SetResizeWindowMode        [t]
  SetTransparencyAlpha       n
  UpTransparencyAlpha        dn
  DownTransparencyAlpha      dn
  SetTransparencyColor       {0xBBGGRR | n}
  SwitchToForegroundWindow
  SwitchToParentWindow
  SwitchToWindow             window-name
  SetWindowToForeground
  WindowIs                   window-name
  WindowStateIsIconic
  WindowStateIsZoomed
  WindowStateIsVisible
  ShowWindowInfo
  TrackXMenu

## --- описание

; Установить / снять режим отображения поверх остальных окон.
SetAlwaysOnTop               {on | off}

; Переместить окно. (x, y) - координаты левого верхнего угла
; у новой позиции окна в пикселях.
SetWindowPos                 x,y

; Переместить окно относительно текущей позиции. (dx, dy) -
; на сколько пикселей нужно сместиться отосительно текущего
; положения окна.
; Если dy равно 0x8000, то окно смещается по своей диагонали,
; идущей из левого верхнего угла в правый нижний на dx
; пикселей.
; Если dx равно 0x8000, то окно смещается по своей диагонали,
; идущей из правого верхнего угла в левый нижный на dy
; пикселей.
MoveWindow                   dx,dy

; Изменить размеры окна (w, h) - новая ширина и высота окна
; в пикселях.
SetWindowSize                w,h

; Изменить ширину и высоту окна относительно его текущих
; размеров. (dw, dh) - на сколько пикселей нужно изменить
; размер ширины и высоты окна.
; Если dh равно 0x8000, то меньший размер окна изменяется на
; dw пикселей, а больший - на такое количество писелей, что бы
; соотношение ширины и высоты окна не изменилось (сохранилась
; пропорция).
ResizeWindow                 dw,dh

; Распахнуть окно на весь экран.
MaximizeWindow               [t]

; Свернуть окно.
MinimizeWindow               [t]

; Восстановить окно.
RestoreWindow                [t]

; Закрыть окно.
CloseWindow                  [t]

;*Свернуть окно в трей.
MinimizeWindowToTray

;*Восстановить окно из трея.
RestoreWindowFromTray

; Перевести окно в режим изменения размеров с клавиатуры.
; (Аналогично выбору пункта "Размер" в системном меню окна.)
SetResizeWindowMode          [t]

; Установить прозрачность окна по альфа-каналу.
; n - значение от 0 (окно полностью прозрачно) до 255 (окно
; не прозрачно).
SetTransparencyAlpha         n

; Увеличить значение прозрачности окна.
UpTransparencyAlpha          dn

; Уменьшить значение прозрачности окна.
DownTransparencyAlpha        dn

; Установить в качестве прозрачного определенный цвет.
; n - десятичное число, 0xBBGGRR - шестнадцатеричное,
; где RR, GG, BB - 16-теричные представления красной, зеленой
; и синей составляющей цвета.
SetTransparencyColor         {0xBBGGRR | n}

; Переключится на окно, которое сейчас на переднем плане.
; (Сначала команды задачи начинаются либо с окна на переднем
; плане (если задачу запустила горячая клавиша), либо с
; окна которое создается (если задача запущена из window);
; многие команды могут убрать первоначальное окно с переднего
; плана (или вообще закрыть его); для смены текущего окна,
; над которым будут производиться дальнейшие действия и 
; предназначена данная команда.)
SwitchToForegroundWindow

; Переключиться на окно, которое является родительским окном
; верхнего уровня по отношению к текущему окну.
; (Задачи, которые выполняются как результат прокрутки
; колесика мыши или клике кнопкой мыши на кнопках заголовка
; окна, могут оперировать с дочерними окнами; для переключения
; на родительское окно верхнего уровня и служит данная
; команда.)
SwitchToParentWindow

; Переключиться на окно, описанное разделом window.
; window-name - имя окна.
; После выполнения этой команды переменная errorlevel
; устанавливается в 0, если окно найдено и дальнейшие команды
; будут относиться к нему, и в 1, если окно не найдено и
; переключения не произведено.
; Поиск происходит только среди окон верхнего уровня. Если под
; описание окна с именем window-name попадает несколько окон,
; то переключение происходит на любое из них. Если текущее
; окно уже соответствует окну window-name, то caesar попытается
; найти другое окно и переключиться на него. В этом случае
; errorlevel будет равно 0 вне зависимости от того удалось
; найти второе окно window-name или нет.
SwitchToWindow               window-name

; Переводит текущее окно, над которым производятся действия
; в задаче не передний план (делает его активным).
SetWindowToForeground

; Проверяет, является ли текущее окно окном, описанном в 
; разделе window под именем window-name.
; После выполнения данной команды переменная result
; устанавливается в значение 1, если текущее окно является
; окном window-name и в значение 0 - в противном случае.
WindowIs                     window-name

; Проверяет, свернуто текущее окно (минимизировано) или нет.
; Если после выполнения команды переменная result равна 1,
; то окно свернуто, иначе - нет.
WindowStateIsIconic

; Проверяет, развернуто текущее окно (максимизировано) или нет.
; Если после выполнения команды переменная result равна 1,
; то окно развернуто, иначе - нет.
WindowStateIsZoomed

; Проверяет, видимо ли текущее окно или нет.
; Если после выполнения команды переменная result равна 1,
; то окно видимо, иначе - нет.
WindowStateIsVisible

; Показать информацию об окне.
; (Аналогична пункту меню "Window Info" в XMenu.)
ShowWindowInfo

; Отобразить XMenu для текущего окна.
; Меню отображается в текущей позиции указателя мыши.
TrackXMenu


# Приложение ############################################

## --- содержание

  SetProcessPriority         priority-class
* Run                        file-name
  RunApp                     command-line
* RunAppAndWaitForInputIdle  command-line
* RunAppAndWaitForClose      command-line
  AppShow                    show-mode
  AppUser                    user-name
  AppPassword                user-password
  AppDomain                  domain-name
* WaitForInputIdle           [T]
* WaitForClose               [T]
* Sleep                      k
  TerminateApp

## --- описание

; Устанавливает приоритет текущего процесса.
SetProcessPriority           {real time | height | above normal 
                             | normal | below normal | idle}

;*Запустить файл.
; (Аналогично нажатию Enter на файле в проводнике,
; или выбору в меню Пуск команды "Выполнить", заполнения поля 
; "Открыть" (например, "http://www.ya.ru") и нажатию OK.)
; Если команда устанавливает errorlevel в 1 (т.е. файл
; запустить не удалось), то в result сохраняется код ошибки.
; Вот некоторые значения result:
;      2 - файл не найден;
;      3 - путь не найден;
;      5 - доступ запрещен;
;      8 - не хватает памяти для выполнения операции;
;     26 - ошибка совместного доступа к файлу;
;     27 - ассоциация с данным файлом задана неверно;
;     31 - отсутствует приложение, ассоциированное с данным файлом.
; (Везде, где только есть возможность настоятельно рекомендую
; использовать вместо этой команды команду RunApp, где в
; качестве параметра exe-файла будет file-name.)
Run                          file-name

; Запустить приложение (exe или com).
; comand-line - командная строка с аргументами. Если в имени
; выполняемого файла присутствуют пробелы, то его нужно 
; заключить в двойные кавычки.
RunApp                       command-line

;*Запустить приложение и ждать пока процесс не войдет в цикл
; ожидания.
RunAppAndWaitForInputIdle    command-line

;*Запустить приложение и дождаться его завершения.
; В случае успешного завершения команды (errorlevel = 0) в
; result сохраняется код, с которым завершилось приложение,
; указанное в command-line.
RunAppAndWaitForClose        command-line

; Задать режим первоначального отображения окна запускаемого
; командами Run* приложения.
;     default   - запустить с отображением по умолчанию для
;                 данного приложения;
;     hide      - окно скрыто (невидимо);
;     normal    - нормальный режим отображения окна (не 
;                 свернуто и не максимизировано);
;     minimized - минимизировано;
;     maximized - развернуто на весь экран.
AppShow                      {hide | normal | minimized | maximized | default}

; Команды, выполняемые RunApp* можно запустить от имени другого
; пользователя (только для Win2000 и выше). Для этого перед
; вызовами RunApp* можно указать команды
AppUser                      user-name
AppPassword                  user-password
AppDomain                    domain-name

; Что бы после запуска от имени другого пользователя запустить
; приложение от текущего пользователя достаточно вызвать
; AppUser с пустым user-name.
;
; Пример:
; task multiuser-run {
;   RunApp                       excel.exe
;   AppUser                      UserName1
;   AppPassword                  UserPassword1
;   RunApp                       calc.exe
;   RunApp                       notepad.exe
;   AppUser
;   AppShow                      maximized
;   RunApp                       word.exe
; }
;
; calc.exe и notepad.exe будут запущены от имени UserName1,
; а excel.exe и word.exe - от имени текущего пользователя.
; Окно word.exe будет развернуто на весь экран.
; Задачу, в которой присутствует команда RunApp*, а запуск
; приложения осуществляется от другого пользователя, 
; рекомендуется запускать в отдельном потоке (NewThread on).
;
; Команды App* не изменяют значений переменных errorlevel и
; result.

;*Ждать пока процесс не войдет в цикл ожидания.
WaitForInputIdle             [T]

;*Подождать завершения приложения.
; По результатам выполнения команды возможны следующие
; значения переменной errorlevel:
;     0 - команда выполнилось успешно, приложение завершено
;         (код, с которым завершилось приложение сохраняется
;         в result);
;     1 - при выполнении команды возникли ошибки, приложение
;         не завершено;
;     2 - команда завершилась, так как истек таймаут T,
;         приложение не завершено.
WaitForClose                 [T]

;*Ничего не делать k миллисекунд.
Sleep                        k

; Уничтожить процесс (все несохраненные данные теряются).
TerminateApp


# Система ###############################################

## --- содержание

  LockWorkstation
  OffMonitor                 [n]
  Suspend                    [n]
  Hibernate                  [n]
  Logoff                     [n]
  Reboot                     [n]
  Shutdown                   [n]

## --- описание

; Заблокировать компьютер.
; (Только для Win2000 и выше.)
LockWorkstation

; Выключить монитор (перевести его в off mode).
; Если задано n, отличное от нуля, то монитор переводится
; в режим низкого энергопотребления (low-power mode).
OffMonitor                   [n]

; Перевод компьютера в ждущий режим (отключаются диски и
; монитор; просыпается компьютер по нажатию любой клавиши).
; Если задано n, отличное от нуля, то разрешения на переход
; в ждущий режим у других программ не спрашивается.
Suspend                      [n]

; Перевод компьютера в спящий режим (компьютер полностью
; выключается, сохраняя на винчестере образ памяти, который он
; восстанавливает при следующей загрузке).
; Если задано n, отличное от нуля, то разрешения на переход
; в спящий режим у других программ не спрашивается.
Hibernate                    [n]

; Завершить сеанс пользователя.
; Если задано n, отличное от нуля, то сеанс завершается даже
; если имеются несохраненные данные (которые будут утеряны).
Logoff                       [n]

; Перезагрузить компьютер.
; Если задано n, отличное от нуля, то перезагрузка будет
; выполнена даже если имеются несохраненные данные (которые
; будут утеряны).
Reboot                       [n]

; Выключить компьютер.
; Если задано n, отличное от нуля, то выключение будет
; выполнено даже если имеются несохраненные данные (которые
; будут утеряны).
Shutdown                     [n]


# Буфер обмена ##########################################

## --- содержание

  CopyToClipdoard            [message-text]
  ChangeClipboardCase        {to upper case | to lower case | switch case}
  ChangeClipboardLayout      {to next layout | to prev layout | ...}
  ChangeClipboardFormat      to plain text
  TranslitClipboard          translit-table-name
  BackTranslitClipboard      translit-table-name
  UseWordbreakTemplate       [wordbreak-set]
  StoreClipboard             [n]
  RestoreClipboard           [n]
  EmptyClipboard
  ClipboardIsEmpty

## --- описание

; Копировать строку в буфер обмена.
; Если message-text не задан, то в буфер обмена будет
; скопирован текст из окна, который имеет в данный момент фокус
; ввода (копируются только первые 1024 символа строки).
; message-text может содержать специальные символы 
; форматирования (смотрите описание команды osdText).
CopyToClipdoard              [message-text]

; Поскольку вставку из буфера обмена каждая программа реализует
; по-своему, то рекомендуются для вставки эмулировать действия
; пользователя в той программе в которой производится вставка
; (смотрите разделы "Клавиатура" и "Мышь").

; Изменение регистра текста, находящегося в буфере обмена.
;     to upper case  - преобразовать к ВЕРХНЕМУ регистру;
;     to lower case  - преобразовать к нижнему регистру;
;     switch case    - иЗМЕНИТЬ регистр.
ChangeClipboardCase          {to upper case | to lower case | switch case}

; Изменение раскладки клавиатуры текста, находящегося в буфере
; обмена (например, преобразование "ghbdtn" в "привет").
;     to next layout - к следующей, по отношению к текущей,
;                      раскладке клавиатуры;
;     to prev layout - к предыдущей, по отношению к текущей,
;                      раскладке клавиатуры;
;     to stored layout [n] - к сохраненной ранее командой
;                      StoreKeyboardLayout раскладке клавиатуры;
;     layout-name    - к конкретной раскладке клавиатуры.
;     layout-name    = 00000419 - русская;
;                      00000409 - английская;
;                      00000423 - белорусская;
;                      00000422 - украинская;
;                      ...      - и т.д.
ChangeClipboardLayout        {to next layout | to prev layout 
                             | to stored layout [n] | layout-name}

; Команда из всего содержимого буфера обмена оставляет в нем
; только текст.
; Если в буфере обмена отсутствует текст, то буфер очищается и
; переменной result присваивается значение 1.
ChangeClipboardFormat        to plain text

; Транслитерация содержимого буфера обмена по таблице
; translit-table-name задаваемой разделом transliteration
; (смотрите выше).
; Преобразование осуществляется из значений From в значения To
; таблицы транслитерации.
; (Например, преобразование "привет" в "privet".)
TranslitClipboard            translit-table-name

; Обратная транслитерация содержимого буфера обмена по таблице
; translit-table-name.
; Команда аналогична команде TranslitClipboard, но
; преобразование осуществляется из значений To в значения From
; таблицы преобразований.
; Данную команду рекомендуется использовать только в том случае,
; если таблица транслитерации взаимнооднозначна: т.е. длины
; соответствующих значений в From и To равны и одному значению
; из To соответствует ровно одно значение из From. Иначе, для
; обратной транслитерации, лучше описать еще один раздел
; transliteration и воспользоваться командой TranslitClipboard.
BackTranslitClipboard        translit-table-name

; Если данная команда испльзуется, то она изменяет поведение
; команд ChangeClipboardCase, ChangeClipboardLayout,
; TranslitClipboard, BackTranslitClipboard. Данные команды в
; этом случае преобразуют не все содержимое буфера обмена, а
; только последнее слово. Символы, которые являются
; разделителями слов перечисленны в строке wordbreak-set. Если
; wordbreak-set не задана, то используется строка 
; \u0020\u0009\u00A0\u000D
; (пробел, табуляция, неразнывный пробел, перевод строки).
; Использовать данную команду следует перед каждым вызовом
; ChangeClipboardCase, ChangeClipboardLayout, TranslitClipboard
; или BackTranslitClipboard.
; Команда не оказывает влияния на переменные errorlevel и 
; result.
UseWordbreakTemplate         [wordbreak-set]

; Сохранить содержимое буфера обмена в памяти.
; n - номер, так называемой, ячейки, в которой нужно сохранить
; данные. Может быть от 0 до 9. Если не задан, то - 0. Если
; буфер обмена пуст, то после выполнения команды содержимое
; ячейки n также будет пустым.
StoreClipboard               [n]

; Восстановить ранее сохраненное содержимое буфера обмена
; из ячейки n (от 0 до 9). Если n не задано, то данные 
; восстанавливаются из нулевой ячейки. После восстановления
; ячейка очищается (в отличие от буфера обмена Windows, в 
; котором содержимое остается даже после вставки). Если
; первоначально ячейка n пуста, то содержимое буфера обмена
; будет очищено.
RestoreClipboard             [n]

; Очистить содержимое буфера обмена.
EmptyClipboard

; Проверяет имеются ли в буфере обмена какие-либо данные.
; После выполнения данной команды переменная result
; устанавливается в 1, если буфер обмена не пуст, и в 0, в
; противном случае.
ClipboardIsEmpty


# Рабочий стол ##########################################

## --- содержание

  RunScreenSaver             [t]
  PressStartButton           [t]
  MinimizeAll                [t]
  RestoreAll                 [t]
  ToggleDesktop              [t]
* MakeScreenShot             bmp-file-name
  SetWallpaperCenter         bmp-file-name
  SetWallpaperScaled         bmp-file-name
  SetWallpaperTiled          bmp-file-name

## --- описание

; Запустить заставку.
RunScreenSaver               [t]

; Нажать кнопку "Пуск".
PressStartButton             [t]

; Cвернуть все окна.
MinimizeAll                  [t]

; Восстановить окна, свернутые командой MinimizeAll.
RestoreAll                   [t]

; Показать рабочий стол Windows, либо восстановить окна,
; скрытые предыдущим вызовом команды.
; В отличие от команды MinimizeAll, команда ToggleDesktop
; скрывает для отображения рабочего стола даже те окна, у
; которых отсутствует кнопка "Минимизировать".
ToggleDesktop                [t]

;*Сделать "снимок" экрана и сохранить результат в bmp-файл.
MakeScreenShot               bmp-file-name

; Установить в качестве обоев файл. Расположить картинку по
; центру экрана.
SetWallpaperCenter           bmp-file-name

; Установить в качестве обоев файл. Растянуть картинку на весь
; экран.
SetWallpaperScaled           bmp-file-name

; Установить в качестве обоев файл. Расположить картинки рядом,
; заполняя весь экран.
SetWallpaperTiled            bmp-file-name


# Клавиатура ############################################

## --- содержание

  StoreKeyboardLayout        [n]
  SetKeyboardLayout          {to next layout | to prev layout | ...}
  SetNumLock                 {on | off | switch}
  SetCapsLock                {on | off | switch}
  SetScrollLock              {on | off | switch}
  DownKey                    vk
  UpKey                      vk
  SendKeystroke              vk11+vk12+..+vk1n vk21+vk22+..vk2k ...
  TypeText                   message-text
  KeyboardWasChanged

## --- описание

; Запомнить текущую раскладку клавиатуры в памяти caesar.
; n - номер, так называемой, ячейки, в которой нужно
; сохранить раскладку. Может быть от 0 до 9. Если не задан,
; то - 0.
; В дальнейшем использовать сохраненную раскладку можно в
; командах ChangeClipboardLayout и SetKeyboardLayout.
StoreKeyboardLayout          [n]

; Переключиться на определенную раскладку клавиатуры.
;     to next layout - к следующей, по отношению к текущей,
;                      раскладке клавиатуры;
;     to prev layout - к предыдущей, по отношению к текущей,
;                      раскладке клавиатуры;
;     to stored layout [n] - к сохраненной ранее командой
;                      StoreKeyboardLayout раскладке клавиатуры;
;     layout-name    - к конкретной раскладке клавиатуры.
;     layout-name    = 00000419 - русская;
;                      00000409 - английская;
;                      00000423 - белорусская;
;                      00000422 - украинская;
;                      ...      - и т.д.
SetKeyboardLayout            {to next layout | to prev layout 
                             | to stored layout [n] | layout-name}

; Задать состояние клавиши Num Lock.
;     off    - выключена;
;     on     - включена;
;     switch - если включена, то выключить, если выключена,
;              то включить.
SetNumLock                   {on | off | switch}

; Задать состояние клавиши Caps Lock.
; (смотрите SetNumLock)
SetCapsLock                  {on | off | switch}

; Задать состояние клавиши Scroll Lock.
; (смотрите SetNumLock)
SetScrollLock                {on | off | switch}

; Нажать определенную клавишу.
; vk - виртуальный код клавиши в формате, аналогичном параметру
; Key раздела hotkey. Кроме этого vk может принимать также
; значения {lAlt | rAlt | lCtrl | rCtrl | lShift | rShift |
; lWin | rWin}.
; Возможно также принудительно снимать или устанавливать флаг
; "расширенная клавиша" ("extended key"): если перед кодом (или 
; обозначением) клавиши указать символ "^" (крышка), то это 
; устанавливает данный флаг; если указать символ "~" (тильда),
; то это снимает флаг; в противном случае необходимость
; установки флага определяется автоматически. 
DownKey                      vk

; Отпустить (отжать) определенную клавишу.
; (смотрите также DownKey)
UpKey                        vk

; Эмулировать нажатия нескольких клавиш.
; (смотрите также DownKey)
SendKeystroke                vk11+vk12+..+vk1n vk21+vk22+..vk2k ...

; До пробела клавиши нажимаются, пробел - значит отпустить все
; нажатые клавиши, затем идет опять нажатие клавиш, потом 
; пробел - отпустить и т.д.
; Учтите, что данной командой нажимаются именно клавиши, а не
; буквы. Так если необходимо написать слово "Привет", то это
; можно сделать следующими командами:
;     SetCapsLock       off
;     SetKeyboardLayout 00000419
;     SendKeystroke     Shift+g h b d t n
; Однако проще воспользоваться командой TypeText:
;     TypeText          Привет

; Эмулировать набор текста с клавиатуры.
; (Только для Win2000 и выше.)
; message-text - текст, содержащий специальные символы 
; форматирования, описание которых смотрите в команде osdText
; ниже.
TypeText                     message-text

; Показывает были ли нажаты какие-либо клавиши между нажатием
; и отпусканием клавиши XKey.
; После выполнения данной команды переменная result
; устанавливается в 1, если между после нажатия на клавишу XKey
; была нажата какая-либо другая клавиша, и в 0, в противном
; случае.
; Рекомендуется использовать данную команду в задаче OnXKeyUp.
KeyboardWasChanged


# Мышь ##################################################

## --- содержание

  DownMouseButton            {left | right | middle | x1 | x2}
  UpMouseButton              {left | right | middle | x1 | x2}
  ClickMouseButton           {left | right | middle | x1 | x2}
  SetMousePos                x,y
  MoveMouse                  dx,dy
  WheelMouse                 n

## --- описание

; Нажать кнопку мыши.
DownMouseButton              {left | right | middle | x1 | x2}

; Отпустить кнопку мыши.
UpMouseButton                {left | right | middle | x1 | x2}

; Кликнуть кнопкой мыши (тоже, что и нажать, а затем отпустить).
ClickMouseButton             {left | right | middle | x1 | x2}

; Переместить указатель мыши в определенную позицию.
SetMousePos                  x,y

; Сместить указатель мыши относительно текущей позиции.
MoveMouse                    dx,dy

; Прокрутить колесико мыши n раз.
; Если n > 0 - прокрутить вперед (от пользователя, вверх),
; иначе - назад (к пользователю, вниз).
WheelMouse                   n

; p.s.
; Следует учитывать, что эмулируемые события от мыши не
; относятся к какому-то определенному окну. Так, если Вы
; программно (командой ClickMouseButton left) нажмете кнопку
; "Пуск", то прежде чем дальше программно выбирать определенный
; пункт меню в "Пуске" нужно подождать пока это меню
; прорисуется и отобразится на экране. Это можно сделать
; вызовом, например, Sleep 300.


# Звук ##################################################

## --- содержание

  PlaySound                  wav-file-name
  PlayStandardSound          sound-type
* Beep                       k,h
  SetVolume                  n
  UpVolume                   dn
  DownVolume                 dn

## --- описание

; Проиграть звуковой файл (в формате wav).
PlaySound                    wav-file-name

; Проиграть стандартный звук Windows.
; Поддерживаются следующие типы звуков:
;     simple      - звук по умолчанию, или, если отсутствует
;                   звуковая карта, - звук системного динамика;
;     asterisk    - звук "Звездочка";
;     exclamation - звук "Восклицание";
;     hand        - звук "Критическая ошибка";
;     question    - звук "Вопрос";
;     default     - "Стандартный звук".
; Настройка стандартных звуков в Windows производится через
; меню "Пуск", "Панель управления", "Звуки и аудиоустройства".
PlayStandardSound            {simple | asterisk | exclamation | hand | question | default}

;*Выдать звук системного динамика.
; k - время в миллисекундах в течение которого нужно
; подавать звук.
; h - частота звука в герцах (от 37 до 32767).
; Учтите, что, в отличии от команд PlaySound и PlayStandardSound,
; перехода к следующей команде не происходит пока звук не
; будет полностью проигран системным динамиком.
Beep                         k,h

; Установить общую громкость звука в системе.
; n - число от 0 (выключено) до 65535 (максимум).
SetVolume                    n

; Увеличить общую громкость звука в системе.
UpVolume                     dn

; Уменьшить общую громкость звука в системе.
DownVolume                   dn


# OSD ###################################################

; Показать OSD-сообщение.
osdText                      message-text

; message-text может содержать специальные символы форматирования.
; Символы форматирования чувствительны к регистру.
; \n  - заменяется на перевод строки;
; \uNNNN или \xNNNN - заменяется на символ с шестнадцатиричным
;       кодом NNNN (в кодировке Unicode);
; %O  - состояние флага "always on top" для текущего окна;
; %t  - заголовок текущего окна;
; %с  - имя класса текущего окна;
; %f  - имя основного модуля (файла) текущего окна;
; %X  - горизонтальная позиция левого верхнего угла текущего окна;
; %Y  - вертикальная позиция левого верхнего угла текущего окна;
; %W  - ширина текущего окна;
; %H  - высота текущего окна;
; %P  - приоритет процесса, которому принадлежит текущее окно;
; %a  - значение прозрачности окна по альфа-каналу (от 0 до 255);
; %p  - значение прозрачности окна по альфа-каналу в процентах (от 0 до 100);
; %k  - значение прозрачного цвета текущего окна в формате 0xBBRRGG;
; %V  - значение общей громкости звука (от 0 до 65535);
; %v  - значение общей громкости звука в процентах (от 0 до 100);
; %C  - текст из буфера обмена;
; %L  - полное наименование текущего языка (раскладки клавиатуры);
; %l  - сокращенное (трехбуквенное) наименование текущего языка;
; %2  - сокращенное (двухбуквенное) наименование текущего языка;
; %e  - значение переменной errorlevel;
; %r  - значение переменной result;
; %%  - символ %;
; %D[{date-format}] - текущая дата. Если не указан date-format,
;       то дата выводится в "кратком формате даты" задаваемым
;       в "Панели управления", "Язык и региональные стандарты".
;       date-format - строка, содержащая специальные символы
;       форматирования даты. Если в эту строку Вы включаете
;       символы не являющиеся символами форматирования, то 
;       заключайте такие символы в одинарные кавычки. Символы
;       форматирования:
;         d     - день месяца (один или две цифры без ведущего нуля);
;         dd    - день месяца (две цифры с ведущим нулем);
;         ddd   - краткое (двух- трехбуквенное) обозначение дня недели;
;         dddd  - полное наименование дня недели;
;         M     - номер месяца (одна или две цифры без ведущего нуля);
;         MM    - номер месяца (две цифры с ведущим нулем);
;         MMM   - краткое (трехбуквенное) обозначение месяца;
;         MMMM  - полное наименование месяца;
;         y     - последние две цифры года без ведущего нуля;
;         yy    - последние две цифры года с ведущем нулем;
;         yyyy  - четыре цифры года (полный номер года);
;         gg    - номер века.
;       date-format не может превышать 48 символов.
;       (пример: "сегодня %D{dddd dd'.'MM'.'yy}")
; %T[{time-format}] - текущее время. Если не указан time-format,
;       то время выводится в формате, установленным в "Панели
;       управления", "Язык и региональные стандарты".
;       time-format - строка, содержащая специальные символы
;       форматирования времени:
;         h     - часы (одна или две цифры без ведущего нуля) от 0 до 11;
;         hh    - часы (две цифры с ведущим нулем) от 0 до 12;
;         H     - часы (одна или две цифры без ведущего нуля) от 0 до 23;
;         HH    - часы (две цифры с ведущим нулем) от 0 до 23;
;         m     - минуты (одна или две цифры без ведущего нуля);
;         mm    - минуты (две цифры с ведущим нулем);
;         s     - секунды (одна или две цифры без ведущего нуля);
;         ss    - секунды (две цифры с ведущим нулем);
;         t     - один символ "до полудня" / "после полудня" (А или Р);
;         tt    - два символа "до полудня" / "после полудня" (AM или PM).
;       time-format не может превышать 48 символов.
;       (пример: "время %T{HH' : 'mm} - пора обедать")

; В разделе task также могут использоваться любые osd*
; параметры из глобальных настроек - они будут переопределять
; их. Причем переопределять можно несколько раз (перед
; каждым вызовом команды osdText). Задание osd*-настройки
; без параметра или с нулевым значением обозначает, что нужно
; взять значение по умолчанию (т.е. из глобальных настоек).
; osd* параметры не изменяют значений переменных errorlevel и
; result.
  osdRectPos                 x,y
  osdRectSize                w,h
  osdTextFlags               flags
  osdTextColor               {0xBBGGRR | n}
  osdTextBorderColor         {0xBBGGRR | n}
  osdFontSize                n
  osdFontFlags               n
  osdFontName                font-name
  osdTime                    t

; пример:
; hotkey down-transparency {
;   Key                            Win+Down
;   Task {
;     DownTransparencyAlpha        4
;     osdRectPos                   10,10
;     osdRectSize                  300,100
;     oszTime                      1000
;     osdText                      прозрачность %p%%
;   }
; }


# Прочее ################################################

## --- содержание

  InfoBox                    message-text
* MessageBox                 message-text
* QuestionBox                message-text
* WriteToLog                 message-text
* ShowPassword               [k,d]
  CloseLogFile
  OpenLogFile
* EjectDevice                DeviceLetter
* LoadDevice                 DeviceLetter

## --- описание

; Показать сообщение в окне "Window info".
; message-text может содержать специальные символы 
; форматирования (смотрите выше описание команды osdText).
InfoBox                      message-text

;*Показать сообщение в стандартном диалоговом окне.
; message-text может содержать специальные символы
; форматирования (смотрите выше описание команды osdText).
MessageBox                   message-text

;*Показать сообщение в стандартном окне диалога с возможностью
; ответа на него путем нажатия кнопок "Да" или "Нет".
; Переменная result принимает значение 1, если пользователь
; выбрал "Да", и значение 0 - в противном случае.
; message-text может содержать специальные символы
; форматирования (смотрите выше описание команды osdText).
QuestionBox                  message-text

;*Записать сообщение в лог-файл.
; message-text может содержать специальные символы
; форматирования (смотрите выше описание команды osdText).
WriteToLog                   message-text

;*Показать пароль, спрятанный за звездочками в стандартном
; поле для ввода пароля.
; k - показать пароль в отдельном информационном окне или в
; исходном окне (звездочки заменить открытым текстом). 0 (или
; не задано) - в информационном окне, 1 - в исходном.
; d - время, в миллисекундах, в течение которого нужно
; показывать пароль открытым текстом (если k=1), или по
; истечении которого нужно показать информационное окно (если
; k=0). Если не задано, то - 650 мс.
; Данная команда работает не во всех случаях.
ShowPassword                 [k,d]

; Прекратить запись в лог-файл, закрыть файл.
; Это может понадобиться что бы, например, 
; переместить/переименовать лог-файл и начать запись 
; в чистый (новый) файл.
CloseLogFile

; Возобновить запись в лог-файл, открыть файл.
; Если файла не существует, он создается. Имя файла берется из
; командной строки запуска caesar или по умолчанию (смотрите
; описание ключей командной строки caesar).
OpenLogFile

;*Извлечь диск из СD/DVD (отключить флэшку, диск фотокамеры,
; USB-диск и т.п.).
; DeviceLetter - буква устройства (диска)
EjectDevice                  DeviceLetter

;*Закрыть дверцу диска CD/DVD.
LoadDevice                   DeviceLetter


# Управляющие конструкции ###############################

; Выполнение набора команд command-set-1, если условие верно и
; набора команд command-set-2 - в противном случае.
; command-set может содержать любые команды и управляющие
; конструкции (в том числе конструкции if).
; op может принимать следующие значения:
;     =, ==   - равно;
;     !=, <>  - не равно;
;     >       - больше;
;     <       - меньше;
;     >=      - больше или равно;
;     <=      - меньше или равно.
; Если op не указан, то подразумевается ">=" ("больше или
; равно") - по аналогии с bat-файлами Windows.
; n - число.
if {errorlevel | result} op n
  command-set-1
[else
  command-set-2
]
endif

; Задает метку с именем label-name.
:label-name

; Осуществляет переход к команде следующей за меткой
; с именем label-name.
goto                         label-name

; Завершение задачи.
; Все команды следующие за exit не выполняются.
exit


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Я рекомендую так же использовать возможности командных 
файлов (bat-файлов), использовать php-, js- или vb-скрипты.

Например, для запуска php-скрипта, нужно написать задачу со
строкой
RunApp php.exe -f php-file-name.php
<< Назад © 2005—2008, Андрей Салмов
Hosted by uCoz