Матрица — это электрическая основа любой клавиатуры: она позволяет ограниченному числу выводов микроконтроллера определять нажатия десятков и сотен переключателей. Понимание принципов матрицы критично для keyboard PCB design, потому что именно матрица задаёт конфигурацию прошивки, возможности rollover и общее поведение клавиатуры.
HILPCB производит клавиатурные PCB с стабильным качеством, необходимым для надёжной работы матрицы: точное позиционирование отверстий под свитчи и корректная связность дорожек для правильного определения нажатий.
В этом руководстве
- Зачем клавиатуре матричная схема
- Процесс сканирования матрицы
- Проблема гостинга
- Диоды и N‑Key Rollover
- Конфигурации COL2ROW и ROW2COL
- Стратегии оптимизации матрицы
- Настройка QMK
Зачем клавиатуре матричная схема
Прямое подключение — когда каждый свитч соединён с отдельным выводом MCU — непрактично для любой клавиатуры, выходящей за рамки цифрового блока. Полноразмерной клавиатуре на 104 клавиши потребовалось бы 104 GPIO, что намного превышает возможности доступных микроконтроллеров вроде ATmega32U4 (26 I/O) или даже RP2040 (30 GPIO).
Матричная схема решает задачу, размещая свитчи на пересечениях линий строк и столбцов. Математическая эффективность очевидна:
Прямое подключение (104 клавиши): нужно 104 пина
Матрица 8×14 (104 клавиши): нужно 22 пина (8 строк + 14 столбцов)
Снижение числа пинов: 79%
Для клавиатуры 60% (61 клавиша) матрица 8×8 требует всего 16 пинов — остаётся достаточно I/O для LED, энкодеров, OLED‑дисплеев и других функций.
Компромисс — сложность: матричное сканирование добавляет требования по таймингу, а без дополнительных компонентов матрица подвержена «гостингу», ограничивающему корректное распознавание одновременных нажатий. Эти проблемы хорошо изучены и решаются правильным проектированием.
Процесс сканирования матрицы
Сканирование матрицы выполняется последовательно: микроконтроллер активирует одну строку (или столбец) за раз, одновременно считывая все позиции по противоположной оси. Быстро повторяя цикл для всех строк, MCU определяет, какие свитчи замкнуты.
Последовательность сканирования
- MCU устанавливает Row 0 в LOW, остальные Row — в HIGH (или в плавающее состояние с внутренними pull‑up)
- MCU одновременно считывает все выводы столбцов
- Любой столбец, читающийся как LOW, означает нажатый свитч на пересечении Row 0 и этого столбца
- MCU устанавливает Row 1 в LOW (Row 0 возвращается в HIGH) и повторяет чтение столбцов
- Процесс продолжается для всех строк, завершая один полный цикл сканирования
- Вся последовательность повторяется сотни или тысячи раз в секунду
Частота сканирования и задержка
Частота сканирования напрямую влияет на субъективную «отзывчивость» клавиатуры:
- 125Hz (8мс на цикл): заметная задержка при быстром наборе и в играх
- 500Hz (2мс): приемлемо для большинства пользователей
- 1000Hz (<1мс): стандарт для качественных клавиатур, практически мгновенно
- 8000Hz (0,125мс): маркетинг для киберспорта, практическая выгода минимальна по сравнению с 1000Hz
QMK обычно достигает 1000Hz на ATmega32U4 или RP2040 при базовой конфигурации матрицы. Сложные конфигурации (большие матрицы, много RGB, OLED‑дисплеи) могут снизить достижимую частоту, но 500Hz+ остаётся типичным значением.
Сравнение эффективности матрицы
Проблема гостинга
Гостинг возникает, когда в матрице появляются непреднамеренные пути протекания тока, из‑за чего MCU «видит» нажатия, которых не было. Понимание механизма помогает оценить, почему диоды являются обязательными.
Как появляется гостинг
Представьте три клавиши, нажатые одновременно, которые образуют три угла прямоугольника в матрице — позиции (Row0, Col0), (Row0, Col1) и (Row1, Col0).
При сканировании Row0: Col0 и Col1 корректно читаются как LOW (эти свитчи нажаты).
При сканировании Row1: Col0 корректно читается как LOW. Но Col1 тоже читается как LOW, хотя свитч в (Row1, Col1) НЕ нажат. Ток протекает «в обход»: от линии Row1 на LOW через нажатый свитч (Row1, Col0) в Col0, через нажатый свитч (Row0, Col0) в Row0, через нажатый свитч (Row0, Col1) и далее в Col1 — формируя «sneak path», из‑за которого ненажатая клавиша выглядит нажатой.
Характерные признаки гостинга
- Нужны как минимум 3 одновременных нажатия
- Эти нажатия должны образовать 3 угла прямоугольника в матрице
- 4‑й угол ошибочно регистрируется как нажатый
- Чем больше одновременных нажатий, тем больше потенциальных сценариев гостинга
Некоторые бюджетные клавиатуры используют «blocking» — некоторые комбинации просто не регистрируются вместо появления ghost‑событий. Для игр и быстрого набора это неприемлемо, потому что сложные комбинации используются постоянно.
Диоды и N‑Key Rollover
Диод, включённый последовательно с каждым свитчем, устраняет гостинг, не позволяя току течь назад через матрицу. Диоды проводят только в одном направлении — от анода к катоду — блокируя обходные пути, приводящие к ложным срабатываниям.
Как диоды предотвращают гостинг
При правильной ориентации диодов ток может протекать от свитча к линии строки (или столбца), но не может протекать обратно с этой линии через другой свитч. Каждая позиция становится электрически изолированной и не может формировать ghost‑цепи. MCU считывает только реальные нажатия независимо от того, сколько клавиш нажато одновременно.
Итог: N‑Key Rollover (NKRO)
При использовании диодов на каждый свитч:
- Любые сочетания клавиш определяются корректно
- Нет «заблокированных» комбинаций
- Поведение стабильно при одновременных нажатиях
- Это необходимо для игр и быстрого набора
Поэтому во всех качественных механических клавиатурах ставят по одному диоду на свитч. Стоимость компонентов и усложнение сборки окупаются резким улучшением функциональности.
Распространённые варианты диодов
- 1N4148 (выводной DO‑35): классический вариант, легко паять вручную, большой footprint
- 1N4148W (SOD‑123): стандартный SMT‑корпус, хороший баланс размера и удобства
- 1N4148WS (SOD‑323): более компактный SMT для плотных дизайнов
- BAV70 (SOT‑23): двойной диод с общей катодной точкой — обслуживает два свитча, снижает количество компонентов
Детали ориентации — в статье keyboard diode direction.

