Usb report rate что это на клавиатуре

Обновлено: 18.05.2024

6-Key Rollover / 6KRO – 6 одновременных нажатий клавиш

На сегодня это самый распространенный класс механических клавиатур с подключением по USB. Маркировка 6KRO означает, что вы можете нажать до шести клавиш одновременно (плюс клавиши-модификаторы вроде CTRL, ALT и т.д.), и компьютер получит и обработает соответствующие сигналы от каждой из них. Как правило, 6-клавишного ограничения более чем достаточно – ситуаций, в которых вам будет нужно разом нажать на семь и более клавиш, не так уж много, даже в играх. Но если вы пользуетесь семью и более клавишами одновременно, всегда можно приобрести механическую клавиатуру класса NKRO (см. No Key Rollover): здесь ограничения по количеству одновременно нажатых клавиш нет вообще.

Actuation Force / Activation Force – Сила срабатывания

Точка срабатывания (или рабочая позиция) – это та длина хода клавиши, на которой клавиатура распознает сигнал от ее нажатия. Соответственно, сила срабатывания – это тот уровень усилия, которое необходимо приложить, чтобы механический переключатель сработал. Обычно для удобства выражается в граммах.

Bottoming Out – Нажатие клавиш до упора

При максимальном нажатии на клавишу ее переключатель оказывается «на самом дне» (англ. bottom) – отсюда и термин: клавиша касается дна, будучи выжатой до упора. Отчасти из-за этой особенности механические клавиатуры называют громкими. При нажатии до конца клавиша ударяется о « дно » и появляется характерный звук удара пластика о пластик. Чтобы исключить возможность такого удара, многие пользуются специальными насадками – резиновыми кольцами O-Ring толщиной 0.2 мм. или 0.4 мм.

Chattering

Click vs Clack – Клик и щелчок

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

Clicky Switch – Кликающий переключатель

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

Compact / Compact Layout – Компактная клавиатура

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

Double Tap – Двойное касание

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

Ghosting – Фиктивные нажатия

Речь идет о ситуациях, когда клавиатура отсылает сигнал нажатия клавиши, которую вы на самом деле не нажимали (по-англ. ghost означает «призрак», «привидение»). Это конструктивная особенность мембранных клавиатур. Как правило, в механических клавиатурах подобные ситуации сводятся к минимуму за счет поддержки количества одновременных нажатий клавиш (см. Key Rollover ). Иногда производители механических клавиатур изощряются и указывают в описании, что те оснащены технологией Anti Ghosting, нейтрализующей проблему фиктивных нажатий; на самом деле они всего лишь имеют в виду, что их клавиатура – класса NKRO. Зачем они это делают? Вероятнее всего, им кажется, что так звучит круче.

HHKB

Механическая клавиатура Happy Hacking Keyboard производится торговой маркой PFU Systems, входящей в группу компаний Fujitsu, и работает на основе технологии переключателей Topre.

Key Bounce / Key Bouncing / Chattering – Дребезг клавиш

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

При касании контактов механического переключателя его пружина может, какое-то время, «дрожать», замыкая и размыкая контакты, прежде чем зафиксирует свое положение. При изготовлении контроллеров для клавиатуры это учитывают и выбирают такую скорость обработки нажатия, чтобы она, с одной стороны, была достаточно высокой для бесперебойной и своевременной передачи сигнала от клавиатуры компьютеру, а с другой стороны – достаточно низкой, чтобы клавиатура была способна игнорировать дребезг. То есть, такой контроллер «берет паузу» в несколько миллисекунд – и только тогда передает сигнал в компьютер. Как правило, механическим клавиатурам достаточно паузы в 5 миллисекунд, в то время как мембранные ощутимо менее эффективны в этом плане.

Не стоит путать дребезг клавиш с характеристикой «скорости срабатывания» (key speed), которую можно встретить на некоторых игровых клавиатурах. Наглядный пример – модель Ducky DK9008 с опциями скорости 1x, 2x, 3x и 4x (они регулируются клавишами в верхней правой части клавиатуры). Эта скоростная характеристика отражает, сколько раз сигнал будет передан компьютеру за заданный промежуток времени. К примеру, нажав клавишу S только один раз на установке 4x, вы получите в «Блокноте» нечто подобное: SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS.

Key Lifecycle – Срок эксплуатации клавиш

