Содержание:
- HK Framework - что это такое
- Как пользоваться
- Как добавить новый HK
- Базовая комплектация HK Framework
- Недостатки
- Инсталляция, совместимость
- Спасибо
HK Framework - что это такое:- HK Framework это инструмент, реализующий функциональность горячих клавиш в MS DAX. Особенностью HK Framework является то, что он не использует внешние компоненты (DLL, ActiveX) и ограничивается только XPO.
- HK Framework позволяет назначать горячие клавиши для трех областей: Редактор X++, AOТ и глобально, для всего приложения.
- HK Framework позволяет легко и быстро добавлять новую функциональность и вешать на неё свою комбинацию горячих клавиш. Принцип добавления такой же как и в EditorScripts.
Как пользоваться:
В тексте буду использовать сокращение HK (Hot key или Горячая клавиша).
Комбинации HK настраивается в форме 
HKSetup. По-умолчанию, форма вызывается нажатием "Ctrl + ~", либо запуском класса 
HKManager прямо из АОТ.
Описание полей формы:-  Поля "Key 1", "Key 2", "Key 3" задают комбинацию клавиш.
-  Поля "Action type" и "Action\Element name" определяют назначение HK и область его действия. Возможны следующие комбинации:- "AOT action" - если HK работает в AOT. При этом поле "Action\Element name" лукапится по методам класса HKAOT (методы-обработчики для АОТ)
- "Editor action" - если HK работает в редакторе X++. При этом поле "Action\Element name" лукапится по методам класса CLS HKEditor (методы-обработчики для Редактора X++)
- "Editor script" - аналогично "Editor action", но поле "Action\Element name" лукапится по методам стандартного класса EditorScripts. Т.е. HK можно повесить на стандартные скрипты редактора.
- "Open form", "Open table", "RunClass", "RunJob" - позволяет по HK запустить форму, таблицу, класс, джоб. При этом, в поле "Action\Element name" лукапятся по формам, таблицам, классам, джобам соответственно.
 
- Флаг "Enabled" отключает текущую HK.
- Флаг "Enable hotkeys" отключает все HK.
- Кнопка "Default" задает исходные настройки HK.
Как добавить новый HK:- Если нужно добавить HK для запуска формы\класса\таблицы*\джоба то достаточно лишь создать запись в форме HKSetup, в соответствии с настройками, описанными выше.
- Если нужно добавить HK для АОТ или редактора X++, то необходимо:- Создать новый метод-обработчик** HK в классе HKAOT или HKEditor, в зависимости от того, где будет работать новый HK.
- Создать новую запись в форме HKSetup и выбрать в поле "Action\Element name"
 созданный обработчик.
- Закрыть форму кнопкой "OK"***. 
 
* - под запуском таблицы понимается открытие её в обозревателе.
** - примеры методов-обработчиков можно посмотреть в умомянутых классах. 
*** - Форма 
HKSetup представляет собой диалог, поэтому все изменения вступают в силу только после нажатия "OK".
Базовая комплектация HK Framework: 
Для удобства, существующую функциональность, уже входящую в состав 
HK Framework буду называть плагинами.
- aot2project: плагин для управление проектами разработки. Назначение - быстрое добавление по HK редактируемых элементов АОТ (можно добавлять сразу из редактора X++) в заранее указанный проект и проставление комментариев в ходе редактирования элементов. По "Alt+F3" настраивается имя проекта в АОТ, его описание и формат комментариев. Далее, по кнопке "Ctrl+K" (В АОТ либо в редакторе), текущий элемент добавляется в заранее указанный проект. При этом, в проекте создается нужная подгруппа для элемента а также соблюдается порядок сортировки, аналогичный дереву АОТ; для АОТ поддерживается multiSelect. По кнопкам "Ctrl+1", "Ctrl+2", "Ctrl+3" в редакторе X++ проставляется открывающий, простой и закрывающий комментарии соответственно.
- aotJump (AOT action, Ctrl+J): Плагин для быстрого "скольжения" по элементам АОТ. С помощью клавиши Ctrl+J можно "скользить" по следующим цепочкам\шагам (каждый элемент АОТ открывается новое окно АОТ): - Класс --> Класс родитель --> Класс родитель --> ... --> Базовый класс
- TableField --> EDT --> EDT родитель --> EDT родитель --> ... --> Базовый EDT --> [ENUM]
- MenuItemButton --> MenuItem --> Класс\Форма\Отчет, в зависимости от типа MenuItem.
- Menu --> MenuItem
- FormDataSource --> Table\View
- уже не помню всех цепочек
 
