AEKMap - Создание новой раскладки
v1.4 Freeware, 4 апреля 2012г.

Описание схемы преобразования нажатий кнопок ("раскладка") - это обычный текстовый файл с расширением ".AEK". Все раскладки должны находиться в том же каталоге, в который была установлена программа. По умолчанию - это "\Program Files\AEKMap". Выбор нужной раскладки делается в утилите AEKMap Settings

Для создания новой раскладки нужно пройти через несколько несложных (но требующих определенных усилий) этапов:

  • Прежде всего, запустив утилиту AEKMapScan.exe (она находится в том же каталоге, куда был установлен AEKMap) необходимо записать скан-коды клавиш, которые должны быть переопределены. (Не забудьте сделать мягкую перезагрузку КПК после использования утилиты AEKMapScan, поскольку она нарушает системную цепочку обработки кнопок)
  • После этого - создайте копию файла раскладки, наиболее близкую к требуемой. Так же хорошей отправной точкой может служить раскладка SimpleSample. Откройте "новый" файл в любом текстовом редакторе. Например, это может быть Notepad на настольном ПК. Измените нужные строки, руководствуясь приведенным ниже описанием формата файла раскладки и скопируйте новый файл обратно на КПК в каталог с AEKMap'ом.
    Шестнадцатеричные коды уникодных символов так можно найти в программе "Character Map" на настольном ПК. (Пуск -> Программы -> Accessories -> System Tools -> Character Map).
  • Запустите "AEKMap Settings" на КПК, выберите измененный файл раскладки и сохраните настройки.
  • Проверьте, правильно ли работает новая раскладка. Если все в порядке - наслаждайтесь

Кстати:Если Вы считаете, что новаф раскладка окажется полезной кому-нибудь еще - отправьте ее с коментариями на мой email для добавления в базу раскладок. В благодарность я с удовольствием презентую рег. код.

Пример раскладки с коментариями: The SimpleSample layout

Эта раскладка реализует простую и абсолютно бессмысленную схему преобразования: кнопка "A" подменяется на "Z", показан пример генерации сочетания клавиш с Ctrl и запуск внешних приложений. Используйте ее как пример для знакомства с форматом файла или как отправную точку для разработки новой раскладки.

; Параметры в файле раскладки должны следовать в том же порядке, 
; как  это описано здесь.
; 
; Название раскладки (отображается в утилите настройки AEKMapSettings)
Layout Useless Sample (Rus)

; Подсказка, показывающийся при переключении на раскладку
Hint UselessSampleRus

; Параметр "Hardware" подгоняет алгоритм обработки нажатых кнопок под 
; конкретное устройство. Большинство встроенных и внешних клавиатур 
; нормально работают в стандартном режиме (ключевое слово Hardware 
; отсутствует либо его значение пусто).
; Допустимые значения параметра и версии, в которых это значение 
; было реализовано:
;
; Wizard
;   Аппаратная платформа "HTC Wizard" выпускается многими брендами 
;   под различными названиями: O2 XDA Mini S / I-Mate K-Jam / 
;   Qtek 9100 / T-Mobile MDA Vario / Orange SPV M3000 / Dopod 838 / 
;   Vodafone VPA Compact II
;   В этом режиме AEKMap сможет различать нажатия стрелок на джойстике 
;   и на аппаратной клавиатуре.
;   Требует версии AEKMap v1.1.3 или выше.
;
; Hermes
;   Платформа "HTC Hermes" выпускается под названиями
;   HTC TyTN / O2 XDA Trion / I-Mate Jas Jam / Qtek 9600 / T-Mobile MDA Vario II /
;   При указании этой платформы AEKMap будет различать нажатия стрелок на 
;   встроенной клавиатуре от нажатия джойстика и вращения "колеса"
;   Требует версии AEKMap v1.2.5b или выше.
;
;Hardware Wizard


; Параметр KeypressTimeout позволяет для данной раскладки переопределять время 
; ожидания повторного нажатия кнопки, задаваемое в утилите настройки,
; задаваемую в файле AEKMap.CFG. 
; В миллисекундах
;KeypressTimeOut 0258


; Скан-коды кнопок:
; "Скан-код" клавиши может быть определен с помощью утилиты AEKMapScan, 
; входящей в дистрибудив AEKMap Утилита находится в том же каталоге, 
; в который был установлен AEKMap, по умолчанию это - 
; \Program Files\AEKMap\   
;
; "Скан-код"  - это целое 16битное шестнадцетиричное значение
; Младший байт (2 правых знака): собственно скан-код клавиши
; Старший байт описывает состояние шифт-клавишей и трактуется 
; побитно следующим образом: 
;  7 6 5 4 3 2 1 0     Все биты = 0: "чистое" нажатие, т.е.
;  0 0 0 0 0 0 0 0     Shift/Ctrl/Alt/Win/Capslock не нажаты
;          | | | ^---- Комбинация Shift+CapsLock = 1
;          | | ^------ Нажат Ctrl
;          | ^-------- Нажат Alt
;          ^---------- Нажат Win
;       
;
; Система может не поддерживать различные сочетания флажков 
; Shift/Win/Alt для конкретной кнопки. Например, драйвер стандартной 
; внешней клавиатуры никогда не возвращает флажок "Shift" для 
; кнопок [ и ], поскольку в английской раскладке на этих кнопках 
; отсутствуют буквы. Для того чтобы обойти такую ситуацию, AEKMap 
; умеет сам отслеживать состояния триггерных клавиш. Подробнее - 
; в описании параметров ShiftKey,CapslockKey и тд.
;
; Примеры скан-кодов для различных состояний триггеров при 
; нажатии клавиши "A":
; Сканкод   Описание
;   0041    Код простого нажатия клавиши "A"
;   0141    Код нажатия Shift+A
;   0241    Код нажатия Ctrl+A 
;   0441    Код нажатия Alt+A
;   0841    Код нажатия Win+A
;   0341    Код нажатия Ctrl+Shift+A
;   0741    Код нажатия Ctrl+Alt+Shift+A
;

; Скан-коды триггерных клавиш, отслеживаемые AEKMap'ом при отказе 
; от использования флажков, возвращаемых драйвером. При определении 
; соответствующего параметра AEKMap будет использовать
; ТОЛЬКО внутренние флажки. 
; ЕСЛИ возвращаемые драйвером флажки вас устраивает - оставьте 
; эти параметры пустыми либо просто зкомментируйте / удалите их.

; До 4х скан-кодов клавиши Shift, 
; Код клавиши на стандартной полноразмерной клавиатуре - 0110
ShiftKey

; До 4х скан-кодов клавиши Capslock
; Код клавиши на стандартной полноразмерной клавиатуре - 0014
CapslockKey 0014 0114 0214 0314

; До 4х скан-кодов клавиши Ctrl 
; Код клавиши на стандартной полноразмерной клавиатуре - 0211
CtrlKey

; До 4х скан-кодов клавиши Alt
; Код клавиши на стандартной полноразмерной клавиатуре - 0412
AltKey

; До 4х скан-кодов клавиши Win
; Код клавиши на стандартной полноразмерной клавиатуре - 085B
WinKey


; Параметры AccentKey, AccentKey2, AccentKey3 используются в том случае, 
; если в раскладке должны присутствовать различныи символы с акцентами, 
; умляутами, волнами сверху/снизу и тд. В зависимости от того, какие из 
; параметров AccentKey* определены - изменяется и формат описания
; подстановки клавиш (см. параметра Key*  ниже). Если в раскладке не 
; должно быть альтернативных символов - оставьте параметры пустыми либо
; вообще удалите их

; До 4х скан-кодов клавиши-переключателя на первый набор альтернативных символов
AccentKey

; До 4х скан-кодов клавиши-переключателя на второй набор альтернативных символов
;
; Если значение AccentKey2 совпадает с AccentKey, то клавиши будут последовательно 
; переключать между нормальным и альтернативным набором символов
AccentKey2

; До 4х скан-кодов клавиши-переключателя на третий набор альтернативных символов
;
; Если значение AccentKey3 совпадает с AccentKey, то клавиши будут последовательно 
; переключать между нормальным, 1м и 2м альтернативным набором символов
AccentKey3


; Список программ, привязываемых к кнопкам
; Формат команды:
; Exec <ID> <путь к исполняемому файлу> [<необязательные параметры командной строки>]
;
; <ID> - это уникальный идентификатор программы, используемый при описании схемы 
; ремаппинга кнопок. (см. параметр Key*) 
; Допустимые значения ID - в диапазоне 0001..00FF.
; Все остальные ID зарезервированы для использования в будущем.
;
;
; На текущий момент в AEKMap  реализованы следующие команды
;	e0101	переключить состояние внутреннего флага "Shift"           v1.2.2b
;	e0102	переключить состояние внутреннего флага "CapsLock"        v1.2.2b
;	e0103	переключить состояние внутреннего флага "Ctrl"            v1.2.2b
;	e0104	переключить состояние внутреннего флага "Alt"             v1.2.2b
;	e0105	переключить состояние внутреннего флага "Win"             v1.2.2b
;
;	e0110	переключиться на "стандартный" набор символов             v1.2.2b
;	e0111	переключиться на "альтернативный" набор символов          v1.2.2b
;	e0112	переключиться на "второй альтернативный" набор символов   v1.2.2b
;	e0113	переключиться на "третий альтернативный" набор символов   v1.2.2b
;	e011F	переключаться межюду альтернативными наборами символов    v1.2.2b
;
;	e0120	Переключиться на следующую раскладку                      v1.2.2b
;	e0121	Выгрузить AEKMap из памяти                                v1.2.2b
;
;          v1.2.2b:
;	e0200..e02FF - Вызвать программу AEBPlus. Список возможных кодов действий 
;               (младший байт) можно подсмотреть здесь: 
;                http://aeinc.ru/aebpluscliner
;		Внимание: AEBPlus должен быть установлен и запущен.

;
; <Путь к исполняемому файлу> - должен содержать полное имя файла, со 
;       всеми каталогами. Берется в кавычки.
; <Необязательные параметры командной строки> указывается "как есть", 
;       без всяких кавычек или escape-символов
;
; Например:

Exec 0001 fexplore.exe
Exec 0002 "\Windows\notes.exe"

; Самая важная часть файла раскладки - схема преобразования кнопок - 
; содержит из ключевых слов Key / Key2 / Key3 / Key4 / Key5 / Key6. 
; Каждая строка с ключевым словом Key* определяет что будет делать 
; AEKMap при нажатии конкретной кнопки:
;
; Key  - описывает реакцию на однократное нажатие кнопки
; Key2 - --//-- двукратное нажатие           !!! С версии v1.2.2b и выше
; Key3 - --//-- трехкратное нажатие              --//--
; Key4 - --//-- четырехкратное нажатие           --//--
; Key5 - --//-- пятикратное нажатие          !!! Только с версии v1.2.3b и выше
; Key6 - --//-- шестикратное нажатие             --//--

; Формат параметра Key* зависит от наличия параметров AccentKey, AccentKey2 и 
; AccentKey3. В том случае, если "альтернативные" символы не нужны 
; (все AccentKey* пусты или отсутствуют)
;
;Key* <Скан-код> <Normal> [<ICQ Normal>]
;
;Если определен только параметр AccentKey (оди набор альтернативных символов):
;Key* <Скан-код> <Normal> <Acc> [<ICQ Normal> <ICQ Acc>]
;
;Если определены AccentKey и AccentKey2 (два набора альтернативных символов):
;Key* <Скан-код> <Normal> <Acc> <Acc2> [<ICQ Normal> <ICQ Acc> <ICQ Acc2>]
;
;И если определены все три параметра AccentKey*:
;Key* <Скан-код> <Normal> <Acc> <Acc2> <Acc3> [<ICQ Normal> <ICQ Acc> <ICQ Acc2> <ICQ Acc3>]
;
; Здесь:
;
; <Скан-код> - это скан-код нажатой кнопки (см. пояснения выше)
;
; <Normal> это реакция AEKMap (символ, эмуляция нажатия кнопки либо команда) 
;          "в нормальных" условиях
; <Acc> реакция на нажатие клавиши в "альтернативном" режиме
;     Присутствует только при непустом значении параметра AccentKey 
; <Acc2> реакция на нажатие клавиши в "втором альтернативном" режиме
;     Присутствует только при непустом значении параметра AccentKey2 
; <Acc3> реакция на нажатие клавиши в "третьем альтернативном" режиме
;     Присутствует только при непустом значении параметра AccentKey3
;
; <ICQ Normal>, <ICQ Acc> <ICQ Acc2> и <ICQ Acc3> по смыслу полностью
; совпадают с соответствующими значениями описанными выше за тем исключением, 
; что используются только если в текущий момент активно окошко старого 
; клиента Mirabilis ICQ. Если необходимости в "особенной" работе в ICQ 
; нет - просто опустите эти значения. 
;
; Все используемые в раскладке коды действий записываются в шестнадцатеричной 
; системе и предваряются одним из префиксов "c", "k" или "e":
; c - AEKMap генерирует событие "введен символ". Значение - шестнадцатеричный 
;     UNICODE код символа/ Используйте программу "Character Map" на настольном 
;     ПК для того чтобы определить, какой код соответствует нужному символу. 
;     Этот код отображается в нижнем левом углу окна программы.
;
; k - AEKMap эмулирует нажатие аппаратной кнопки (клавиши). 
;     Параметр - сканкод эмулироуемой кнопки (описание сканкодов см. выше).
;     Может быть указана любая комбинация флагов Shift/Ctrl/Alt/Win.
;
; e - Запустить внешнее приложение либо вызвать определенное действие. 
;     Параметр - ID вызываемой программы либо действия. Подробнее - 
;     см. описание параметра "Exec". 
;     

; Собственно пример схемы преобразования:

Key 0141 c005A ; Генерировать символ "Z" при нажатии ShiftA 
Key 0041 c007A ; Генерировать символ "z" при нажатии A 

Key 0231 k0251 ; Подменить Ctrl+1 на Ctrl+Q (как правило закрывает активное приложение)
Key 0232 e0001 ; Запустить внешнюю программу #1 при нажатии Ctrl+2
Key 0233 e0002 ; Запустить внешнюю программу #2 при нажатии Ctrl+3