Срок службы переключателя клавиши отражает, сколько раз можно нажать на нее и рассчитывать на ее срабатывание, прежде чем клавиша откажется вам служить. Как правило, для механических клавиатур характерны сроки эксплуатации в районе 20-50 миллионов нажатий. Для наиболее популярных переключателей Cherry MX это значение – 50 миллионов.

Key Rollover / KRO – Количество одновременных нажатий клавиш

Keyboard Matrix – Клавиатурная матрица

Если бы в клавиатуре все клавиши соединялись друг с другом по отдельности, ее начинка была бы похожа на баловство Безумного шляпника; поэтому клавишные переключатели организованы при помощи матрицы. Клавиатурная матрица – это набор электронных схем, расположенных под клавишами; под каждой из них цепь по умолчанию разомкнута – но при нажатии переключатель опускается и замыкает ее. Это служит сигналом, который тут же обрабатывается и передается компьютеру.

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

Linear Switch – Линейный переключатель / Переключатель равномерного нажатия

Ход клавиши с линейным переключателем очень плавный и равномерный – вплоть до нажатия до упора она идет ровно и без клика. Сопротивление при нажатии чуть увеличивается только перед достижением клавиши дна (см. Bottoming Out ) .

Mechanical Keyboard – Механическая клавиатура

В отличие от мембранных, все клавиши механических клавиатур оснащены индивидуальными переключающими механизмами, записывающими нажатия на клавиши – вместо единой мембраны, к которой подведены все клавиши. По факту, мы имеем ощутимую разницу в использовании клавиатуры во время игры или набора текста. К примеру, переключатели Blue Cherry MX – это клик-тактильные механические переключатели, при нажатии на которые пальцам пользователя передается выраженная отдача в сочетании с явственным кликом при срабатывании; во многом напоминает процесс пользования кнопкой мыши. Таким образом, сами тактильные ощущения от взаимодействия с механической клавиатурой существенно отличаются от мембранной; разные пользователи отдают предпочтение разным ощущениям при нажатии клавиш, а, значит, и разным клавиатурам.

Membrane Keyboard – Мембранная клавиатура

У мембранных клавиатур крышки клавиш расположены над каучуковыми колпачками, под которыми, в свою очередь, расположена цельная мембрана из полимеров. Она покрывает собой всю площадь под клавишами, а срабатывание клавиши происходит при полноценном нажатии на нее до упора – в этот момент на определенную точку на мембране осуществляется давление. Длина хода клавиатуры определяется толщиной слоя мембраны, который, как правило, составляет порядка 3,5-4 мм. Сегодня мембранные клавиатуры, безусловно, являются самым широко распространенным воплощением клавиатурной архитектуры за счет дешевизны производства.

No Key Rollover / NKRO – Неограниченное количество одновременных нажатий клавиш

Клавиатуры NKRO не имеют ограничений по количеству одновременно нажатых клавиш, которые будут обработаны компьютером. Это означает, что каждая клавиша при нажатии анализируется клавиатурой индивидуально – и этому процессу получения, обработки и передачи сигнала в компьютер никак не помешают обрабатываемые одновременно сигналы от нажатия хоть пяти, хоть двадцати пяти клавиш. Такие клавиатуры еще называются «неблокируемыми», потому что, на сколько бы клавиш вы ни нажали разом, «сбить с толку» клавиатуру не удастся. Изначально они были доступны только для подключения через порт PS/2, но ряд торговых марок, включая Ducky, предлагает клавиатуры класса NKRO не только для PS/2, но и для USB-портов .

Normally Open – Нормально разомкнутый

Таким определением награждается электрический контакт, который в исходном положении разомкнут (открыт).

В мире механических клавиатур термин «Отаку» относится к пустым крышкам клавиш – к тем, на которых не нанесена никакая маркировка. Наверное, самый известный пример такой клавиатуры – Das Keyboard Ultimate, однако, многие производители механических клавиатур выпускают такие модели.

Вне контекста клавиатур слово «отаку» в Японии используется, помимо прочего, для обозначения молодых людей, виртуозно разбирающихся в компьютерных технологиях – вплоть до того, что из-за этого увлечения им приходится жертвовать своими социальные навыки; попросту говоря, «отаку» – это гик или нерд. Безусловно, некая связь между этими двумя значениями терминов прослеживается: как-никак, нужно действительно мастерски владеть клавиатурой, чтобы всегда набирать на ней вслепую, не имея возможности свериться с маркировкой клавиш.