- checkBestPractice (AOT action, Ctrl+B). Плагин проверяет текущий элемент на соответствие рекомендациям BestPractice
- copy2clipboard (AOT action, Ctrl+C). Плагин копирует имя текущего элемента АОТ в буфер обмена. Поддерживается multiSelect.
- tableBrowser (AOT action, Ctrl+O). Плагин открывает текущую таблицу в обозревателе
- openTableBrowser (Editor action, Ctrl+Ноль) Плагин открывает таблицу в обозревателе на которой установлен курсор в редакторе X++
- openNewWindow (Editor action, Ctrl+O) Плагин открывает элелемент АОТ в новом окне. Распознавание идет не по имени, а по типу.
Все HK, приведенные в описаниях плагинов можно переназначить в на уровне пользовательского интерфейса в форме 
HKSetup.
Самое главное - запомнить одну горячую клавишу  - "Ctrl+~". По ней откроется форма 
HKSetup, где всегда можно увидеть весь список HK.
Недостатки:
- 
HK Framework не использует внешние компоненты (DLL, ActiveX). Вследствие этого, он не перекрывает стандартные горячие клавиши. Т.е. если Вы назначите какой-то HK, который пересекается со стандартным, то стандартный HK отработает параллельно. Это накладывает ограничение на набор возможных комбинаций клавиш, который вы захотите использовать. Некоторые комбинации клавиш вообще не работают. Например, любая комбинация с клавишей ALT в редакторе X++ не работает (удобно использовать Ctrl). В общем, к процессу назначения новой горячей клавиши нужно подойти творчески 

- детектирование комбинации клавиш несколько отличается от стандартного перехвата. Здесь важен момент одновременного нажатия клавиш, в то время как в стандарте достаточно быстрой последовательности нажатия. Поэтому для некоторых пользователей чувствительность может показаться недостаточной.
Инсталляция:
Данная версия тестировалась на DAX 4.0, 5.0. 
Для 3-ки нужно чуть подпилить. В скором времени адаптирую.
Инсталляция очень проста - две простых модификации стандартных методов: 
\Classes\ClassFactory\formRunClassOnClient:
X++:
client static FormRun formRunClassOnClient(Args args)
{
    SysSetupFormRun sysSetupFormRun;
;
    // HK "Hot key framework", evo 30.07.2009 -->
    if (args && args.name() == formstr(SysEditorGotoLine))
    {
        return HKManager::editorCatchObject(args);
    }
    // HK "Hot key framework", evo 30.07.2009 <--
    sysSetupFormRun = SysSetupFormRun::construct(args);
    return sysSetupFormRun;
}:
X++:
client static FormRun formRunClassOnClient(Args args)
{
    SysSetupFormRun sysSetupFormRun;
;
    // HK "Hot key framework", evo 30.07.2009 -->
    if (args && args.name() == formstr(SysEditorGotoLine))
    {
        return HKManager::editorCatchObject(args);
    }
    // HK "Hot key framework", evo 30.07.2009 <--
    sysSetupFormRun = SysSetupFormRun::construct(args);
    return sysSetupFormRun;
}Рекомендуется данные модификации сделать аккуратно и вручную, причем ТОЛЬКО после импорта и компиляции всех остальных элементов 
HKFramework. Данные классы живут в RunTime приложения, со всеми вытекающими...
Спасибо:
Спасибо за внимание. Надеюсь, большое количество букв не сильно утомило и 
HK Framework для кого-нибудь окажется полезным.