Прием большего количества одновременных вводов с клавиатуры - PullRequest
6 голосов
/ 03 января 2011

Иногда обычная компьютерная клавиатура может одновременно принимать пользовательские вводы до определенной клавиши.Я получил клавиатуру Logitech, которая может принимать до 3-4 нажатий клавиш одновременно.Компьютер больше не принимает ввод, если вы нажмете более 4 клавиш для этой клавиатуры.И это также зависит от определенных областей вашей клавиатуры.В некоторых местах можно нажимать дополнительные клавиши (например, клавиши со стрелками), в то время как в некоторых местах можно нажимать только 1-2 клавиши.Это также отличается от клавиатуры к клавиатуре.Некоторые старые клавиатуры поддерживают до 1-2 клавиш.

Это не проблема для обычной офисной работы, но когда дело доходит до игр.Например, представьте себе платформенную игру, в которой вы должны одновременно прыгать, атаковать и контролировать направление.Это подразумевает несколько нажатий клавиш, и некоторые клавиатуры не могут принимать такой одновременный ввод.Тем не менее, я пробовал это на нескольких играх, и количество возможных клавиатурных вводов, кажется, также отличается.Поэтому у нас есть две проблемы:

  1. Клавиатуры имеют различное количество одновременных входов.
  2. Некоторые игры могут принимать больше клавиатурных вводов, чем другие игры.

Сначала я думал, что это аппаратная проблема, но почему некоторые программы ведут себя по-разному?Почему некоторые программы могут принимать больше вводов с клавиатуры, чем другие программы?Так, как мы можем написать наши программы, чтобы принять больше вводов с клавиатуры?

Ответы [ 3 ]

9 голосов
/ 15 февраля 2011

Цитата с другого форума совершенно неверна ...

На клавиатурах всегда используется матрица, а расположение 8x8 на мембране клавиш / микропереключателях охватывает 64 клавиши.Передача питания по общему ряду и определение того, какой столбец (и) (если есть) был подключен к одному за раз - он просто сканирует очень быстро.Микросхема контроллера может легко определять столько ключей за один раз, сколько пожелает (включая все), без какого-либо снижения производительности (в любом случае приходится опрашивать каждый ключ вверх или вниз).

То, чтоЗатем клавиатура сериализует информацию для информирования хоста о том, какие события произошли (ограничивающими факторами являются конструкция чипа № 1 и объем трафика, который он хочет разместить на шине № 2).Они преобразуются в соответствующие события ОС драйверами (ограничивающий фактор № 3).Эти события затем обрабатываются приложениями, которые, в свою очередь, могут иметь свои собственные ограничения на количество отслеживаемых ключей (# 4).

Многое происходит, но они не использовали 1 провод на клавишу+ земля примерно с 60-х годов.И если вы не думаете, что матрица может сканировать достаточно быстро - посмотрите на любой ЖК / светодиодный экран, это та же самая матрица, только наоборот.

6 голосов
/ 08 февраля 2011

Если вы хотите это исправить, вам нужно купить дорогую клавиатуру.

Программа под названием GlovePie позволяет программировать ввод из разных источников, и может решить эту проблему. Страница загрузки GlovePie Здесь. ~

Например, я разрабатываю RPG-игру, и клавиатура моего ноутбука не может обнаружить комбинацию Run + Up + Left (запустить на северо-востоке). Однако, если я подключу свой контроллер USB Logitech и сопоставлю эти точные клавиши клавиатуры (вверх, влево и B [для запуска]) с кнопками контроллера, используя GlovePie, я могу выполнить команду для запуска на северо-восток с помощью нет проблем.

Что касается ваших вопросов, я точно не знаю, почему программы по-разному реагируют на ввод с клавиатуры, но это может быть связано с , как они обнаруживают ваш ввод. Например: игра на основе Java может обнаруживать DirectInput ( подпись, отправленная с ваших устройств ввода / вывода), в то время как эмулятор (например, эмулятор SNES ZSNES для ПК) может обнаружить только экземпляр используемой клавиши «Вверх». Другая программа эмуляции ввода, AutoHotkey, не может управлять игрой на основе Java, потому что она не использует ту же форму ввода, которую обнаруживает игра (она не использует DirectInput Java).

Итак, чтобы получить больше ключей, я бы использовал USB-контроллер с работающим GlovePie.

Цитата с другого форума: «Это на самом деле не проблема (технически). Решение довольно простое, но увеличивает стоимость клавиатуры. Рассмотрим эту простую проблему: у вас есть 64 клавиши. Сколько проводов вам нужно, если вы хотите различить каждую возможную одновременную клавишу нажмите. Ответ: 65, Один общий и один для каждой клавиши. Однако, если вы расположите ключи в массиве с ключами 8x8, вам понадобится только 16 проводов. 8 для столбцов и 8 для строк. Это уменьшает количество выводов на чип контроллера клавиатуры и делает клавиатуру намного дешевле в производстве. Все клавиатуры, которые я когда-либо видел, сделаны таким образом. "

4 голосов
/ 26 сентября 2014

Я нашел хорошую статью Пояснения к клавиатурам объяснены! , в которой объяснялось все, что мне нужно было знать по этому вопросу.И у него есть тестовая зона, так что я могу найти, какие комбинации клавиш на моем ноутбуке не сочетаются друг с другом.

...