Ping – Пинг

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

Plate Mounted vs PCB Mounted Switches – Переключатели на металлических или печатных платах

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

Polling Rate – Частота опроса

Если для мышки от частоты опроса напрямую зависит точность и скорость курсора, то для клавиатуры она роли практически не играет. Давайте предположим, что у нас есть клавиатура с аналогичными Cherry MX переключателями – их задержка срабатывания, или время реакции, составляет 5 миллисекунд (кстати, очень щедро). Даже если вы обладаете сверхчеловеческими рефлексами и скоростью движений, реакция клавиатуры на нажатие какой бы то ни было клавиши будет запаздывать как минимум на эти 5 миллисекунд. Поэтому любая частота опроса выше 200Гц, в лучшем случае, совершенно бесполезна – и становится лишь маркетинговой уловкой. Более того, высокий показатель может даже навредить: процессор будет перегружен частыми и ненужным опросами. Кстати, в отличие от USB-клавиатур, подключенные через порт PS/2 клавиатуры вообще не опрашиваются – они регистрируют и передают сигнал непосредственно при нажатии: это провоцирует так называемое аппаратное прерывание – и процессор, в свою очередь, это нажатие регистрирует.

PS/2 Interface – Порт PS/2

Порт PS/2 – это 6-разъемный коннектор типа Mini-DIN, который используется для подключения мышки или клавиатуры к совместимым с ПК компьютерным системам. Название PS/2 расшифровывается довольно неинтересно – речь идет о линейке персональных компьютеров IBM, которая называлась Personal System/2: она появилась на рынке в 1987 году. Несмотря на то что эта технология существенно старше технологии подключения USB, с точки зрения качества работы подключение через PS/2 превосходит USB- подключение (см. USB Interface).

Правда, надо признать, что в контексте современных компьютеров превосходство PS/2 над USB практически неактуально. В общем, совет такой: по возможности пользоваться портом PS/2, но не отказываться от понравившейся клавиатуры только потому, что она подключается через USB.

Response Time – Время реакции

Riding the Activation Point – Удерживание клавиши на полпути к срабатыванию

Это не то же самое, что двойное касание (см. Double Tap). Такая техника удерживания клавиши в наполовину «утопленном»/нажатом состоянии – где-то в середине ее хода (см. Travel Distance ) – позволяет совершать многократные нажатия с высокой частотой (а значит и отправлять соответствующие сигналы), не отпуская клавишу до конца – но и НЕ выжимая ее до упора (см. Bottoming Out ). Такая штука практически невыполнима, если ваша клавиатура оборудована переключателями с резиновыми прокладками (см. Rubber Dome Switch ) . Кроме скорости, печати такая техника также позволяет пальцам значительно меньше уставать при печати. Во многом из-за этой особенности механические клавиатуры пользуются популярностью у людей, которым необходимо проводить много времени за печатью.

Rubber Dome Switch – Переключатель с резиновой прокладкой

Переключатель с резиновой прокладкой по-английски обычно называется polydome – он представляет собой выпуклый «колпачок» куполообразной формы из полиэстера, с тыльной стороны покрытый графитовым напылением. Такие «полидомы» дешевле металлических колпачков, но срабатывают глуше – и быстрее изнашиваются. Перфекционисты нередко считают «полидомы» слишком мягкими: по ощущениям такие клавиши срабатывают более «вяло», чем клавиши с металлическими колпачками. Так или иначе, когда вы нажимаете клавишу, она схлопывает колпачок, вследствие чего замыкаются контакты – и сигнал передается компьютеру.

Sprue / Keycap Sprue – Литник / Литник клавишной кнопки

В литье и литьевом формообразовании литником называют канал, по которому расплавленный/жидкий материал попадает непосредственно в форму. Этот термин также нередко используется для обозначения излишков материала, которые затвердевают внутри канала.

Так как большинство клавишных крышек изготовлены из пластика методом литья под давлением, с тыльной их стороны нередко можно заметить небольшие неровности – те самые литниковые остатки. Их можно принять за производственный дефект, как лишнее отверстие, или, наоборот, рельеф; однако, они совершенно не стоят вашего внимания – свести образование литников на нет просто невозможно из-за особенностей производственных процессов. Вы вряд ли вообще когда-нибудь обратите на них внимание – если только вы не любитель печатать на подсвеченной клавиатуре, у которой все кнопки закреплены «вверх ногами» – тыльной стороной вверх.

