Сканкод
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 2011 г. ) |
Скан -код (или скан-код ) — это данные, которые большинство компьютерных клавиатур отправляют на компьютер, чтобы сообщить, какие клавиши были нажаты. Каждой клавише клавиатуры присвоен номер или последовательность цифр.
Варианты
[ редактировать ]Сопоставление ключевых позиций по строкам и столбцам требует менее сложного компьютерного оборудования ; поэтому в прошлом использование программного обеспечения или встроенного ПО для преобразования сканкодов в текстовые символы было дешевле, чем подключение клавиатуры по текстовым символам. [1] Эта разница в стоимости не так велика, как раньше. Однако многие типы компьютеров по-прежнему используют традиционные сканкоды для обеспечения обратной совместимости .
Некоторые стандарты клавиатуры включают скан-код для каждой нажимаемой клавиши и отдельный код для каждой отпускаемой клавиши. Кроме того, многие стандарты клавиатуры (например, стандарты, совместимые с IBM PC ) позволяют самой клавиатуре генерировать « печатные » повторяющиеся клавиши, заставляя саму клавиатуру многократно генерировать скан-код нажатой клавиши, пока клавиша удерживается нажатой, с отправкой скан-кода отпускания. один раз, когда клавиша отпущена.
Наборы сканкодов
[ редактировать ]В некоторых операционных системах можно обнаружить скан-код нажатия клавиши, удерживая клавишу нажатой во время загрузки компьютера. Если повезет, скан-код (или некоторая его часть) будет указан в полученном сообщении об ошибке «застрявший ключ». [Примечание. В Windows 7 отображается только один байт скан-кода.]
Совместимость с ПК
[ редактировать ]Сканкоды на совместимых с IBM PC, компьютерных клавиатурах, представляют собой наборы длиной от 1 до 3 байтов , которые отправляются с клавиатуры. Большинство символьных клавиш имеют однобайтовый скан-код; клавиши, выполняющие специальные функции, имеют 2-байтовые или 3-байтовые скан-коды, обычно начинающиеся с байта (в шестнадцатеричном формате). E0
, E1
, или E2
. Кроме того, несколько клавиш отправляют более длинные скан-коды, эффективно имитируя серию клавиш, что упрощает обработку различных типов программного обеспечения.
Клавиатуры ПК, поскольку клавиатура PS/2 поддерживает до трех наборов скан-кодов. Чаще всего встречаются скан-коды «XT» («набор 1»), основанные на 83-клавишной клавиатуре, используемой в IBM PC XT и более ранних версиях. В основном они состоят из одного байта; младшие 7 бит идентифицируют клавишу, а самый старший бит сбрасывается при нажатии клавиши или устанавливается при отпускании клавиши. Некоторые дополнительные клавиши имеют E0
(или редко, E1
или E2
) префикс. Изначально они были назначены таким образом, что игнорирование E0
префикс (который находится в диапазоне клавиш и, следовательно, не окажет никакого влияния на операционную систему, которая их не понимает) даст разумные результаты. Например, клавиша Enter на цифровой клавиатуре создает скан-код E0 1C
, что соответствует скан-коду клавиши возврата 1C
.
ПК IBM 3270 представил собственный набор сканкодов («набор 3») с другой нумерацией ключей и где освобождение ключа обозначается значком. F0
префикс. Для обеспечения обратной совместимости ПК 3270 преобразовал их в сканкоды XT (набор 1) с помощью дополнительной карты и расширения BIOS. Этот набор используется Linux по умолчанию, когда он обнаруживает клавиатуру PS/2, которая может правильно поддерживать набор кодов сканирования 3. [2]
IBM PC AT представил сканкоды «AT» («набор 2»). На 84-клавишной клавиатуре AT они в основном представляли собой подмножество набора 3 с некоторыми отличиями, вызванными измененной раскладкой (например, изменились положение и скан-коды функциональных клавиш ). Добавлены ключи, поскольку ПК АТ часто имеют разные скан-коды в наборе 2 и наборе 3, а в наборе 2 часто имеются E0
или E1
префикс. Опять же, освобождение ключа обозначается F0
префикс.
Для компьютеров, начиная с IBM PC AT, контроллер клавиатуры на материнской плате преобразует скан-коды AT (набор 2) в скан-коды XT (набор 1) в так называемом режиме трансляции . [3] Этот перевод можно отключить в режиме сквозной передачи , что позволит видеть необработанные сканкоды. [4] Таким образом, то, встретит ли разработчик программного обеспечения скан-коды AT или скан-коды XT на современном ПК, совместимом, зависит от того, как осуществляется доступ к клавиатуре.
Совместимой клавиатуре PS/2 можно указать отправлять сканкоды в наборе 1, 2 или 3.
ключ | комплект 1 ( IBM PC XT ) | комплект 2 ( IBM PC AT ) | комплект 3 ( ПК IBM 3270 ) | |||
---|---|---|---|---|---|---|
нажимать | выпускать | нажимать | выпускать | нажимать | выпускать | |
A (простое письмо) | 1E
|
9E
|
1C
|
F0 1C
|
1C
|
F0 1C
|
↵ Enter (основная клавиатура) | 1C
|
9C
|
5A
|
F0 5A
|
5A
|
F0 5A
|
↵ Enter ( цифровая клавиатура ) | E0 1C
|
E0 9C
|
E0 5A
|
E0 F0 5A
|
79
|
F0 79
|
Левый ⊞ Win ( ключ Windows ) | E0 5B
|
E0 DB
|
E0 1F
|
E0 F0 1F
|
8B
|
F0 8B
|
Верно ⊞ Win | E0 5C
|
E0 DC
|
E0 27
|
E0 F0 27
|
8C
|
F0 8C
|
USB
[ редактировать ]USB -клавиатуры используют новый набор сканкодов, в основном указанный в стандарте USB. Все компьютеры, распознающие USB-клавиатуры, распознают эти новые скан-коды. [5]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Например, традиционная 12-клавишная цифровая клавиатура сканируется как 3 столбца по 4 строки, что требует в общей сложности 7 подключений. Для сканирования каждого ключа отдельно потребуется 12 подключений.
- ^ Павлик, Войтех (18 февраля 2022 г.), «Драйвер клавиатуры AT и PS/2 (atkbd.c)» , Torvalds/Linux – через GitHub
- ^ Брауэр, Андриес (20 мая 2004 г.), «Раздел 10, «Внутренние скан-коды клавиатуры» » , скан-коды клавиатуры (редактор версии 1.2e) , получено 15 ноября 2006 г.
- ^ Брауэр, Андриес (7 июля 2009 г.), «Раздел 11, «Контроллер клавиатуры AT» » , Скан-коды клавиатуры (изд. версии 1.2g) , получено 18 июля 2010 г.
- ^ Корпорация Microsoft (16 марта 2000 г.), «Приложение C, «Страница USB-клавиатуры/клавиатуры (0x07)» », Спецификация кода сканирования клавиатуры Microsoft (редакция 1.3a) , получено 13 октября 2018 г.
Внешние ссылки
[ редактировать ]- Коды сканирования клавиатуры : автор Андрис Брауэр
- Интерфейс с AT-клавиатурой : подробная информация о скан-кодах клавиатуры на сайте Beyondlogic.org.