Контроллер клавиатуры
Контроллер клавиатуры — это микроконтроллер или специализированная интегральная схема, предназначенная для обработки нажатий клавиш на клавиатуре, преобразования их в цифровые сигналы и передачи этих сигналов на компьютер или другое устройство. Он является ключевым компонентом любой клавиатуры, отвечая за обнаружение нажатий, антидребезговую обработку, формирование скан-кодов и взаимодействие с системой по одному из интерфейсов.
История развития
Первые компьютерные клавиатуры, появившиеся в 1960-х годах (например, для мейнфреймов и терминалов), были пассивными устройствами. В них каждая клавиша замыкала отдельную электрическую цепь, а обработкой сигнала занимался центральный процессор или специализированный порт ввода-вывода. С переходом к персональным компьютерам и появлением IBM PC (1981) возникла необходимость в унификации и снижении нагрузки на процессор. Клавиатура IBM Model F (1981) и более поздняя Model M (1985) уже содержали собственный микроконтроллер (например, Intel 8048), который принимал сигналы с клавиш, формировал скан-коды и отправлял их через последовательный интерфейс (позже ставший известным как PS/2).
Развитие контроллеров шло по пути миниатюризации, снижения энергопотребления и увеличения функциональности. В 1990-е годы широкое распространение получил интерфейс USB, что потребовало от контроллеров поддержки этого протокола. С 2000-х годов, с ростом популярности механических клавиатур и энтузиастических проектов (например, QMK, TMK), получили распространение программируемые контроллеры на базе микроконтроллеров общего назначения, таких как Atmel AVR (например, ATmega32U4) и ARM Cortex-M (например, STM32 серии F0/F4). В современных ноутбуках и компактных клавиатурах всё чаще используются специализированные SoC (System-on-Chip), интегрирующие контроллер, память и периферию в один корпус.
Типы и классификация
Контроллеры клавиатур можно классифицировать по нескольким признакам:
По функциональности
- Закрытые (проприетарные) — применяются в массовых клавиатурах (мембранных, ножничных). Прошивка не подлежит изменению пользователем. Пример: контроллеры в клавиатурах Dell, Logitech, HP.
- Открытые (программируемые) — позволяют пользователю изменять прошивку, переназначать клавиши, создавать макросы, настраивать подсветку. Часто основаны на микроконтроллерах AVR или ARM. Прошивка пишется на C/C++ с использованием фреймворков (QMK, TMK, KMK, ZMK).
По месту расположения
- Интегрированные — впаяны в печатную плату клавиатуры.
- Модульные — выполнены в виде отдельной платы (например, Pro Micro, Arduino Micro, Raspberry Pi Pico), которая вставляется в разъём на основной плате клавиатуры. Популярны в DIY-проектах.
По типу интерфейса
- PS/2 — устаревший последовательный интерфейс. Контроллер использует линии данных (DATA) и тактирования (CLK).
- USB — наиболее распространённый современный интерфейс. Контроллер должен поддерживать USB HID (Human Interface Device).
- Беспроводные — Bluetooth (BT), радиочастотный (RF) на частоте 2,4 ГГц. Контроллеры включают дополнительный радиомодуль.
Устройство и принцип работы
Матричная разводка
Основной метод соединения клавиш с контроллером — матричный. Клавиши организуются в строки и столбцы. Контроллер подаёт сигнал на одну из строк и считывает состояние столбцов. Если клавиша, находящаяся на пересечении активной строки и считываемого столбца, нажата, цепь замыкается, и контроллер регистрирует нажатие. Матрица позволяет использовать M + N контактов для M×N клавиш (например, для 100 клавиш требуется 20 контактов, а не 100).
Антидребезг (Debouncing)
При механическом нажатии клавиши контакты замыкаются не мгновенно, а с серией быстрых размыканий и замыканий (дребезг). Контроллер выполняет программный или аппаратный антидребезг — задерживает обработку сигнала на определенное время (обычно 5-20 мс) и считывает состояние повторно, чтобы убедиться, что контакт стабилен.
Сканирование
Контроллер циклически сканирует матрицу с частотой от нескольких десятков до сотен герц. При обнаружении нажатия он определяет скан-код клавиши. Скан-код может быть однобайтовым (классический для PS/2) или многобайтовым (для USB).
Формирование кода и отправка
- PS/2: Контроллер отправляет два скан-кода: make-код (при нажатии) и break-код (при отпускании). Например, для клавиши A make-код — 0x1C, break-код — 0xF0 0x1C. Операционная система (ОС) транслирует скан-коды в символы в зависимости от активной раскладки.
- USB HID: Контроллер использует отчёты (reports). Он формирует пакет, содержащий максимальное количество одновременно нажатых клавиш (обычно 6 клавиш без модификаторов, или N-Key Rollover — NKRO при поддержке). Каждая клавиша кодируется 1-байтовым кодом-идентификатором (HID usage ID). Отчёт отправляется ОС каждый раз при изменении состояния нажатых клавиш.
Дополнительные функции
- Подсветка: управление светодиодами (RGB или одноцветная) через ШИМ (широтно-импульсную модуляцию), реализация эффектов.
- Медиа-клавиши: обработка специальных клавиш (громкость, плеер).
- Макросы: запись и воспроизведение последовательностей нажатий.
Технические характеристики
- Микроконтроллер: Архитектура (AVR, ARM, RISC-V), тактовая частота (от 8 до 72 МГц и выше), объём флэш-памяти (для прошивки, 16-256 КБ), объем ОЗУ.
- Поддерживаемые интерфейсы: USB 2.0/3.0, Bluetooth (версия адаптера, например, BT 5.0), RF.
- Количество строк/столбцов матрицы: Определяет максимальное количество клавиш.
- Частота опроса (Polling rate): Частота, с которой контроллер отправляет отчёты на компьютер. Для USB обычно 125 Гц (8 мс), 250 Гц (4 мс), 500 Гц (2 мс), 1000 Гц (1 мс). Чем выше частота, тем ниже задержка, но выше нагрузка на шину.
- Поддержка NKRO: Возможность одновременной регистрации неограниченного количества нажатых клавиш (режим NKRO через USB реализуется с помощью многобайтовых отчётов или отдельного протокола).
Программируемые прошивки
Наибольшую популярность в среде энтузиастов получили открытые прошивки:
- QMK (Quantum Mechanical Keyboard Firmware): Де-факто стандарт для DIY-клавиатур. Позволяет настраивать раскладки (слои, тап-дэнс, комбо, алиасы), макросы, подсветку. Поддерживает широкий спектр микроконтроллеров.
- ZMK: Современный аналог QMK, ориентированный на беспроводные клавиатуры (Bluetooth). Использует конфигурацию на Python (Kconfig) и языке разметки (devicetree). Отличается модульностью и встроенной поддержкой низкоэнергетических режимов.
- TMK: Предшественник QMK, более простой, менее популярен.
- VIA: Веб-интерфейс для работы с прошивкой QMK, позволяющий менять раскладки и настройки в реальном времени без перепрошивки.
- VIAL: Расширенная версия VIA с более широкими возможностями настройки.
Применение
- Компьютерные клавиатуры (настольные и ноутбучные): Основное применение.
- Промышленные панели управления: Клавиатуры для станков, терминалов, банкоматов.
- Игровые устройства: Геймпады, симуляторы, контроллеры для ретро-игр.
- Специализированные устройства: Клавиатуры для людей с ограниченными возможностями (с речевым выводом, с большими клавишами), клавиатуры для слепых (с брайлевской разметкой).
- Обучающие и DIY-проекты: Создание собственных клавиатур с уникальным дизайном и функциональностью.
Производители
- Микросхемы общего назначения: Microchip Technology (Atmel AVR), STMicroelectronics (STM32), Nordic Semiconductor (nRF, для Bluetooth), Raspberry Pi Foundation (RP2040).
- Специализированные контроллеры: Производители клавиатур (Cherry, Logitech, Razer, SteelSeries, Corsair) обычно используют собственные или OEM-контроллеры с закрытой прошивкой.
- Производители программируемых контроллеров для DIY: Компании Keyboardio, OLKB (Planck), Massdrop (Drop), KBDfans, а также множество мелких производителей на платформах Kickstarter и AliExpress.
Интересные факты
- Первым микроконтроллером, использованным в клавиатуре IBM PC, был i8048 (от Intel, выпускался по лицензии). Впоследствии его заменили на совместимые с Intel 8051 (P8051, SAB 8051). В IBM Model M контроллер (коммерческое обозначение 82S121) был CPLD (Complex Programmable Logic Device).
- USB-контроллеры для клавиатур обычно поддерживают «загрузочный протокол» (Boot Protocol), который позволяет клавиатуре работать даже во время загрузки BIOS/UEFI без установленных драйверов.
- Некоторые энтузиасты перепрошивают контроллеры клавиатур для изменения задержки опроса, что может давать преимущество в соревновательных играх.
- Контроллер клавиатуры в ноутбуке часто встроен в один чип с контроллером тачпада и управлением питанием.
Источники
- Стандарт IBM PC/AT. Техническая документация.
- Спецификация USB HID (Human Interface Device).
- Протокол PS/2 (IBM Personal System/2).
- Документация проектов QMK Firmware, ZMK Firmware.
- Статьи по электронике и конструкции механических клавиатур (например, на сайтах Deskthority, Geekhack, Reddit (r/MechanicalKeyboards)).
- Дадашиты на микроконтроллеры ATmega32U4, STM32F072, nRF52840.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →