Переопределение действия для горячей клавиши

  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.
20 Дек 2016
892
171
Допустим, у меня на F1 стоит выбор героя. Нужно перехватить нажатие этой клавиши и выполнить свое действие, вместо выбора героя.
В js вообще есть адекватный способ обработки клавиатуры? В идеале мне бы просто назначить какую-то функцию, которая получает код нажатой клавиши, тип нажатия, и должна вернуть, стоит ли транслировать это нажатие последующим обработчикам. Но такое есть только для мыши.
С помощью Game.CreateCustomKeyBind() и Game.AddCommand() ничего не получается.
Во-первых, не понял как отменить бинд, сделанный с помощью CreateCustomKeyBind. Если игрок посреди игры переназначит клавишу, то я не смогу удалить бинд со старой, и она станет недоступна для других команд.
AddCommand - вообще какая-то говнина. Удалить команду нельзя, дважды использовать для одной команды нельзя, однако при перезагрузке скрипта работать перестанет. Предполагаю, что при переподключении все команды, сделанные с помощью AddCommand, перестанут работать.
$.RegisterKeyBind требует фокус на какой-либо панели, а из-за этого все управляющие кнопки перестают работать.
Других способов взаимодействия с клавиатурой не нашел.
Кому молиться?
 
Реклама: