« Когда мы нажимаем клавишу на клавиатуре, она нажимает на резиновую кнопку в форме купола, которая в свою очередь электрически соединяет верхний и нижний слои в этой точке, и сигнал отправляется на ИС УДАРА. ИС обрабатывает сигнал и отправляет его на компьютер через порт PS2 или USB. "- EngineeringGarage (ctrl + f, чтобы найти его)

Сигнал передается в двоичный процессор? (например, буква "а" = 00000001)?

2 ответа2

2

Все, что отправлено на процессор, является двоичным. Это также шестнадцатеричный, десятичный и восьмеричный тоже. Двоичный код - это просто самое простое представление для "работы" с операциями внутри процессора и интегральными схемами. Биты могут располагаться бок о бок, как в параллельной шине, или взяты по одной за раз (последовательно), но когда они взяты как группа, данные, которые они представляют, могут быть показаны любым удобным для вас способом. Процессор использует двоичные представления, арифметику и логику, но фактические данные, с которыми он работает, будут либо группой битов, которые, если смотреть в одну сторону, являются "просто" последовательностью 1 и 0, а другим способом - буквой "a". ,

Если вы посмотрите на любую заданную строку данных на ЦП в данный момент, то это будет либо 1, либо 0, но для того, чтобы получить какую-либо полезную информацию, вам понадобится либо группа, либо серия битов, которая составляет байт или последовательность байт.

Когда вы нажимаете клавишу тогда, когда вы говорите, что сигнал посылается через различные интегральные схемы, пока сигнал в ЦП фактически не говорит a key was pressed, can you run some code to find out what? в этот момент процессор сообщит операционной системе, которая, в свою очередь, обнаружит драйвер, ответственный за чтение устройства клавиатуры, который, в свою очередь, исчезнет и (через процессор и другие микросхемы) запросит устройство, спрашивая, какая клавиша была нажата.

Что касается того, что возвращается как "нажатие клавиши", то это не что иное, как данные. Это одновременно шестнадцатеричный, десятичный, двоичный и символ "А".

0

В общем, ответ - да, но, конечно, более глубокий ответ не может быть таким простым, как "да", не так ли!

Во-первых, обычно (за исключением клавиш 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 мс!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .