Ввод и вывод: как компьютер замечает нажатие клавиши

Какой путь проходит нажатие клавиши до буквы на экране, чем код клавиши отличается от кода символа, как работают опрос и прерывания и что такое память кадра и частота обновления экрана.

Содержание

Компьютер замечает нажатие клавиши потому, что клавиатура сама сообщает о нём. Она отправляет номер нажатой клавиши, а процессор получает сигнал — прерывание. Он на мгновение откладывает текущую работу, принимает этот номер и возвращается к прерванной программе. Так же, по сигналу, компьютер узнаёт о движении мыши, касании экрана и сообщении, пришедшем из сети.

Устройства ввода и вывода

Устройства ввода передают данные в компьютер: это клавиатура, мышь, микрофон, камера. Устройства вывода передают данные из компьютера наружу: экран, наушники, принтер. Некоторые делают и то и другое. У геймпада кнопки — ввод, а вибрация — вывод. Сенсорный экран телефона показывает картинку и чувствует палец.

Для процессора все они похожи: от одних приходят числа, другим числа нужно отправить. Посмотрим, какие числа и когда.

Путь одной буквы

Вы пишете сообщение в мессенджере и нажимаете клавишу. На экране появляется буква «а». Между этими двумя событиями шесть шагов.

  1. Клавиша замыкает контакт. Под клавишами проводники уложены сеткой: строки и столбцы. Внутри клавиатуры есть своя микросхема — контроллер. Он много раз в секунду по очереди проверяет строки и столбцы и находит замкнутый контакт.
  2. Контроллер отправляет код клавиши. Это просто номер клавиши, его называют скан-кодом. У клавиатур, подключённых по USB, клавиша с буквами F и А имеет номер 9. Когда клавишу отпускают, клавиатура сообщает и об этом — иначе не работали бы Shift и управление в играх.
  3. Процессор получает прерывание. Он приостанавливает текущую программу и запускает короткую программу операционной системы, которая принимает код клавиши.
  4. Операционная система находит символ. Она смотрит, какая включена раскладка и нажат ли Shift.
  5. Программа получает символ. Операционная система передаёт его той программе, окно которой сейчас активно. Мессенджер дописывает символ в строку сообщения.
  6. Буква становится точками. В шрифте находится рисунок буквы, и цвета его точек записываются в память, из которой берёт изображение экран.
Схема: в клавиатуре клавиша замыкает контакт, контроллер отправляет компьютеру код клавиши 9; операционная система находит символ, программа записывает цвета точек в память кадра, экран показывает букву
Рисунок 1 — Путь нажатия клавиши до буквы на экране

Самое важное происходит на четвёртом шаге. Клавиша одна и код у неё один, а символов четыре.

РаскладкаShiftСимволКод символа в Юникоде
английскаяне нажатfU+0066
английскаянажатFU+0046
русскаяне нажатаU+0430
русскаянажатАU+0410

Код клавиши — ещё не код символа. Клавиатура ничего не знает о буквах: она сообщает, какую клавишу нажали, а что это значит, решает операционная система. Сами коды символов разобраны в уроке Как компьютер хранит текст.

Опрос и прерывание

Узнать о событии можно двумя способами.

Представьте, что Вы написали контрольную и ждёте оценку в электронном дневнике. Можно каждые пять минут открывать дневник и проверять. Это опрос: Вы сами раз за разом спрашиваете, не случилось ли что-нибудь. Почти все проверки окажутся напрасными, а оценку Вы всё равно увидите с опозданием — до пяти минут.

Можно поступить иначе: включить уведомления и читать книгу. Когда оценку выставят, телефон звякнет. Это прерывание: о событии сообщает тот, у кого оно произошло.

Услышав сигнал, Вы дочитаете предложение, положите закладку, посмотрите оценку и вернётесь к книге. Процессор действует так же.

  1. Заканчивает команду, которую выполнял.
  2. Запоминает, на чём остановился: значение счётчика команд, то есть адрес следующей команды, и содержимое остальных регистров.
  3. Выполняет обработчик прерывания — короткую программу операционной системы. Для клавиатуры она принимает код клавиши.
  4. Возвращает сохранённые значения и продолжает прерванную программу с того же места.

Прерванная программа ничего не замечает: для неё команды идут подряд, как в уроке Как работает процессор.

Две ленты времени: при опросе процессор регулярно тратит время на проверки и замечает нажатие с задержкой, при прерывании он обрабатывает нажатие сразу
Рисунок 2 — При опросе нажатие ждёт очередной проверки, при прерывании обрабатывается сразу
ОпросПрерывание
Кто начинает разговоркомпьютерустройство
Лишняя работамного пустых проверокнет
Задержкадо промежутка между проверкамипочти нет
Что нужнотолько программалиния для сигнала и обработчик

Опрос не всегда плох. Он прост, и он хорош, когда новости есть почти при каждой проверке. Опросом пользуется и контроллер внутри клавиатуры, когда проверяет сетку клавиш. На коробках игровых мышей указывают «частоту опроса»: 1000 Гц означает, что тысячу раз в секунду компьютер узнаёт у мыши, куда она сдвинулась. Обычную мышь опрашивают 125 раз в секунду, то есть каждые 1000 : 125 = 8 мс.

Экран: память кадра и частота обновления

С выводом проще: компьютеру достаточно записать числа в нужное место. Память кадра — участок памяти, в котором для каждого пикселя экрана записан его цвет. Как цвет превращается в числа, рассказано в уроке Картинки и звук. Чтобы изменить изображение, программа меняет числа в памяти кадра.

Посчитаем её размер для экрана 1920 × 1080, если на пиксель уходит три байта.

TXT
1920 · 1080 = 2 073 600 пикселей
2 073 600 · 3 = 6 220 800 байтов

Видеокарта раз за разом отправляет содержимое памяти кадра на экран. Частота обновления показывает, сколько раз в секунду это происходит. Её измеряют в герцах: 60 Гц — это 60 раз в секунду.

Частота обновленияСколько длится один кадр
60 Гц1000 : 60 ≈ 16,7 мс
120 Гц1000 : 120 ≈ 8,3 мс
144 Гц1000 : 144 ≈ 6,9 мс

Поэтому буква появляется не мгновенно: ей приходится ждать ближайшего обновления, при 60 Гц — до 16,7 мс. При наборе текста это незаметно. В быстрой игре разница видна, и экраны на 120 Гц и выше показывают движение плавнее.

За секунду при 60 Гц на экран уходит 6 220 800 · 60 = 373 248 000 байтов. Это огромный поток данных, поэтому у экрана отдельный скоростной кабель.

Частые вопросы

Клавиатура отправляет компьютеру буквы?

Нет, только номера клавиш. Поэтому одна и та же клавиатура печатает на любом языке: при смене раскладки меняется таблица в операционной системе, а клавиатура остаётся прежней.

Частота обновления и FPS — одно и то же?

Нет. FPS — это число кадров, которые игра успевает подготовить за секунду. Частота обновления — число показов памяти кадра на экране за секунду. Если игра готовит 200 кадров, а экран работает на 60 Гц, Вы увидите только 60.

Что будет, если нажимать клавиши, пока программа занята?

Нажатия не пропадут. Обработчик прерывания складывает коды клавиш в очередь, и программа заберёт их, когда освободится. Поэтому после короткого «зависания» набранный текст появляется сразу целиком.

Коротко

  • Клавиатура передаёт код клавиши — её номер. Символ по раскладке и клавише Shift определяет операционная система.
  • Опрос: компьютер сам регулярно спрашивает устройство. Прерывание: устройство подаёт сигнал, когда что-то произошло.
  • Получив прерывание, процессор запоминает место в программе, выполняет обработчик и возвращается обратно.
  • Изображение хранится в памяти кадра: там записан цвет каждого пикселя.
  • Частота обновления — сколько раз в секунду экран получает кадр. При 60 Гц один кадр длится около 16,7 мс.

Обработчики прерываний, таблицы раскладок, очередь нажатий — всё это части одной большой программы. О ней — урок Операционная система.

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

  1. Скан-код — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Скан-код (дата обращения: 09.10.2026).
  2. Прерывание — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Прерывание (дата обращения: 09.10.2026).
  3. Частота обновления — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Частота_обновления (дата обращения: 09.10.2026).
  4. Mouse DPI and USB Polling Rate — Coding Horror [Электронный ресурс]. — URL: https://blog.codinghorror.com/mouse-dpi-and-usb-polling-rate/ (дата обращения: 09.10.2026).