Конфигурации COL2ROW и ROW2COL
Существуют две стандартные конфигурации матриц клавиатур, отличающиеся тем, какая ось «подаёт» сигнал, а какая считывает результат. Обе работают одинаково хорошо — выбор обычно определяется удобством трассировки.
COL2ROW (самая распространённая)
- Катод диода (сторона с маркировкой) подключается к линии ROW
- Пины столбцов настраиваются как выходы и во время сканирования устанавливаются в LOW
- Пины строк настраиваются как входы с pull‑up резисторами
- Подсказка: «COL2ROW = Cathode to Row» — буква «C» есть в обоих словах
Конфигурация QMK: #define DIODE_DIRECTION COL2ROW
ROW2COL (альтернатива)
- Катод диода подключается к линии COLUMN
- Пины строк — выходы, во время сканирования устанавливаются в LOW
- Пины столбцов — входы с pull‑up
- Сигнал идёт от Row через свитч и диод К COLumn
Конфигурация QMK: #define DIODE_DIRECTION ROW2COL
Критическое требование
Прошивка должна точно соответствовать аппаратной реализации. Если на PCB используется COL2ROW, а в прошивке указано ROW2COL, матрица не будет работать. Такое несоответствие — частая причина «мертвой клавиатуры» при первом запуске.
Типовые размеры матриц клавиатур
Стратегии оптимизации матрицы
Грамотная организация матрицы упрощает трассировку PCB, облегчает разработку прошивки и минимизирует потребность в GPIO.
Баланс строк и столбцов
Для заданного числа клавиш математически возможны разные размеры. Плата на 60 клавиш может использовать 5×12 (17 пинов), 6×10 (16 пинов) или 8×8 (16 пинов с 4 неиспользуемыми позициями).
Квадратные или близкие к квадрату матрицы обычно минимизируют общее количество пинов и при этом балансируют сложность трассировки между слоями. Примерно равное количество горизонтальных и вертикальных линий распределяет работу по трассировке более равномерно.
Физическое соответствие
Если строки матрицы совпадают с физическими рядами клавиатуры, трассировка и работа с прошивкой становятся проще:
- Дорожки строк естественно идут горизонтально (как физический layout)
- Дорожки столбцов идут вертикально
- Определение keymap становится интуитивным (визуально соответствует клавиатуре)
- Меньше пересечений и меньше via
Запасные позиции
Оставляйте свободные позиции матрицы для вариантов раскладки:
- Split Backspace (две клавиши 1u вместо одной 2u)
- ISO Enter vs ANSI Enter
- Split Right Shift
- Альтернативные варианты нижнего ряда
Матрица 8×8 для 61 клавиши оставляет 3 позиции для альтернатив без добавления пинов.
Настройка QMK
QMK требует точного описания матрицы, совпадающего с аппаратной реализацией. Прошивке нужны размеры матрицы, назначение пинов и направление диодов.
Конфигурация в config.h
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7 }
#define DIODE_DIRECTION COL2ROW
Имена пинов зависят от MCU: ATmega использует B0, D2, F4; RP2040 — GP0, GP1 и т. п. Всегда сверяйтесь с datasheet выбранного микроконтроллера.
Проверка и валидация
Перед финализацией прошивки:
- Прошейте базовую прошивку с включённым matrix debug
- Замыкайте каждую позицию свитча пинцетом
- Следите за debug‑выводом: строка/столбец должны определяться корректно
- Проверьте одновременные нажатия, чтобы исключить гостинг
- Убедитесь, что все ожидаемые позиции регистрируются правильно
Типовые симптомы:
- Не работает целая строка/столбец → ошибка трассировки или неверное назначение пинов
- Отдельные «мертвые» клавиши → проблемы с конкретными диодами
- Не работает вся матрица → несоответствие DIODE_DIRECTION
Производство матричных клавиатурных PCB в HILPCB
HILPCB изготавливает клавиатурные PCB с точностью, необходимой для надёжных матричных схем:
- Позиционирование отверстий: стабильное выравнивание свитчей по всей плате
- Металлизация via: 20–25μm меди в barrel для надёжных сквозных соединений
- Равномерность дорожек: ±10% по панелям для стабильных электрических характеристик
- Установка диодов: SMT assembly с проверенной ориентацией для распространённых корпусов
Мы поддерживаем проекты от прототипов до объёмов group buy с одинаково стабильным качеством.
Свяжитесь с HILPCB для ревью матричного дизайна и расчёта стоимости производства.

