В общем, ответ - да, но, конечно, более глубокий ответ не может быть таким простым, как "да", не так ли!
Во-первых, обычно (за исключением клавиш n-key-rollover) не существует прямой корреляции между нажатием клавиши и одним "сигналом". Обычно есть как минимум два сигнала. По соображениям стоимости большинство клавиатур построено с какой-то (зависящей от реализации) матрицей проводов, где нажатие любой одной клавиши приводит к двум сигналам, и микросхема затем декодирует их определенным образом. Обычно клавиатуры изготавливаются таким образом, что клавиши, которые обычно удерживаются вместе (или своевременно близко друг к другу), имеют достаточно различную разводку, чтобы ИС действительно могла правильно их определить для обычного использования.
Клавиатуры, в которых каждая клавиша индивидуально подключена, существуют, но являются исключением, а не нормой.
Теперь информация ("сигнал") о том, что одна или несколько клавиш не работают, кодируется парой цифр на ИС клавиатуры. Что, конечно, двоичное число (не может быть ничего другого!). И ... ничего не отправляется! Чего ждать? Да это правильно.
Время от времени USB Master (контроллер IC на вашем компьютере, обычно на материнской плате) спрашивает подчиненное устройство (контроллер USB на вашей клавиатуре), есть ли что сказать. Стандарт USB указывает, что подчиненное устройство может отправлять сообщения только по запросу ("опрашиваемому") ведущему. Клавиатуры обычно работают в режиме передачи прерываний, поэтому клавиатура получает возможность сообщать компьютеру, как часто в идеале он хотел бы, чтобы его запрашивали обновления (но все равно требуется только отвечать на запросы, а не действовать на себя), и размер количество кадров ответа несколько ограничено (64 байта на USB2 для пары ключей обычно достаточно).
Как правило, на клавиатурах USB2 наилучший интервал опроса, который вы можете получить, составляет 1 мс, но USB3 допускает 0,125 мс [1].
Контроллер вашей клавиатуры теперь инкапсулирует число (или несколько из них) в пакет ограниченного размера определенного общеизвестного формата, который включает в себя идентификатор, контрольную сумму (CRC), а также некоторую другую информацию, и помещает все это " на проводе "по крупицам"
Разумеется, эта передача является строго двоичной, поскольку существует только один кабель для передачи данных (... для каждого направления), который может иметь либо напряжение, либо, что ж, нет. Но сигнал больше не похож на исходный сигнал, и имеет смысл взглянуть только на полный пакет, а не на один бит.
Клавиатура будет отправлять и ретранслировать до трех раз, если компьютер обнаружит ошибку CRC, поэтому передача также является не просто запуском, а несколько более сложным протоколом.
Как только что-то получено и CRC исправен, контроллер генерирует прерывание, а драйвер устройства что- то делает для извлечения кода сканирования из полученного сообщения. Затем он проходит через некоторые более или менее сложные механизмы фильтрации и анализа в операционной системе (возможно, поддерживая набор "нажатых в данный момент клавиш" и, возможно, вызывающих хуков и т.д.), Пока наконец что-то (зависит от операционной системы) не попадет в сообщение очередь программы, которая имеет "фокус" (где она обычно переводится на символ). Это что-то, как правило, является уведомлением типа "ключ вниз", в паре с соответствующими сообщениями "ключ вверх" и, возможно, "повторными" сообщениями, генерируемыми операционной системой согласно некоторому таймеру.
"Сигнал", конечно, все еще двоичный, так как это единственное, что процессор понимает. Но это выглядит, опять же, совсем по-другому. И, конечно же, это гораздо сложнее, чем просто маленький номер, отправленный по проводу.
Когда сообщение ключа преобразуется в символы, несколько нажатий клавиш могут быть далее объединены в один символ (или наоборот, или в кодировке переменной длины, или в других забавных вещах).
Опять же, "сигнал" по-прежнему обязательно двоичный, но, опять же, он будет выглядеть значительно иначе, чем раньше.
[1] Это может быть интересно для супер-супер-хардкорных геймеров, которые беспокоятся о каждой миллисекунде лага. Опрос
не чаще одного раза в миллисекунду на клавиатуре USB2 означает добавленную среднюю задержку 0,5 мс (независимо от того, какое время может потребоваться для обработки нажатия клавиши в противном случае или для отправки сетевого пакета). На старой USB-клавиатуре, которая внешне «точно такая же», минимально возможный интервал опроса составляет 10 мс!