;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; конфигурационный файл caesar (c) Андрей Салмов
#
# Общие настройки
#
; Пусть индикатор Scroll Lock отображает не состояние клавиши
; Scroll Lock, а состояние раскладки клавиатуры - светится,
; когда установлена русская раскладка, и нет - иначе.
OnScrollLockForLayout 0x0419
; Установим настройки для вывода OSD-текста.
; Все размеры в osd*-параметрах в данном файле оптимальны для
; разрешения 1024x768.
; Установим по умолчанию вывод всех OSD-сообщений в правой
; нижней части экрана.
osdRectPos 520,400
; Размер блока для сообщений - примерно 1/4 экрана.
osdRectSize 500,340
; Размер шрифта - 18 пунктов.
osdFontSize 18
; Выравнивание текста по правому нижнему краю и не обрезать
; текст, если он не уместится в выделенной области.
osdTextFlags 0x010A
#
# Действия при старте caesar
#
; Включим цифровую клавиатуру при старте caesar.
OnStartCaesar {
SetNumLock on
}
#
# Запуск программ по горячим клавишам
#
; Предполагается, что стандартные комбинации клавиш Windows
; (такие как Win+E, Win+F и т.п.) отключены (это можно сделать
; запустив файл tips/disable-standard-windows-hotkeys.reg и
; выполнив повторный вход в систему).
; Запускаем Writer из Open Office.
hotkey start-openoffice-writer {
Key Win+W
Task {
RunApp "C:\Program Files\OpenOffice\program\swriter.exe"
}
}
; Пишем новое электронное письмо.
hotkey create-new-mail {
Key Win+M
Task {
RunApp "C:\Program Files\Thunderbird\Thunderbird.exe" -compose
}
}
; Запускаем Far manager.
hotkey start-far {
Key Win+F
Task {
RunApp "C:\Program Files\Far\Far.exe"
; Вид, размеры и положение окна можно настроить в ветке
; реестра
; HKEY_CURRENT_USER\Console\C:_Program Files_Far_Far.exe
; (они также сохранятся в этой ветке, если выбрать пункт
; "Свойства" системного меню приложения, а затем при их
; сохранении указать "Сохранить свойства для других окон с
; тем же именем").
}
}
; Другой пример запуска консольного приложения.
; Запускаем консольного клиента MySQL.
hotkey start-mysql-client {
Key Win+S
Task {
; Скрываем первое окно (cmd.exe), которое запускает
; bat-файл и закрывается (что бы не мигало на экране).
; Вызов через start (а не просто имя bat-файла) нужен, что
; бы указать, что заголовок окна равен "mysql" (для окна с
; таким заголовком в реестре я определил специальные
; настройки).
AppShow hide
RunApp cmd.exe /D /C start "mysql" "C:\mysql\bin\mysql.bat"
; Вид, размеры и положение окна можно настроить в ветке
; реестра HKEY_CURRENT_USER\Console\mysql.
}
}
; Подключаемся к серверу с помощью SSH-клиента и выводим
; OSD-сообщение об этом.
hotkey putty-to-srv {
Key Win+P
Task {
; Область OSD-сообщиния - весь экран.
osdRectPos 1,1
osdRectSize 1023,767
; Выравнивание и по горизонтали и по вертикали - по центру.
osdTextFlags 0x0105
; Размер шрифта - 24 пункта.
osdFontSize 24
; Время отображения сообщения - 2,5 секунды.
osdTime 2500
; Начинаем отображение сообщения.
osdText Подключение\nк\nимя-моего-сервера...
; Запускаем SSH-клиент.
RunAppAndWaitForInputIdle "C:\Program Files\PuTTY\putty.exe" @srv
; Переключаемся на окно, запущенного приложения, ...
SwitchToForegroundWindow
; ... что бы переместить его в нужное нам место.
SetWindowPos 80,60
}
}
; Я отключил стандартные клавиши Windows, но эта мне нужна
; поэтому я определил ее снова.
hotkey start-explorer {
Key Win+E
Task {
RunApp explorer.exe
}
}
; Установка модемного соединения.
hotkey dialup-connect {
Key Win+D
Task {
; Запишем в лог-файл, что мы начали соединяться.
LogStart on
AppShow hide
RunApp cmd.exe /D /C start "dialup" "C:\Program Files\caesar\tips\dialup.bat"
; файл dialup.bat:
; @color 0A
; @rasdial MyDialName MyLogin MyPassword
; @if ERRORLEVEL 1 pause
; @exit
}
}
; Разрыв модемного соединения.
hotkey dialup-disconnect {
Key Ctrl+D
Task {
; Запишем в лог-файл, что мы разорвали соединение.
LogStart on
AppShow hide
RunApp cmd.exe /D /C rasdial /disconnect
}
}
; Продемонстрируем возможность запуска по горячей клавише
; только одного экземпляра приложения.
; Пусть по нажатию на Win+1 мы хотим переключаться на открытое
; консольное окно с заголовком "console 1", если оно имеется,
; и запускать данное приложение в противном случае (т.е. если
; оно закрыто).
; Опишем окно нашего приложения.
window console-number-one {
Title console 1
}
;
; Описание горячей клавиши.
hotkey goto-console-number-one {
Key Win+1
Task {
; Предположим, что наше приложение открыто. Попробуем
; переключиться на него.
SwitchToWindow console-number-one
if errorlevel = 0
; Если нам это удалось (приложение на самом деле было
; открыто), то переведем его на передний план.
SetWindowToForeground
else
; Если переключиться на окно приложения не удалось, то
; это говорит о том, что оно закрыто. Запустим его.
AppShow hide
RunApp cmd.exe /D /C start "console 1" cmd.exe
endif
}
}
#
# Использование quick keys
#
; Опишем задачу, которая будет выполнять переключение раскладки
; клавиатуры и сопровождать данное действие визуальным и
; звуковым оповещением. Назначим данную задачу на нажатие
; любой клавиши Ctrl.
;
; Сначала опишем окно-исключение - окно, в котором раскладку
; по нажатию на Ctrl переключать не нужно. В данном примере -
; это окно Citrix (удаленный рабочий стол). На удаленном
; рабочем столе тоже запущен caesar и я хочу, что бы по Ctrl
; раскладка переключалась именно на удаленном столе,
; осуществлялся скроллинг окон удаленного рабочего стола и т.п.
window citrix {
; Отличительным признаком окна пусть будет имя файла
; которому оно принадлежит.
FileName C:\PROGRA~1\Citrix\ICACLI~1\WFICA32.EXE
; Попутно отключаем режим XMove - при нажатой Alt мы хотим,
; что бы двигались окна удаленного рабочего стола, а не само
; окно citrix.
XMove off
; Аналогично для режима XScroll.
XScroll off
}
;
; Теперь, собственно, задача переключения раскладки.
task switch-layout {
; Проверяем: сейчас активно окно Cirtix?
WindowIs citrix
; Если - да, то выходим из задачи не выполняя никаких
; действий.
if result = 1
exit
endif
; Иначе - переключаем раскладку клавиатуры.
SetKeyboardLayout to prev layout
; Вполне приемлемым вариантом будет и эмуляция нажатия
; клавиш, по которым Windows переключает раскладку
; клавиатуры.
# SendKeystroke Ctrl+Shift
; Звуковое сопровождение этого действия (если оно вам
; требуется) рекомендую задать проигрыванием стандартного
; звука Windows (который вы можете изменить выбрав "Пуск",
; "Панель управления", "Звуки и аудиоустройства").
PlayStandardSound default
; Другой вариант звукового сопровождения - воспроизведение
; wav-файла.
# PlaySound C:\Windows\Media\start.wav
; И, наконец, третий вариант - это использование системного
; динамика. (Учтите, что выполнение команды Beep, в отличие
; от первых двух вариантов, завершится только после того,
; как звук будет полностью проигран динамиком.)
# Beep 800,80
; Также возможно визуальное сопровождение (выводим OSD-текст
; с именем раскладки).
Sleep 130
osdText %L
}
;
; Назначим данную задачу на нажатие клавиш левый и правый Ctrl.
OnPressLCtrl switch-layout
OnPressRCtrl switch-layout
; По левой клавише Shift будем включать английскую раскладку.
OnPressLShift {
WindowIs citrix
if result = 1
exit
endif
SetKeyboardLayout 00000409
PlayStandardSound default
; Вывод названия раскладки можно сделать как в задаче
; task-switch, а можно и упростить:
osdText Английский (США)
}
; По правой клавише Shift будем включать русскую раскладку.
OnPressRShift {
WindowIs citrix
if result = 0
SetKeyboardLayout 00000419
PlayStandardSound default
osdText Русский
endif
}
#
# XKey
#
; XKey - специальная, выбираемая вами, клавиша которой можно
; назначить две задачи: одну на нажатие клавиши, вторую - на
; отпускание.
; Настоятельно рекомендую прочитать описание XKey в файле
; man/caesar.conf-full, прежде чем использовать ее.
;
; Часто в русском тексте встречаются которкие английские слова
; или аббревиатуры. Например, - "CD-привод". Наверное никто не
; нажимает Caps Lock, что бы набрать первые две буквы - все
; пользуются клавишей Shift для этих целей. Далее, в
; дополнение, предлагается испльзовать клавишу Apps, для
; переключения раскладки клавиатуры при нажатии на данную
; клавишу и возврата к прежней раскладке при ее отпускании.
;
; Назначаем клавишей XKey клавишу Apps (находится рядом с
; клавишей правый Alt на Windows-клавиатурах, и, по умолчанию,
; вызывает контекстное меню).
XKey Apps
;
; При нажатии на нее переключаем раскладку клавиатуры назад.
OnDownXKey {
SetKeyboardLayout to prev layout
}
;
; При отпускании - возвращаемся к установленной ранее
; раскладке.
OnUpXKey {
SetKeyboardLayout to next layout
; Проверим, а были ли нажаты какие-нибудь клавиши после того,
; как мы нажали на XKey?
KeyboardWasChanged
if result = 0
; Если - нет (т.е. мы просто нажали и отпустили клавишу
; Apps), то стоит инициировать действие, которое
; выполняется при нажатии на Apps по умолчанию. Для этого
; эмулируем нажатие этой клавиши.
SendKeystroke Apps
endif
}
;
; Чуть более сложным будет пример, если мы зададимся целью при
; нажатии на клавишу Apps включать английскую раскладку, а при
; отпускании - возвращать предыдущую раскладку клавиатуры
; какой бы она не была. Это будет выглядеть так:
; OnDownXKey {
; # Запоминаем текущую раскладку клавиатуры.
; StoreKeyboardLayout
; # Устанавливаем английскую раскладку.
; SetKeyboardLayout 00000409
; }
; OnUpXKey {
; # Устанавливаем, сохраненную ранее раскладку
; # клавиатуры.
; SetKeyboardLayout to stored layout
; KeyboardWasChanged
; if result = 0
; Sendkeystroke Apps
; endif
; }
; Думаю, что данная возможность будет многим полезна. Например,
; программистам 1С: текст программы в конфигураторе пишется
; на русском языке, однако для некоторых символов языка
; (квадратные скобки, знаки "больше", "меньше", вертикальная
; черта и т.п.) приходится переключаться на английскую
; раскладку. Хотя для знаков "больше" и "меньше", возможно,
; более комфортным будет следующее решение (через назначение
; горячих клавиш):
; hotkey type-less-symbol {
; Key Win+,
; Task {
; TypeText <
; }
; }
; hotkey type-more-symbol {
; Key Win+.
; Task {
; TypeText >
; }
; }
;
; Если кого-то не устраивают клавиши Ctrl и Shift как клавиши
; переключения раскладки клавиатуры, и очень хочется
; использовать для этих целей клавишу Caps Lock, то они могут
; реализовать данную возможность как раз через XKey:
; # В этом случае индикатор Caps Lock можно использовать
; # как индикатор раскладки клавиатуры.
; OnCapsLockForLayout 0x0419
; # Назначаем клавишей XKey клавишу Caps Lock.
; XKey CapsLock
; # Переключаем раскладку клавиатуры при нажатии на данную
; # на данную клавишу.
; OnDownXKey {
; SetKeyboardLayout to prev layout
; }
; # Можно написать и так:
; # OnDownXKey switch-layout
; # где switch-layout - задача, описанная выше в разделе
; # "Использование quick keys".
#
# Действия с окнами по горячим клавишам клавиатуры и мыши
#
; Сделаем так, что бы окно закрывалось, если мы нажмем левой
; кнопкой мыши на иконке системного меню в его заголовке.
; Напомню, что по умолчанию это действие в Windows вызывает,
; так называемое, системное (оконное) меню. Мы переопределим
; данное поведение. Windows все стандартные действия
; в области заголовка окна выполняет вне зависимости от того,
; нажаты ли такие клавиши как Ctrl, Alt, Shift или нет.
; Поэтому, если вам понадобится вернуть стандартное действие
; Windows (в данном случае - вызов оконного меню), то просто
; кликните мышкой по иконке системного меню, удерживая клавишу
; Ctrl (если, конечно же, вы и на Ctrl+LClick on SysMenu не
; назначили свою задачу).
; Закрытие окна по клику на иконке системного меню оценят те,
; кто часто работает на компьютерах с Mac OS.
hotkey close-window {
Mouse LClick on SysMenu
Task {
CloseWindow
}
}
; По клику правой кнопки мыши в правой половине заголовка окна
; будем вызывать XMenu caesar.
hotkey track-xmenu {
Mouse RClick on CaptionRight
Task {
TrackXMenu
}
}
; А теперь более сложный пример.
; Зададимся целью написать задачу, которая при нажатии на
; кнопку "Свернуть" будет не только свертывать окно (или
; восстанавливать его, если оно свернуто в значок), но и
; выводить OSD-сообщение при выполнении данного действия.
; Кроме того, пусть существует приложение при нажатии на
; кнопку "Свернуть" которого, необходимо сворачивать его в
; трей. Аналогичные действия будут выполняться при нажатии на
; горячую клавишу NumMinus.
;
; Для начала опишем несколько специальных окон.
; Первое - это окно нашего приложения, которое необходимо,
; в отличие от всех остальных, сворачивать в трей.
window thunderbird {
; Пусть это будет окно почтового клиента Mozilla Thunderbird.
ClassName MozillaUIWindowClass
FileName C:\Program Files\Thunderbird\thunderbird.exe
}
;
; Второе - это окно-исключение.
; (Думаете, что самое "нестандартное" приложение в Windows -
; это Open Office, портированный с Unix-систем? Ошибаетесь.
; Самое настандартное приложение в Windows от компании
; Microsoft - это Office 2007 от компании Microsoft.)
window office-2007-panel {
ClassName NetUIHWND
}
;
; Теперь, собственно, горячая клавиша.
hotkey minimize-window {
; Горячая клавиша клавиатуры.
Key NumMinus
; "Горячая клавиша" мыши.
Mouse LClick on Minimize
; Задача
Task {
; Определяем состояние окна.
WindowStateIsIconic
if result = 1
; Если окно свернуто в значок (это возможно для дочерних
; окон приложения), то восстановим его.
RestoreWindow
; И покажем OSD-сообщение по этому поводу.
osdText восстановлено\n%t
else
; Иначе (окно не свернуто в значок) определяем, является
; ли оно окном программы Mozilla Thunderbird.
WindowIs thunderbird
if result = 1
; Если является, то минимизируем его в системный трей.
MinimizeWindowToTray
; И показываем OSD-сообщение об этом.
osdText свернуто в трей\n%t
; Желаемое действие выполнено, поэтому завершаем
; выполнение задачи.
exit
endif
; Если окно не является окном Mozilla Thunderbird, то
; проверяем не дочернее ли это окно панели MS Office 2007?
WindowIs office-2007-panel
if result = 1
; Если это так, то сделаем текущим родительское окно
; данной панели (именно оно и минимизируется самим
; MS Office 2007, поэтому и мы поступим также).
SwitchToParentWindow
endif
; Сворачиваем текущее окно.
MinimizeWindow
; И выводим OSD-сообщение об этом, но не в стандартном
; месте (над областью системного трея), а в центре над
; панелью задач.
osdRectPos 99,400
; Выравнивание текста сообщения при этом делаем по центру
; нижнего края.
osdTextFlags 0x0109
; А саму область сообщения растягиваем почти на всю ширину
; панели задач.
osdRectSize 824,340
osdText свернуто\n%t
endif
}
}
; Минимизация окна по клавише Ctrl+NumMinus в системный трей
; и вывод соответствущего OSD-сообщения (над системным треем).
; Аналогичные действие выполняем и при нажатии правой кнопкой
; мыши на кнопке "Свернуть".
hotkey minimize-to-tray {
Key Ctrl+NumMinus
Mouse RClick on Minimize
Task {
WindowIs office-2007-panel
if result = 1
SwitchToParentWindow
endif
MinimizeWindowToTray
; Мышкой мы можем нажать кнопку "Свернуть" у дочернего
; окна приложения. А оно в трей свернуто быть не может.
; Поэтому OSD-сообщение показываем, только если команда
; MinimizeWindowToTray выполнилась успешно.
if errorlevel = 0
osdText свернуто в трей\n%t
endif
}
}
; По нажатию правой кнопки мыши на кнопке закрытия окна мы
; будем экстренно (с потерей всех несохраненных данных)
; завершать процесс, которому принадлежит данное окно. Однако,
; делать это будем только после подтверждения полученного от
; пользователя.
hotkey terminate-process {
Mouse RClick on Close
Task {
; Спрашиваем у пользователя нужно ли завершить приложение.
QuestionBox Вы уверены?\nЗавершить процесс с потерей всех несохраненных данных?
if result = 1
; И если пользователь ответил "Да", то принудительно
; завершаем процесс.
TerminateApp
endif
}
}
; По нажатию правой кнопки мыши на кнопке приложения в панели
; задач будем закрывать данное приложение (по умолчанию вместо
; этого появляется системное меню главного окна приложения).
;
; Для начала опишем окно самой панели задач. Это понадобится
; нам на тот случай, если правой кнопкой мыши мы нажмем не на
; приложении, а на пустой области панели задач.
window taskbar {
ClassName Shell_TrayWnd
}
;
hotkey close-app-in-taskbar {
; "Горячая клавиша" на нажатие правой кнопки мыши в области,
; в которой расположена панель задач. (Прямоугольник, в
; котором располагаются кнопки приложений, у каждого будет
; свой, поэтому не ориентируйтесь на приведенные здесь
; координаты. Учтите, что область системного трея не должна
; входить в этот прямоугольник.)
Mouse RClick in Rect 0,741, 890,765
Task {
; Эмулируем нажатие правой кнопки мыши. Это переведет
; приложение на передний план и вызовет его контекстное
; меню.
ClickMouseButton right
Sleep 160
; Переключаемся на приложение, которое находится на
; переднем плане.
SwitchToForegroundWindow
; Определяем, является ли данное приложение панелью задач.
WindowIs taskbar
if result = 1
; Если является, то это значит, что мы кликнули правой
; кнопкой мыши на пустом месте панели задач. А по
; умолчанию на это действие Windows показывает
; контекстное меню панели задач. Меню у нас уже есть, а
; значит ничего делать не нужно.
else
; Если мы нажали правой кнопкой мыши на кнопке приложения
; в панели задач, то, как и задумали, закроем данное
; приложение.
; Контекстное меню нам не нужно, поэтому мы из него
; выходим.
Sendkeystroke Escape
Sleep 130
CloseWindow
endif
}
}
; При наведении указателя мыши на кнопку "Пуск" будем сразу
; нажимать ее. Иначе зачем же мы наводили? (При различных
; стилях оформления рабочего стола Windows положение и размер
; кнопки "Пуск" разные - не ориентируйтесь на приведенные
; здесь координаты.)
hotkey press-start-button {
; Прямоугольную область, в которой находится кнопка "Пуск"
; задаем с большим "запасом", т.к. указатель мыши на самом
; деле может кратковременно выходить за пределы экрана, а
; потом возвращаться Windows "на место".
Mouse move in Rect -500,738, 91,1268
Task {
PressStartButton
}
}
; При переводе указателя в правый нижный угол экрана будем
; отображать рабочий стол (сворачивая все окна), а при повторе
; этого действия будем восстанавливать свернутые окна.
hotkey toggle-desktop {
Mouse move in Rect 1014,759, 5000,5000
Task {
ToggleDesktop
}
}
; При переводе указателя мыши к правой границе экрана будем
; отображать текущий уровень громкости динамиков, а при
; прокрутке колесика мыши на правой границе экрана будем его
; менять.
;
; Отображение текущего уровня громкости.
hotkey show-volume {
Mouse move in Rect 1023,20, 1523,740
Task {
osdRectPos 520,24
osdTextFlags 0x0102
; Ставим большое время отображения OSD-сообщения, говоря
; о том, что пока указатель мыши у правой границы мы все
; время будем показывать OSD-текст.
osdTime 600000
osdText громкость %v%%
}
}
;
; Увеличение громкости динамиков.
hotkey up-volume {
Mouse WheelUp in Rect 1023,20, 1523,740
Task {
; Увеличиваем громкость.
UpVolume 982
; И сообщаем о том, что мы наделали.
osdRectPos 520,24
osdTextFlags 0x0102
osdTime 600000
osdText громкость %v%%
}
}
;
; Уменьшение громкости динамиков.
hotkey down-volume {
Mouse WheelDown in Rect 1023,20, 1523,740
Task {
DownVolume 982
osdRectPos 520,24
osdTextFlags 0x0102
osdTime 600000
osdText громкость %v%%
}
}
;
; Скрываем OSD-сообщение, когда указатель мыши уходит от правой
; границы экрана.
hotkey hide-volume {
Mouse move out Rect 1023,20, 1523,740
Task {
; Ставим очень маленькое время отображения OSD-сообщения.
osdTime 200
; Позиция вывода сообщения находится далеко за пределами
; экрана.
osdRectPos 5000,5000
; Ну и отображаем что-нибудь
osdText -
}
}
; Изменение прозрачности окна, над которым находится указатель
; мыши.
hotkey up-transparency {
; Область действия данной "горячей клавиши" - весь экран.
Mouse Shift+WheelUp in Rect 0,0, 1023,767
Task {
; Поскольку прозрачность можно изменять только у окон
; верхнего уровня, а указатель мыши может находиться над
; дочерним окном, выполним переключение (если оно
; требуется) на родительское окно.
SwitchToParentWindow
UpTransparencyAlpha 3
osdRectPos 520,24
osdTextFlags 0x0102
osdText прозрачность %p%%
}
}
hotkey down-transparency {
Mouse Shift+WheelDown in Rect 0,0, 1023,767
Task {
SwitchToParentWindow
DownTransparencyAlpha 3
osdRectPos 520,24
osdTextFlags 0x0102
osdText прозрачность %p%%
}
}
; Изменение размеров текущего окна (окна на переднем плане).
hotkey inc-window-size {
Mouse Ctrl+WheelUp in Rect 0,0, 1023,767
Task {
; Переключаемся с окна над которым находится указатель
; мыши на активное окно (окно на переднем плане).
SwitchToForegroundWindow
; Увеличиваем размер окна, сохраняя его пропорции
; (увеличиваем на 24 пикселя меньшую сторону, а большую
; так, что бы сохранить пропорции окна).
ResizeWindow 24,0x8000
; Дальнейшие действия имеют смысл, только если изменить
; размер окна удалось (размер окна, развернутого на весь
; экран, например, изменить не получится).
if errorlevel = 0
; Передвинем окно влево вверх на 12 пикселей. Этот прием
; позволит нам добиться того, что центр окна не сместится
; после изменения его размеров.
MoveWindow -12,0x8000
; Выведем получившийся размер окна.
osdRectPos 520,24
osdTextFlags 0x0102
osdText размер окна %W x %H
endif
}
}
hotkey dec-window-size {
Mouse Ctrl+WheelDown in Rect 0,0, 1023,767
Task {
SwitchToForegroundWindow
ResizeWindow -24,0x8000
if errorlevel = 0
MoveWindow 12,0x8000
osdRectPos 520,24
osdTextFlags 0x0102
osdText размер окна %W x %H
endif
}
}
#
# Управление и модификация набираемого текста
#
; Таблица транслитерации из кириллицы.
transliteration from-cp1251 {
From ый ий яя кс ьи ье ия
To y y aya x ii ie ia
From ЫЙ ИЙ ЯЯ КС ЬИ ЬЕ ИЯ
To Y Y AYA X II IE IA
From а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ь ы ъ э ю я
To a b v g d e e zh z i i k l m n o p r s t u f kh ts ch sh shch ~ y ~ e yu ya
From А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Ъ Э Ю Я
To A B V G D E E Zh Z I I K L M N O P R S T U F Kh Ts Ch Sh Shch ~ Y ~ E Yu Ya
}
; Обратная транслитерация в кириллицу.
; Однозначного соответствия, конечно, нет, но должно быть
; читаемо.
transliteration back-to-cp1251 {
From Shch Ia Zh Kh Ts Ch Sh Yu Ya
To Щ Ия Ж Х Ц Ч Ш Ю Я
From shch ii ie ia zh kh ts ch sh yu ya x
To щ ьи ье ия ж х ц ч ш ю я кс
From SHCH II IE IA ZH KH TS CH SH YU YA X
To Щ ЬИ ЬЕ ИЯ Ж Х Ц Ч Ш Ю Я КС
From a b v g d e z i j k l m n o p r s t u f h c ' y
To а б в г д е з и й к л м н о п р с т у ф х ц ь ы
From A B V G D E Z I J K L M N O P R S T U F H C ' Y
To А Б В Г Д Е З И Й К Л М Н О П Р С Т У Ф Х Ц Ь Ы
}
; Транслитерация выделенного текста.
hotkey translit {
Key Win+Right
Task {
; Сохраняем текущее содержимое буфера обмена.
StoreClipboard
; Очищаем буфер обмена на тот случай, если текущее
; выделение пусто (ведь желательно что бы в этом случае
; буфер обмена также был пуст).
EmptyClipboard
; Копируем выделенный фрагмент в буфер обмена.
SendKeystroke Ctrl+C
Sleep 160
; Выполняем его транслитерацию (используя, описанную выше
; таблицу from-cp1251).
TranslitClipboard from-cp1251
; Вставляем результат из буфера обмена (заменяем выделенный
; фрагмент результатом транслитерации).
SendKeystroke Ctrl+V
Sleep 160
; Восстанавливаем, ранее сохраненное содержимое буфера
; обмена.
RestoreClipboard
}
}
; Обратная транслитерация выделенного текста.
hotkey back-translit {
Key Win+Left
Task {
StoreClipboard
EmptyClipboard
SendKeystroke Ctrl+C
Sleep 160
TranslitClipboard back-to-cp1251
; Отображаем результат преобразования в информационном окне.
InfoBox %C
RestoreClipboard
}
}
; Преобразование выделенного текста к верхнему регистру.
hotkey upper-case {
Key Win+Up
Task {
StoreClipboard
EmptyClipboard
SendKeystroke Ctrl+C
Sleep 160
ChangeClipboardCase to upper case
SendKeystroke Ctrl+V
Sleep 160
RestoreClipboard
}
}
; Преобразование выделенного текста к нижнему регистру.
hotkey lower-case {
Key Win+Down
Task {
StoreClipboard
EmptyClipboard
SendKeystroke Ctrl+C
Sleep 160
ChangeClipboardCase to lower case
SendKeystroke Ctrl+V
Sleep 160
EmptyClipboard
RestoreClipboard
}
}
; Корректировка и переключение раскладки клавиатуры.
; Пусть мы начали набирать некоторе слово и потом увидели, что
; набираем его не в той раскладке клавиатуры (т.е. у нас
; получилось "ghbdtn", вместо "привет"). Нажмем клавишу Pause,
; что бы исправить неправильное слово и переключиться на
; русскую раскладку клавиатуры.
hotkey change-layout {
Key Pause
Task {
; Любители звукового сопровождения могут озвучить процесс.
PlayStandardSound default
; Как вариант:
# PlaySound C:\Windows\Media\start.wav
; Еще вариант: использовать системный динамик.
; Однако в этом случае вызов команды Beep обязательно
; сделайте самым последним в этой задаче.
# Beep 800,80
; Сохраняем текущее содержимое буфера обмена.
StoreClipboard
; Очищаем буфер обмена на тот случай, если текущее
; выделение пусто (ведь желательно что бы в этом случае
; буфер обмена также был пуст).
EmptyClipboard
; Выделяем предыдущее слово и копируем его в буфер обмена.
; Как вариант: можно выделять не слово, а фразу до начала
; строки. В этом случае Ctrl+Shift+Left нужно заменить на
; Shift+Home.
; Еще вариант: можно переключать раскладку текущего
; выделения, т.е. предполагается, что мы уже выделили
; текст, раскладку которого хотим изменить. В этом случае
; Ctrl+Shift+Left писать совсем не нужно.
SendKeystroke Ctrl+Shift+Left Ctrl+C
Sleep 160
;
; Резюмируя вышеописанные варианты, вместо приведенных
; двух строк можно написать, например, следующее:
# ; Просто копируем в буфер обмена, предполагая, что текст
# ; уже выделен.
# SendKeystroke Ctrl+C
# Sleep 160
# ; Проверяем, не пуст ли буфер обмена?
# ClipboardIsEmpty
# if result = 1
# ; Если пуст, то делаем вывод, что ничего выделено не
# ; было, а потому инициируем выделение до начала строки
# ; сами.
# SendKeystroke Shift+Home Ctrl+C
# Sleep 160
# ; Преобразовывать при этом будем не всю строку, а
# ; только последнее слово.
# UseWordbreakTemplate
# endif
;
; Преобразуем текст в буфере обмена.
ChangeClipboardLayout to prev layout
; Заменяем выделение на результат преобразования.
SendKeystroke Ctrl+V
Sleep 160
; Переключаем раскладку клавиатуры (что бы продолжить
; набор в правильной раскладке).
SetKeyboardLayout to prev layout
; Восстанавливаем ранее сохраненное содержимое буфера
; обмена.
RestoreClipboard
; Информируем пользователя о том, что раскладка клавиатуры
; изменилась.
Sleep 130
osdText %L
}
}
#
# Прочие горячие клавиши
#
; Копирование текущего выделения в альтернативный (второй)
; буфер обмена, которым будет ячейка 1 caesar (ячейка 0
; используется в этой и других задачах как промежуточная).
hotkey copy-to-my-clipboard {
Key Win+C
Task {
; Сохраняем текущее содержимое буфера обмена в
; промежуточной ячейке.
StoreClipboard 0
; Очищаем буфер обмена на тот случай, если текущее
; выделение пусто (ведь желательно что бы в этом случае
; буфер обмена также был пуст).
EmptyClipboard
; Копируем выделение в буфер обмена.
SendKeystroke Ctrl+C
Sleep 160
; Теперь сохраняем выделение из буфера обмена в ячейку 1
; (она будет нашем вторым буфером обмена).
StoreClipboard 1
; Восстанавливаем первоначальное содержимое буфера обмена
; из промежуточной ячейки.
RestoreClipboard 0
}
}
; Вставка из альтернативного буфера обмена.
hotkey paste-from-my-clipboard {
Key Win+V
Task {
; Сохраняем текущее содержимое буфера обмена в
; промежуточной ячейке.
StoreClipboard 0
; Копируем в буфер обмена сохраненное ранее содержимое
; ячейки 1.
RestoreClipboard 1
; Поскольку RestoreClipboard очищает ячейку 1, то мы ее
; снова заполним (что позволит нам осуществлять
; многократную вставку из альтернативного буфера).
StoreClipboard 1
; Осуществляем вставку из буфера обмена.
SendKeystroke Ctrl+V
Sleep 160
; Восстанавливаем первоначальное содержимое буфера обмена.
RestoreClipboard 0
}
}
; Отображение информации об окне (аналогично выбору пункта
; "Window Info" в XMenu).
hotkey window-info {
Key Win+I
Task {
ShowWindowInfo
}
}
; Блокировка компьюрета.
hotkey lock-computer {
Key Ctrl+`
Task {
LockWorkstation
}
}
; Выключение компьютера.
hotkey shutdown-computer {
Key Win+Escape
Task {
osdRectPos 1,1
osdRectSize 1023,767
osdTextFlags 0x0105
osdTextColor 0x0000FF
osdTextBorderColor 0xEEEEEE
osdFontSize 36
osdTime 20000
osdText Выключение компьютера...
Shutdown
}
}
; Включение режима выделения в консольном окне.
; (Так сделано в Far manager, я же только распростанил эту
; идею на все консольные окна.)
;
; Опишем консольное окно.
window console {
ClassName ConsoleWindowClass
}
;
hotkey console-select {
Key Alt+Insert
Task {
; Определяем, в консольном ли окне нажата горячая клавиша.
WindowIs console
; И выполняем все действия только если это так.
if result = 1
; Имититуем вызов системного меню окна и выбора в нем
; пунктов "Изменить", "Пометить".
; (Только для русскоязычной Windows.)
SendKeystroke Alt+Space
TypeText И
SendKeystroke Enter
endif
}
}
; Выдвижение лотка CD/DVD-привода.
; (Полезно на многих ноутбуках, где кнопка выдвижения лотка
; маленькая, неудобно расположена, туго нажимается и т.п.)
hotkey eject-dvd {
Key Win+J
Task {
EjectDevice D
}
}
#
# Специальное поведение определенных окон
#
; При запуске калькулятора он становится поверх остальных
; окон, прозрачный и располагается справа внизу экрана.
; В качестве примера задача написана отдельно, а не внутри
; раздела window.
task on-start-calculator {
SetAlwaysOnTop on
SetTransparencyAlpha 209
SetWindowPos 744,452
SetProcessPriority Below Normal
}
;
window calculator {
ClassName SciCalc
Task on-start-calculator
}
; В продолжение темы о "нестандартном" приложении MS Office
; (смотрите выше описание к горячей клавиши minimize-window) -
; опишем дочернее окно программы MS Word, в котором мы, из-за
; некорректной работы, открючим режим XMove.
window ms-word-page {
ClassName _WwB
XMove off
}
; Размер по умолчанию окон стандартных диалогов сохранения и
; открытия файла очень мал. Увеличим размер данных окон.
task set-opensave-dialog-size {
SetWindowPos 236,40
SetWindowSize 565,640
}
window open-dialog-1 {
ClassName #32770
Title Открыть
Task set-opensave-dialog-size
}
window open-dialog-2 {
ClassName #32770
Title Открытие файла
Task set-opensave-dialog-size
}
window save-dialog-1 {
ClassName #32770
Title Сохранить как
Task set-opensave-dialog-size
}
window save-dialog-2 {
ClassName #32770
Title Сохранение файла
Task set-opensave-dialog-size
}
#
# Запуск программ по расписанию
#
; Вывод OSD-сообщения, напоминающего текущее время.
job time-remember {
; Будем выполнять задачу в начале каждого часа с 6 до 23
; часов.
CronTime 0 6-23 * * *
Task {
osdRectPos 1,1
osdRectSize 1023,767
osdTextFlags 0x0105
osdTextColor 0x0000FF
osdTextBorderColor 0xEEEEEE
osdFontSize 36
osdTime 5000
osdText %T{HH':'mm}\n%D{dddd}\n%D{dd MMMM yyyy}
}
}
; Ротация лог-файла.
job rotate-log {
; Будем начинать ведение нового лог-файла каждый месяц
; 15-ого числа в 21:30.
CronTime 30 21 15 * *
Task {
LogStart on
CloseLogFile
AppShow hide
RunAppAndWaitForClose cmd.exe /D /C "C:\Program Files\caesar\tips\rotate-logs.bat" "C:\Program Files\caesar\caesar.log"
OpenLogFile
; Файл rotatelogs.bat:
; if exist "%~dpnx13" del /F /S /Q "%~dpnx13"
; if exist "%~dpnx12" ren "%~dpnx12" "%~nx13"
; if exist "%~dpnx11" ren "%~dpnx11" "%~nx12"
; if exist "%~1" ren "%~1" "%~nx11"
; exit
}
}