При разработке приложения, как для Android, так и для Windows часто требуется обрабатывать нажатия на хардварные и виртуальные кнопки. В среде разработки для этого уже всё предусмотрено, поэтому я просто опишу несколько примеров.
Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, актуальна для Delphi 10.3.* и выше. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую обновиться на последнюю версию!
Обновление от 15.11.19.
Для кроссплатформенной обработки используются виртуальные ключи. Firemonkey (FMX) преобразует коды клавиш в константы виртуальных ключей, определённых в этой таблице: System.UITypes: Virtual Keys. Для отлова нажатий, отлично подходят методы «KeyDown» и «KeyUp».
Список кодов для часто используемых кнопок:
Список кодов для часто используемых кнопок:
- vkHardwareBack: Integer = $89; - Кнопка «Назад»
- vkVolumeUp: Integer = $AF; - Кнопка «Увеличить громкость»
- vkVolumeDown: Integer = $AE; - Кнопка «Уменьшить громкость»
- vkMenu: Integer = $12; - Кнопка «Меню»
- vkReturn: Integer = $D; - Кнопка «Enter»
Если вам требуется отловить нажатия кнопок на пульте (Android TV), то придётся ознакомиться с материалом ниже.
Delphi 10.3.1 – Часть нажатий на кнопки пульта не отлавливается, ознакомиться с темой «[РЕШЕНО]: Как отловить кнопки пульта ДУ» и там же забрать решение.
Delphi 10.3.2 – проблема исправлена, никаких фиксов не требуется (Подтверждение).
Примеры: