[태그:] BluetoothSIG

  • 키 입력은 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 안에 처리되기 때문에 가능한 것입니다.