[태그:] 키보드구조

  • 키보드 매트릭스 구조 완벽 이해|행과 열 스캔부터 NKRO까지

    키보드 매트릭스 구조 완벽 이해|행과 열 스캔부터 NKRO까지

    LINK&TEM GUIDE

    키보드 매트릭스 구조

    수백 개의 키를 적은 핀으로 읽어내는 원리부터 고스팅·N키 롤오버까지

    📌 핵심 요약
    • 키보드는 모든 키를 개별 배선하지 않고 행(Row)과 열(Column) 구조의 매트릭스로 구성됩니다.
    • 마이크로컨트롤러는 행과 열을 매우 빠르게 스캔하여 어떤 키가 눌렸는지 판단합니다.
    • 매트릭스 구조 덕분에 배선 수와 MCU 핀 수를 크게 줄일 수 있습니다.
    • 고스팅과 키 충돌은 매트릭스 구조 때문에 발생하며 다이오드가 이를 해결합니다.
    • USB HID와 Bluetooth HID로 전달되는 키 데이터도 결국 매트릭스 스캔 결과입니다.

    키보드를 분해해 보면 키는 80개가 넘는데 메인 칩으로 연결되는 배선은 생각보다 훨씬 적습니다. 처음 보는 사람이라면 “모든 키가 각각 연결되어 있지 않은데 어떻게 어떤 키를 눌렀는지 알 수 있을까?”라는 의문이 생깁니다.

    그 비밀이 바로 키보드 매트릭스(Keyboard Matrix) 구조입니다. 현대의 거의 모든 멤브레인 키보드와 기계식 키보드는 이 방식을 사용하며, MCU는 초당 수백~수천 번 행(Row)과 열(Column)을 스캔하여 입력을 감지합니다.

    이번 글에서는 키보드 매트릭스가 왜 필요한지부터 실제 스캔 과정, 고스팅(Ghosting), 키 충돌(Key Blocking), N-Key Rollover(NKRO)까지 순서대로 살펴보겠습니다.


    1. 키보드 매트릭스란?

    키보드 매트릭스는 여러 개의 키를 행(Row)과 열(Column)으로 구성하여 적은 수의 배선으로 많은 키를 연결하는 구조입니다.

    예를 들어 키가 100개 있다고 해서 배선도 100개가 필요한 것은 아닙니다. 10개의 행과 10개의 열만 있으면 100개의 교차 지점을 만들 수 있으며, 각 교차점마다 하나의 키를 배치할 수 있습니다.

    방식 100개 키 연결
    개별 배선 100개 이상의 MCU 핀 필요
    10×10 매트릭스 20개의 신호선만 사용

    즉 매트릭스 구조는 하드웨어 비용을 줄이고 PCB 설계를 단순하게 만들며 MCU의 입출력 핀을 효율적으로 사용하는 가장 중요한 기술입니다.

    💡 Link&Tem Insight

    매트릭스는 키보드에서만 사용하는 구조가 아닙니다. 계산기, 리모컨, 산업용 키패드, ATM, POS 단말기 등 수많은 입력 장치가 같은 원리를 사용합니다.

    2. 왜 모든 키를 따로 연결하지 않을까?

    만약 키마다 MCU 핀 하나씩 연결한다면 100키 키보드는 최소 100개의 GPIO가 필요합니다. 하지만 대부분의 키보드 MCU는 그렇게 많은 입출력 핀을 제공하지 않습니다.

    또한 PCB 배선은 훨씬 복잡해지고 제조 비용도 크게 증가합니다. 매트릭스 구조는 이런 문제를 매우 효율적으로 해결합니다.

    예를 들어 18개의 행과 6개의 열만 사용해도 108개의 키를 연결할 수 있습니다. 실제 풀배열 키보드가 이와 비슷한 구조를 사용하는 경우가 많습니다.

    매트릭스 구조의 장점
    • MCU 핀 수 감소
    • PCB 설계 단순화
    • 제조 비용 절감
    • 전력 소비 감소
    • 작은 컨트롤러 사용 가능

    3. 실제로 키를 어떻게 찾을까?

    MCU는 모든 키를 동시에 읽지 않습니다. 대신 행(Row)을 하나씩 활성화하면서 모든 열(Column)의 상태를 검사합니다. 이를 매트릭스 스캔(Matrix Scan)이라고 합니다.

    예를 들어 Row1에 전압을 인가하면 해당 행의 모든 키가 활성화됩니다. 이후 Column을 읽어 어느 위치가 연결되었는지를 확인합니다.

    만약 Row3과 Column5가 연결되었다면 MCU는 “Row3-Column5 위치의 스위치가 눌렸다.”고 판단합니다.

    TIP

    이 스캔 과정은 사람이 느끼지 못할 정도로 빠르게 반복됩니다. 일반적으로 초당 수백~수천 번 이상 스캔하기 때문에 동시에 여러 키를 눌러도 자연스럽게 입력됩니다.
    💡 Link&Tem Insight

    QMK Firmware에서도 키 입력은 Matrix Scan Task가 반복 실행되며, 이 과정에서 스위치 상태를 읽고 디바운스를 수행한 뒤 최종 키 이벤트를 생성합니다.

    4. 스캔 이후에는 어떤 일이 일어날까?

    매트릭스 스캔으로 키 입력이 감지되었다고 해서 바로 PC로 전송되는 것은 아닙니다.

    먼저 디바운스 과정을 거쳐 노이즈를 제거하고, 실제 눌림으로 판단되면 펌웨어가 해당 키코드로 변환합니다.

    이후 USB HID 또는 Bluetooth HID 보고서(Report)를 생성하여 운영체제로 전송합니다. 운영체제는 이 HID Report를 받아 문자 입력이나 단축키 실행을 처리합니다.

    입력 처리 순서
    1. 스위치 눌림
    2. 매트릭스 스캔
    3. 디바운스
    4. 키코드 생성
    5. USB HID / Bluetooth HID Report 생성
    6. 운영체제 전달
    Part 1 정리

    키보드 매트릭스는 수많은 키를 적은 수의 배선으로 연결하기 위한 핵심 구조입니다. MCU는 행과 열을 매우 빠르게 스캔하여 입력을 감지하며, 이후 디바운스와 HID 변환 과정을 거쳐 PC로 키 정보를 전달합니다. 다음에서는 고스팅, 키 충돌, 다이오드, N-Key Rollover의 원리를 자세히 알아보겠습니다.

    5. 고스팅(Ghosting)은 왜 발생할까?

    매트릭스 구조는 매우 효율적이지만 구조적인 한계도 있습니다. 대표적인 문제가 바로 고스팅(Ghosting)입니다.

    고스팅은 여러 개의 키를 동시에 눌렀을 때 실제로 누르지 않은 키까지 눌린 것처럼 인식되는 현상을 말합니다. 이는 행과 열이 서로 공유되는 구조에서 전류가 예상하지 않은 경로로 흐르면서 발생합니다.

    예를 들어 하나의 사각형 형태를 이루는 네 개의 키 중 세 개를 동시에 누르면 MCU는 마지막 한 개도 눌린 것으로 오인할 수 있습니다. 이러한 현상은 과거 멤브레인 키보드에서 자주 발생했으며, 게임을 할 때 특정 키 조합이 제대로 입력되지 않는 원인이 되기도 했습니다.

    고스팅이 발생하는 대표 상황
    • 여러 키가 같은 행과 열을 공유하는 경우
    • 다이오드가 없는 매트릭스
    • 저가형 멤브레인 키보드
    • 동시에 많은 키를 입력하는 게임 환경

    일반적인 문서 작업에서는 크게 문제가 되지 않지만 FPS 게임이나 리듬 게임처럼 여러 키를 동시에 누르는 상황에서는 입력 오류가 체감될 수 있습니다.

    💡 Link&Tem Insight

    고스팅은 소프트웨어 버그가 아닙니다. 대부분 하드웨어 회로 구조에서 발생하는 현상이며 펌웨어만으로 완전히 해결하기는 어렵습니다.

    6. 다이오드는 왜 필요할까?

    고스팅을 해결하기 위해 대부분의 기계식 키보드는 각 스위치마다 다이오드를 하나씩 추가합니다.

    다이오드는 전류가 한 방향으로만 흐르도록 만드는 부품입니다. 이를 통해 전류가 다른 경로로 우회하는 것을 막아 잘못된 키 인식을 방지합니다.

    구조 동시 입력
    다이오드 없음 고스팅 가능
    다이오드 있음 정확한 입력 유지

    QMK 공식 문서에서도 NKRO 구현을 위해서는 스위치마다 다이오드를 사용하는 구성이 일반적이라고 설명합니다.

    7. N-Key Rollover(NKRO)란?

    N-Key Rollover는 사용자가 동시에 누른 모든 키를 정확하게 인식하는 기능입니다.

    예를 들어 10개의 키를 동시에 누르면 10개 모두 정확하게 전달되고, 20개를 누르면 20개 모두 전달됩니다. 여기서 N은 제한이 없는 임의의 개수를 의미합니다.

    롤오버 종류
    • 2KRO : 두 개 정도만 안정적으로 입력
    • 6KRO : USB 기본 HID에서 많이 사용
    • NKRO : 거의 모든 키 동시 입력 가능

    대부분의 고급 기계식 키보드는 NKRO를 지원하며 게임용 키보드의 주요 특징으로 소개됩니다.

    💡 Link&Tem Insight

    USB HID의 기본 Boot Protocol은 6개의 일반 키 입력만 전송할 수 있습니다. 하지만 Report Protocol에서는 확장된 HID Report를 사용하여 NKRO를 구현할 수 있습니다.

    8. 디바운스와 매트릭스는 어떤 관계일까?

    매트릭스 스캔만으로는 정확한 입력을 보장할 수 없습니다. 기계식 스위치는 눌리는 순간 금속 접점이 여러 번 튀기 때문에 매우 짧은 시간 동안 여러 번 눌린 것처럼 보일 수 있습니다.

    이를 제거하는 과정이 바로 디바운스(Debounce)입니다.

    즉 입력 순서는 다음과 같습니다.

    입력 처리 과정
    1. 행·열 스캔
    2. 스위치 감지
    3. 디바운스 수행
    4. 키코드 생성
    5. USB HID 또는 Bluetooth HID 전송

    즉 매트릭스는 위치를 찾는 기술이고, 디바운스는 입력을 안정화하는 기술입니다. 두 과정이 모두 완료되어야 하나의 정상적인 키 입력이 완성됩니다.

    9. 자주 묻는 질문

    Q. 기계식 키보드는 모두 NKRO를 지원하나요?

    대부분 지원하지만 제품마다 차이가 있습니다. 일부 저가형 제품은 6KRO만 지원하기도 합니다.

    Q. 멤브레인 키보드도 매트릭스를 사용하나요?

    네. 대부분의 멤브레인 키보드 역시 같은 행과 열 구조를 사용합니다.

    Q. 고스팅은 소프트웨어 문제인가요?

    아닙니다. 대부분 회로 구조와 다이오드 구성 여부에 의해 결정됩니다.

    Q. USB와 Bluetooth에서도 같은 매트릭스를 사용하나요?

    네. 입력을 감지하는 과정은 동일하며 이후 전송 방식만 USB HID 또는 Bluetooth HID로 달라집니다.

    Q. MCU 성능이 좋아지면 매트릭스가 필요 없나요?

    아닙니다. 핀 수와 PCB 설계 효율 때문에 현재도 거의 모든 키보드가 매트릭스 구조를 사용합니다.

    📚 함께 보면 좋은 글

    키보드가 입력을 감지한 이후 PC까지 전달되는 전체 과정을 이해하면 키보드 내부 구조를 더욱 쉽게 이해할 수 있습니다. 아래 글을 함께 읽으면 입력 처리 흐름을 처음부터 끝까지 연결해서 볼 수 있습니다.

    🔗 공식 자료

    📖 출처

    • QMK Documentation
    • QMK Matrix Scanning Documentation
    • QMK NKRO Documentation
    • USB Implementers Forum – HID Class
    • Bluetooth SIG – HID over GATT Profile
    Link&Tem 한 줄 정리

    키보드 매트릭스는 수많은 키를 적은 수의 배선으로 읽기 위한 핵심 기술이며, 여기에 다이오드·디바운스·HID 프로토콜이 결합되어 우리가 누른 키가 정확하게 PC까지 전달됩니다.

  • 키 입력은 PC까지 어떻게 전달될까? 키보드 입력의 전체 동작 원리

    키 입력은 PC까지 어떻게 전달될까? 키보드 입력의 전체 동작 원리

    LINK&TEM GUIDE

    키 입력은 PC까지 어떻게 전달될까?

    키를 누르는 순간부터 운영체제가 입력을 인식하기까지의 전체 과정

    📌 핵심 요약
    • 키 입력은 스위치가 눌리는 것만으로 끝나지 않고 여러 단계의 전기 신호 처리 과정을 거칩니다.
    • 키보드 MCU가 매트릭스를 스캔하고 디바운스를 수행한 뒤 HID 리포트를 생성합니다.
    • USB 또는 Bluetooth를 통해 HID 데이터가 PC로 전달됩니다.
    • 운영체제는 HID 드라이버를 통해 입력을 해석하고 프로그램으로 전달합니다.
    • 전체 과정은 일반적으로 수 밀리초(ms) 안에 완료됩니다.

    우리가 키보드의 A 키를 누르면 화면에는 거의 즉시 A가 입력됩니다. 너무 빠르게 이루어지기 때문에 단순히 “키를 누르면 컴퓨터가 글자를 출력한다” 정도로 생각하기 쉽지만, 실제 내부에서는 수많은 단계가 매우 짧은 시간 안에 연속적으로 수행됩니다.

    기계식 스위치가 접점을 연결하는 순간부터 키보드 내부 마이크로컨트롤러(MCU)는 전기 신호를 감지하고, 어떤 키가 눌렸는지 계산합니다. 이후 노이즈를 제거하는 디바운스 과정을 거친 뒤 USB HID 또는 Bluetooth HID 규격에 맞는 데이터 패킷을 만들어 PC로 전송합니다.

    PC 역시 단순히 데이터를 받는 것으로 끝나지 않습니다. 운영체제는 HID 드라이버를 통해 데이터를 해석하고, 키보드 레이아웃을 적용하며, 현재 실행 중인 프로그램으로 해당 입력 이벤트를 전달합니다. 우리가 화면에서 보는 글자는 이 모든 과정이 끝난 결과입니다.


    1. 키를 누르는 순간 가장 먼저 일어나는 일

    가장 먼저 일어나는 변화는 기계식 스위치 내부입니다. 사용자가 키캡을 누르면 스템이 아래로 이동하면서 금속 접점이 서로 연결됩니다. 이때 전기가 흐르기 시작하고 하나의 회로가 닫히게 됩니다.

    하지만 키보드는 스위치마다 전선을 하나씩 연결하지 않습니다. 대부분의 키보드는 수십 개에서 백 개가 넘는 키를 효율적으로 관리하기 위해 키보드 매트릭스(Matrix) 구조를 사용합니다.

    즉 하나의 스위치가 눌렸다는 것은 특정 행(Row)과 특정 열(Column)이 연결되었다는 의미입니다. MCU는 이 정보를 이용하여 어떤 키가 눌렸는지 계산합니다.

    Link&Tem Insight

    많은 사람들이 키마다 독립적인 선이 연결되어 있다고 생각하지만 실제 키보드는 행과 열을 반복적으로 스캔하는 방식으로 동작합니다. 이것이 키보드 매트릭스 구조가 필요한 이유입니다.

    2. MCU는 키를 어떻게 찾을까?

    키보드 내부에는 MCU(Microcontroller Unit)가 있습니다. MCU는 초당 수백 번에서 수천 번까지 행과 열을 매우 빠르게 스캔합니다.

    예를 들어 첫 번째 행에 전압을 공급한 뒤 어떤 열에서 신호가 들어오는지를 확인합니다. 이후 두 번째 행, 세 번째 행을 같은 방식으로 반복합니다.

    이 과정을 매우 빠르게 반복하기 때문에 사용자는 키 입력 지연을 거의 느끼지 못합니다.

    단계 MCU 동작
    행(Row)에 전압 인가
    열(Column)의 전압 확인
    어느 키인지 계산
    다음 행으로 이동
    TIP 게이밍 키보드가 8000Hz Polling Rate를 지원한다고 해서 스위치를 초당 8000번 읽는 것은 아닙니다. 내부 Matrix Scan 속도와 USB Polling은 서로 다른 개념입니다.

    3. 디바운스 과정이 필요한 이유

    기계식 스위치는 눌리는 순간 금속 접점이 한 번만 닫히지 않습니다. 아주 짧은 시간 동안 여러 번 튀는(Bounce) 현상이 발생합니다.

    만약 MCU가 이를 그대로 입력으로 처리한다면 한 번 눌렀는데 여러 번 입력되는 문제가 발생합니다.

    이를 방지하기 위해 대부분의 키보드는 3~10ms 정도의 디바운스 알고리즘을 사용합니다. 최근 고성능 키보드는 하드웨어와 펌웨어를 함께 이용해 더 짧은 시간 안에 안정적인 입력을 처리하기도 합니다.

    Link&Tem Insight

    입력 지연을 줄인다고 무조건 디바운스 시간을 줄이면 오히려 오입력이 증가할 수 있습니다. 좋은 키보드는 빠른 응답과 안정성 사이에서 균형을 맞추도록 설계됩니다.

    4. HID 리포트는 어떻게 만들어질까?

    MCU는 “A 키가 눌렸다”라는 내부 정보를 그대로 보내지 않습니다. USB와 Bluetooth가 이해할 수 있는 HID(Human Interface Device) 형식으로 데이터를 변환합니다.

    예를 들어 현재 눌려 있는 Modifier 키(Ctrl, Shift, Alt), 일반 키 코드, 예약 비트 등을 포함한 HID Report를 생성합니다.

    이 데이터는 USB 케이블이나 Bluetooth 무선 연결을 통해 컴퓨터로 전달됩니다.

    HID Report 구성 예시
    • Modifier Key 상태
    • 예약 비트
    • 현재 눌린 Key Code
    • 동시에 입력된 다른 키 정보

    USB HID 규격은 제조사가 달라도 운영체제가 별도 드라이버 없이 키보드를 사용할 수 있도록 만든 국제 표준입니다. 따라서 대부분의 키보드는 PC에 연결하면 자동으로 인식됩니다.

    Part 1 정리

    키 입력은 스위치가 눌리는 순간 끝나는 것이 아니라 매트릭스 스캔, 디바운스, HID Report 생성이라는 여러 단계를 거쳐 준비됩니다. 다음에서는 USB 또는 Bluetooth를 통해 PC까지 전달되는 과정과 운영체제가 이를 어떻게 문자 입력으로 처리하는지 이어서 살펴보겠습니다.

    5. USB 또는 Bluetooth로 데이터가 전송되는 과정

    이제 MCU가 HID Report를 완성했다면 다음 단계는 컴퓨터로 데이터를 보내는 것입니다. 사용하는 연결 방식에 따라 내부 과정은 조금 달라지지만, 최종적으로 운영체제에 전달되는 HID 데이터의 의미는 동일합니다.

    유선 키보드는 USB를 통해 데이터를 전송하며, 무선 키보드는 Bluetooth HID 프로파일을 이용하거나 2.4GHz 전용 리시버를 통해 데이터를 전달합니다. 이 과정에서 운영체제가 이해할 수 있는 표준 HID 형식을 사용하기 때문에 별도의 전용 드라이버가 없어도 대부분 즉시 사용할 수 있습니다.

    연결 방식 전송 방식 특징
    USB USB HID 낮은 지연시간, 높은 안정성
    Bluetooth Bluetooth HID 전력 효율 우수, 무선 사용
    2.4GHz 전용 프로토콜 게임용에서 많이 사용

    USB는 호스트(PC)가 일정한 주기로 키보드에게 “새로운 데이터가 있습니까?”라고 질문(Polling)하는 방식으로 동작합니다. 키보드는 현재 눌린 키 상태를 HID Report 형태로 응답합니다.

    6. 운영체제는 입력을 어떻게 처리할까?

    컴퓨터는 HID Report를 받는 즉시 화면에 글자를 출력하지 않습니다. 먼저 USB HID 드라이버 또는 Bluetooth HID 드라이버가 데이터를 해석합니다.

    예를 들어 HID Key Code 0x04는 문자 A를 의미하지만, 실제로 화면에 A가 출력될지 a가 출력될지는 현재 Shift 상태와 키보드 레이아웃에 따라 달라집니다.

    운영체제는 현재 언어 설정, Caps Lock 상태, Shift 입력 여부 등을 모두 고려한 뒤 최종 문자 이벤트를 생성합니다.

    Link&Tem Insight

    키보드는 실제 문자를 보내지 않습니다. 대부분의 경우 “어떤 키가 눌렸다”는 코드만 보낼 뿐이며, 문자 변환은 Windows, macOS, Linux 같은 운영체제가 담당합니다.

    7. 프로그램은 언제 입력을 받을까?

    운영체제가 키 입력 이벤트를 생성하면 현재 포커스를 가지고 있는 프로그램이 해당 이벤트를 전달받습니다.

    메모장을 사용하고 있다면 메모장이 문자를 입력받고, 게임을 실행 중이라면 게임 엔진이 같은 키 이벤트를 받아 캐릭터 이동이나 공격 동작으로 해석합니다.

    즉 하나의 HID 데이터라도 프로그램마다 서로 다른 방식으로 처리될 수 있습니다.

    입력 이벤트 처리 순서
    1. 키 입력 발생
    2. MCU가 키 감지
    3. 디바운스 수행
    4. HID Report 생성
    5. USB/Bluetooth 전송
    6. 운영체제가 HID 해석
    7. 프로그램으로 이벤트 전달
    8. 문자 입력 또는 기능 실행

    8. 입력 지연(Input Latency)은 어디서 생길까?

    많은 사람들이 입력 지연이 USB Polling Rate만으로 결정된다고 생각하지만 실제로는 여러 단계가 영향을 줍니다.

    구간 영향
    스위치 접점 형성 시간
    매트릭스 스캔 MCU Scan Rate
    디바운스 노이즈 제거 시간
    USB Polling 호스트 요청 주기
    운영체제 입력 처리
    프로그램 렌더링 및 반응

    따라서 8000Hz Polling Rate만 지원한다고 해서 무조건 입력이 빠른 것은 아닙니다. MCU 성능, 펌웨어 최적화, 디바운스 알고리즘, 운영체제 처리 속도까지 모두 영향을 줍니다.

    TIP

    게이밍 키보드의 체감 성능은 Polling Rate 하나보다 MCU 처리 속도와 펌웨어 품질이 더 크게 영향을 주는 경우도 많습니다.

    9. 자주 묻는 질문(FAQ)

    Q. 키보드는 실제 문자를 보내나요?

    아닙니다. 대부분의 키보드는 HID Key Code만 전송하며 실제 문자 변환은 운영체제가 수행합니다.

    Q. USB와 Bluetooth는 내부 방식이 완전히 다른가요?

    전송 방식은 다르지만 최종적으로는 HID 규격을 이용해 입력 정보를 운영체제에 전달한다는 점은 동일합니다.

    Q. Polling Rate가 높으면 항상 좋은가요?

    아닙니다. MCU 성능과 디바운스, 펌웨어 최적화가 함께 뒷받침되어야 실제 지연시간이 줄어듭니다.

    Q. 운영체제는 왜 키보드 드라이버 없이도 대부분 인식하나요?

    USB HID와 Bluetooth HID는 국제 표준 규격이기 때문에 Windows, macOS, Linux가 기본적으로 지원합니다.

    Q. 입력은 보통 얼마나 걸리나요?

    키보드 종류와 환경에 따라 다르지만 일반적으로 수 ms 수준에서 대부분의 과정이 완료됩니다.

    📚 함께 보면 좋은 글

    키 입력 과정을 이해했다면 HID 규격과 키보드 내부 구조를 함께 살펴보면 전체 입력 시스템을 더욱 쉽게 이해할 수 있습니다.

    🔗 공식 자료

    📖 출처

    • USB Implementers Forum
    • Bluetooth SIG
    • Microsoft Learn
    • QMK Documentation
    • USB HID Device Class Specification
    Link&Tem 한 줄 정리

    키 입력은 스위치가 눌리는 순간부터 MCU의 매트릭스 스캔, 디바운스, HID Report 생성, USB·Bluetooth 전송, 운영체제 해석을 거쳐 프로그램으로 전달됩니다. 우리가 느끼는 빠른 입력은 이 모든 과정이 수 ms 안에 처리되기 때문에 가능한 것입니다.