Каково ожидаемое поведение при удерживании двух клавиш на клавиатуре?

Мы с другом играем в игру, в которой оптимизация игры заданным персонажем заключается в одновременном удерживании двух кнопок, то есть клавиш Q и E . Это будет означать, что в игре два навыка, привязанные к этим клавишам, будут поочередно отключаться.

Т.е. при удерживании Q и E : QEQEQEQEQE

Проблема возникает в том, что я не могу воспроизвести то, что сделал мой друг, когда я удерживаю клавиши Q и E. Вместо этого я получаю:

т.е. при удерживании Q и E : QEEEEEEEEE или EQQQQQQQQ (в зависимости от того, какой ключ обнаруживается первым)

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

Однако однажды Мы оба начали вникать в это глубже, просто это имело все меньше и меньше смысла, поскольку обе наши клавиатуры имеют вышеупомянутые функции. Обе наши клавиатуры перечислены ниже, если это обеспечивает дополнительный контекст.

  • Мои друзья: GMMK Full Brown Switch
  • Моя клавиатура: Razer Hunstman Elite

Сейчас я пытаюсь выяснить, что позволяет его клавиатуре работать так, как она работает, в то время как моя не может делать то же самое.


Анти-привидение вступает в игру только при нажатии как минимум трех клавиш — он не имеет значения только для двух, поэтому здесь не имеет значения.

А для USB-клавиатур повторение клавиш зависит от программного обеспечения, а не от клавиатуры . Клавиатура просто сообщает компьютеру все клавиши, которые в данный момент удерживаются в нажатом состоянии (вплоть до предела «переворачивания», поддерживаемого клавиатурой), и сообщает компьютеру, когда это состояние изменяется. Именно ОС отвечает за сравнение списка удерживаемых клавиш с предыдущим состоянием и генерацию соответствующих событий «нажата клавиша» и «клавиша отпущена», и именно ОС отвечает за обнаружение, когда клавиша удерживалась на определенное время. времени и генерации дополнительных событий, если это необходимо.

Каждая система , которую я когда-либо видел, ведет себя так, как вы описываете поведение своей системы — typematic генерирует повторы только для последняя нажатая клавиша, и только до тех пор, пока она удерживается (если вы отпустите эту клавишу, но все еще удерживаете другие клавиши, которые были нажаты ранее, повторов не будет вообще). Но поскольку поведение определяется программным обеспечением, должно быть возможно переопределить его в программном обеспечении, если клавиатура имеет как минимум 2KRO (каковы в основном все клавиатуры; 1KRO сделает умение печатать вслепую практически невозможным).


Чтобы ответить на этот вопрос, нужно понимать, как работают клавиатуры.

Если вы посмотрите вернувшись к более ранним клавиатурам, вы поймете, что на штекере всего несколько контактов, а не такое же количество контактов, как на клавиатуре.

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

Клавиатура работает с матрицей горизонтальных и вертикальных сигналов. Все клавиши расположены в сетке, как показано на клавиатуре. Когда вы нажимаете клавишу, он не просто говорит, что клавиша «x» нажата, но вместо этого он говорит, что клавиша в столбце 3 и строке 5 была нажата. Это означает, что в конечном итоге количество строк данных — это не количество клавиш, а только количество строк и столбцов (оптимизировано).

Теперь проблема возникает, когда вы нажимаете несколько клавиш сразу, матрица теперь может перейти в состояние, когда она не может точно знать, какая клавиша нажата, поэтому некоторые клавиатуры могут одновременно нажимать только 2 клавиши, а третья клавиша игнорируется.

Чтобы бороться с этим, матрица была переработана, чтобы этого не происходило, поэтому некоторые клавиатуры утверждают, что вы можете нажать 4 или 5 клавиш вниз, но если вы найдете волшебную комбинацию, вы снова вернетесь к 2, но это происходит гораздо реже из-за большого количества проб и ошибок.

Поскольку это в конце концов все еще превратилось в проблему, были использованы другие методы для поддержки нескольких нажатий клавиш, известные как анти-фантомные. Проблема здесь в том, что это может быть достигнуто разными способами, поэтому некоторые клавиатуры предоставляют QEQEQE, другие QEEEE или EQQQQQ.

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

Новые игровые клавиатуры будут отправлять все нажатия клавиш очень быстро на компьютер к драйверу через USB, который может сообщить программному обеспечению, какие клавиши были нажаты, что показывает QEQEQEQE, тогда как старые клавиши по-прежнему используют матрицу и аппаратные клавиши, которые показывают только QEEEEEEE или EQQQQQQ.


Чтобы ответить на этот вопрос, нужно понимать, как работают клавиатуры.

Если вы посмотрите на более ранние клавиатуры, вы поймете, что вилка имеет только несколько контактов на нем, а не такое же количество контактов, как ключей на t клавиатура.

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

Клавиатура работает с матрицей горизонтальных и вертикальных сигналов. Все клавиши расположены в сетке, как показано на клавиатуре. Когда вы нажимаете клавишу, он не просто говорит, что клавиша «x» нажата, но вместо этого он говорит, что клавиша в столбце 3 и строке 5 была нажата. Это означает, что в конечном итоге количество строк данных — это не количество ключей, а только количество строк и столбцов (оптимизировано).

Проблема теперь возникает, когда вы нажимаете несколько клавиш одновременно, матрица теперь может перейти в состояние, когда она не может точно знать, какая клавиша нажата, поэтому некоторые клавиатуры могут только нажмите 2 клавиши одновременно, а 3-я клавиша игнорируется.

Чтобы избежать этого, матрица была переработана, чтобы этого не происходило, поэтому некоторые клавиатуры утверждают, что вы можете нажимать 4 или 5 клавиш вниз , но если вы найдете волшебную комбинацию, вы снова вернетесь к 2, но это происходит гораздо реже из-за большого количества проб и ошибок.

Поскольку это в конце концов все еще стало проблемой, другие были использованы методы для поддержки нескольких нажатий клавиш, известные как анти-фантомные. Проблема здесь в том, что это может быть достигнуто разными способами, поэтому некоторые клавиатуры предоставляют QEQEQE, другие QEEEE или EQQQQQ.

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

Новые игровые клавиатуры будут отправлять все нажатия клавиш очень быстро на компьютер к драйверу через USB, который может сообщить программному обеспечению, какие клавиши были нажаты, что показывает QEQEQEQE, тогда как старые клавиши по-прежнему используют матрицу и используют аппаратные клавиши, которые показывают только QEEEEEEE или EQQQQQQ.


С USB-клавиатурой такое поведение «автоповтора двух клавиш одновременно» происходит в Windows, если клавиатура отправляет события нажатия клавиш для обеих клавиш в тот же отчет о вводе HID. Я даже протестировал это с помощью специальной модификации прошивки клавиатуры QMK, где я могу точно контролировать, какие входные отчеты HID отправляются через USB. Другие операционные системы могут не иметь такого поведения (например, Linux всегда выбирает только одну клавишу для автоповтора).

Что касается того, почему разные клавиатуры имеют разное поведение в отношении этой функции, этому может быть несколько объяснений:

  1. Определение времени нажатия клавиш, чтобы они отображались в том же отчете о вводе HID, может быть сложнее при более высокой скорости сканирования (так на более старой клавиатуре с При частоте 250 Гц запуск двойного автоповтора может быть проще, чем на новой клавиатуре с частотой 1000 Гц).

  2. Хотя большинство «игровых» клавиатур в наши дни рекламируют « Частота 1000 Гц »(поэтому нажатия клавиш, которые были сделаны с интервалом более 1 мс, должны сообщаться в отдельных отчетах о вводе), этот вид рекламы не всегда на 100% честен — в частности, некоторые алгоритмы устранения дребезга могут вызывать синхронизацию сообщаемых нажатий клавиш даже когда физические нажатия клавиш были обнаружены с интервалом более 1 мс.

  3. Некоторые клавиатуры могут выполнять специальную обработку g в прошивке (например, связанный с поддержкой макросов), что приводит к генерации отдельных отчетов о вводе HID для каждого изменения состояния клавиш — если прошивка клавиатуры написана таким образом, получение от нее «двойного автоповтора» было бы невозможно даже с наиболее точное время нажатия клавиш.


С USB-клавиатурой такое поведение «автоповтора двух клавиш одновременно» происходит в Windows, если клавиатура отправляет события нажатия клавиш для обеих клавиш в одном отчете о вводе HID. Я даже протестировал это с помощью специальной модификации прошивки клавиатуры QMK, где я могу точно контролировать, какие входные отчеты HID отправляются через USB. Другие операционные системы могут не иметь такого поведения (например, Linux всегда выбирает только одну клавишу для автоповтора).

Что касается того, почему разные клавиатуры имеют разное поведение в отношении этой функции, этому может быть несколько объяснений:

  1. Определение времени нажатия клавиш, чтобы они отображались в том же отчете о вводе HID, может быть сложнее при более высокой скорости сканирования (так на более старой клавиатуре с При частоте 250 Гц запуск двойного автоповтора может быть проще, чем на новой клавиатуре с частотой 1000 Гц).

  2. Хотя большинство «игровых» клавиатур в наши дни рекламируют « Частота 1000 Гц »(поэтому нажатия клавиш, которые были сделаны с интервалом более 1 мс, должны сообщаться в отдельных отчетах о вводе), этот вид рекламы не всегда на 100% честен — в частности, некоторые алгоритмы устранения дребезга могут вызывать синхронизацию сообщаемых нажатий клавиш даже когда физические нажатия клавиш были обнаружены с интервалом более 1 мс.

  3. Некоторые клавиатуры могут выполнять специальную обработку g в прошивке (например, связанный с поддержкой макросов), что приводит к генерации отдельных отчетов о вводе HID для каждого изменения состояния клавиш — если прошивка клавиатуры написана таким образом, получение от нее «двойного автоповтора» было бы невозможно даже с наиболее точное время нажатия клавиш.


Возможный обходной путь — поддержка некоторых клавиатур макросов, чтобы вы могли запрограммировать макрос для выполнения QE, а затем повторить его, пока клавиша макроса удерживается. Я делал это в Diablo 2 или 3 на моей старой Razer Blackwidow. В приложении управления Razor был редактор макросов, который позволял мне отправлять последовательность только один раз или повторять ее до тех пор, пока я не перестану удерживать клавишу. Если у вас нет выделенных клавиш макроса, вы можете просто установить макрос на клавишу, которая не используется в игре (возможно, функциональную клавишу, обратную кавычку или что-то в этом роде).


Возможный обходной путь — некоторые клавиатуры поддерживают макросы, поэтому вы можете запрограммировать макрос для выполнения QE, а затем повторять его, пока клавиша макроса удерживается. Я делал это в Diablo 2 или 3 на моей старой Razer Blackwidow. В приложении управления Razor был редактор макросов, который позволял мне отправлять последовательность только один раз или повторять ее до тех пор, пока я не перестану удерживать клавишу. Если у вас нет выделенных клавиш макроса, вы можете просто установить макрос на клавишу, которая не используется в игре (возможно, функциональную клавишу, обратную кавычку или что-то в этом роде).

Оцените статью
techsly.ru
Добавить комментарий