Раздел 1. Практическая работа №2. Устройство клавиатуры и мыши, настройка параметров работы клавиатуры и мыши
В классической архитектуре фон Неймана устройства ввода служат первичным аппаратным мостом, преобразующим аналоговые механические воздействия человека (нажатие пальца на клавишу, скольжение манипулятора по плоскости) в цифровые последовательности сигналов, доступные для обработки центральным процессором.
Несмотря на кажущуюся простоту, современные клавиатуры и мыши представляют собой самостоятельные микропроцессорные встраиваемые системы (Embedded Systems) со своими АЛУ, ПЗУ с прошивкой, контроллерами интерфейсов (USB/Bluetooth), цифровыми сигнальными процессорами (DSP) и оптическими матрицами.
Если бы каждая из 104 клавиш стандартной клавиатуры подключалась к контроллеру индивидуальной линией связи, потребовалось бы более сотни проводников и контактов ввода-вывода микроконтроллера, что неприемлемо по стоимости, габаритам и помехоустойчивости. Поэтому клавиши коммутируются в двумерную матрицу пересечений строк (Rows) и столбцов (Columns).
Когда в матрице без диодной развязки пользователь одновременно зажимает три клавиши, расположенные вершинами воображаемого прямоугольника (например, клавиши SW1, SW2 и SW3 на Схеме 1), замыкаются три проводящих пути. Ток от стробируемого столбца протекает через замкнутые контакты в обратном направлении, создавая на строке потенциал земли в четвертой вершине (Ghost). Контроллер ошибочно фиксирует нажатие четвертой клавиши.
Любые металлические контакты при соударении вибрируют из-за микроскопической упругости металла. В течение первых 1–10 миллисекунд после нажатия контакт многократно смыкается и размыкается (дребезжит). Если передавать сигнал напрямую в процессор, одно нажатие вызовет лавину из десятков символов.
Для устранения дребезга контроллер клавиатуры применяет алгоритм Debounce: после первой фиксации замыкания контроллер «замораживает» состояние клавиши на программный интервал (обычно 5–15 мс) и лишь по истечении этого времени подтверждает стабильность сигнала. В оптических и магнитных переключателях металлические контакты отсутствуют, поэтому задержка на дебаунсинг равна нулю ($T_{debounce} = 0$).
Современная оптическая мышь не измеряет физическую скорость напрямую. Она работает по принципу непрерывной микрофотосъемки рабочей поверхности.
Шина USB устроена асимметрично: периферийное устройство (мышь или клавиатура) не имеет права самостоятельно захватывать шину и слать данные в память ПК. Все передачи инициируются хост-контроллером USB материнской платы.
Для устройств класса HID используется тип передачи Interrupt. Хост периодически опрашивает конечную точку (Endpoint) мыши с интервалом, заданным в дескрипторе устройства (параметр bInterval). Если за интервал перемещения не произошло, устройство шлет NAK. Если мышь сместилась, передается HID Report со смещениями $\Delta X$ и $\Delta Y$.
Период опроса шины обратно пропорционален частоте:
$$T_{poll} = rac{1000}{F_{poll}} ext{ (мс)}$$
При 125 Гц: $T = 8.0$ мс (базовый опрос)
При 500 Гц: $T = 2.0$ мс
При 1000 Гц: $T = 1.0$ мс
При 8000 Гц: $T = 0.125$ мс (125 мкс)
| Параметр | Физический смысл | Рекомендованное значение |
|---|---|---|
| Repeat Delay (Задержка автоповтора) | Время от нажатия клавиши до начала генерации цепочки повторных символов (обычно 250–500 мс). Предотвращает случайные дубли при медленном снятии пальца. | 250–300 мс (короткая задержка для быстрого набора и программирования). |
| Repeat Rate (Скорость автоповтора) | Частота повтора символа при удержании клавиши (от 2 до 30 симв/с). | Максимальная (30 симв/с) для эффективной навигации по коду клавишами стрелок. |
| Enhance Pointer Precision (Windows) | Программная нелинейная акселерация курсора (смещение зависит от скорости движения мыши, а не только от физического расстояния). | Отключить для точных работ (CAD, 3D, киберспорт) во избежание разрушения мышечной памяти. |
| Raw Input (Прямой ввод) | Считывание пакетов HID напрямую в обход оконной подсистемы Windows (`WM_MOUSEMOVE`) и буферов сглаживания ОС. | Включить во всех профессиональных графических и игровых пакетах для минимального лага. |