Сканкод - Scancode

А сканкод (или код сканирования) - это данные, которые компьютерные клавиатуры отправить в компьютер чтобы сообщить, какие клавиши были нажаты. Каждой клавише на клавиатуре присваивается номер или последовательность цифр.

Варианты

Сопоставление ключевых позиций по строкам и столбцам требует менее сложных компьютерное железо; поэтому в прошлом использование программного обеспечения или прошивка перевод сканкодов в текстовые символы был дешевле, чем подключение клавиатуры к текстовым символам.[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, что соответствует сканкоду клавиши возврата .

В IBM 3270 ПК представил свой собственный набор скан-кодов ("набор 3") с другой нумерацией клавиш и где отпускание клавиши обозначено F0 приставка. Для Обратная совместимость ПК 3270 преобразовал их в скан-коды XT (набор 1) с помощью дополнительной карты и расширения BIOS. Этот набор используется Linux по умолчанию, когда он обнаруживает клавиатуру PS / 2, которая может правильно поддерживать набор кодов сканирования 3.[2]

В IBM PC AT представил сканкоды "AT" ("набор 2"). На 84-клавишной клавиатуре AT это были в основном подмножества набора 3, с некоторыми отличиями, вызванными измененной компоновкой (например, положение и скан-коды клавиш функциональные клавиши изменено). Ключи добавлены, так как PC AT часто имеют разные скан-коды в наборе 2 и наборе 3, а в наборе 2 часто имеют E0 или E1 приставка. Опять же, отпускание клавиши обозначается значком F0 приставка.

Для компьютеров, начиная с IBM PC AT, контроллер клавиатуры на материнская плата переводит скан-коды AT (набор 2) в скан-коды XT (набор 1) в так называемом режим перевода.[3] Этот перевод можно отключить в сквозной режим, позволяя видеть необработанные скан-коды.[4] Следовательно, столкнется ли разработчик программного обеспечения с скан-кодами AT или XT на современном ПК-совместимом, зависит от того, как осуществляется доступ к клавиатуре.

Совместимой клавиатуре PS / 2 можно указать отправку скан-кодов в наборе 1, 2 или 3.

Примеры скан-кодов, совместимых с ПК (IBM PS / 2)
ключнабор 1 (IBM PC XT )набор 2 (IBM PC AT )набор 3 (IBM 3270 ПК )
НажмитевыпускНажмитевыпускНажмитевыпуск
А (обычная буква)1E9EF0 1CF0 1C
Вернуться / Войти (основная клавиатура)9CF0 5AF0 5A
Войти (цифровая клавиатура )E0 1CE0 9CE0 5AE0 F0 5A79F0 79
Осталось Клавиша WindowsE0 5BE0 DBE0 1FE0 F0 1F8BF0 8B
Правая клавиша WindowsE0 5CE0 DCE0 27E0 F0 278CF0 8C

USB

USB клавиатуры используют новый набор скан-кодов, в основном указанный в стандарте USB. Все компьютеры, распознающие USB-клавиатуры, распознают эти новые коды сканирования.[5]

Смотрите также

использованная литература

  1. ^ Например, традиционная 12-клавишная цифровая клавиатура сканируется как 3 столбца на 4 строки, что требует всего 7 подключений. Для сканирования каждой клавиши отдельно потребуется 12 подключений.
  2. ^ https://github.com/torvalds/linux/blob/master/drivers/input/keyboard/atkbd.c
  3. ^ Сканкоды клавиатуры (раздел 10, «Внутренние сканкоды клавиатуры» ), Андрис Брауэр. Версия 1.2e, 20 мая 2004 г., дата обращения 15 ноября 2006 г.
  4. ^ Сканкоды клавиатуры (раздел 11, «Контроллер клавиатуры AT» ), Андрис Брауэр. Версия 1.2g, 07.07.2009, дата обращения 18.07.2010.
  5. ^ Спецификация кода сканирования клавиатуры Microsoft (Приложение C, «Страница USB-клавиатуры / клавиатуры (0x07)» ), Microsoft. Версия 1.3a, 16 марта 2000 г., дата обращения 13 октября 2018 г.

внешние ссылки