Tactile Switch – Тактильный переключатель

Есть такой полуофициальный термин tactile bump – «тактильный толчок». Суть в том, что тактильные переключатели непосредственно перед нажатием клавиши до упора дают почувствовать, как ход клавиши немного замедляется – словно она преодолевает некий рубеж. Такие переключатели называются тактильными (как и клавиатуры, оснащенные ими), а этот «тактильный толчок» можно считать равнозначным точке срабатывания.

Tactile Point / Tactile Force – Точка тактильности / Сила тактильности

Сродни паре терминов «точка срабатывания» и «сила срабатывания» (см. Actuation Force). Разница лишь в том, что точка тактильности – это момент непосредственно перед срабатыванием переключателя клавиши, когда она преодолевает «тактильный толчок» (tactile bump): здесь можно ощутить небольшое замедление хода, предшествующее достижению точке срабатывания (см. Tactile Switch ) . В общем, понятия точки тактильности и точки срабатывания нередко приравниваются друг к другу.

Tenkeyless (TKL)

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

Travel Distance – Длина хода

Ход клавиши или длина хода клавиши – это фактическое расстояние, которая она преодолевает от момента нажатия до момента срабатывания. Как правило, клавиатуры ноутбуков отличаются гораздо более малой длиной хода по сравнению со стандартными автономными клавиатурами для десктопов. Некоторые геймеры предпочитают клавиши с коротким ходом, так как это создает ощущение, что для их срабатывания нужно прилагать меньше усилий; другие же, наоборот, предпочитают больший ход, потому что при работе с такими клавишами сам процесс нажатия и срабатывания более «явный» – и многим пользователям это как раз нравится.

USB Interface – Порт USB

USB расшифровывается как Universal Serial Bus – «универсальная последовательная шина»: это действительно универсальный коннектор, разработанный в свое время для того, чтобы привести к единому стандарту подключение периферийной компьютерной техники – в том числе, клавиатур. У большинства современных компьютеров вы найдете не менее 6 USB -портов, а у некоторых клавиатур есть и свои USB -хабы – встроенные в саму клавиатуру порты USB , куда можно подключать периферийную технику с тем же успехом, что и к компьютеру как таковому.

При том что порты PS/2 слегка превосходят своими рабочими характеристиками (см. PS/2 ) подключение по USB, именно возможности вроде USB-хаба нередко добавляют решающей привлекательности той или иной модели в глазах покупателя.

Привет, GT. В одном из моих прошлых постов (в частности, про клавиатуру SteelSeries Apex M800) юзернейм monah_tuk задал интересный вопрос в комментариях: как реализуется NKRO (n-key rollover, одновременное зажатие нескольких клавиш) в USB-клавиатурах. Данный вопрос меня заинтересовал, а когда я копнул поглубже… В общем, там такие авгиевы конюшни, что на целый пост информации хватило, пусть и небольшой.


Казалось бы, USB 2.0 даже в режиме Low-speed обеспечивает передачу до 1500 КБит в секунду (порядка 185 КБайт/с.), в чём проблема передать нажатия клавиш? Но не всё так просто.

Чтобы разобраться с тем, какие проблемы у USB-подключения, нам придётся покопаться в истории, и немного — в конструкции клавиатуры.

Проблемы rollover’а: ghosting

Допустим, у вас есть клавиатура со стандартными 104/105 клавишами. В идеальном случае, чтобы получить 100% точную информацию о том, какие клавиши зажаты, вам понадобится на 1 «проводок» больше, чем есть кнопок: 104/105 проводов от кнопок, и одна общая «земля».

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


В случае, если вы нажимаете, скажем, S и G и захотите добавить какую-нибудь третью клавишу в другом ряду, контроллер уже не может сказать, какая из линий была замкнута: в лучшем случае не обнаружит одну из трёх, в худшем — из-за особенностей разводки нарисует ещё какую-нибудь четвёртую, которую вы не нажимали. Это называется ghosting.

Лечится подобное поведение различными хитростями в области разводки: наиболее популярные сочетания вешаются на разные «линии», функциональным клавишам, которые часто являются элементами хоткеев, назначаются отдельные линии. Разводка остаётся достаточно простой, но в недорогих клавиатурах редко встречается 5+KRO — обычно дело ограничивается 3-4 одновременно зажатыми клавишами.

Кроме того, контроллер может блокировать «соседей» по блоку, чтобы убрать «лишние» срабатывания. То есть формально клавиатура может поддерживать 6KRO, и честно давать нажать CTRL+AWFBNM одновременно, но не давать зажать AWSD, ограничиваясь срабатыванием вида WAS или WDS.

Проверить свою клавиатуру вы можете с помощью вот такой штуки. У неё есть некоторые ограничения, но они обусловлены тем, что система перехватит нажатие кнопки раньше, чем браузер. Например, Print Screen или Alt+Tab отработают раньше, чем страничка сможет их «поймать».

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

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

Клавиатуры до USB

Основным распространённым разъёмом для подключения клавиатуры и мышки до USB был PS/2. Вот такой, кругленький:


Его прелесть заключалась в том, что при соблюдении всех стандартов с одного разъёма и разветвителя можно было работать и с мышью, и с клавиатурой, а ещё сами устройства ввода генерировали прерывание и отправляли информацию о нажатых кнопках / перемещении курсора. Там хоть лицом по клавиатуре катайся, если всё разведено грамотно, и rollover не упирается в аппратные возможности клавиатуры — клавиатура отправит всё, что «прочитает» контроллер.


К сожалению, у PS/2 были и недостатки (вроде проблем с Plug’n’Play и неудобного разъёма), да и повсеместное распространение USB привело к тому, что PS/2 периферия была практически полностью вытеснена с рынка. Тем не менее, встречаются вполне современные материнки с USB 3.0 и двумя(!) PS/2:

Комбинированные порты, кстати, благодаря особенностям распиновки (общее питание, разные pin’ы для data+/data- у мыши и клавиатуры), позволяют также подключить оба устройства через один порт с помощью переходника:


Проблемы NKRO на USB: во всём виноват USB HID

Для работы клавиатур через USB до загрузки системы (то есть в BIOS / UEFI) используется стандартный HID-драйвер, который был разработан для максимально широкой поддержки клавиатур и USB-хостов. Класс USB HID описывает устройства таким образом, чтобы стандартная реализация USB-хоста и USB-устройства могли взаимодействовать без установки специальных драйверов.

Обычная клавиатура (разработанная с поддержкой USB HID стандарта) использует выходной (исходящий от USB-хоста) поток данных (endpoint USB-стэка) для получения информации о состоянии индикаторов (Num / Caps / Scroll Lock), и входной поток (исходящий от клавиатуры, «входящий» для USB-хоста) для отправки информации о нажатых клавишах.

Если следовать наиболее строгой спецификации USB HID v1.11, которая поддеживает режим USB Boot (и позволяет использовать USB-клавиатуру для входа в BIOS и работы в нём), то клавиатура будет отправлять пррывания на CPU каждый раз, как USB-хост будет опрашивать её, вне зависимости от того, изменилось её состояние или нет. Таким образом «эмулируется» работа PS/2 клавиатур минимальными издержками.

В данном случае клавиатура работает по стандарту USB 1.1 (иногда 2.0) Low-speed, а частота опроса порта составляет 100 Гц. В данном режиме максимальная длина пакета на USB равна 8 байтам, а отправляются они раз в 10 мс. Один из байтов зарезервирован, так что на работу клавиатуры остаётся 7 байт, т.е. количество достаточное, чтобы закодировать нажатие любой клавиши-модификатора и ещё шести других.

Получится, кто клавиатура работает в режиме 6-KRO, и он является стандартным для большинства USB-клавиатур. Сделать меньше — можно (иногда осознанно, иногда — нет, из-за ghosting’а и key jamming’а), больше — только с нарушением спецификации USB HID.

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

Реализации NKRO на USB

Обходы ограничений USB HID, собственно, встречаются двух видов. В первом случае клавиатура обнаруживается фирменным ПО, переводится в какой-нибудь специальный режим и отправляет данные с контроллера напрямую в драйвер, а тот уже общается с системой. Минус такого решения — увеличивается т.н. input lag: задержка ввода. Опросив знакомых, нашёл только одну клавиатуру, которая позволила нажать 10 клавиш при подключении по USB: махровый китайский ноунейм с закосом под «игровую». Владелец живёт аж в Иркутстке, так что не удивительно, что только у него нашлась такая штука.

Второе решение подкупает своей простотой и бесхитростностью, но по сути является костылём:



За скриншот спасибо MyFearGear, такую штуку заметили за Logitech G710+

Клавиатура просто представляется системе несколькими HID-устройствами, каждое из которых имеет свои 6KRO. Беглый опрос знакомых с просьбой указать модель клавиатуры и прислать такой скриншот показал, что этим «хаком» пользуются и Logitech, и A4tech, и Cougar, и SteelSeries — в общем все, у кого нашлось NKRO в описании клавиатур, подключащихся по USB.

Внимание! Прежде чем проверять свою клавиатуру, убедитесь, что у вас не подключена какая-нибудь навороченная многокнопочная USB-мышь (даже по беспроводному каналу). Так как всё многокнопочное великолепие точно так же может притворяться «лишними» клавиатурами.

Эта публикация удалена, так как она нарушает рекомендации по поведению и контенту в Steam. Её можете видеть только вы. Если вы уверены, что публикацию удалили по ошибке, свяжитесь со службой поддержки Steam.

Этот предмет несовместим с Counter-Strike. Пожалуйста, прочитайте справочную статью, почему этот предмет может не работать в Counter-Strike.

Этот предмет виден только вам, администраторам и тем, кто будет отмечен как создатель.

В результатах поиска этот предмет сможете видеть только вы, ваши друзья и администраторы.


Overclock USB port for mouse.
Обновление ссылки от 06.04.2019


812 уникальных посетителей
4 добавили в избранное






  • По стандарту у всех частота USB порта стоит 125 hz, поэтому движения мышью не очень плавные, а при отключенной акселерации появляется негаксель.
  • Допустим вы хотите передвинуть прицел в какую то точку, но прицел до него не доходит значит у вас имеется негаксель, она появляется за счет задержки передаваемой информации от мышки к компу.
  • По этой причине многие профессиональные игроки играют на разогнанных USB портах.

Лучше всего будет если поставить 500 hz, а ставить 1000 hz не рекомендовано т.к. у некоторых не выдерживал порт или вообще сгорала мышь.

Коротко о USB - откуда все начинается. D+ и D- это дифференциальная пара, данные передаются в противофазе с одной лишь целью уменьшить помехи. То есть линия передачи по сути одна ! Есть ведущее устройство (Хост) и ведомое (Device).

Ведущее и ведомое могут одновременно что-то посылать в канал. Поэтому протокол USB очень требовательно распределяет , что ведущий и когда посылает и что (и когда) ведомый должен ответить. Иначе никак нельзя.

Вот на картинке ниже все отчетливо видно (один пакет от ведомого):

фотка 1

Сначала все просто:

Пакет всегда начинается с SYN (10000000).

Завершается пакет всегда EOP (End Of Packet ) . На картинке выше видна единственная ассиметрия в конце пакета, когда : 2 линии DP и DM различаются.

Примерная последовательность пакетов.

Инициализацию устройства пропускаем (запрос дескриптора, интерфейсов , конечных точек и т.д.), чтобы не терять времени (переходим к сути).

Периодические пакеты "НЕ СПАТЬ" SOF (Start Of Frame) - это примерно 1раз/1мс посылка от хоста ведомому ("не спи"). Их лучше сразу как-то отфильтровывать для понимания.

Далее остается три типа пакетов типа . Ниже их PID (Packet Identificator) , он же токен :
SETUP это служебные пакеты стандартного протокола настройки устройства
OUT это хост передает данные
IN это хост запрашивает данные от девайса

Эти пакеты вкладываются между SYNK и EOP .

фотка 2

Получается примерно такая структура [SYNC] [PID] [Address(7 бит)] [EndPoint] (4 бит) [EOP ]. На картинке выше видно как девайс отвечает NAK практически сразу и это нормально. Это означает , что девайсу надо подумать и сразу он не может ответить на команду.

PID это токен или (Program Identificator) SETUP, IN , OUT.

Address - это адрес нашего устройства на шине USB . Сначала он всегда 0 после подключения USB. Потом хост перенумеровывает все устройства на шине и присваивает каждому устройству уникальный адрес (размер всего 1 байт).

