Всем привет. Пишу 2d игрушку на html5. Подскажите, как убрать задержку клавиатуры после первого нажатия клавиши (при движении игрока)? В Win7 есть в настройках клавиатуры "Задержка перед началом повтора", но ведь это не то, что я должен менять. Наверное, как-то можно это задать в самой html5 игре?
Заранее спасибо за ответ.
- Вопрос задан более года назад
- 287 просмотров
Если игрок управляет дискретным курсором или маркером, например, в сапёре или пасьянсе (если те играются с клавиатуры, разумеется) — так и надо, нужен системный автоповтор клавиш.
Если игрок управляет непрерывно движущимся персонажем, надо отойти от системных автоповторов и сделать две независимых подсистемы.
• Подсистема реагирования на клавиатуру. При нажатии на кнопку системный код превращается в виртуальную клавишу (например, «Идти вверх», «Выстрел» или «Бомба»). Затем в битовой маске управления в соответствующей позиции ставится 1. При отпускании — соответственно 0.
• Подсистема тактов игры. По таймеру проводится такт игры — акт управления всеми её персонажами, главным и врагами. В зависимости от состояния клавиш мы ведём Главного в ту или иную сторону.
• Третья подсистема — рендерер игры. Она может быть синхронной с тактами игры или нет, в зависимости от того, какое мы хотим поведение на слабых машинах и есть ли желание проработать асинхронщину (не обязательно многопоточную; например, рендерер может поминутно вызывать «прокрути такт игры, если надо»). А также звук и сеть — в нашем вопросе, впрочем, не до них (и вообще рендерингом занимается браузер).
Если тактовая частота игры невелика (скажем, до 16) и приходится подгонять героя «на один шажок», у меня есть маленький лайфхак, оставшийся с J2ME. Создаём две маски: «нажатая» и «удерживаемая».
• При нажатии: поставить 1 в обе маски.
• При отпускании: поставить 0 только в удерживаемую.
• При управлении героем: нажатая := нажатая OR удерживаемая; именно по этой «нажатой» управляем героем; нажатая := 0.
Пользователи Виндовс после обновления до десятой версии или обновив ОС столкнулись с проблемой — клавиатура перестала работать.
К счастью есть решение, ниже приведен список из самых удобных вариантов решения неполадки. Вам не обязательно использовать их все, начните с начала списка и продвигайтесь дальше пока проблема не разрешится.
Инструкция по решению проблем с клавиатурой
- После обновления установки ОС, драйверы USB портов могут не работать глючить.
- Для начала попробуйте переместить клавиатуру в другой USB порт.
- Проверьте порт другим способом, чтобы убедится в его работоспособности (подключите мышь, винчестер, флешку в порт, где была клава).
Устройство работает — переходите к следующему пункту.
Устройство не работает — перейдите к пункту 4.
- Проверьте Bios. При загрузке ОС нажмите клавишу F2, del, Esc (в зависимости от версии биоса на устройстве). Если все исправно работает в Биосе, значит неисправность точно связана с Виндовс.
- Отрегулируйте настройки Виндовс. Windows имеет настройку «фильтрация клавиш». Она определяет задержку между нажатием клавиши и появлением ее на экране. К сожалению когда этот параметр включен в Windows 10, многие клавы перестают работать.
- Откройте меню пуск и наберите «фильтрация клавиш».
- Отключите этот параметр, как показано на скриншоте.
Дублирующий способ. Перейдите в панель управления -> специальные возможности -> Клавиатура. Включите фильтрацию клавиш, сдвинув ползунок в нужную сторону.
- Переустановите драйверы клавы.
- Нажмите пуск и напишите «диспетчер устройств».
- Разверните нужную строку. ПКМ -> Обновить драйверы -> Ок.
Установка не произошла? Перейдите к следующему пункту.
- Удалить переустановить драйверы. ПКМ -> Удалить -> Ок.
- После удаления пройдите пункты 3-4 заново.
Установка драйверов с помощью утилиты.
- Скачайте DriverEasy.
- По необходимости для ввода данных воспользуйтесь «экранной клавиатурой». Она расположена в меню «специальных возможностей» (описано в выше).
- Установите и просканируйте ПК, утилита автоматически найдет и скачает необходимые драйверы. Вам не придется беспокоится о том, что вы совершите ошибку в процессе переустановки.
Отключите антивирус Касперского на время. Проблема была замечена только у антивируса этой марки (причины — функция безопасного ввода). Требуется обновить его до последней версии отключить (в свежей версии проблему устранили).
- Отключите быстрый запуск Windows 10.
- Перезагрузите ПК.
- Если неполадка появляется только после включения, а с рестартом исчезает, идем дальше. Если такого не замечено, пропустите этот пункт.
- В меню «Пуск» пишем — «электропитание».
- Кликните на опцию — «Действие кнопок питания», находится она слева вашего меню.
- Выберите «Изменение параметров, которые сейчас недоступны».
- Пролистайте вниз, затем уберите галку на параметре «Включить быстрый запуск (рекомендуется)».
Дополнительный метод решения проблемы. Нажмите Win+R и впишите «taskschd.msc», перейдите в «Библиотека планировщика заданий» — «Microsoft» — «Windows» — «TextServicesFramework». Включите задачу «MsCTFMonitor». Выполните ее сами. ПКМ -> выполнить.
- Зайдите в диспетчер устройств и удалите вашу «клаву», затем перезагрузите ПК. При необходимости добавьте устройство снова, но это произойдет автоматически.
- Обесточьте свой ПК. Выключите его из розетки, подождите 5 минут, затем зажмите кнопку включения и подержите 5 секунд (пользователям ноутбука — выньте батарею). Включайте ПК в обычном режиме.
Обратитесь в техническую поддержку Microsoft, или к мастеру профессионалу, если наши советы не помогли.
Это одна из самых сумасшедших и странных проблем, с которыми я когда-либо сталкивался. Моя клавиатура работала абсолютно нормально до вчерашнего дня на Ubuntu 13.04. Однако, когда я загружаюсь в Ubuntu сегодня, я внезапно обнаружил, что все ключи работают, но я должен нажать и удерживать их примерно на секунду, чтобы они работали.
Это поведение верно для всех ключи, за исключением кнопок Num Lock, Caps Lock и Scroll Lock, индикатор для них на моей клавиатуре загорается, как только я нажимаю эти клавиши. Клавиатура отлично работает на экране входа в систему, где я помещаю свой пароль. Клавиатура также работает нормально, если я использую гостевую сессию вместо обычной учетной записи пользователя. Я не делал никаких ключей-повторов и использовал стандартную раскладку клавиатуры на английском (США). Я возился с настройками клавиатуры в настройках системы, но безрезультатно. У меня Windows 7 как двойная загрузка, и клавиатура отлично работает на нем.
Почему я сталкиваюсь с таким поведением и как его нормализовать?
PS: Использование классической клавиатуры Logitech K100 (модель USB).
7 ответов
Я не могу опубликовать правильный ответ с изображениями, и все потому, что я сейчас на общедоступном компьютере только для Windows, но попробуйте перейти к настройкам клавиатуры и проверить, есть ли настройка чувствительности клавиш, тогда, возможно, вы можете настроить он там . также попробуйте отключить клавиатуру, а затем снова подключить ее. Возможно, это сбрасывает ее . Только предложения!
Надеюсь, это поможет . Удачи!
У меня была аналогичная проблема. Я наткнулся на ответ, пытаясь найти решение здесь. Каким-то образом экранный ридер был включен и вызывал неустойчивое поведение. Проверьте его в разделе «Системные настройки» → «Универсальный доступ» → «Просмотр». Убедитесь, что для параметра Считыватель экрана установлено значение ВЫКЛ. Screen Reader OFF
Это может произойти, когда программа демона захватывает нажатия клавиш (например, на борту). В качестве пробной версии откройте gnome-system-monitor и посмотрите, есть ли скрипт bash или даже скрипты python. Попробуйте закрыть его, если он запущен.