1. В туториале приведены некоторые общесистемные сочетания клавиш. Не все из них действительно работают. В частности, написано, что Alt-Shift заменяет Meta. На самом же деле кнопка Windows зачастую работает как Meta, но её действие может перешибаться самой ОС Windows в случае WinAos, поэтому поведение Meta не слишком уж регулярное.
2. Есть HotKeys.Mod и файл примеров для него HotKeys.XML. В яос0 этот файл задействован. Его можно пытаться настроить. Сразу заметил, что сочетания Meta-буква, Meta-цифра, CTRL+Alt+буква(или цифра) не работают. В исходных текстах написано, что они и не должны работать. Вероятно, они должны быть задействованы для ввода дополнительной латиницы, но как это работает - я не увидел.
Сочетания с функ.клавишами, стрелками и Return работают.
Судя по тексту процедуры HandleKey в Windows.Display.Mod , подразумевается, что Ctrl-1 ... Ctrl9, Ctrl-0 работают как просто 1..9..0, при этом назначить сочетания на Ctrl+Shift+1 в WinAos удаётся, а в нативной A2 - нет. Сочетание Ctrl-1 может быть назначено и работает.
3. В приложениях есть собственные сочетания клавиш, но их нельзя посмотреть с помощью штатных средств интроспекции. Можно лишь пытаться их найти с помощью поиска по файлам. Например, можно искать WMMessages.MsgKey или PROCEDURE Handle. Поскольку я ни разу не проводил глубокого поиска, я пока что не знаю.
В частности:
- в TFPET обработка клавиатуры находится по поиску WMMessages.MsgKey
- в WMDebugger нужно искать WMMessages.MsgKey в BtDbgPanel, поиск приводит в BtDbgPanel.MemPanel.HandleShortcut. Кроме того, магически знаем, что нужно читать WMDebugger.XML - там некие сочетания, берущиеся из меню.
4. Процедура InstallMessagePreview позволяет установить обработчик сообщения, к-рый срабатывает до приложения. Этим механизмом пользуются несколько клиентов, см. в исходниках.
5. WMKeyCode.StartLog / StopLog запускает / останавливает вывод всех нажатий в KernelLog, правда, те самые сочетания Ctrl-Alt-что-то выводятся криво
(видимо, как раз по той причине, что они не предназначаются для назначаемых горячих клавиш).
Поле для обработчиков событий - это KeySym - из него берётся код, который нужно сравнивать. Он 16-ричный. НапримеР, 0FF1BH = Escape, 06H = Ctrl-F.