EndPoint - хост всегда общается не просто с устройством по адресу , а еще и с конкретной конечной точкой (end-point) устройства , которых может быть несколько. Как же хост узнает какие значения у конечных точек (EP) ? Правильно для этого зарезервировано значение 0 (конечная точка EP0), служебный end-point , через который хост получает первичную информацию от других конечных точках. Как всегда все просто.

Допустим наш хост уже получил всю информацию о конечных точках , интерфейсах, конфигурациях через EP0.

Как происходит дальше работа на примере обычной клавиатуры

Хост долбит периодически PID IN по адресу устройства плюс Endpoint устройства (у нас EndP 0x01), который отвечает за прием данных от клавиатуры (IN для хоста).

фотка 3

Если никакая клавиша не нажата ведомый обязан ответить и отвечает NAK. Такие пакеты хост передает примерно 1 раз в 10ms и устройство если не нажата клавиша передает NAK.

А вот когда на клавиатуре нажимается какая-нибудь клавиша, ведомый ответит сначала DATA0 пакетом и следом пакет ACK.

фотка 4

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

Тут есть нюанс , что хост всегда посылает запрос устройству на конкретный EP. Если запрос идет на EP для передачи данных (у нас EP1 ) это одно , если запрос идет на служебный EP0 - это хост хочет подключить , настроить устройство. То есть хост всегда определяет логику обмена , а девайс обязан подстраиваться под запрос.

Вообще кто есть хост? Это драйвер например клавиатура или сетевого адаптера и у каждого драйвера соответственно свой протокол , своя логика.

Таким образом если вы разрабатываете USB устройство и ПК шлет вам все пакеты на EP0 , а до других EP не доходит дело, то значит что-то еще не закончено с настройками устройства, что-то хосту не нравится.

Хост вообще говоря может ждать ответ одновременно от 2 и более конечных точек . Это абсолютно нормально. Выглядит это в логах анализатора LA1010 примерно так:

Видно как хост тупо чередует EP0 и EP2.

Если не возникает какого-то прерывания у девайса

То есть если на шине пакеты бегут, а прерывание необходимое не возникает. Например тупо не возникает прерывание IN bulk у RNDIS адаптера (DataIn у EP2). То есть на шине вижу , что девайс отсылает NAK на IN EP2, но самого прерывания в девайсе не возникает.

Тут надо в регистры лезть и отсрочки уже не будет. Какие мысли возникают в первую очередь. Прерывания маскируются вроде (надо проверить).

Так как у нас есть один рабочий проект но без FreeRTOS , то сначала тупо начинаем сверять регистры USB ( OTG_FS_GLOBAL и OTG_FS_DEVICE ): после инициализации , после открытия конечных точек, после приема нужного пакета и т.д. Эти регистры кстати удобно просматривать на закладке SFRS (в Atollic true Studio), тут видна их внутренняя структура. И еще с момента последней точки остановки подсвечиваются изменения.

фотка 1

В процессе сверки регистров мы находим отличия в OTG_FS_GLOBAL, исправляем, заодно изучаем назначение регистров и в какой-то момент даже ловим __HAL_PCD_IS_INVALID_INTERRUPT (на картинке выше видно). Ура хоть что-то.

На самом деле не знач - не ведая мы подошли к главному моменту. Мы наконец-то обратили внимание на USBD_LL_Init, а точнее на загадочные функции HAL_PCDEx_SetRxFiFo(..) и HAL_PCDEx_SetTxFiFo(..) .

Момент истины

И выяснилось , что мы не понимаем и половины логики работы USB . Не зная регистры вообще нет возможности понять что делать. В данном случае HAL это вред.

Итак HAL_PCDEx_SetRxFiFo / HAL_PCDEx_SetTxFiFo создает таблицу во внутренней памяти контроллера USB. Да именно контроллера USB , а не контроллера STM32. Так как у STM32F имеется как-бы свой встроенный контроллер , отвечающий за USB. И у него есть своя память 512К, в которой надо создать таблицу с буферами приема / передачи для каждой конечной точки.

Где эта таблица, где ее адреса.

А вот сама структура USB_OTG_GlobalTypeDef .

HAL - кий код становится намного прозрачнее теперь.

Опять момент истины

Дальше , если интересно немного о передаваемых скан кода клавиатуры . Проводная клавиатура Low Speed

Скан коды USB HID клавиатур это не ASCII коды и не не коды PS/2 клавы.

Читайте также: