Устройство клавиатуры и мыши, настройка параметров работы клавиатуры и мыши
1. Периферия ввода в архитектуре ЭВМ
Клавиатура и мышь — первичные аппаратные преобразователи механических воздействий человека в машинные цифровые транзакции.
Символьно-командный ввод (Клавиатура)
Дискретные события: нажатие (Make), удержание (Repeat), отпускание (Break). Генерация аппаратно-зависимых скан-кодов и передача через буферы контроллера.
Координатно-указательный ввод (Мышь)
Непрерывный опрос относительных смещений: векторы ΔX, ΔY и состояния кнопок. Расчет оптического потока на микроматрице в реальном времени.
Ключевая цель: Минимизация совокупной задержки (Input Lag) и устранение аппаратных искажений (дребезг контактов, гостинг, сглаживание).
2. Аппаратная организация матрицы клавиатуры
Для опроса 104 клавиш используется матричная топология: N строк (Rows) × M столбцов (Columns).
- Экономия контактов МК: 8 строк + 16 столбцов = 24 линии GPIO вместо 104 отдельных проводников.
- Циклический опрос (Strobe scanning): микроконтроллер поочередно выставляет логический «0» на один столбец и считывает логические уровни со всех линий строк.
- Подтяжка Pull-Up: строки находятся под напряжением +3.3 В / +5 В. Замыкание клавиши соединяет строку с землей через опрашиваемый столбец.
Частота сканирования матрицы аппаратным микроконтроллером клавиатуры составляет от 500 Гц до нескольких килогерц.
3. Паразитные замыкания: Ghosting и Key Jamming
Эффект Ghosting (Фантомный клик)
В матрице без диодов при одновременном зажатии 3 клавиш в вершинах прямоугольника ток утекает по паразитному контуру через замкнутые контакты соседей. Контроллер видит замыкание в 4-й вершине, которую никто не нажимал!
Key Jamming (Блокировка ввода)
Чтобы избежать хаоса фантомных символов, контроллер дешевой клавиатуры блокирует регистрацию 3-й клавиши при обнаружении потенциального паразитного прямоугольника. Это называется 2-Key Rollover (2KRO).
В офисной работе 2KRO незаметен, но в играх, стенографии и быстром наборе аккордов блокировка клавиш фатальна.
4. Схемотехника NKRO (N-Key Rollover)
Полное устранение гостинга и джемминга достигается распайкой индивидуального развязывающего диода последовательно с каждым переключателем.
- Однонаправленность тока: диод (например, SMD 1N4148) пропускает стробирующий ток только от строки к столбцу.
- Блокировка обратной петли: обратный ток через соседние ветви матрицы физически невозможен.
- True NKRO: контроллер способен безошибочно определить нажатие любого числа клавиш одновременно — вплоть до всех клавиш на доске.
Реализация в USB: Стандартный протокол USB HID Boot Keyboard ограничен 6 одновременными клавишами (6KRO). True NKRO требует кастомного дескриптора отчетов (HID Report Descriptor) с битовой картой клавиш (Bitmap).
5. Классификация переключателей (Switches)
Мембранные (Rubber Dome)
Силиконовый купол + токопроводящий графитовый пятак. Дешево, тихо, влагостойко. Минусы: срабатывание только при прожатии до упора (bottom-out), ресурс 5–10 млн.
Механические (MX Style)
Витая стальная пружина + бронзовые контакты. Срабатывание на середине хода (2 мм). Ресурс 50–100 млн. Типы: Linear (Red), Tactile (Brown), Clicky (Blue).
Оптика и Датчик Холла
Прерывание инфракрасного луча или смещение магнита (Hall Effect). Отсутствие металлического дребезга (0 мс дебаунс), функция Rapid Trigger, ресурс свыше 100 млн.
6. Скан-коды и трансляция событий ввода
Клавиатура передает в компьютер не буквы, а аппаратные коды физических клавиш:
- Make Code: сигнал замыкания физического контакта клавиши.
- Break Code: сигнал размыкания контакта при снятии пальца.
- Исторические стандарты: Scan Code Set 1 (IBM PC/XT), Set 2 (IBM PC/AT, контроллер 8042/Super I/O), Set 3 (терминалы).
- USB HID Usage Tables: стандартизированная 8-битная кодовая страница Page 0x07 (Клавиатура/Кейпад). Например, клавиша
A = 0x04, клавиша Enter = 0x28.
Преобразование скан-кода в конкретный символ (букву алфавита с учетом раскладки, Shift и CapsLock) выполняет драйвер ОС.
7. Аппаратное устройство мыши: Оптический тракт
Современная оптическая мышь — это специализированная высокоскоростная микровидеокамера:
- LED / VCSEL Лазер: освещает поверхность косым лучом для создания контрастных микротеней текстуры.
- Оптическая микролинза: фокусирует изображение микропятна на светочувствительную матрицу.
- Скоростная CMOS-матрица: разрешение всего 30×30 .. 40×40 пикселей, но частота съемки достигает 10 000 – 20 000 кадров в секунду (fps).
- Цифровой процессор сигналов (DSP): анализирует сдвиг последовательных кадров методом оптического потока.
8. Алгоритм корреляции оптического потока
DSP сенсора непрерывно вычисляет пространственную взаимную корреляцию между текущим кадром t(k) и предыдущим t(k-1):
R(Δx, Δy) = Σ I_k(x, y) × I_{k-1}(x + Δx, y + Δy)
- Смещение, дающее глобальный максимум корреляции, принимается за истинное перемещение мыши (ΔX, ΔY).
- Сенсор накапливает эти элементарные отсчеты (Counts) во внутренних регистрах до очередного сеанса опроса шиной USB.
- Субпиксельная интерполяция позволяет фиксировать перемещения на доли микрона.
9. Разрешение сенсора: физика CPI vs маркетинг DPI
DPI (Dots Per Inch)
Термин полиграфии — количество чернильных точек на дюйм бумаги. В компьютерных мышах используется исторически как упрощенный синоним чувствительности.
CPI (Counts Per Inch)
Строгий инженерный параметр: число дискретных электрических отсчетов (импульсов), генерируемых сенсором при физическом смещении мыши ровно на 1 дюйм (25.4 мм).
Инженерный факт: Нативное оптическое разрешение кремниевых сенсоров редко превышает 1600–3200 CPI. Заявленные в рекламе 20 000–30 000 CPI формируются математической интерполяцией в DSP, что увеличивает шум (джиттер).
10. Частота опроса шины (Polling Rate)
Шина USB работает в режиме Host Controller Polling (Interrupt Transfer). Мышь не может отправить пакет без запроса хоста.
125 Гц (Стандарт USB)
Интервал опроса: T = 8.0 мс. Высокая вариативность задержки (джиттер до 8 мс), курсор движется рывками на быстрых экранах.
1000 Гц (Про-стандарт)
Интервал опроса: T = 1.0 мс. Плавная передача векторов движения, минимальная нагрузка на CPU (1 прерывание в мс).
4000 / 8000 Гц (Экстрим)
Интервал: T = 0.25 / 0.125 мс. Сверхгладкий отклик, но до 8000 аппаратных прерываний в секунду — риск троттлинга CPU.
11. Алгоритмические искажения: Angle Snapping и Акселерация
Angle Snapping (Угловая привязка)
Алгоритм DSP, насильно сглаживающий траекторию движения в прямую горизонталь или вертикаль. Удобно для офиса, но фатально для CAD-черчения по сложным радиусам и гейминга.
Hardware Acceleration (Акселерация)
Дистанция курсора зависит от скорости перемещения руки: при резком рывке курсор улетает дальше, чем при плавном движении на то же расстояние. Разрушает мышечную память оператора.
Профессиональный стандарт: Строгое отключение Angle Snapping и ускорения мыши (Enhanced Pointer Precision = OFF). Использование Raw Input.
12. Физические интерфейсы подключения
Проводной USB HID
Абсолютная помехозащита, питание по кабелю, задержка от 0.125 до 1 мс. Эталон для CAD, серверов и киберспорта.
2.4 GHz Proprietary RF
Собственный USB-донгл со сверхбыстрым радиопротоколом. Полноценные 1000–4000 Гц, отсутствие видимого лага (1–2 мс).
Bluetooth LE (HOGP)
Энергоэффективный стандарт, но частота ограничена интервалами BLE (90–133 Гц, задержка 8–15 мс). Только для офиса и планшетов.
13. Инженерный расчет совокупного Input Lag
Суммарная задержка от прикосновения до пикселя на мониторе:
T_total = T_mech + T_scan + T_debounce + T_usb_poll + T_os + T_gpu + T_monitor
- Механика + Дебаунс: мембрана/механика добавляет 5–15 мс; оптика/Hall Effect снижает до 0–1 мс.
- Опрос USB: 125 Гц дает в среднем 4 мс ожидания; 1000 Гц дает 0.5 мс.
- Итог оптимизации: грамотный подбор периферии снижает лаг ввода системы более чем на 25–30 миллисекунд!
14. Инженерный юмор и эволюция интерфейсов
Тематический интернет-мем: xkcd #1172 —
«Workflow» («Every change breaks someone's workflow»).
Сюжет стрипа: Пользователь жалуется на багфикс в новой версии ПО: «Раньше удержание пробела вызывало перегрев процессора и согревало мои руки зимой, а ваше обновление всё сломало!». Мем стал культовым в среде системных программистов и разработчиков периферийных контроллеров.
Первоисточник: Официальный архив комиксов xkcd (
xkcd.com/1172).
Автор: Рэндалл Манро (Randall Munroe).
Лицензия: Creative Commons Attribution-NonCommercial 2.5 Generic (CC BY-NC 2.5).
Формат встраивания: Автономный data URI (JPEG Base64) для гарантированной работы в закрытых сетях без доступа к интернету.