[태그:] 키보드 매트릭스

  • VIA가 JSON을 읽는 과정|키보드 인식부터 키맵 변경까지

    VIA가 JSON을 읽는 과정|키보드 인식부터 키맵 변경까지

    LINK&TEM GUIDE

    VIA가 JSON을 읽는 과정

    파일 불러오기부터 키보드 식별·레이아웃 생성·펌웨어 통신까지

    📌 핵심 요약
    • VIA의 JSON은 펌웨어 자체가 아니라 키보드의 구조와 화면 표시 방식을 설명하는 정의 파일입니다.
    • VIA는 JSON을 파싱한 뒤 Vendor ID와 Product ID를 이용해 연결된 USB 장치와 정의를 연결합니다.
    • 키 배열은 JSON의 행·열 좌표, 크기, 회전값, 레이아웃 옵션을 바탕으로 화면에 생성됩니다.
    • JSON을 불러왔다고 키보드 펌웨어가 바뀌는 것은 아니며 실제 키맵 변경은 VIA 프로토콜을 통해 펌웨어로 전달됩니다.
    • JSON이 잘못되면 배열이 어긋나거나 장치가 표시되지 않을 수 있지만, 올바른 파일을 다시 불러오면 대부분 해결할 수 있습니다.

    VIA에서 키보드용 JSON 파일을 불러오면 몇 초 뒤 화면에 실제 키보드와 비슷한 배열이 나타납니다. 겉으로 보면 VIA가 JSON 파일 안에 저장된 키맵을 그대로 꺼내 보여주는 것처럼 느껴질 수 있습니다. 하지만 실제 동작은 그보다 여러 단계로 나뉩니다.

    JSON 파일은 키보드 펌웨어를 담은 파일도 아니고, 현재 사용 중인 키맵 전체를 저장한 백업 파일도 아닙니다. VIA가 해당 키보드를 어떤 장치로 식별해야 하는지, 화면에 몇 개의 키를 어느 위치에 배치해야 하는지, 사용자가 선택할 수 있는 물리 배열은 무엇인지 설명하는 키보드 정의 파일에 가깝습니다.

    VIA는 먼저 JSON의 문법을 검사하고 필요한 속성을 읽습니다. 그다음 USB로 연결된 장치의 식별 정보와 JSON의 정보를 비교하고, 레이아웃 데이터를 이용해 키보드 모양을 구성합니다. 이후 사용자가 화면에서 키를 변경하면 JSON에 직접 저장하는 것이 아니라 VIA 프로토콜을 통해 키보드 펌웨어에 명령을 전송합니다.

    따라서 VIA의 동작을 제대로 이해하려면 JSON 파일, 웹 애플리케이션, 브라우저의 장치 접근 기능, USB HID 통신, 키보드 펌웨어를 서로 구분해서 볼 필요가 있습니다. 이번 글에서는 사용자가 JSON 파일을 불러온 순간부터 키보드 배열이 화면에 나타나고 실제 키맵 변경 명령이 전달되기 전까지의 과정을 순서대로 살펴보겠습니다.


    1. JSON을 불러오면 가장 먼저 무엇이 일어날까?

    사용자가 VIA의 Design 탭에서 JSON 파일을 선택하면 가장 먼저 실행되는 작업은 파일 읽기와 JSON 파싱입니다. 파싱은 문자열로 저장된 JSON 내용을 프로그램이 사용할 수 있는 데이터 구조로 변환하는 과정입니다.

    JSON 파일은 사람이 읽을 수 있는 텍스트 형태이지만, VIA는 파일 내용을 단순한 문장으로 취급하지 않습니다. 중괄호 안의 객체, 대괄호 안의 배열, 속성 이름과 값의 관계를 분석해 각각을 프로그램 내부의 데이터로 바꿉니다.

    예를 들어 JSON 안에 키보드 이름, Vendor ID, Product ID, 키 배열 정보가 들어 있다면 VIA는 이를 각각 별도의 속성으로 분리합니다. 이후 화면 제목에는 키보드 이름을 사용하고, 장치 식별 과정에는 Vendor ID와 Product ID를 사용하며, 키보드 그림을 만들 때는 레이아웃 데이터를 사용합니다.

    JSON을 불러온 직후의 처리 순서
    1. 사용자가 로컬 저장장치에서 JSON 파일을 선택합니다.
    2. 브라우저가 파일의 텍스트 내용을 읽습니다.
    3. VIA가 JSON 문법에 맞게 작성되었는지 파싱합니다.
    4. 필수 속성과 지원되는 정의 버전을 확인합니다.
    5. 키보드 식별 정보와 레이아웃 정보를 내부 데이터로 저장합니다.
    6. 연결된 장치와 정의를 연결할 준비를 합니다.

    이 단계에서 쉼표가 빠졌거나 따옴표가 닫히지 않은 경우처럼 JSON 문법 자체가 잘못되어 있으면 VIA는 내용을 정상적으로 해석할 수 없습니다. 파일은 선택되었지만 아무 변화가 없거나 정의를 불러올 수 없다는 오류가 표시될 수 있습니다.

    반대로 문법은 올바르지만 VIA가 요구하는 필수 속성이 빠진 경우도 있습니다. 이때는 일반 JSON 파서에서는 정상 파일로 판정될 수 있지만, VIA 키보드 정의로서는 불완전합니다. 즉 JSON 문법이 맞는 것VIA 규격에 맞는 것은 서로 다른 조건입니다.

    💡 Link&Tem Insight

    VIA는 JSON을 읽을 때 모든 내용을 한 번에 같은 용도로 처리하지 않습니다. 장치 식별에 쓰이는 정보, 화면 구성에 쓰이는 정보, 레이아웃 옵션에 쓰이는 정보를 분리해 사용합니다. 따라서 한 부분이 잘못되면 전체가 완전히 멈추기도 하지만, 경우에 따라서는 장치는 잡히고 배열만 어긋나는 부분 오류가 나타날 수도 있습니다.

    2. VIA JSON은 펌웨어 파일이 아니다

    VIA JSON을 이해할 때 가장 먼저 구분해야 하는 것은 정의 파일과 펌웨어 파일의 차이입니다. JSON을 불러오면 키보드 화면이 바뀌기 때문에 JSON이 키보드 내부 프로그램을 수정한다고 생각하기 쉽지만, 일반적인 VIA 키보드 정의 JSON은 펌웨어를 플래시하지 않습니다.

    펌웨어는 키보드 마이크로컨트롤러에서 직접 실행되는 프로그램입니다. 키 매트릭스를 스캔하고, 디바운스를 처리하며, 눌린 키를 키코드로 변환하고, USB HID 보고서를 PC에 전송하는 역할을 담당합니다. VIA 기능을 사용하려면 이러한 펌웨어 안에 VIA 통신 기능이 미리 포함되어 있어야 합니다.

    반면 키보드 정의 JSON은 VIA 애플리케이션이 해당 펌웨어와 어떻게 대응해야 하는지 알려줍니다. 화면에 표시할 키보드 이름, USB 장치 식별값, 키의 위치와 크기, 선택 가능한 레이아웃 구성을 설명합니다.

    구분 키보드 정의 JSON 펌웨어
    실행 위치 VIA 애플리케이션 키보드 MCU
    주요 역할 장치와 화면 구조 설명 스캔·키 처리·USB 통신
    파일 적용 결과 VIA 화면에 정의 등록 키보드 동작 코드 변경
    잘못 적용했을 때 배열 오류·인식 불일치 부팅 또는 기능 문제 가능

    이 차이를 알면 JSON을 잘못 불러왔을 때 왜 키보드가 바로 고장 나지 않는지도 이해할 수 있습니다. VIA가 잘못된 화면 정의를 사용한 것이지, 키보드의 실행 코드를 다시 기록한 것은 아니기 때문입니다.

    다만 화면에 표시된 키 위치와 펌웨어의 키 인덱스가 맞지 않는 상태에서 키맵을 변경하면 의도하지 않은 위치의 키가 바뀔 수 있습니다. 따라서 배열이 어긋나 있거나 키 수가 맞지 않을 때는 설정을 계속 저장하기보다 올바른 JSON을 다시 확인하는 것이 안전합니다.

    실행 TIP

    JSON을 불러온 뒤에는 곧바로 키를 변경하지 말고 화면의 키 개수, Enter 키 모양, 스페이스바 길이, 노브 위치가 실제 키보드와 일치하는지 먼저 확인하는 것이 좋습니다. 물리 배열이 맞아야 화면에서 선택한 키와 펌웨어에 전달되는 키 위치도 정확하게 대응합니다.

    3. VIA는 Vendor ID와 Product ID로 장치를 찾는다

    JSON 파싱이 끝나면 VIA는 이 정의가 어떤 키보드에 해당하는지 확인해야 합니다. 여기서 핵심이 되는 값이 Vendor IDProduct ID입니다. 보통 VID와 PID라고 줄여 부릅니다.

    USB 장치는 컴퓨터에 연결될 때 자신이 어떤 제조사와 제품에 해당하는지 식별 정보를 제공합니다. VIA 키보드 정의 JSON에도 이와 대응하는 Vendor ID와 Product ID가 들어 있습니다. VIA는 JSON 속의 값과 브라우저가 감지한 USB HID 장치의 값을 비교해 서로 맞는 정의를 연결합니다.

    예를 들어 JSON의 Vendor ID는 같지만 Product ID가 다른 경우, 같은 제조사에서 만든 다른 모델이거나 동일 제품의 다른 버전일 수 있습니다. VIA는 이름이 비슷하다는 이유만으로 장치를 연결하지 않고, 실제 식별값을 중심으로 정의를 선택합니다.

    장치 식별 과정
    • JSON에서 Vendor ID와 Product ID를 읽습니다.
    • 브라우저가 접근 가능한 HID 장치 목록을 확인합니다.
    • 사용자가 장치 연결 권한을 승인합니다.
    • 장치가 보고한 VID·PID와 JSON 값을 비교합니다.
    • 값이 일치하면 해당 키보드 정의를 장치에 연결합니다.
    • 일치하지 않으면 정의는 읽혔어도 Configure 화면에 장치가 나타나지 않을 수 있습니다.

    여기서 중요한 것은 JSON을 Design 탭에 불러오는 것과 장치 접근을 승인하는 것이 별개의 과정이라는 점입니다. JSON 파일은 키보드 정의를 VIA에 등록하지만, 브라우저가 자동으로 모든 USB 장치에 접근할 수 있게 하지는 않습니다.

    웹 기반 VIA는 브라우저의 장치 접근 기능을 이용하기 때문에 사용자가 직접 연결할 장치를 선택하고 권한을 허용해야 합니다. JSON이 정상인데도 키보드가 나타나지 않는다면 정의 파일뿐 아니라 브라우저 권한과 실제 연결 모드도 함께 확인해야 합니다.

    또한 일부 키보드는 유선, 2.4GHz, 부트로더 모드에서 서로 다른 Product ID를 사용할 수 있습니다. 제조사가 연결 방식이나 펌웨어 버전에 따라 별도의 JSON을 제공하는 이유도 이러한 장치 식별값이나 통신 구현이 다를 수 있기 때문입니다.

    💡 Link&Tem Insight

    VIA가 키보드의 제품명만 보고 장치를 찾는다고 생각하기 쉽지만, 제품명은 사용자에게 보여주는 표시 정보에 가깝습니다. 실제 연결에서는 VID와 PID 같은 USB 식별값이 더 중요합니다. 따라서 다른 모델의 이름을 JSON에서 수정한다고 해서 그 JSON이 내 키보드와 호환되는 것은 아닙니다.

    4. 키보드 이름과 식별값을 읽은 뒤 레이아웃을 해석한다

    장치 식별에 필요한 정보가 확인되면 VIA는 키보드를 화면에 그리기 위한 레이아웃 데이터를 해석합니다. 키보드 정의 JSON에는 각 키의 위치, 너비, 높이, 간격, 회전 같은 시각적 정보가 포함될 수 있습니다.

    일반적인 키 하나는 1유닛 크기를 기준으로 배치됩니다. 스페이스바처럼 긴 키는 여러 유닛의 너비를 가지며, ISO Enter처럼 특수한 모양은 너비와 높이 정보가 함께 사용됩니다. 인체공학 배열이나 분리형 키보드는 키 그룹에 회전값을 적용해 실제 배치와 비슷하게 표현할 수도 있습니다.

    VIA는 이러한 값을 순서대로 읽어 화면 좌표로 변환합니다. 배열 안에서 앞에 있는 항목부터 키 요소를 만들고, 현재 좌표와 크기를 계산한 뒤 다음 키를 배치합니다. 행이 바뀌면 세로 좌표를 이동하고, 별도의 위치값이 있으면 기본 간격에 그 값을 더해 키를 떨어뜨려 놓습니다.

    레이아웃 정보 VIA에서의 역할
    X·Y 위치 키가 표시될 가로·세로 위치 결정
    너비·높이 스페이스바, Enter, Shift 등 키 크기 표현
    회전값 분리형·인체공학 배열의 기울기 표현
    키 라벨 키 위치와 옵션·매트릭스 정보 연결
    레이아웃 옵션 ANSI·ISO, 분할 스페이스바 등 선택 구성 표시

    이 과정에서 VIA가 만드는 것은 단순한 키보드 그림이 아닙니다. 화면에 표시된 각 키에는 펌웨어의 특정 키 위치와 연결되는 정보가 함께 붙습니다. 사용자가 키 하나를 클릭했을 때 어느 레이어의 몇 번째 위치를 읽거나 변경해야 하는지 알 수 있어야 하기 때문입니다.

    따라서 시각적 위치만 비슷하게 만든 JSON은 충분하지 않습니다. 화면에서 첫 번째 줄 세 번째 키로 보이는 요소가 실제 펌웨어의 어느 매트릭스 위치 또는 키 인덱스에 해당하는지 정확히 연결되어야 합니다.

    5. 화면의 키와 펌웨어의 키 위치는 어떻게 연결될까?

    VIA 화면에서 키를 선택하면 해당 키의 색상이 바뀌고 아래쪽에 지정 가능한 키코드 목록이 나타납니다. 이때 VIA는 화면의 픽셀 좌표를 그대로 펌웨어에 보내지 않습니다. JSON을 해석하며 만들어 둔 논리적 키 위치를 기준으로 명령을 구성합니다.

    키보드 펌웨어는 보통 키를 행과 열로 구성된 매트릭스로 관리합니다. 하지만 사용자가 보는 물리 배열의 순서와 전기적 매트릭스 배선 순서는 같지 않을 수 있습니다. 화면에서는 왼쪽 위부터 오른쪽으로 키가 배열되어 있어도 PCB에서는 배선 효율 때문에 서로 다른 행과 열에 연결될 수 있습니다.

    이 차이를 연결하는 것이 레이아웃 정의입니다. JSON은 사용자에게 보여줄 물리적 배치를 구성하면서 각 키를 펌웨어가 이해하는 위치와 연결합니다. VIA는 이 연결 관계를 사용해 사용자가 선택한 화면상의 키가 펌웨어의 어느 위치에 해당하는지 판단합니다.

    화면의 키를 선택했을 때
    1. 사용자가 VIA 화면에서 특정 키를 클릭합니다.
    2. VIA가 해당 화면 요소에 연결된 키 위치를 확인합니다.
    3. 현재 선택된 레이어 번호를 확인합니다.
    4. 펌웨어에 해당 위치의 현재 키코드를 요청하거나 변경 명령을 준비합니다.
    5. 펌웨어가 응답한 키코드를 VIA 화면의 이름과 아이콘으로 변환합니다.

    JSON의 키 순서와 펌웨어가 기대하는 키 순서가 다르면 화면에서 A 위치를 바꿨는데 실제로는 다른 키가 변경되는 현상이 발생할 수 있습니다. 배열은 비슷하게 보이지만 특정 키만 엉뚱하게 바뀌는 오류라면 단순한 시각적 크기보다 키 위치 매핑이 잘못되었을 가능성을 확인해야 합니다.

    특히 노브, 분할 스페이스바, 추가 매크로 키, 특수 배열을 지원하는 제품은 일반적인 ANSI 배열보다 정의가 복잡합니다. 같은 PCB가 여러 물리 배열을 지원하는 경우에는 현재 선택된 레이아웃 옵션에 따라 표시할 키와 숨길 키도 달라져야 합니다.

    실행 TIP

    새 JSON을 적용한 뒤에는 자주 쓰는 키 하나만 바꾸기보다 VIA의 키 테스트 기능으로 전체 배열을 먼저 확인하는 것이 좋습니다. 화면에서 눌린 위치와 실제 키 위치가 일치하는지 확인하면 잘못된 매핑 상태에서 여러 키를 수정하는 실수를 줄일 수 있습니다.

    6. 레이아웃 옵션은 어떻게 선택적으로 표시될까?

    하나의 키보드 PCB가 항상 하나의 물리 배열만 지원하는 것은 아닙니다. 같은 PCB에서 ANSI Enter와 ISO Enter를 선택할 수 있거나, 일반 스페이스바와 분할 스페이스바 중 하나를 조립할 수 있습니다. 왼쪽 Shift의 길이, Backspace 분할 여부, 하단 열 배열이 달라지는 제품도 있습니다.

    이런 키보드의 모든 가능한 키를 화면에 동시에 표시하면 실제 조립 상태와 맞지 않는 키가 겹쳐 보이게 됩니다. VIA는 JSON에 정의된 레이아웃 옵션을 읽어 사용자가 선택한 구성에 해당하는 키만 표시합니다.

    레이아웃 옵션은 특정 영역이 몇 가지 구성 중 하나로 바뀔 수 있다는 뜻입니다. 예를 들어 옵션 0의 선택값 0은 ANSI Enter, 선택값 1은 ISO Enter를 나타낼 수 있습니다. JSON의 각 키에는 자신이 어떤 옵션과 선택값에서 표시되어야 하는지 구분하는 정보가 포함될 수 있습니다.

    사용자가 VIA에서 레이아웃 옵션을 바꾸면 전체 JSON을 다시 읽는 것이 아니라 이미 파싱된 정의를 기준으로 표시 조건을 다시 계산합니다. 선택한 조건에 맞지 않는 키 요소는 숨기고, 맞는 키 요소를 활성화해 화면 배열을 다시 구성합니다.

    옵션 예시 선택에 따라 달라지는 부분
    ANSI / ISO Enter 키 모양과 주변 키 배치
    일반 / 분할 Backspace 상단 오른쪽 키 개수와 크기
    일반 / 분할 Space 하단 중앙 키 개수와 너비
    노브 / 일반 키 회전 입력 장치 또는 스위치 표시

    레이아웃 옵션은 단순히 보기 좋은 화면을 만들기 위한 기능이 아닙니다. 실제로 존재하지 않는 키 위치를 사용자가 수정하지 않도록 제한하고, 펌웨어가 지원하는 물리 구성과 VIA 화면을 일치시키는 역할을 합니다.

    다만 JSON에서 지원한다고 표시된 물리 배열이 펌웨어에서도 반드시 올바르게 구현되어 있다는 의미는 아닙니다. 정의 파일은 화면 구성을 설명하고, 실제 키 위치와 기능 지원은 펌웨어 구현에 달려 있습니다. 두 부분이 같은 기준으로 만들어져야 정상적으로 작동합니다.

    💡 Link&Tem Insight

    VIA JSON은 화면 디자인 파일처럼 보이지만 실제로는 사용자 인터페이스와 펌웨어 사이의 번역표 역할까지 담당합니다. 키의 크기와 위치만 정확해서는 부족하며, 레이아웃 옵션과 펌웨어의 키 인덱스가 같은 구조를 가리켜야 합니다.

    7. JSON을 읽었다고 키맵까지 읽은 것은 아니다

    VIA가 JSON을 성공적으로 읽고 키보드 그림을 표시했다고 해서 현재 키맵 정보까지 JSON에서 가져온 것은 아닙니다. JSON은 어떤 키가 어디에 존재하는지 알려주지만, 각 위치에 현재 어떤 키코드가 저장되어 있는지는 키보드 펌웨어에 요청해 확인합니다.

    즉 화면 구조를 만드는 데이터와 실제 설정값을 가져오는 경로가 다릅니다. VIA는 JSON을 이용해 클릭할 수 있는 키 요소를 만든 뒤, 연결된 키보드에 VIA 프로토콜 명령을 보내 각 레이어의 키코드를 읽습니다.

    펌웨어가 반환한 값은 숫자 형태의 키코드일 수 있습니다. VIA는 이 값을 내부 키코드 목록과 비교해 화면에 A, Enter, Left Ctrl, MO(1) 같은 사용자가 이해할 수 있는 이름으로 표시합니다.

    JSON과 펌웨어가 담당하는 정보
    • JSON: 키보드 이름, 장치 식별값, 키 위치, 키 크기, 레이아웃 옵션
    • VIA 애플리케이션: JSON 해석, 화면 생성, 키코드 이름 변환, 사용자 입력 처리
    • 키보드 펌웨어: 현재 레이어별 키코드, 매크로, 조명 설정, 저장 데이터
    • USB 통신: VIA의 읽기·쓰기 명령과 펌웨어 응답 전달

    이 구조 때문에 같은 JSON을 다른 PC에서 불러와도 키보드 내부에 저장된 키맵이 그대로 나타날 수 있습니다. 설정값이 JSON 파일이나 특정 컴퓨터에만 저장된 것이 아니라, VIA 기능을 지원하는 펌웨어의 비휘발성 저장 영역에 기록되는 구성이 일반적이기 때문입니다.

    반대로 JSON만 따로 보관했다고 해서 현재 키맵 설정까지 완전히 백업한 것은 아닐 수 있습니다. 키보드 정의 JSON과 사용자가 저장한 키맵 백업 JSON은 목적과 내부 구성이 다르므로 파일 이름이 같아 보여도 구분해야 합니다.

    Part 1 정리

    VIA는 JSON 파일을 파싱한 뒤 장치 식별값과 레이아웃 정보를 분리해 사용합니다. VID·PID로 연결된 키보드와 정의를 대응시키고, 키의 위치·크기·옵션을 해석해 화면 배열을 생성합니다. 하지만 현재 키맵은 JSON에서 직접 읽는 것이 아니라 VIA 프로토콜을 통해 키보드 펌웨어에 요청합니다. 다음 Part에서는 VIA가 실제 키코드를 읽고 쓰는 과정, Raw HID 통신, 정의 버전 차이, JSON 오류 유형과 해결 방법을 이어서 살펴봅니다.

    8. VIA는 키코드를 어떤 순서로 읽을까?

    키보드 정의 JSON으로 화면 구성이 완료되면 VIA는 연결된 키보드 펌웨어에 현재 설정값을 요청합니다. 이 과정은 일반적인 키보드 입력 보고서와 별도로 동작하는 VIA 명령 통신을 통해 이루어집니다.

    사용자가 아무 키도 누르지 않아도 VIA 화면에 각 키의 현재 기능이 나타나는 이유는 VIA가 펌웨어에 레이어별 키코드를 요청하고, 펌웨어가 저장된 값을 응답하기 때문입니다. VIA는 반환된 숫자 값을 다시 사람이 이해할 수 있는 키 이름으로 변환합니다.

    예를 들어 펌웨어가 특정 위치의 키코드로 기본 문자 A에 해당하는 값을 반환하면 VIA는 화면에 A를 표시합니다. 레이어 이동 키나 매크로 키처럼 추가 인수가 필요한 키코드는 내부 규칙에 따라 MO(1), LT(1, KC_ESC) 같은 형태로 해석될 수 있습니다.

    현재 키맵을 표시하는 흐름
    1. VIA가 키보드 정의 JSON으로 화면의 키 위치를 생성합니다.
    2. 펌웨어가 지원하는 레이어 수와 키맵 구조를 확인합니다.
    3. VIA가 특정 레이어와 키 위치의 키코드를 요청합니다.
    4. 키보드 펌웨어가 저장된 키코드 값을 응답합니다.
    5. VIA가 숫자 값을 키 이름과 기능 이름으로 변환합니다.
    6. 변환된 결과를 화면의 해당 키 위에 표시합니다.

    이 과정은 키 개수와 레이어 수가 많을수록 여러 번 반복될 수 있습니다. VIA가 연결 직후 잠시 로딩하는 것처럼 보이는 이유도 키보드 정의를 읽는 작업뿐 아니라 펌웨어에서 여러 설정값을 가져오는 과정이 함께 진행되기 때문입니다.

    VIA 기능을 활성화한 QMK 펌웨어는 VIA Configurator와 통신할 수 있으며, 키맵과 기타 설정을 장치 쪽에 저장하는 기능을 제공합니다. :contentReference[oaicite:0]{index=0}

    💡 Link&Tem Insight

    VIA 화면에 키보드 배열이 나타났다고 해서 통신이 완전히 정상이라는 뜻은 아닙니다. 배열은 JSON만으로도 만들 수 있지만 현재 키코드를 표시하려면 펌웨어의 응답이 필요합니다. 키보드 그림은 보이지만 키맵이 로딩되지 않는다면 JSON보다 펌웨어 통신 단계에서 문제가 발생했을 가능성이 있습니다.

    9. Raw HID는 VIA 통신에서 어떤 역할을 할까?

    일반적인 키보드는 운영체제에 어떤 키가 눌렸는지를 HID 키보드 보고서로 전달합니다. 하지만 VIA가 키맵을 읽고 수정하려면 단순한 키 입력보다 더 다양한 명령과 데이터가 필요합니다.

    QMK의 Raw HID 기능은 키보드와 호스트 프로그램 사이에서 양방향 데이터를 주고받을 수 있도록 만든 통신 방식입니다. 키보드 입력 자체와는 별도의 데이터 채널을 이용해 명령과 응답을 교환할 수 있습니다. :contentReference[oaicite:1]{index=1}

    VIA는 이와 같은 HID 기반 통신을 이용해 키보드에 현재 키코드를 요청하거나 새로운 키코드를 기록하도록 명령합니다. 펌웨어는 받은 데이터에서 명령 종류와 대상 위치를 분석한 뒤 해당 값을 읽거나 변경하고 결과를 VIA에 돌려줍니다.

    일반 키 입력과 VIA 명령의 차이
    구분 일반 키 입력 VIA 설정 통신
    목적 눌린 키 전달 설정 읽기·쓰기
    데이터 키보드 HID 보고서 명령·위치·설정값
    방향 주로 키보드 → PC PC ↔ 키보드
    주요 결과 문자·단축키 입력 키맵·조명·매크로 변경

    이 통신은 브라우저에서 보이는 키보드 그림과는 직접적인 관련이 없습니다. JSON이 화면 구조를 만들고, Raw HID 계열의 통신이 실제 장치 설정을 읽고 쓰는 역할을 맡는 구조입니다.

    따라서 다른 키보드의 JSON을 강제로 불러와 화면을 표시하는 데 성공하더라도 펌웨어가 기대하는 명령 구조나 키 위치가 다르면 정상적으로 설정할 수 없습니다. 화면 정의와 펌웨어 프로토콜 구현이 함께 맞아야 합니다.

    실행 TIP

    VIA 연결 문제를 확인할 때는 키보드 입력이 정상인지와 VIA 설정 통신이 정상인지를 분리해서 확인해야 합니다. 타이핑이 된다고 VIA 통신까지 정상인 것은 아니며, 반대로 VIA에서 장치를 읽더라도 운영체제의 키 입력 설정에 별도 문제가 있을 수 있습니다.

    10. 키 하나를 변경하면 JSON이 수정될까?

    사용자가 VIA 화면에서 키 하나를 선택하고 다른 키코드를 지정하면 정의 JSON 파일이 수정되는 것은 아닙니다. JSON은 키보드 구조를 설명하는 기준으로 계속 유지되고, 실제 변경값은 키보드 펌웨어 쪽으로 전달됩니다.

    VIA는 먼저 현재 선택된 레이어와 화면상의 키 위치를 확인합니다. 그다음 사용자가 선택한 키코드를 펌웨어에서 사용하는 값으로 변환하고, 변경할 레이어·행·열 또는 키 인덱스와 함께 쓰기 명령을 전송합니다.

    키 하나를 변경하는 순서
    1. 사용자가 화면에서 변경할 키를 선택합니다.
    2. VIA가 해당 키의 논리적 위치와 현재 레이어를 확인합니다.
    3. 새로 선택한 기능을 펌웨어용 키코드 값으로 변환합니다.
    4. 키보드에 키맵 변경 명령을 전송합니다.
    5. 펌웨어가 동적 키맵 또는 저장 영역의 값을 갱신합니다.
    6. VIA가 변경된 값을 다시 읽거나 화면에 즉시 반영합니다.

    VIA 펌웨어는 일반적으로 전원이 꺼져도 설정이 유지될 수 있도록 비휘발성 저장 영역을 활용합니다. 다만 저장 방식과 저장 가능한 레이어 수, 매크로 용량은 키보드 펌웨어와 MCU 구성에 따라 달라질 수 있습니다.

    이 때문에 같은 키보드를 다른 컴퓨터에 연결해도 이전에 VIA에서 변경한 키맵이 유지되는 경우가 많습니다. 설정값이 브라우저에만 저장된 것이 아니라 키보드 내부에 기록되어 있기 때문입니다.

    반대로 JSON 파일을 삭제하거나 다른 컴퓨터에서 VIA를 열더라도 키보드 내부의 키맵이 즉시 초기화되지는 않습니다. VIA가 해당 장치를 해석할 수 있는 올바른 정의만 다시 확보하면 펌웨어에 저장된 설정을 읽어올 수 있습니다.

    💡 Link&Tem Insight

    VIA JSON은 설계도이고 키보드 내부 설정은 실제 가구 배치에 가깝습니다. 설계도를 지워도 방 안의 가구가 자동으로 사라지지는 않습니다. 하지만 설계도가 잘못되어 있으면 어떤 위치의 가구를 옮기고 있는지 정확히 알기 어려워집니다.

    11. JSON 버전이 다르면 무엇이 달라질까?

    VIA 키보드 정의에는 규격 버전에 따라 사용할 수 있는 속성과 구조가 달라질 수 있습니다. 오래된 정의와 최신 정의는 기본적인 키보드 식별과 배열 표시라는 목적은 같지만, 사용자 정의 기능과 메뉴 구성 방식에서 차이가 날 수 있습니다.

    VIA V3 정의는 키보드 제조사나 개발자가 사용자 정의 UI를 구성하고 펌웨어의 특정 설정 채널과 연결할 수 있도록 확장된 구조를 제공합니다. 공식 문서에서도 V3 정의가 커스텀 기능을 제어할 수 있는 UI 구성을 지원한다고 설명합니다. :contentReference[oaicite:2]{index=2}

    예를 들어 단순한 키맵 변경 외에 조명 밝기, 애니메이션 속도, 특수 동작 모드, 제조사가 추가한 기능을 VIA 화면에서 조절하려면 JSON의 메뉴 정의와 펌웨어의 명령 처리 코드가 서로 대응해야 합니다.

    항목 기본 정의 확장 정의
    장치 식별 VID·PID VID·PID 및 추가 조건
    키 배열 물리 레이아웃 표시 레이아웃과 확장 요소 표시
    설정 UI 기본 기능 중심 커스텀 메뉴 구성 가능
    펌웨어 조건 기본 VIA 처리 코드 메뉴와 일치하는 처리 코드 필요

    버전 번호만 최신으로 바꾼다고 정의가 자동으로 호환되는 것은 아닙니다. 속성 이름과 데이터 구조를 새 규격에 맞게 작성해야 하며, 사용자 정의 메뉴를 추가했다면 펌웨어도 해당 명령을 처리하도록 구현해야 합니다.

    구형 JSON이 최신 VIA에서 열리지 않거나 일부 기능이 빠져 보인다면 버전 필드만 확인하지 말고 VIA 공식 규격에서 요구하는 전체 구조와 속성을 함께 비교해야 합니다.

    12. JSON 오류는 어느 단계에서 발생할까?

    VIA JSON 문제는 모두 같은 증상으로 나타나지 않습니다. 파일 문법, 정의 규격, 장치 식별, 레이아웃 연결, 펌웨어 통신 중 어느 단계에서 문제가 생겼는지에 따라 현상이 달라집니다.

    따라서 단순히 “VIA가 인식하지 않는다”라고 판단하기보다 JSON을 불러오는 데 실패했는지, 키보드가 연결되지 않는지, 배열만 잘못 나타나는지, 키 변경만 적용되지 않는지를 구분해야 합니다.

    증상 가능한 원인 확인 항목
    파일 자체가 열리지 않음 JSON 문법 오류 쉼표·따옴표·괄호
    정의는 추가되지만 장치가 안 보임 VID·PID 불일치 또는 권한 문제 USB 식별값·브라우저 권한
    키보드 배열이 찌그러짐 레이아웃 좌표·크기 오류 X·Y·W·H·회전값
    특정 키만 엉뚱하게 변경됨 키 위치 매핑 불일치 매트릭스 행·열과 키 순서
    키맵이 계속 로딩 중임 펌웨어 통신 실패 VIA 펌웨어·USB 모드·케이블
    변경값이 재연결 후 사라짐 저장 영역 또는 펌웨어 문제 EEPROM·동적 키맵 설정

    문법 오류는 비교적 쉽게 찾을 수 있지만 키 위치 매핑 오류는 화면이 정상적으로 보이기 때문에 발견하기 어렵습니다. 모든 키를 한 번씩 테스트하고, 각 레이어에서 변경값이 정확한 위치에 적용되는지 확인해야 합니다.

    키보드 제조사가 같은 모델명으로 여러 PCB 리비전이나 펌웨어 버전을 배포했다면 JSON도 버전에 따라 달라질 수 있습니다. 제품 이름이 같더라도 VID·PID, 키 위치, 노브 지원, 레이어 수가 다를 수 있으므로 정확한 리비전에 맞는 파일을 사용해야 합니다.

    실행 TIP

    JSON 문제를 해결할 때는 파일을 반복해서 무작정 불러오기보다 ① 파일 파싱 여부, ② 장치 연결 여부, ③ 배열 표시 여부, ④ 키맵 읽기 여부, ⑤ 변경값 저장 여부 순서로 확인하는 것이 효율적입니다.

    13. JSON 문제인지 펌웨어 문제인지 구분하는 방법

    VIA 오류를 해결할 때 가장 어려운 부분은 JSON 정의와 펌웨어 중 어느 쪽에 문제가 있는지 판단하는 것입니다. 두 요소가 함께 작동하기 때문에 증상만 보고 한쪽을 단정하기 어렵습니다.

    가장 먼저 확인할 수 있는 기준은 화면 배열입니다. 키보드 모양이 전혀 나타나지 않거나 물리 배열과 크게 다르면 JSON 정의 문제일 가능성이 높습니다. 반대로 배열은 정확하지만 키코드를 읽지 못하거나 변경값이 저장되지 않으면 펌웨어 통신 문제를 우선 의심할 수 있습니다.

    빠른 구분 기준
    • 키보드 모양이 잘못됨: JSON 레이아웃 정의 확인
    • 장치 선택 창에 나타나지 않음: 연결 모드·USB 권한·VID/PID 확인
    • 키맵 값을 읽지 못함: VIA 지원 펌웨어와 통신 기능 확인
    • 특정 키만 잘못 바뀜: 키 위치와 매트릭스 매핑 확인
    • 재부팅 후 설정이 사라짐: 펌웨어 저장 기능과 저장 공간 확인
    • 커스텀 메뉴만 작동하지 않음: JSON 메뉴와 펌웨어 핸들러 확인

    또한 VIA에서 키보드가 보이지 않는다고 바로 펌웨어를 다시 플래시하는 것은 권장되지 않습니다. 먼저 케이블, 브라우저 권한, 연결 모드, 올바른 JSON 사용 여부를 확인하는 것이 안전합니다.

    펌웨어 업데이트가 필요한 상황이라면 제조사가 제공한 정확한 모델과 PCB 버전의 파일을 사용해야 합니다. 정의 JSON과 달리 펌웨어 플래시는 키보드 MCU의 실행 프로그램을 변경하므로 잘못된 파일을 적용하면 정상 부팅이 어려워질 수 있습니다.

    14. VIA가 JSON을 읽는 전체 과정 한눈에 보기

    1
    JSON 파일 선택
    브라우저가 사용자가 선택한 로컬 JSON 파일의 텍스트를 읽습니다.
    2
    문법과 규격 해석
    VIA가 JSON을 파싱하고 버전, 이름, 식별값, 레이아웃 데이터를 분리합니다.
    3
    장치 식별
    JSON의 VID·PID와 연결된 HID 장치의 식별값을 비교합니다.
    4
    화면 레이아웃 생성
    키 위치, 크기, 회전, 레이아웃 옵션을 바탕으로 키보드 UI를 만듭니다.
    5
    키 위치 연결
    화면의 각 키를 펌웨어가 사용하는 매트릭스 위치 또는 키 인덱스와 연결합니다.
    6
    현재 설정 요청
    VIA가 키보드에 레이어별 키코드와 지원 설정값을 요청합니다.
    7
    응답값 표시
    펌웨어가 반환한 값을 키 이름과 옵션 값으로 변환해 화면에 표시합니다.
    8
    변경값 전송
    사용자의 변경 내용을 펌웨어에 전송하고 장치의 저장 영역에 반영합니다.

    VIA 공식 규격에서도 키보드 정의 JSON이 물리 키 배열, 레이아웃 옵션, 노브와 조명 같은 설정 요소를 정의하는 파일이라고 설명합니다. :contentReference[oaicite:3]{index=3}

    결국 JSON을 읽는 과정은 단순히 파일을 화면에 표시하는 작업이 아닙니다. VIA가 키보드의 외형과 논리 구조를 이해하고, 연결된 장치와 대응시키며, 펌웨어 통신에 사용할 번역 기준을 만드는 과정입니다.

    15. 자주 묻는 질문

    Q1. JSON을 불러오면 키보드 펌웨어가 바뀌나요?

    아닙니다. 키보드 정의 JSON은 VIA가 장치와 레이아웃을 해석하는 데 사용하는 파일입니다. 펌웨어 플래시 파일과는 역할이 다릅니다.

    Q2. 다른 키보드 JSON을 불러오면 고장 날 수 있나요?

    JSON을 불러오는 것만으로 펌웨어가 바뀌지는 않습니다. 다만 잘못된 키 위치로 설정을 변경하면 의도하지 않은 키가 바뀔 수 있으므로 배열이 맞지 않을 때는 저장 작업을 진행하지 않는 것이 좋습니다.

    Q3. JSON이 정상인데 키보드가 VIA에 안 나타나는 이유는 무엇인가요?

    VID·PID 불일치, 브라우저 장치 권한, USB 케이블, 유선 모드 설정, VIA 미지원 펌웨어 등이 원인일 수 있습니다.

    Q4. JSON 안에 현재 키맵도 저장되어 있나요?

    일반적인 키보드 정의 JSON에는 현재 사용 중인 레이어별 키맵이 저장되지 않습니다. 현재 키맵은 연결된 펌웨어에서 읽어옵니다.

    Q5. 키맵 백업 JSON과 정의 JSON은 같은 파일인가요?

    목적이 다릅니다. 정의 JSON은 키보드 구조를 설명하고, 키맵 백업 파일은 사용자가 설정한 키 배치를 저장하는 용도로 사용됩니다.

    Q6. VIA 화면의 배열만 맞으면 JSON이 정상인가요?

    반드시 그렇지는 않습니다. 키 크기와 위치가 맞아도 화면의 키와 펌웨어의 매트릭스 위치가 잘못 연결되어 있을 수 있습니다. 실제 키 변경 테스트까지 확인해야 합니다.

    Q7. VIA를 종료해도 변경한 키맵이 유지되나요?

    펌웨어가 비휘발성 저장을 정상 지원한다면 대부분 유지됩니다. 저장 방식과 용량은 키보드의 펌웨어 구성에 따라 달라질 수 있습니다.

    함께 보면 좋은 글

    공식 자료

    Sources

    1. VIA 공식 문서, Keyboard Definition Specification

    2. VIA 공식 문서, Layout Options

    3. VIA 공식 문서, Configuring QMK

    4. VIA 공식 문서, VIA Version 3 Changes

    5. QMK 공식 문서, Raw HID

    LINK&TEM 한 줄 정리
    VIA JSON은 키보드 설정값을 담은 펌웨어가 아니라, VIA가 키보드의 구조를 이해하고 화면의 키와 펌웨어 위치를 연결하도록 돕는 정의 파일입니다.
  • VIA JSON 구조 완벽 이해: 키보드 배열과 펌웨어 연결 원리

    VIA JSON 구조 완벽 이해: 키보드 배열과 펌웨어 연결 원리

    LINK&TEM GUIDE

    VIA JSON 구조

    키보드 JSON 파일은 어떤 정보를 담고 있으며 VIA는 어떻게 이를 해석할까?

    📌 핵심 요약
    • VIA JSON은 키보드 펌웨어가 아니라 키보드 레이아웃을 설명하는 메타데이터입니다.
    • JSON에는 키 위치, 레이어, 레이아웃, 메뉴 정보 등이 저장됩니다.
    • VIA는 JSON을 읽어 화면에 키보드를 그리고 사용자가 키를 변경할 수 있도록 합니다.
    • 잘못된 JSON을 사용하면 키 배열이 어긋나거나 일부 기능이 정상적으로 표시되지 않을 수 있습니다.
    • JSON 자체는 키보드 동작을 변경하는 것이 아니라 VIA가 장치를 이해하도록 도와주는 역할을 합니다.

    VIA를 처음 사용하는 사람이라면 가장 먼저 접하는 파일이 바로 JSON입니다. 대부분은 제조사 홈페이지에서 JSON 파일을 다운로드한 뒤 VIA에 불러오기만 하면 된다고 알고 있지만, 정작 JSON 파일 안에 무엇이 들어 있는지, 왜 필요한지는 잘 알려져 있지 않습니다.

    많은 사용자가 JSON을 펌웨어(Firmware)와 같은 것으로 오해하기도 합니다. 하지만 실제로는 역할이 전혀 다릅니다. 펌웨어는 키보드 내부에서 동작하는 프로그램이고, JSON은 VIA가 그 키보드를 이해하기 위한 ‘설명서’에 가깝습니다.

    이번 글에서는 VIA JSON이 어떤 구조로 이루어져 있는지, 각 항목이 어떤 의미를 가지는지, VIA가 JSON을 이용해 키보드 화면을 만드는 과정까지 차근차근 살펴보겠습니다.


    1. VIA JSON이란 무엇인가?

    VIA JSON은 키보드 레이아웃을 설명하는 데이터 파일입니다. 확장자는 ‘.json’이며 JavaScript Object Notation이라는 데이터 표현 방식을 사용합니다. JSON 자체는 프로그래밍 언어가 아니라 사람이 읽기도 쉽고 프로그램도 쉽게 해석할 수 있도록 만든 데이터 형식입니다.

    VIA는 키보드를 연결했을 때 내부 펌웨어의 Vendor ID와 Product ID를 확인한 뒤, JSON에 기록된 정보를 이용하여 화면에 키보드의 모양을 그립니다. 즉 VIA가 화면에 보여주는 키 배열은 JSON에 정의된 내용을 그대로 시각화한 결과라고 볼 수 있습니다.

    중요한 점은 JSON 파일이 키보드를 제어하지 않는다는 것입니다. 실제 키 입력을 처리하는 것은 QMK 기반 펌웨어이며, JSON은 VIA 인터페이스를 구성하는 역할만 담당합니다.

    💡 TIP

    JSON은 ‘키보드의 프로그램’이 아니라 ‘키보드의 설계도’입니다. VIA는 이 설계도를 읽어 사용자에게 키 배열과 설정 화면을 보여줍니다.
    Link&Tem Insight

    QMK는 키 입력을 처리하는 펌웨어를 담당하고 VIA는 설정 인터페이스를 담당합니다. 두 시스템이 서로 분리되어 있기 때문에 펌웨어를 수정하지 않고도 VIA에서 키맵을 변경할 수 있는 구조가 만들어집니다.

    2. JSON 파일에는 어떤 정보가 들어 있을까?

    JSON 파일은 단순히 키 위치만 저장하는 것이 아닙니다. VIA가 필요한 거의 모든 화면 정보가 이 파일 안에 포함됩니다.

    항목 역할
    name 키보드 이름
    vendorId 제조사 식별 번호
    productId 제품 식별 번호
    layouts 키 위치 정보
    matrix 스위치 매트릭스 정보
    menus RGB 등 추가 설정 메뉴

    이처럼 JSON은 단순히 키 하나의 위치만 설명하는 것이 아니라 키보드 전체 인터페이스를 구성하는 정보를 체계적으로 저장하고 있습니다.

    3. layouts 항목의 역할

    가장 중요한 항목은 layouts입니다. VIA에서 보이는 키보드 모양 대부분은 layouts 정보를 기반으로 생성됩니다.

    각 키는 X좌표와 Y좌표, 너비, 높이 등의 값을 가지고 있으며 VIA는 이를 이용해 브라우저 화면 위에 키를 배치합니다.

    예를 들어 Enter 키는 일반 키보다 세로 길이가 길고 Space Bar는 가로 길이가 매우 긴데, 이러한 차이 역시 layouts 안에 정의되어 있습니다.

    실수하기 쉬운 부분

    JSON이 키 위치를 설명하기 때문에 다른 모델의 JSON을 적용하면 키 위치가 어긋나거나 일부 키가 겹쳐 보이는 현상이 발생할 수 있습니다.

    4. Matrix 정보는 왜 필요할까?

    겉으로 보기에는 키보드 배열만 있으면 될 것 같지만 실제 키보드는 Matrix 구조로 동작합니다.

    각 키는 Row와 Column의 교차점으로 연결되어 있으며 펌웨어는 이 Matrix를 계속 스캔하면서 눌린 키를 찾습니다.

    JSON 안의 Matrix 정보는 화면의 키와 실제 펌웨어 안의 위치를 연결하는 역할을 합니다. 따라서 사용자가 VIA에서 특정 키를 클릭하면 VIA는 Matrix 번호를 통해 해당 위치를 정확하게 찾아 변경 요청을 보낼 수 있습니다.

    Link&Tem Insight

    Matrix 번호는 실제 PCB 회로와 연결됩니다. 따라서 화면에서는 오른쪽 Shift를 선택했더라도 내부적으로는 특정 Row와 Column 번호를 대상으로 데이터를 전송하게 됩니다.

    Part 1 정리

    이번 Part에서는 VIA JSON이 무엇인지, JSON이 담고 있는 핵심 정보와 layouts, Matrix 구조가 어떤 역할을 하는지 살펴보았습니다. 다음 Part에서는 VIA가 JSON을 실제로 읽는 순서와 menus 구조, 레이어 정보, JSON 오류가 발생하는 이유, FAQ 및 함께 보면 좋은 글까지 이어서 정리하겠습니다.

    6. VIA는 JSON 파일을 어떤 순서로 읽을까?

    VIA에서 JSON 파일을 불러오면 파일에 적힌 내용을 단순히 화면에 그대로 출력하는 것이 아닙니다. 먼저 JSON 문법이 올바른지 확인하고, 장치를 구분하는 정보와 키보드 배열 정보를 차례로 해석한 뒤 실제 연결된 키보드와 통신할 준비를 합니다.

    전체 흐름을 간단히 정리하면 JSON 문법 확인 → 장치 정보 확인 → 화면 레이아웃 생성 → 키보드 연결 승인 → 펌웨어와 통신 순서로 이해할 수 있습니다. JSON은 키보드의 펌웨어 자체가 아니라 VIA가 키보드를 이해하기 위해 사용하는 정의 파일에 가깝습니다.

    VIA의 JSON 처리 흐름
    1. 불러온 파일이 정상적인 JSON 형식인지 검사합니다.
    2. 키보드 이름, Vendor ID, Product ID 등의 장치 정보를 확인합니다.
    3. layouts에 정의된 키 위치를 바탕으로 화면 배열을 만듭니다.
    4. 사용자가 장치 접근을 허용하면 실제 키보드와 연결합니다.
    5. VIA 프로토콜을 통해 현재 키맵과 레이어 정보를 읽습니다.
    6. 사용자가 변경한 키 설정을 키보드의 동적 키맵 영역에 기록합니다.

    여기서 중요한 부분은 JSON 파일을 불러오는 것과 실제 키보드를 연결하는 것은 별개의 과정이라는 점입니다. JSON을 정상적으로 불러오면 화면에 키보드 모양이 나타날 수 있지만, 실제 장치 연결이 완료되지 않았다면 키 변경 내용은 키보드에 저장되지 않습니다.

    반대로 키보드가 USB 장치로 정상 연결되어 있어도 VIA가 해당 키보드의 배열 정보를 알지 못하면 화면에 키 배열을 제대로 표시할 수 없습니다. 이 때문에 사이드로드 방식의 VIA 키보드는 JSON 불러오기와 장치 승인을 모두 완료해야 합니다.

    💡 TIP

    VIA 화면에 키보드 배열은 보이는데 키를 눌러도 반응하지 않는다면 JSON보다 장치 승인 상태를 먼저 확인해보는 것이 좋습니다. 반대로 장치는 연결되는데 배열이 비어 있거나 이상하다면 JSON의 장치 정보와 layouts 구성을 확인해야 합니다.
    🔎 Insight

    JSON은 키 입력을 직접 처리하지 않습니다. 실제 키 스캔, 디바운스, 레이어 전환과 USB HID 전송은 키보드 펌웨어가 담당합니다. JSON은 VIA가 그 펌웨어의 설정 가능한 구조를 사용자에게 보여주기 위한 인터페이스 정의에 가깝습니다.

    7. menus는 무엇을 정의할까?

    VIA JSON에서 menus는 키 배열 외에 사용자가 조절할 수 있는 추가 설정 화면을 정의할 때 사용됩니다. 대표적으로 조명 효과, 밝기, 애니메이션 속도, 특정 펌웨어 기능과 같은 항목을 VIA 화면에 표시할 수 있습니다.

    다만 menus에 원하는 설정 이름을 임의로 적는다고 해서 기능이 새로 생기는 것은 아닙니다. 해당 기능을 실제로 처리하는 코드가 키보드 펌웨어에 구현되어 있어야 하며, JSON에 정의된 명령과 펌웨어 내부의 설정 처리 방식도 서로 일치해야 합니다.

    menus에 표시할 수 있는 항목 예시
    • RGB 조명 효과 선택
    • 조명 밝기와 속도 조절
    • LED 색상 또는 채도 조절
    • 키보드별 사용자 지정 기능
    • 펌웨어가 지원하는 토글 및 슬라이더 설정

    menus는 일반적인 키맵 변경보다 구조가 복잡합니다. 화면에 표시될 컨트롤 종류뿐 아니라 사용자가 값을 바꿨을 때 어떤 명령을 보내야 하는지도 연결되어야 하기 때문입니다. 펌웨어에 없는 기능을 JSON 메뉴에만 추가하면 버튼이나 슬라이더는 나타나더라도 정상적으로 작동하지 않을 수 있습니다.

    주의할 점

    다른 키보드의 JSON에서 RGB 메뉴 부분만 복사해 붙이는 방식은 권장되지 않습니다. 같은 RGB 기능처럼 보여도 펌웨어가 사용하는 채널, 명령 번호, 지원 범위가 다를 수 있습니다.

    8. VIA JSON과 레이어의 관계

    레이어는 하나의 물리 키에 여러 기능을 배치할 수 있게 해주는 구조입니다. 기본 레이어에서는 일반 문자 키로 작동하지만, Fn 키를 누른 상태에서는 밝기 조절이나 미디어 제어 키로 작동하도록 구성할 수 있습니다.

    VIA 화면에서 Layer 0, Layer 1, Layer 2처럼 여러 페이지가 표시되지만, 실제 레이어 수와 키맵 저장 공간은 펌웨어가 결정합니다. JSON은 사용자가 레이어별 배열을 확인하기 쉽도록 키보드 모양을 표현하며, 실제 키코드 데이터는 VIA 프로토콜을 통해 펌웨어에서 읽어옵니다.

    구분 주요 역할
    JSON 화면에 표시할 키 위치와 선택 가능한 레이아웃을 정의
    VIA 사용자의 키 변경 명령을 키보드에 전달
    펌웨어 레이어 수, 키코드 처리, 동적 키맵 저장을 실제로 담당
    EEPROM·플래시 변경된 동적 키맵을 전원이 꺼진 뒤에도 유지

    예를 들어 JSON에 레이어처럼 보이는 배열을 여러 개 추가하더라도 펌웨어가 그만큼의 동적 레이어를 지원하지 않으면 실제 사용 가능한 레이어 수는 늘어나지 않습니다. 레이어를 추가하려면 QMK 펌웨어 설정과 메모리 크기까지 함께 고려해야 합니다.

    또한 VIA에서 자주 사용하는 MO(1), TG(1), TO(1) 같은 키코드는 레이어를 사용하는 방식이 서로 다릅니다. MO는 누르는 동안만 지정 레이어를 활성화하고, TG는 레이어를 켜거나 끄며, TO는 지정한 레이어로 전환합니다.

    레이어 키를 배치할 때 확인할 점
    • 이동한 레이어에서 기본 레이어로 돌아올 키가 있는지 확인합니다.
    • Fn 키를 변경하기 전 현재 위치를 기록해두는 것이 안전합니다.
    • 레이어 전환 키를 여러 개 배치하면 복구가 쉬워집니다.
    • 펌웨어가 지원하는 레이어 수를 초과해 설정할 수는 없습니다.
    🔎 Insight

    VIA에서 키를 바꾸면 펌웨어 소스 코드가 다시 컴파일되는 것이 아닙니다. 이미 펌웨어 안에 마련된 동적 키맵 저장 영역의 값만 변경됩니다. 그래서 설정이 빠르게 적용되지만, 펌웨어가 처음부터 지원하지 않는 기능까지 VIA만으로 추가할 수는 없습니다.

    9. VIA JSON에서 자주 발생하는 오류

    VIA JSON 오류는 크게 문법 오류, 장치 식별 오류, 레이아웃 오류, 펌웨어 호환 오류로 나눌 수 있습니다. 화면에 파일을 불러오지 못했다는 메시지가 나타난다면 먼저 JSON 문법을 확인해야 하고, 파일은 열리지만 키보드를 찾지 못한다면 Vendor ID와 Product ID를 확인해야 합니다.

    증상 가능한 원인 확인 방법
    JSON이 열리지 않음 쉼표, 따옴표, 괄호 오류 JSON 문법 검사기로 구조 확인
    배열만 보이고 연결되지 않음 장치 승인 또는 VID·PID 불일치 USB 연결과 장치 선택 창 확인
    키 위치가 어긋남 layouts 좌표 또는 키 개수 오류 물리 배열과 JSON 배열 비교
    특정 키 설정이 다른 키에 적용됨 JSON 순서와 매트릭스 매핑 불일치 펌웨어 키맵 순서와 정의 비교
    메뉴는 보이지만 작동하지 않음 펌웨어에 명령 처리 기능이 없음 펌웨어 지원 기능과 메뉴 정의 확인

    쉼표와 괄호 오류

    JSON은 항목과 항목 사이에 쉼표가 필요하지만 마지막 항목 뒤에는 불필요한 쉼표를 허용하지 않는 경우가 많습니다. 또한 중괄호와 대괄호가 하나라도 빠지면 전체 파일을 읽지 못할 수 있습니다. 사람이 보기에는 작은 오타처럼 보여도 VIA 입장에서는 파일 구조가 완전히 깨진 것으로 판단할 수 있습니다.

    Vendor ID와 Product ID 불일치

    VID와 PID는 USB 장치를 구분하는 핵심 값입니다. JSON에 기록된 값과 실제 키보드가 보고하는 값이 다르면 VIA는 화면 정의와 연결된 장치를 같은 제품으로 판단하지 못할 수 있습니다. 같은 제품명이라도 유선·무선 리시버 또는 펌웨어 버전에 따라 식별 정보가 달라질 가능성이 있습니다.

    키 배열 순서 불일치

    화면에 그려지는 키의 순서와 펌웨어가 기대하는 키맵 순서가 다르면 사용자가 클릭한 키와 실제 변경되는 키가 달라질 수 있습니다. 이 오류는 배열이 비슷한 다른 모델의 JSON을 복사해 수정할 때 특히 자주 발생합니다.

    지원하지 않는 VIA 정의 버전

    VIA 정의 파일은 사용되는 스키마와 기능에 따라 구조가 달라질 수 있습니다. 오래된 정의 파일을 최신 VIA 환경에서 사용하거나, 반대로 최신 형식의 JSON을 오래된 프로그램에서 열면 일부 필드가 인식되지 않을 수 있습니다. 제조사에서 제공하는 최신 파일을 우선 사용하는 이유가 여기에 있습니다.

    💡 TIP

    JSON을 수정하기 전에는 원본 파일을 별도로 복사해두는 것이 좋습니다. 오류가 발생했을 때 수정 지점을 찾는 것보다 정상 작동하던 원본으로 돌아간 뒤 한 항목씩 변경하는 편이 훨씬 빠릅니다.

    10. VIA JSON, QMK 키맵, VIAL 구조 차이

    VIA JSON과 QMK 키맵은 모두 키보드 배열과 관련되어 있지만 역할은 다릅니다. QMK 키맵은 펌웨어를 빌드할 때 포함되는 실제 키 동작 코드이고, VIA JSON은 이미 빌드된 펌웨어를 VIA 화면에서 설정하기 위한 정의 파일입니다.

    VIAL은 QMK 기반 펌웨어와 그래픽 설정 도구를 결합한다는 점에서는 VIA와 비슷하지만, 장치 정의와 보안 절차, 지원 기능 구성에서 차이가 있습니다. VIAL은 키보드 펌웨어 안에 더 많은 정의 정보를 포함하고 다양한 고급 기능을 제공하는 방식으로 설계됩니다.

    구분 VIA JSON QMK 키맵 VIAL
    주요 목적 VIA 화면 정의 펌웨어 동작 구현 실시간 키보드 설정
    적용 방식 파일 불러오기 또는 등록 컴파일 후 플래싱 VIAL 프로그램 연결
    기능 추가 펌웨어 지원 범위 내 표시 소스 코드로 직접 구현 지원 기능을 GUI에서 설정
    난이도 비교적 낮음 높음 중간

    단순히 키 위치를 바꾸고 매크로를 설정하려는 사용자라면 VIA만으로 충분한 경우가 많습니다. 반면 펌웨어의 동작 자체를 바꾸거나 새로운 기능을 구현하려면 QMK 소스 수정과 컴파일이 필요합니다. VIAL은 다양한 고급 설정을 GUI에서 다루고 싶을 때 선택할 수 있지만, 키보드가 VIAL 펌웨어를 지원해야 합니다.

    11. VIA JSON을 직접 수정해도 될까?

    기본적인 JSON 문법과 VIA 구조를 이해하고 있다면 직접 수정할 수 있습니다. 예를 들어 키보드 이름을 정리하거나, 실제 제품과 다른 화면상의 키 위치를 바로잡거나, 펌웨어에서 이미 지원하는 옵션을 화면에 표시하도록 수정할 수 있습니다.

    그러나 JSON 수정만으로 매트릭스 회로를 바꾸거나, NKRO를 추가하거나, 스캔 속도를 높이거나, 새로운 키보드 기능을 구현할 수는 없습니다. 이런 동작은 펌웨어와 하드웨어 영역에서 결정됩니다.

    JSON 수정으로 가능한 것과 어려운 것
    • 가능: 화면 키 위치 수정, 키보드 이름 변경, 레이아웃 옵션 정리
    • 조건부 가능: 펌웨어가 이미 지원하는 조명·설정 메뉴 표시
    • 불가능: 물리 매트릭스 변경, 새로운 USB 기능 추가, 스캔 로직 변경
    • 펌웨어 작업 필요: 레이어 수 확장, 사용자 키코드 구현, 기능 자체 추가

    수정할 때는 한 번에 여러 항목을 바꾸지 않는 것이 좋습니다. 원본을 복사한 뒤 키보드 이름, layouts, 메뉴처럼 영역을 나누어 하나씩 수정하고, 변경할 때마다 VIA에서 정상적으로 불러와지는지 확인해야 오류 원인을 쉽게 찾을 수 있습니다.

    🔎 Insight

    VIA JSON을 키보드 드라이버라고 부르는 경우가 있지만, 운영체제 수준의 장치 드라이버와는 성격이 다릅니다. JSON은 키보드의 USB 통신을 가능하게 하는 파일이 아니라 VIA 내부에서 장치를 설명하고 설정 화면을 구성하는 데이터입니다.

    12. 자주 묻는 질문

    Q. VIA JSON을 불러오면 키보드 펌웨어도 바뀌나요?

    아닙니다. JSON은 VIA 화면에서 키보드 구조를 설명하는 파일입니다. 펌웨어를 교체하거나 업데이트하려면 별도의 펌웨어 파일과 플래싱 과정이 필요합니다.

    Q. 다른 키보드의 JSON을 불러오면 고장 날 수 있나요?

    일반적으로 JSON을 잘못 불러온 것만으로 하드웨어가 바로 손상되지는 않습니다. 다만 배열이 잘못 표시되거나 엉뚱한 키가 변경될 수 있으므로 자신의 모델과 펌웨어에 맞는 파일을 사용해야 합니다.

    Q. JSON에 키를 추가하면 실제 키보드에도 키가 생기나요?

    아닙니다. JSON은 화면 표현만 정의합니다. 실제 키 수와 위치는 PCB 매트릭스, 펌웨어 키맵, 물리 스위치 배치에 의해 결정됩니다.

    Q. VIA 설정은 키보드를 분리하면 사라지나요?

    정상적인 VIA 지원 펌웨어라면 변경한 동적 키맵이 키보드의 비휘발성 저장 영역에 기록되므로 USB 케이블을 분리해도 유지됩니다. 공장 초기화나 펌웨어 교체 시에는 설정이 초기화될 수 있습니다.

    Q. JSON은 정상인데 VIA가 키보드를 찾지 못하는 이유는 무엇인가요?

    데이터 전송을 지원하지 않는 케이블, 잘못된 연결 모드, 브라우저 권한 거부, VID·PID 불일치, VIA 기능이 없는 펌웨어 등이 원인일 수 있습니다. 유선 연결과 Chrome 또는 Edge 환경부터 확인하는 것이 좋습니다.

    Q. VIA JSON으로 NKRO나 Polling Rate를 바꿀 수 있나요?

    일반적인 VIA JSON만으로는 바꿀 수 없습니다. NKRO 처리, 스캔 주기, USB Polling Rate 같은 항목은 주로 키보드 펌웨어와 USB 장치 설정에서 결정됩니다.

    📚 함께 보면 좋은 글

    VIA JSON의 역할을 이해했다면 키보드 입력 처리 과정과 VIA·VIAL의 구조도 함께 살펴보는 것이 좋습니다. 각 개념이 어느 영역에서 작동하는지 비교하면 JSON으로 가능한 설정과 펌웨어 수정이 필요한 작업을 더 명확하게 구분할 수 있습니다.

    13. 공식 자료

    VIA JSON을 직접 작성하거나 수정하려면 예제 파일만 복사하기보다 VIA와 QMK의 공식 문서를 함께 확인하는 것이 안전합니다. 특히 정의 파일 버전, 동적 키맵, 장치 식별 정보는 사용하는 펌웨어와 VIA 환경에 따라 달라질 수 있습니다.

    14. Sources

    Link&Tem 한 줄 정리

    VIA JSON은 키보드의 기능을 만드는 펌웨어가 아니라, VIA가 장치와 배열을 이해하고 설정 화면을 구성하도록 돕는 구조 설명서입니다.

  • NKRO 동작 원리|키보드는 여러 키를 어떻게 동시에 인식할까?

    NKRO 동작 원리|키보드는 여러 키를 어떻게 동시에 인식할까?

    LINK&TEM GUIDE

    NKRO 동작 원리

    모든 키를 동시에 입력해도 왜 정확하게 인식될까?

    📌 핵심 요약
    • NKRO는 N-Key Rollover의 약자로 모든 키 입력을 동시에 인식하는 기술입니다.
    • 단순히 USB 속도가 빠르기 때문이 아니라 키보드 내부 스캔 구조와 HID 리포트 방식이 함께 작동한 결과입니다.
    • 매트릭스 구조만으로는 고스팅이 발생할 수 있으므로 대부분의 NKRO 키보드는 다이오드를 사용합니다.
    • QMK와 VIA, VIAL을 지원하는 대부분의 커스텀 키보드는 NKRO를 기본적으로 지원합니다.
    • 게임뿐 아니라 단축키가 많은 작업 환경에서도 NKRO는 입력 정확도를 높여 줍니다.

    기계식 키보드를 살펴보다 보면 NKRO 지원이라는 문구를 자주 보게 됩니다. 하지만 실제로 NKRO가 무엇을 의미하는지, 왜 필요한 기술인지 정확히 이해하는 경우는 많지 않습니다.

    많은 사람들이 NKRO를 “동시에 여러 키를 누를 수 있는 기능” 정도로 알고 있지만 실제 내부에서는 훨씬 복잡한 과정이 진행됩니다. 키보드는 수백 번의 스캔을 반복하면서 어떤 키가 눌렸는지 확인하고, 그 결과를 USB HID Report 형태로 운영체제에 전달합니다. 이 과정에서 여러 키를 동시에 안정적으로 전달하기 위한 구조가 바로 NKRO입니다.

    이번 글에서는 NKRO가 만들어진 이유부터 키보드 내부 동작 과정, USB HID Report와의 관계, 왜 다이오드가 필요한지, 그리고 실제 게임과 작업 환경에서 어떤 차이를 만드는지까지 순서대로 알아보겠습니다.


    1. NKRO란 무엇인가?

    NKRO는 N-Key Rollover의 약자입니다. 여기서 N은 특정 숫자가 아니라 “제한이 없는 개수”를 의미합니다. 다시 말해 키보드에 존재하는 모든 키를 동시에 눌러도 각각을 독립적으로 인식할 수 있는 구조를 의미합니다.

    예를 들어 일반적인 6KRO 키보드는 수정키(Ctrl, Shift, Alt 등)를 제외하면 동시에 최대 6개의 일반 키만 USB 보고서에 담을 수 있습니다. 반면 NKRO는 키 개수 제한 대신 비트 단위의 상태 정보를 전송하기 때문에 사실상 모든 키를 동시에 전달할 수 있습니다.

    💡 TIP

    NKRO는 키를 “더 빨리” 읽는 기술이 아닙니다. 여러 개의 키 상태를 동시에 독립적으로 저장하고 전송하는 방식이라고 이해하는 것이 정확합니다.

    2. 왜 NKRO가 필요할까?

    초기의 키보드는 문서 작성이 주목적이었습니다. 사람이 동시에 누르는 키 개수가 많지 않았기 때문에 2~6개의 동시 입력만으로도 충분했습니다.

    하지만 게임에서는 상황이 완전히 달라집니다. 이동(WASD), 달리기(Shift), 점프(Space), 스킬(QERF), 아이템 숫자키까지 동시에 입력하는 경우가 흔합니다. 여기에 음성 채팅 단축키나 매크로까지 사용하면 동시에 입력되는 키 수는 훨씬 많아집니다.

    영상 편집이나 CAD 프로그램에서도 여러 Modifier 키와 단축키를 동시에 사용하는 경우가 많기 때문에 입력 제한이 작업 효율에 직접적인 영향을 줄 수 있습니다.

    NKRO가 특히 중요한 환경
    • FPS 게임
    • 리듬 게임
    • MMORPG
    • 영상 편집
    • 프로그래밍
    • CAD·3D 작업
    🔍 Link&Tem Insight USB 규격이 NKRO를 막는 것은 아닙니다. 실제 제한은 대부분 HID Report Descriptor가 어떻게 설계되었는지에 따라 결정됩니다. 따라서 같은 USB 연결이라도 키보드마다 동시 입력 가능한 개수가 달라질 수 있습니다.

    3. 키보드는 여러 키를 어떻게 읽을까?

    키보드는 각각의 스위치를 독립적인 전선으로 연결하지 않습니다. 대신 행(Row)과 열(Column)로 이루어진 매트릭스(Matrix) 구조를 사용합니다.

    컨트롤러는 매우 빠른 속도로 각 행을 하나씩 활성화한 뒤 모든 열을 읽습니다. 이를 반복하면서 어떤 위치의 스위치가 닫혔는지 확인합니다. 이것이 바로 키보드 스캔(Scanning)입니다.

    스캔이 완료되면 컨트롤러는 현재 눌린 모든 키 목록을 메모리에 저장하고, USB Polling 시점마다 PC로 전달합니다.

    실수하기 쉬운 부분

    Scan Rate가 높다고 NKRO가 되는 것은 아닙니다. Scan Rate는 얼마나 자주 키를 확인하는지이고, NKRO는 확인한 결과를 얼마나 많이 저장하고 전달할 수 있는지에 대한 개념입니다.
    🔍 Link&Tem Insight QMK Documentation에서는 Matrix Scan과 HID Report를 별개의 과정으로 설명합니다. 즉 키를 읽는 과정과 USB로 전달하는 과정은 내부적으로 서로 다른 단계이며 각각 독립적으로 최적화됩니다.

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

    매트릭스 구조에서는 특정 조합의 키를 동시에 누르면 실제로 누르지 않은 키가 눌린 것처럼 보이는 현상이 발생할 수 있습니다. 이것을 Ghosting이라고 합니다.

    예를 들어 네 개의 스위치가 사각형 형태를 만들면 전류가 예상하지 못한 방향으로 흐를 수 있고, 컨트롤러는 존재하지 않는 입력까지 감지하게 됩니다.

    이를 방지하기 위해 대부분의 NKRO 지원 기계식 키보드는 모든 스위치에 다이오드를 추가합니다. 다이오드는 전류가 한 방향으로만 흐르도록 만들어 Ghosting과 Masking 현상을 거의 제거합니다.

    구분 특징
    다이오드 없음 고스팅 발생 가능
    다이오드 있음 각 키를 독립적으로 인식 가능
    NKRO 설계 모든 키 입력을 안정적으로 유지
    Part 1 정리

    NKRO는 단순히 “동시 입력이 많다”는 기능이 아니라 매트릭스 스캔, 다이오드 설계, HID Report 구조가 함께 작동하여 모든 키 입력을 독립적으로 처리하는 기술입니다. 다음에서는 USB HID Report에서 NKRO가 실제로 어떻게 표현되는지, 6KRO와의 차이, VIA·VIAL·QMK와의 관계, 실사용 환경에서 어떤 장점이 있는지 자세히 알아보겠습니다.

    5. NKRO는 키 입력을 어떻게 기록할까?

    NKRO의 핵심은 현재 눌려 있는 여러 키의 상태를 동시에 기록하고, 그 정보를 운영체제에 전달하는 것입니다. 키보드는 사용자가 입력한 글자를 순서대로 저장했다가 보내는 장치가 아닙니다. 매우 짧은 주기로 키 스위치의 상태를 검사한 뒤, 현재 어떤 키가 눌려 있고 어떤 키가 떼어졌는지를 하나의 입력 상태로 정리합니다.

    예를 들어 사용자가 W, A, Shift, Space를 동시에 누르고 있다고 가정해보겠습니다. 키보드 펌웨어는 매트릭스를 스캔하면서 네 키가 모두 활성화되어 있다는 사실을 확인합니다. 이후 디바운스 처리를 거쳐 실제 입력으로 판단된 키를 HID Report에 기록하고, USB 또는 무선 연결을 통해 컴퓨터에 전달합니다.

    NKRO 입력 처리 흐름
    1. 사용자가 여러 스위치를 동시에 누릅니다.
    2. MCU가 키보드 매트릭스의 행과 열을 반복해서 검사합니다.
    3. 다이오드 방향과 전기 신호를 기준으로 눌린 키를 판별합니다.
    4. 디바운스 처리를 통해 일시적인 접점 떨림을 제거합니다.
    5. 키맵과 레이어를 적용해 실제 키코드를 결정합니다.
    6. 현재 눌린 키 상태를 HID Report 형식으로 만듭니다.
    7. 완성된 Report가 운영체제로 전송됩니다.

    이 과정에서 중요한 점은 NKRO가 단순히 많은 키를 감지하는 기능만을 의미하지 않는다는 것입니다. 매트릭스 회로에서 각각의 키를 구분할 수 있어야 하며, 펌웨어가 그 상태를 손실 없이 처리해야 하고, 마지막으로 HID Report가 충분한 수의 키 상태를 표현할 수 있어야 합니다.

    세 단계 중 하나라도 제한이 있으면 완전한 NKRO가 성립하지 않습니다. 회로에서 키를 정확히 구분하더라도 Report가 6개의 일반 키만 표현할 수 있다면 컴퓨터에는 6개까지만 전달될 수 있습니다. 반대로 Report 형식이 NKRO를 지원하더라도 매트릭스에서 Ghosting이 발생하면 실제로 누르지 않은 키가 함께 감지될 수 있습니다.

    💡 핵심 구조

    NKRO는 키 매트릭스 회로, 다이오드, 펌웨어 처리, HID Report 구조가 함께 작동해야 구현됩니다. 제품 설명에 NKRO라고 적혀 있다는 사실만으로 내부 구조를 모두 확인할 수 있는 것은 아닙니다.

    6. 6KRO와 NKRO의 HID Report 차이

    6KRO와 NKRO의 차이를 이해하려면 USB HID Report 구조를 살펴봐야 합니다. 일반적인 USB 키보드는 운영체제에 키 상태를 전달하기 위해 HID Report를 사용합니다. Report에는 모디파이어 키 상태와 일반 키코드가 들어갑니다.

    전통적인 Boot Keyboard Report는 호환성을 우선한 단순한 구조입니다. Ctrl, Shift, Alt, GUI 같은 모디파이어 상태를 기록하는 영역과 일반 키코드 6개를 담는 영역으로 구성되는 경우가 많습니다. 이 방식에서는 일반 키 슬롯이 6개이므로 동시에 표현할 수 있는 일반 키도 최대 6개입니다.

    구분 일반적인 표현 방식 특징
    6KRO 키코드 슬롯 6개 호환성이 높고 구조가 단순합니다.
    NKRO 비트맵 또는 확장 Report 각 키의 눌림 상태를 독립적으로 표현할 수 있습니다.

    NKRO에서는 키코드 목록 대신 비트맵 방식을 사용할 수 있습니다. 각 키에 하나의 비트를 배정하고, 키가 눌리면 해당 비트를 1로 바꾸는 구조입니다. 키가 떼어지면 다시 0으로 돌아갑니다.

    예를 들어 A, S, D 키에 각각 하나의 비트가 배정되어 있다면 세 키를 동시에 누르는 순간 해당 비트들이 모두 1로 표시됩니다. 키의 개수가 늘어나더라도 Report 안에 충분한 비트가 준비되어 있다면 여러 키의 상태를 동시에 표현할 수 있습니다.

    주의할 점

    6KRO의 숫자 6은 일반 키 슬롯을 기준으로 설명하는 경우가 많습니다. Ctrl, Shift, Alt 같은 모디파이어 키는 별도의 비트 영역으로 처리될 수 있으므로 실제로는 모디파이어와 일반 키 6개를 함께 입력할 수 있습니다.

    따라서 6KRO 키보드에서 Shift, Ctrl, W, A, S, D, Space를 동시에 눌렀다고 해서 반드시 입력이 누락되는 것은 아닙니다. Shift와 Ctrl은 모디파이어 영역에서 처리되고, W, A, S, D, Space는 일반 키 슬롯에 기록될 수 있기 때문입니다.

    반면 알파벳이나 숫자처럼 일반 키로 분류되는 키를 7개 이상 동시에 누르면 Report 슬롯이 부족해질 수 있습니다. 이때 펌웨어와 장치 구현에 따라 일부 키가 무시되거나, 오류 상태를 나타내는 특수 값이 보고될 수 있습니다.

    7. 다이오드가 NKRO에 중요한 이유

    키보드 매트릭스에는 제한된 MCU 핀으로 많은 키를 처리하기 위해 행과 열이 사용됩니다. 하지만 단순히 스위치만 격자 형태로 연결하면 여러 키를 동시에 눌렀을 때 전류가 예상하지 않은 경로로 흐를 수 있습니다.

    이 문제를 줄이기 위해 각 스위치에 다이오드를 배치합니다. 다이오드는 전류가 한 방향으로 흐르도록 제한하는 부품입니다. 각 키에 다이오드가 있으면 여러 스위치가 동시에 연결되더라도 전류 경로를 더 명확하게 분리할 수 있습니다.

    예를 들어 같은 매트릭스 안에서 세 개의 키를 눌렀을 때, 다이오드가 없다면 전류가 다른 행과 열로 우회하면서 네 번째 키도 눌린 것처럼 보일 수 있습니다. 다이오드가 각 스위치의 전류 방향을 제한하면 이러한 우회 경로가 차단되어 실제로 누른 키를 더 정확히 구분할 수 있습니다.

    다이오드가 수행하는 역할
    • 매트릭스 안에서 전류가 역방향으로 흐르는 것을 제한합니다.
    • Ghosting이 발생할 수 있는 우회 경로를 차단합니다.
    • 각 스위치의 상태를 독립적으로 판별하기 쉽게 만듭니다.
    • 여러 키를 동시에 누르는 NKRO 구현에 필요한 기반을 제공합니다.

    다만 다이오드가 있다고 해서 자동으로 NKRO가 완성되는 것은 아닙니다. 다이오드는 매트릭스에서 키를 정확히 감지하기 위한 하드웨어 조건입니다. 감지된 입력을 처리하는 펌웨어와 운영체제로 전달하는 Report 구조도 NKRO를 지원해야 합니다.

    Link&Tem Insight

    다이오드는 입력 가능한 키의 숫자를 직접 늘리는 부품이라기보다, 동시에 눌린 키를 서로 혼동하지 않도록 전기 신호를 분리하는 부품입니다. 정확한 감지가 가능해진 뒤에야 펌웨어와 HID Report가 NKRO를 완성할 수 있습니다.

    8. NKRO와 Anti-Ghosting은 같은 기능일까?

    키보드 제품 설명에서는 NKRO와 Anti-Ghosting이 함께 표시되는 경우가 많습니다. 두 용어는 관련이 있지만 완전히 같은 의미는 아닙니다.

    Anti-Ghosting은 여러 키를 눌렀을 때 실제로 누르지 않은 키가 입력되는 Ghosting 현상을 방지하는 개념입니다. 특정 게임 조합이나 자주 사용하는 키 영역에서 Ghosting이 발생하지 않도록 회로를 설계하는 것도 Anti-Ghosting이라고 표현할 수 있습니다.

    NKRO는 동시에 눌린 모든 키를 각각 인식하고 전달하는 기능을 의미합니다. 따라서 완전한 NKRO 키보드는 일반적으로 Ghosting을 방지할 수 있어야 하지만, Anti-Ghosting 키보드가 반드시 모든 키에 대해 NKRO를 지원하는 것은 아닙니다.

    항목 NKRO Anti-Ghosting
    목적 여러 키의 상태를 동시에 인식하고 전달 누르지 않은 키가 입력되는 현상 방지
    적용 범위 전체 배열을 의미하는 경우가 많음 특정 키 조합이나 영역만 적용될 수 있음
    확인 방법 다수의 키를 동시에 눌러 인식 여부 확인 문제가 발생하는 특정 조합을 시험

    일부 멤브레인 키보드는 게임에서 자주 사용하는 WASD 주변 키에 대해서만 여러 키 동시 입력을 지원하기도 합니다. 이러한 제품도 Anti-Ghosting이라고 표시될 수 있지만, 키보드 전체에서 모든 키 조합을 인식하는 NKRO와는 차이가 있습니다.

    9. NKRO 모드와 6KRO 모드를 나누는 이유

    NKRO가 더 많은 키를 처리할 수 있다면 모든 키보드가 항상 NKRO로 동작하면 될 것처럼 보입니다. 하지만 실제 제품에서는 NKRO와 6KRO 모드를 전환할 수 있도록 제공하는 경우가 있습니다.

    가장 큰 이유는 호환성입니다. 일부 BIOS, UEFI, KVM 스위치, 구형 운영체제 또는 특수 장치는 단순한 Boot Keyboard Report를 더 안정적으로 인식할 수 있습니다. 확장된 NKRO Report를 제대로 처리하지 못하는 환경에서는 키보드가 인식되지 않거나 일부 입력이 정상적으로 전달되지 않을 수 있습니다.

    이 때문에 키보드 펌웨어는 부팅 과정이나 호환성이 필요한 환경에서 6KRO 형식을 사용하고, 운영체제가 정상적으로 로드된 뒤에는 NKRO 형식으로 동작하도록 설계될 수 있습니다. 일부 커스텀 키보드는 특정 키 조합이나 VIA·VIAL 설정을 통해 두 모드를 직접 전환할 수 있습니다.

    💡 6KRO가 필요한 상황

    BIOS나 UEFI에서 키보드가 인식되지 않거나 KVM 스위치, 특수 보안 장비, 오래된 시스템에서 입력 문제가 발생한다면 NKRO를 끄고 6KRO 모드로 바꾸는 것이 해결 방법이 될 수 있습니다.

    일반적인 Windows, macOS, Linux 환경에서는 NKRO가 문제없이 동작하는 경우가 많습니다. 하지만 키보드를 여러 장치에 연결하거나 업무용 특수 시스템에서 사용할 계획이라면 전환 기능이 있는지 확인하는 것이 좋습니다.

    10. 무선 키보드에서도 NKRO가 가능할까?

    NKRO는 USB 유선 연결에서만 가능한 기능은 아닙니다. 2.4GHz 무선이나 Bluetooth 연결에서도 장치와 펌웨어가 지원한다면 여러 키를 동시에 전달할 수 있습니다.

    다만 연결 모드에 따라 실제 동시 입력 수가 달라지는 제품이 있습니다. 유선과 2.4GHz에서는 NKRO를 지원하지만 Bluetooth에서는 6KRO로 제한되는 방식이 대표적입니다. Bluetooth의 전송 구조, 펌웨어 메모리, 배터리 사용량, 호환성 등을 고려해 제조사가 Report 크기를 다르게 설정할 수 있기 때문입니다.

    연결 방식 NKRO 가능 여부 확인할 점
    USB 유선 지원 가능 펌웨어와 HID Report 지원 여부
    2.4GHz 지원 가능 수신기와 전용 펌웨어 사양
    Bluetooth 제품별로 다름 6KRO 제한 여부와 운영체제 호환성

    따라서 무선 키보드의 사양에 NKRO라고 적혀 있더라도 모든 연결 모드에서 동일하게 동작하는지는 별도로 확인해야 합니다. 제조사 설명서에서 유선, 2.4GHz, Bluetooth 모드별 동시 입력 지원 수를 구분해 확인하는 것이 가장 정확합니다.

    11. NKRO가 입력 지연을 줄여줄까?

    NKRO는 동시에 인식할 수 있는 키의 수와 관련된 기능입니다. 따라서 NKRO를 지원한다고 해서 키보드의 입력 지연이 자동으로 짧아지는 것은 아닙니다.

    입력 지연은 매트릭스 Scan Rate, 디바운스 시간, 센서 처리, 펌웨어 연산, USB Polling Rate, 무선 전송, 운영체제 처리 등 여러 단계의 영향을 받습니다. NKRO는 이 과정에서 여러 키의 상태를 손실 없이 표현하는 역할을 담당합니다.

    예를 들어 1,000Hz Polling Rate와 빠른 디바운스를 지원하는 6KRO 키보드는 동시 입력 수에는 제한이 있지만 한두 개의 키를 누르는 상황에서는 매우 빠르게 반응할 수 있습니다. 반대로 NKRO를 지원하더라도 Scan Rate가 낮거나 디바운스 시간이 길다면 단일 키 입력 지연이 더 길 수 있습니다.

    Link&Tem Insight

    NKRO는 빠른 키보드를 의미하는 성능 수치가 아닙니다. NKRO는 동시 입력 정확도를 나타내고, Scan Rate와 Polling Rate는 입력을 발견하고 전달하는 주기와 관련됩니다.

    12. NKRO가 실제로 필요한 사용 환경

    일반적인 문서 작성에서는 여러 개의 일반 키를 7개 이상 동시에 누르는 일이 거의 없습니다. Ctrl, Shift, Alt 같은 모디파이어는 별도로 처리되므로 대부분의 단축키도 6KRO 범위 안에서 정상적으로 작동합니다.

    NKRO의 장점은 게임, 음악 프로그램, 리듬 게임, 키보드 입력 테스트, 여러 명이 하나의 키보드를 사용하는 환경처럼 많은 키가 동시에 눌릴 수 있는 상황에서 크게 나타납니다.

    NKRO가 유용한 대표 상황
    • 이동키와 여러 스킬키를 동시에 사용하는 게임
    • 양손으로 많은 키를 누르는 리듬 게임
    • 컴퓨터 키보드를 MIDI 입력처럼 활용하는 프로그램
    • 다수의 단축키와 매크로를 조합하는 작업 환경
    • 키보드 회로와 펌웨어를 테스트하는 커스텀 키보드 개발

    FPS 게임에서도 W, Shift, Ctrl, Space와 여러 기능키를 동시에 누를 수 있습니다. 이 정도는 잘 설계된 6KRO 키보드에서도 처리될 가능성이 높지만, 키 조합에 대한 제한을 신경 쓰지 않고 사용할 수 있다는 점에서 NKRO가 유리합니다.

    반면 인터넷 검색, 문서 작성, 간단한 사무 작업이 중심이라면 NKRO의 차이를 직접 체감하기 어려울 수 있습니다. 이 경우 키감, 배열, 소음, 연결 안정성, 배터리 사용 시간 같은 요소가 실제 만족도에 더 큰 영향을 줄 수 있습니다.

    13. 내 키보드의 NKRO를 확인하는 방법

    키보드가 NKRO를 지원하는지 확인하는 가장 간단한 방법은 키 테스트 도구에서 여러 키를 동시에 눌러보는 것입니다. VIA를 지원하는 키보드라면 VIA의 Key Tester 기능을 사용할 수 있고, 운영체제에서 동작하는 다른 키 테스트 도구를 이용할 수도 있습니다.

    테스트할 때는 한 번에 키를 무작정 많이 누르기보다 조합을 바꿔가며 확인하는 것이 좋습니다. 같은 행이나 같은 열에 있는 키, 대각선 형태의 키, 게임에서 자주 사용하는 키 조합을 차례대로 눌러보면 매트릭스 제한이나 특정 조합 문제를 찾기 쉽습니다.

    테스트 시 주의사항

    키 테스트 화면에서 많은 키가 표시된다고 해서 모든 물리 키 조합이 검증된 것은 아닙니다. 배열 전체의 NKRO를 확인하려면 행과 열이 다른 여러 조합을 반복해서 시험해야 합니다.

    또한 연결 모드를 변경해서 테스트해야 합니다. 유선에서는 모든 키가 정상적으로 인식되지만 Bluetooth에서는 동시 입력 수가 줄어들 수 있습니다. 운영체제, 펌웨어 버전, NKRO 설정 상태에 따라서도 결과가 달라질 수 있습니다.

    14. NKRO 테스트에서 자주 생기는 오해

    첫 번째 오해는 손가락으로 누를 수 있는 키의 수만 확인하면 된다는 것입니다. 사람이 일반적으로 동시에 누를 수 있는 키는 제한적이지만, 특정 조합에서 Ghosting이나 Blocking이 발생하는지는 단순한 숫자만으로 판단하기 어렵습니다.

    두 번째는 테스트 화면에 표시되지 않은 키가 모두 키보드 고장이라는 생각입니다. NKRO 모드가 꺼져 있거나 Bluetooth 모드에서 동시 입력 수가 제한될 수 있고, 운영체제 또는 브라우저가 특정 단축키를 먼저 처리했을 가능성도 있습니다.

    예를 들어 Alt와 Tab 조합은 운영체제의 창 전환 기능으로 사용되고, Ctrl과 W는 브라우저 탭을 닫을 수 있습니다. Windows 키가 포함된 조합도 운영체제 단축키가 실행되어 테스트 화면에서 확인하기 불편할 수 있습니다.

    세 번째는 NKRO가 켜져 있으면 무조건 모든 키가 동시에 입력된다는 생각입니다. Fn 키는 일반적인 HID 키코드로 PC에 직접 전송되지 않고 키보드 내부 레이어를 전환하는 용도로 사용되는 경우가 많습니다. 따라서 Key Tester에서 Fn 키 자체가 표시되지 않는 것은 정상일 수 있습니다.

    15. 자주 묻는 질문

    Q1. NKRO는 모든 키를 정말 동시에 누를 수 있다는 뜻인가요?

    일반적으로 키보드 배열 안의 여러 일반 키를 동시에 인식하고 전달할 수 있다는 뜻입니다. 다만 Fn처럼 내부 레이어 전환에 사용되는 키나 시스템이 별도로 처리하는 특수 키는 일반 키와 동작 방식이 다를 수 있습니다.

    Q2. 6KRO 키보드는 키를 6개만 누를 수 있나요?

    일반 키코드 슬롯이 6개라는 의미로 사용되는 경우가 많습니다. Ctrl, Shift, Alt 같은 모디파이어는 별도 영역에서 처리될 수 있어 모디파이어를 포함하면 6개보다 많은 물리 키가 동시에 인식될 수 있습니다.

    Q3. NKRO와 Anti-Ghosting 중 무엇이 더 좋은가요?

    두 기능은 직접 비교할 대상이 아닙니다. Anti-Ghosting은 잘못된 가상 입력을 막는 개념이고, NKRO는 여러 키를 동시에 인식하고 전달하는 기능입니다. 완전한 NKRO를 구현하려면 Ghosting을 방지할 수 있는 회로 구조가 필요합니다.

    Q4. NKRO를 켜면 게임 반응 속도가 빨라지나요?

    NKRO는 동시 입력 수와 관련된 기능이므로 단일 키의 입력 지연을 직접 줄이지는 않습니다. 반응 속도는 Scan Rate, 디바운스, 펌웨어 처리, Polling Rate 등의 영향을 받습니다.

    Q5. 다이오드가 없으면 NKRO를 구현할 수 없나요?

    일반적인 스위치 매트릭스에서는 각 키의 전류 경로를 분리하기 위해 다이오드가 중요한 역할을 합니다. 다만 센서를 개별적으로 읽는 구조나 전혀 다른 회로 방식에서는 구현 방법이 달라질 수 있습니다.

    Q6. Bluetooth에서도 NKRO를 사용할 수 있나요?

    기술적으로 가능하지만 실제 지원 여부는 제품마다 다릅니다. 일부 키보드는 유선과 2.4GHz에서 NKRO를 지원하고 Bluetooth에서는 6KRO로 동작합니다.

    Q7. VIA에서 Fn 키가 테스트되지 않는 것은 고장인가요?

    Fn 키는 PC로 직접 전송되는 일반 키가 아니라 키보드 내부 레이어를 전환하는 키로 처리되는 경우가 많습니다. 따라서 VIA Key Tester에 Fn 키 자체가 표시되지 않아도 정상일 수 있습니다.

    Q8. NKRO 모드에서 키보드가 인식되지 않으면 어떻게 해야 하나요?

    키보드의 NKRO 전환 단축키나 설정 도구를 이용해 6KRO 모드로 바꿔보는 것이 좋습니다. 특히 BIOS, KVM 스위치, 구형 시스템에서 문제가 발생한다면 호환성이 높은 6KRO 모드가 도움이 될 수 있습니다.

    함께 보면 좋은 글

    공식 자료

    출처

    • USB Implementers Forum, HID 및 Keyboard/Keypad Usage 관련 문서
    • QMK Firmware 공식 문서 및 오픈소스 펌웨어 자료
    • VIA 공식 웹사이트와 키보드 테스트 기능
    Link&Tem 한 줄 정리

    NKRO는 다이오드가 적용된 매트릭스 회로에서 여러 키를 정확히 감지하고, 펌웨어와 확장 HID Report가 그 상태를 손실 없이 컴퓨터에 전달하는 구조입니다.

  • Scan Rate와 Polling Rate 차이|키보드 입력 속도와 지연 구조 이해하기

    Scan Rate와 Polling Rate 차이|키보드 입력 속도와 지연 구조 이해하기

    LINK&TEM GUIDE

    Scan Rate와 Polling Rate 차이

    키보드가 입력을 찾는 속도와 PC에 전달하는 속도는 서로 다르다

    📌 핵심 요약
    • Scan Rate는 키보드 컨트롤러가 내부 키 매트릭스를 검사하는 빈도입니다.
    • Polling Rate는 PC가 USB 장치의 입력 보고를 확인하거나 전송받는 빈도입니다.
    • 두 수치는 모두 Hz로 표시되지만 측정하는 구간과 역할이 서로 다릅니다.
    • Polling Rate가 높아도 Scan Rate가 낮으면 키 입력을 발견하는 단계에서 지연이 발생할 수 있습니다.
    • 실제 입력 지연은 스캔, 디바운스, 펌웨어 처리, USB 전송, 운영체제 처리 과정이 합쳐져 결정됩니다.

    기계식 키보드의 성능을 비교하다 보면 1,000Hz Polling Rate, 4,000Hz Scan Rate, 8,000Hz 응답속도와 같은 표현을 자주 볼 수 있습니다. 숫자가 높을수록 빠르다는 점은 쉽게 이해할 수 있지만, Scan Rate와 Polling Rate가 정확히 무엇을 측정하는지는 혼동하기 쉽습니다.

    두 용어는 모두 키 입력 속도와 관련되어 있고 Hz 단위를 사용하지만 같은 의미가 아닙니다. Scan Rate는 키보드 내부에서 물리적인 스위치 상태를 얼마나 자주 확인하는지를 나타내고, Polling Rate는 키보드와 PC 사이에서 입력 데이터가 얼마나 자주 전달될 수 있는지를 나타냅니다.

    쉽게 말하면 키보드가 먼저 내부에서 “어떤 키가 눌렸는가”를 찾아야 하고, 그다음 발견한 입력을 PC에 알려야 합니다. 전자가 Scan Rate이고 후자가 Polling Rate입니다. 둘 중 하나만 빠르다고 해서 전체 입력 과정이 무조건 빨라지는 것은 아닙니다.


    1. 키를 누른 순간 바로 PC에 전달되는 것은 아니다

    사용자가 키보드의 스위치를 누르면 금속 접점이나 자기 센서의 상태가 변합니다. 하지만 PC가 그 변화를 즉시 직접 읽는 것은 아닙니다. 키보드 내부의 마이크로컨트롤러가 먼저 스위치 상태를 확인하고, 눌린 키를 판별한 뒤, 정해진 형식의 입력 보고서로 만들어 USB 또는 무선 인터페이스를 통해 PC에 전송합니다.

    일반적인 유선 키보드에서는 입력이 대략 다음 순서로 처리됩니다.

    키 입력이 전달되는 기본 흐름
    1. 사용자가 키 스위치를 누릅니다.
    2. 스위치 접점 또는 센서의 전기적 상태가 변합니다.
    3. 키보드 컨트롤러가 키 매트릭스나 센서를 스캔합니다.
    4. 디바운스와 입력 판정 과정을 거칩니다.
    5. 펌웨어가 눌린 키를 키코드로 변환합니다.
    6. USB HID 보고서에 현재 입력 상태를 기록합니다.
    7. PC가 정해진 USB 전송 주기에 맞춰 입력 데이터를 받습니다.
    8. 운영체제와 프로그램이 해당 키 입력을 처리합니다.

    이 과정에서 Scan Rate는 주로 3번 단계와 관계가 있고, Polling Rate는 6번과 7번 사이의 통신 주기와 관계가 있습니다. 따라서 두 수치를 동일한 속도 지표로 보면 실제 병목이 어디에서 발생하는지 알기 어렵습니다.

    💡 핵심 개념

    키보드가 입력을 먼저 발견해야 PC로 보낼 수 있습니다. Scan Rate는 입력을 발견하는 속도이고, Polling Rate는 발견한 입력을 전달할 수 있는 속도입니다.

    2. Scan Rate란 무엇인가?

    Scan Rate는 키보드의 마이크로컨트롤러가 스위치 상태를 검사하는 빈도를 의미합니다. 대부분의 키보드는 모든 스위치를 개별 핀에 직접 연결하지 않고, 행과 열로 구성된 키 매트릭스를 사용합니다. 컨트롤러는 특정 행에 신호를 보내고 열의 상태를 읽는 작업을 반복하면서 어느 위치의 키가 눌렸는지 확인합니다.

    예를 들어 Scan Rate가 1,000Hz라면 키보드가 내부 입력 상태를 초당 약 1,000회 검사한다는 뜻입니다. 한 번의 스캔 주기로 환산하면 약 1ms입니다. 4,000Hz라면 한 주기가 약 0.25ms이고, 8,000Hz라면 약 0.125ms입니다.

    Scan Rate 한 번의 스캔 주기 이론상 최대 대기 시간
    125Hz 8ms 약 8ms
    500Hz 2ms 약 2ms
    1,000Hz 1ms 약 1ms
    4,000Hz 0.25ms 약 0.25ms
    8,000Hz 0.125ms 약 0.125ms

    여기에서 말하는 최대 대기 시간은 키가 눌린 시점과 다음 스캔 시점이 얼마나 떨어져 있는지를 단순하게 계산한 값입니다. 키가 스캔 직전에 눌리면 거의 즉시 발견될 수 있지만, 스캔 직후에 눌리면 다음 스캔까지 한 주기 가까이 기다려야 합니다.

    따라서 1,000Hz Scan Rate에서 스캔 단계의 대기 시간은 항상 1ms가 아니라 약 0ms에서 1ms 사이에 분포합니다. 입력 시점이 무작위라고 가정하면 평균 대기 시간은 대략 스캔 주기의 절반인 0.5ms 정도로 볼 수 있습니다.

    Scan Rate가 담당하는 것
    • 행과 열로 구성된 키 매트릭스 검사
    • 각 스위치의 눌림과 해제 상태 확인
    • 새롭게 변한 키 상태 탐지
    • 아날로그 또는 자기축 키보드의 센서 값 샘플링
    • 다음 입력 판정 단계에 전달할 원시 데이터 생성

    기계식 접점식 키보드에서는 매트릭스를 얼마나 자주 검사하는지가 중요하고, 홀 이펙트와 같은 자기축 키보드에서는 센서 값을 얼마나 자주 읽는지도 중요합니다. 자기축 키보드는 단순한 눌림과 해제뿐 아니라 자석의 이동 거리를 측정해야 하므로 센서 샘플링, 필터링, 작동 지점 판정 과정까지 함께 고려해야 합니다.

    3. Scan Rate가 높으면 무엇이 달라질까?

    Scan Rate가 높아지면 키를 누른 뒤 컨트롤러가 그 변화를 발견하기까지의 대기 시간이 짧아집니다. 예를 들어 125Hz 스캔에서는 최악의 경우 다음 검사까지 약 8ms를 기다릴 수 있지만, 1,000Hz에서는 최대 약 1ms, 8,000Hz에서는 최대 약 0.125ms 수준으로 줄어듭니다.

    다만 Scan Rate가 높다고 해서 그 숫자만큼 실제 키보드의 전체 지연이 결정되는 것은 아닙니다. 키 상태를 발견한 뒤에도 디바운스, 키맵 처리, 레이어 판정, 매크로 처리, HID 보고서 생성, USB 전송과 같은 단계가 남아 있기 때문입니다.

    주의할 점

    제조사가 높은 Scan Rate를 표시하더라도 그 수치가 키보드의 전체 입력 지연을 의미하지는 않습니다. 내부 스캔 속도와 실제 PC에서 측정되는 End-to-End 지연은 별도로 봐야 합니다.

    또한 스캔 속도를 지나치게 높이면 마이크로컨트롤러의 처리 부하와 전력 소비가 증가할 수 있습니다. 유선 키보드에서는 전력 문제가 크게 드러나지 않을 수 있지만, 배터리를 사용하는 무선 키보드에서는 높은 스캔 빈도가 사용 시간에 영향을 줄 수 있습니다.

    펌웨어 설계도 중요합니다. 컨트롤러가 빠르게 스캔하더라도 매 스캔마다 무거운 RGB 효과, 복잡한 매크로 처리, 통신 작업을 함께 수행하면 일정한 주기를 유지하지 못할 수 있습니다. 표시된 최대 Scan Rate보다 실제 스캔 간격의 안정성이 더 중요한 이유입니다.

    4. Polling Rate란 무엇인가?

    Polling Rate는 키보드와 PC 사이에서 입력 보고가 처리되는 빈도를 의미합니다. USB 키보드에서는 일반적으로 HID 인터럽트 전송의 폴링 간격과 연결해 설명합니다. PC의 USB 호스트가 정해진 간격마다 키보드의 입력 엔드포인트를 확인하고, 준비된 데이터가 있으면 이를 받아가는 구조입니다.

    Polling Rate가 1,000Hz라면 약 1ms마다 입력 보고를 처리할 기회가 생깁니다. 2,000Hz는 약 0.5ms, 4,000Hz는 약 0.25ms, 8,000Hz는 약 0.125ms 간격입니다.

    Polling Rate 보고 간격 초당 전송 기회
    125Hz 8ms 약 125회
    500Hz 2ms 약 500회
    1,000Hz 1ms 약 1,000회
    4,000Hz 0.25ms 약 4,000회
    8,000Hz 0.125ms 약 8,000회

    여기에서 중요한 점은 Polling Rate가 키보드 스위치를 직접 검사하는 속도가 아니라는 것입니다. 키보드 내부에서 아직 입력을 발견하지 못했다면 PC가 아무리 자주 데이터를 확인해도 새로운 입력 보고서는 준비되지 않습니다.

    반대로 키보드가 빠르게 입력을 발견했더라도 USB 보고 주기가 느리면 다음 전송 기회까지 기다려야 합니다. 따라서 Scan Rate와 Polling Rate는 입력 경로의 서로 다른 구간을 담당하면서 전체 지연에 각각 영향을 줍니다.

    💡 비유로 이해하기

    Scan Rate는 창고 직원이 새 택배가 들어왔는지 확인하는 빈도이고, Polling Rate는 배송 차량이 창고에 도착하는 빈도와 비슷합니다. 직원이 택배를 늦게 발견해도 배송이 늦어지고, 택배를 빨리 발견했지만 차량이 늦게 와도 배송이 늦어집니다.

    5. Scan Rate와 Polling Rate의 핵심 차이

    두 수치의 가장 큰 차이는 측정하는 위치입니다. Scan Rate는 키보드 내부 회로와 펌웨어에서 발생하는 검사 주기이고, Polling Rate는 키보드와 PC 사이의 통신 주기입니다.

    구분 Scan Rate Polling Rate
    측정 구간 스위치·센서 → 컨트롤러 키보드 → PC
    주요 역할 키 상태 변화 탐지 입력 보고서 전달
    표시 단위 Hz Hz
    영향 요소 매트릭스, MCU, 펌웨어 USB 규격, HID 설정, 펌웨어
    높을 때의 효과 입력 발견 대기 시간 감소 전송 대기 시간 감소

    예를 들어 Scan Rate가 1,000Hz이고 Polling Rate도 1,000Hz인 키보드를 생각해볼 수 있습니다. 키가 스캔 직후에 눌리면 다음 스캔까지 최대 약 1ms를 기다리고, 입력 보고서가 USB 전송 직후에 준비되면 다음 폴링까지 다시 최대 약 1ms를 기다릴 수 있습니다.

    단순히 두 최댓값을 더하면 스캔과 USB 보고 단계에서만 최대 약 2ms의 대기 가능성이 생깁니다. 여기에 디바운스와 펌웨어 처리 시간이 추가되므로 실제 전체 지연은 Polling Rate의 역수 하나만으로 계산할 수 없습니다.

    반대로 Scan Rate가 8,000Hz인데 Polling Rate가 1,000Hz라면 입력은 내부에서 매우 빠르게 발견할 수 있지만 PC로 전달되는 기회는 약 1ms 간격입니다. Scan Rate가 1,000Hz인데 Polling Rate만 8,000Hz라면 PC는 자주 확인하지만 새로운 키 상태를 발견하는 주기는 약 1ms입니다.

    대표적인 조합 해석
    • 낮은 Scan Rate + 높은 Polling Rate: PC 통신은 빠르지만 키 입력 발견 단계가 병목이 될 수 있습니다.
    • 높은 Scan Rate + 낮은 Polling Rate: 입력은 빨리 찾지만 전송 기회를 기다릴 수 있습니다.
    • 둘 다 높은 경우: 스캔과 전송 대기 시간은 줄지만 다른 처리 단계가 병목이 될 수 있습니다.
    • 둘 다 안정적인 경우: 최대 수치보다 실제 입력 간격의 일관성이 좋아질 수 있습니다.

    6. 같은 1,000Hz라도 체감이 다른 이유

    두 키보드가 모두 1,000Hz Polling Rate를 지원하더라도 실제 입력 지연과 체감은 다를 수 있습니다. Polling Rate는 전체 처리 과정 중 마지막 통신 구간에 가까운 한 요소일 뿐이기 때문입니다.

    첫 번째 차이는 Scan Rate입니다. 한 키보드는 내부 매트릭스를 1,000Hz로 스캔하고 다른 키보드는 4,000Hz로 스캔할 수 있습니다. USB 보고 속도는 같더라도 입력 변화를 발견하는 평균 시간에는 차이가 생길 수 있습니다.

    두 번째 차이는 디바운스입니다. 접점식 기계식 스위치는 눌리거나 떼는 순간 신호가 여러 번 튀는 바운스 현상이 발생할 수 있습니다. 펌웨어는 이를 한 번의 정상적인 입력으로 판별하기 위해 일정 시간이나 알고리즘을 사용합니다. 이 디바운스 설정이 길면 높은 Scan Rate와 Polling Rate의 장점이 일부 줄어들 수 있습니다.

    세 번째 차이는 펌웨어 구조입니다. 스캔 루프가 효율적으로 설계되어 있는지, USB 보고서를 언제 갱신하는지, RGB와 매크로 처리 작업이 입력 처리를 방해하지 않는지에 따라 실제 지연이 달라질 수 있습니다.

    네 번째 차이는 키보드의 작동 방식입니다. 접점식 스위치는 접점이 실제로 닫히는 시점이 필요하지만, 홀 이펙트 방식은 자석의 이동 거리를 연속적으로 측정하고 설정된 작동 지점을 넘는 순간 입력을 판정할 수 있습니다. 따라서 같은 Polling Rate를 지원하더라도 스위치 구조와 작동 지점 설정에 따라 전체 반응 시간이 달라질 수 있습니다.

    숫자만 비교하면 안 되는 이유

    1,000Hz는 이론적으로 약 1ms의 USB 보고 간격을 의미할 뿐입니다. 제품 전체의 입력 지연이 정확히 1ms라는 뜻은 아니며, 키를 누른 순간부터 화면에 반영되기까지는 여러 단계가 추가됩니다.
    Part 1 정리

    Scan Rate는 키보드가 내부의 스위치와 센서를 검사하는 속도이고, Polling Rate는 판별된 입력을 PC에 전달할 수 있는 속도입니다. 두 수치가 모두 높을수록 각 구간의 대기 시간은 줄어들 수 있지만, 실제 입력 지연은 디바운스와 펌웨어 처리까지 함께 확인해야 합니다. 다음 내용에서는 전체 지연 계산, 1,000Hz와 8,000Hz의 실질적인 차이, 무선 키보드에서의 의미와 제품 사양을 올바르게 읽는 방법을 이어서 살펴보겠습니다.

    7. 전체 입력 지연은 어떻게 계산될까?

    키보드 입력 지연을 이해할 때 가장 흔한 실수는 Polling Rate만으로 전체 응답속도를 계산하는 것입니다. 1,000Hz Polling Rate의 전송 간격이 1ms라고 해서 키보드의 입력 지연이 항상 1ms인 것은 아닙니다. 실제 입력은 스위치가 움직이는 순간부터 시작해 내부 스캔, 입력 안정화, 펌웨어 처리, USB 보고, 운영체제 처리 단계를 차례로 통과합니다.

    이를 단순화하면 키보드 내부의 입력 지연은 다음 요소들의 합으로 생각할 수 있습니다.

    키보드 입력 지연을 구성하는 주요 요소
    1. 스위치 작동 시간: 키캡을 누른 뒤 접점 또는 센서가 작동 지점에 도달하는 시간
    2. 스캔 대기 시간: 키가 눌린 뒤 다음 매트릭스 스캔이 실행될 때까지의 시간
    3. 디바운스 시간: 접점의 불안정한 신호를 정상적인 한 번의 입력으로 판별하는 시간
    4. 펌웨어 처리 시간: 키맵, 레이어, 탭홀드, 매크로 등을 처리하는 시간
    5. USB 보고 대기 시간: 완성된 HID 보고서가 다음 전송 주기를 기다리는 시간
    6. PC 처리 시간: 운영체제, 게임 엔진, 디스플레이가 입력을 반영하는 시간

    예를 들어 1,000Hz Scan Rate와 1,000Hz Polling Rate를 사용하는 키보드가 있다고 가정해보겠습니다. 키가 스캔 직후에 눌리면 다음 스캔까지 약 1ms 가까이 기다릴 수 있고, HID 보고서가 전송 직후에 완성되면 다시 다음 USB 전송까지 약 1ms 가까이 기다릴 수 있습니다.

    여기에 5ms의 고정 디바운스가 적용되어 있다면 스캔과 전송 속도가 아무리 빨라도 디바운스 단계에서 더 긴 시간이 사용될 수 있습니다. 따라서 높은 Scan Rate와 Polling Rate를 실제 성능으로 연결하려면 디바운스 알고리즘과 펌웨어 처리 구조도 함께 최적화되어야 합니다.

    💡 평균 지연과 최대 지연은 다릅니다

    1ms 주기의 스캔이나 폴링은 항상 1ms를 기다린다는 뜻이 아닙니다. 입력 시점에 따라 거의 즉시 처리될 수도 있고, 한 주기 가까이 기다릴 수도 있습니다. 무작위 입력을 가정하면 각 주기에서 발생하는 평균 대기 시간은 대략 주기의 절반입니다.

    8. 1,000Hz와 8,000Hz는 얼마나 차이 날까?

    1,000Hz의 한 주기는 1ms이고 8,000Hz의 한 주기는 0.125ms입니다. 숫자만 보면 8배 차이지만, 두 설정 사이에서 줄어드는 최대 전송 대기 시간은 약 0.875ms입니다. 평균 대기 시간으로 보면 약 0.5ms에서 약 0.0625ms로 감소하므로 차이는 약 0.4375ms입니다.

    구분 1,000Hz 8,000Hz
    한 주기 1ms 0.125ms
    이론상 최대 대기 약 1ms 약 0.125ms
    이론상 평균 대기 약 0.5ms 약 0.0625ms
    초당 처리 기회 약 1,000회 약 8,000회

    이 차이는 측정 장비에서는 확인할 수 있지만 모든 사용자가 타이핑만으로 명확하게 구분하기는 어렵습니다. 일반 문서 작업에서는 스위치를 누르는 물리적 시간, 손가락 움직임, 운영체제 처리와 화면 주사율이 더 큰 영향을 줄 수 있습니다.

    반면 고주사율 모니터를 사용하는 리듬 게임, 경쟁형 FPS, 짧은 작동 지점을 사용하는 자기축 키보드 환경에서는 작은 지연 차이가 누적되어 의미를 가질 수 있습니다. 특히 입력 시점의 변동 폭이 줄어들면 평균 지연뿐 아니라 입력 타이밍의 일관성도 좋아질 수 있습니다.

    다만 8,000Hz라는 숫자가 제품의 모든 입력 과정이 0.125ms 안에 끝난다는 뜻은 아닙니다. USB 보고 간격이나 내부 스캔 간격 중 하나가 0.125ms라는 의미일 수 있으므로 제조사가 어느 구간의 수치를 표시했는지 확인해야 합니다.

    고주사율이 항상 8배 빠른 것은 아닙니다

    8,000Hz는 1,000Hz보다 초당 처리 기회가 8배 많지만, 전체 입력 지연이 8분의 1로 줄어드는 것은 아닙니다. 스위치, 디바운스, 펌웨어, 운영체제와 디스플레이 지연은 별도로 남아 있습니다.

    9. Scan Rate가 Polling Rate보다 높아야 할까?

    일반적으로 내부 Scan Rate가 외부 Polling Rate와 같거나 더 높은 구성이 유리합니다. 키보드는 USB 보고 주기가 돌아오기 전에 새로운 키 상태를 발견하고 보고서를 준비해야 하기 때문입니다.

    예를 들어 Polling Rate가 1,000Hz인데 Scan Rate가 125Hz라면 PC는 약 1ms마다 입력을 확인하지만 키보드는 내부 상태를 약 8ms마다 한 번씩만 검사합니다. 이 경우 빠른 USB 통신보다 느린 내부 스캔이 명확한 병목이 됩니다.

    반대로 Scan Rate가 8,000Hz이고 Polling Rate가 1,000Hz라면 입력을 빠르게 발견하고 여러 번 내부 상태를 갱신할 수 있습니다. 다만 PC로 새로운 보고서를 전달하는 기회는 약 1ms마다 한 번이므로 최종 전송 단계에는 1,000Hz의 한계가 남습니다.

    구성 해석 가능한 병목
    125Hz Scan
    1,000Hz Polling
    PC는 자주 확인하지만 키 상태 발견이 느림 내부 스캔
    1,000Hz Scan
    1,000Hz Polling
    스캔과 전송 주기가 균형적인 구성 디바운스·펌웨어
    8,000Hz Scan
    1,000Hz Polling
    입력 탐지는 빠르지만 전송은 1ms 단위 USB 보고 주기
    8,000Hz Scan
    8,000Hz Polling
    두 단계의 대기 시간을 모두 줄인 구성 스위치·펌웨어·PC

    그렇다고 Scan Rate를 무조건 Polling Rate의 여러 배로 높여야 하는 것은 아닙니다. 컨트롤러 성능이 충분하지 않은 상태에서 지나치게 빠른 스캔을 설정하면 RGB 효과, 무선 처리, 매크로 기능과 자원을 경쟁할 수 있습니다. 중요한 것은 표시된 최대 수치보다 실제 펌웨어가 일정한 주기로 입력을 처리하는지입니다.

    10. 디바운스가 빠른 스캔을 가릴 수 있다

    접점식 기계식 스위치는 금속 접점이 닿는 순간 신호가 한 번에 안정적으로 바뀌지 않을 수 있습니다. 아주 짧은 시간 동안 연결과 해제가 반복되어 컨트롤러에는 여러 번 눌린 것처럼 보일 수 있는데, 이를 바운스 현상이라고 합니다.

    키보드 펌웨어는 잘못된 중복 입력을 막기 위해 디바운스 과정을 수행합니다. 전통적인 방식은 상태 변화가 감지된 뒤 일정 시간을 기다리고, 신호가 유지되면 정상 입력으로 확정하는 것입니다. 설정된 시간이 5ms라면 Scan Rate가 8,000Hz여도 입력 확정에는 그보다 긴 시간이 필요할 수 있습니다.

    현대 키보드 펌웨어는 무조건 고정 시간을 기다리는 방식뿐 아니라 여러 번의 스캔 결과를 비교하거나, 눌림과 해제에 서로 다른 조건을 적용하거나, 빠른 입력과 채터링을 구분하는 알고리즘을 사용하기도 합니다. 따라서 단순히 “디바운스 0ms”라는 문구보다 실제로 중복 입력 없이 안정적으로 작동하는지를 확인하는 것이 중요합니다.

    빠른 입력과 안정성의 균형
    • 디바운스가 너무 길면 정상 입력 확정이 늦어질 수 있습니다.
    • 디바운스가 너무 짧으면 한 번 누른 키가 여러 번 입력되는 채터링이 생길 수 있습니다.
    • 스위치 상태와 사용 기간에 따라 필요한 안정화 시간이 달라질 수 있습니다.
    • 좋은 펌웨어는 지연을 줄이면서도 잘못된 중복 입력을 방지해야 합니다.

    11. 자기축 키보드에서는 의미가 달라질까?

    홀 이펙트 센서를 사용하는 자기축 키보드는 금속 접점의 닫힘 여부가 아니라 자석의 위치 변화를 측정합니다. 컨트롤러는 센서에서 읽은 값을 기준으로 키가 얼마나 눌렸는지 계산하고, 사용자가 지정한 작동 지점을 넘으면 입력을 발생시킵니다.

    이 구조에서는 전통적인 접점 바운스가 없기 때문에 기계식 접점식 스위치와 동일한 디바운스 과정이 필요하지 않을 수 있습니다. 대신 센서 샘플링, 노이즈 필터링, 기준점 보정, 이동 거리 계산과 작동 지점 판정이 중요해집니다.

    자기축 키보드에서 높은 Scan Rate가 강조되는 이유도 여기에 있습니다. 센서 위치를 더 자주 읽으면 작동 지점이나 래피드 트리거 기준을 통과한 순간을 더 빠르게 발견할 가능성이 높아집니다. 하지만 센서 값을 자주 읽는 것과 정확하게 판별하는 것은 별개의 문제입니다.

    센서 노이즈가 큰 상태에서 필터링을 지나치게 줄이면 키가 미세하게 떨리거나 의도하지 않은 입력이 발생할 수 있습니다. 반대로 안정성을 위해 필터링을 강하게 적용하면 높은 샘플링 속도의 장점이 줄어들 수 있습니다. 자기축 키보드 역시 Scan Rate 숫자 하나보다 센서 정확도와 펌웨어 알고리즘을 함께 봐야 합니다.

    12. 무선 키보드에서도 같은 의미일까?

    무선 키보드에서도 내부 Scan Rate는 존재하지만, PC로 전달되는 구간은 유선 USB와 다를 수 있습니다. 2.4GHz 전용 수신기, Bluetooth HID, 절전 모드와 무선 패킷 전송 주기가 추가되기 때문입니다.

    2.4GHz 게이밍 키보드는 전용 수신기와 제조사 프로토콜을 사용해 1,000Hz 이상의 보고율을 지원하는 경우가 있습니다. 하지만 무선 간섭, 패킷 재전송, 수신기 위치, 배터리 절약 정책에 따라 실제 지연과 안정성이 달라질 수 있습니다.

    Bluetooth 키보드는 호환성과 배터리 효율을 중요하게 설계하는 경우가 많습니다. 키보드가 절전 상태에 들어갔다가 깨어나는 시간, 연결 간격, 운영체제의 Bluetooth 처리 구조가 추가되므로 유선 USB의 Polling Rate 개념을 그대로 적용하기 어렵습니다.

    연결 방식 특징 확인할 요소
    유선 USB 일정한 전송 주기와 안정적인 전원 공급 USB 보고율, 펌웨어 지연
    2.4GHz 낮은 지연을 목표로 한 전용 무선 연결 수신기, 간섭, 실제 보고율
    Bluetooth 호환성과 전력 효율 중심 연결 간격, 절전 복귀, OS 환경
    무선 모드별 수치를 따로 확인하세요

    하나의 키보드가 유선에서는 8,000Hz, 2.4GHz에서는 1,000Hz, Bluetooth에서는 더 낮은 전송 빈도로 동작할 수 있습니다. 제품 페이지에 적힌 최고 수치가 모든 연결 모드에 적용된다고 단정하면 안 됩니다.

    13. 제조사 사양표를 읽는 방법

    키보드 제품 페이지에 “8K 응답속도” 또는 “8,000Hz 초고속 스캔”이라는 표현만 적혀 있다면 정확히 어느 구간을 의미하는지 확인해야 합니다. Scan Rate와 Polling Rate는 서로 다른 수치인데도 마케팅 문구에서는 명확하게 구분되지 않는 경우가 있기 때문입니다.

    먼저 8,000Hz가 내부 매트릭스 스캔 속도인지, 센서 샘플링 속도인지, USB 보고율인지 확인합니다. 센서 샘플링은 아날로그 값을 읽는 횟수이고, 매트릭스 Scan Rate는 모든 키의 상태를 검사하는 빈도이며, Polling Rate는 PC와 통신하는 빈도입니다.

    두 번째로 유선과 무선 모드별 사양이 구분되어 있는지 확인합니다. 세 번째로 디바운스 또는 입력 처리 지연에 대한 설명이 있는지 살펴봅니다. 네 번째로 “최대”라는 표현이 붙어 있다면 해당 모드가 기본 설정인지, 전용 소프트웨어에서 활성화해야 하는지도 확인해야 합니다.

    제품 사양 확인 체크리스트
    • 표시된 Hz가 Scan Rate인지 Polling Rate인지 확인합니다.
    • 센서 샘플링 속도와 전체 매트릭스 스캔 속도를 구분합니다.
    • 유선, 2.4GHz, Bluetooth 모드의 수치를 각각 확인합니다.
    • 전용 드라이버에서 고성능 모드를 켜야 하는지 확인합니다.
    • 고주사율 사용 시 CPU 점유율이나 배터리 소모 변화가 있는지 확인합니다.
    • 독립적인 입력 지연 측정 결과가 있는지 살펴봅니다.
    • 평균 지연뿐 아니라 측정값의 편차도 확인합니다.

    특히 “응답속도 0.125ms”라는 표현은 주의해서 해석해야 합니다. 8,000Hz의 한 주기가 0.125ms이므로 이를 그대로 응답속도로 표시하는 경우가 있지만, 이것은 해당 처리 주기의 길이일 뿐 키를 누른 뒤 PC가 입력을 인식하기까지의 전체 시간이 아닙니다.

    14. 높은 Polling Rate가 PC 성능에도 영향을 줄까?

    Polling Rate가 높아지면 PC가 더 자주 USB 입력을 처리하게 됩니다. 키보드의 데이터량은 마우스보다 상대적으로 작지만, 8,000Hz처럼 매우 높은 보고율에서는 시스템이 처리해야 하는 인터럽트와 보고 횟수가 늘어날 수 있습니다.

    최신 고성능 PC에서는 큰 문제가 발생하지 않는 경우가 많지만, 오래된 CPU나 특정 USB 컨트롤러, 일부 게임과의 조합에서는 높은 보고율이 불필요한 부하를 만들 수 있습니다. 입력 끊김이나 프레임 타임 불안정이 나타난다면 8,000Hz에서 4,000Hz 또는 1,000Hz로 낮춰 비교하는 것이 좋습니다.

    USB 허브를 사용하는 경우에도 연결 상태를 확인해야 합니다. 여러 고주사율 장치를 하나의 허브에 연결하거나 품질이 낮은 연장 케이블을 사용하면 전원과 신호 안정성 문제가 생길 수 있습니다. 가능하면 메인보드 후면의 USB 포트에 직접 연결해 테스트하는 것이 정확합니다.

    💡 실사용 설정 팁

    일반적인 문서 작업과 게임에서는 1,000Hz도 충분히 빠른 편입니다. 4,000Hz나 8,000Hz는 고주사율 모니터와 경쟁 게임 환경에서 시험해보고, 시스템 안정성이나 배터리 사용 시간이 나빠진다면 낮은 단계로 조정하는 것이 합리적입니다.

    15. 직접 성능을 확인할 때 주의할 점

    웹 기반 키보드 테스트 페이지는 눌린 키가 정상적으로 인식되는지 확인하는 데 유용하지만 Scan Rate와 Polling Rate를 정확히 측정하는 도구는 아닙니다. 웹 브라우저가 전달하는 키 이벤트에는 운영체제, 브라우저 처리와 화면 표시 시간이 포함되기 때문입니다.

    Polling Rate는 USB 패킷이나 HID 보고서의 도착 간격을 분석해야 더 정확하게 확인할 수 있습니다. 입력 지연은 키를 실제로 누르는 물리적 시점과 PC에서 이벤트가 발생하는 시점을 동시에 측정해야 하므로 고속 카메라, 전기적 신호 측정 장치 또는 전용 지연 측정 장비가 필요할 수 있습니다.

    여러 키보드의 성능을 비교할 때는 동일한 PC, 동일한 USB 포트, 동일한 운영체제 설정과 동일한 측정 방법을 사용해야 합니다. 한두 번의 최솟값만 비교하지 말고 여러 차례 측정한 평균, 중앙값과 편차를 함께 보는 것이 좋습니다.

    측정 대상 확인 방법 주의점
    동시 입력 키보드 테스트 페이지에서 여러 키 누르기 Scan Rate 측정은 불가능
    Polling Rate USB HID 보고 간격 분석 보고가 없을 때의 동작도 고려
    전체 입력 지연 물리 입력과 PC 이벤트 시점 비교 스위치와 측정 장치 오차 포함
    안정성 반복 입력 후 누락과 중복 확인 최솟값보다 편차가 중요

    16. 어떤 수치를 우선해서 봐야 할까?

    키보드를 선택할 때 Scan Rate와 Polling Rate 중 하나만 고르는 방식으로 접근할 필요는 없습니다. 두 수치는 입력 과정의 서로 다른 구간을 설명하므로 균형 있게 확인해야 합니다.

    일반 사용자는 1,000Hz Polling Rate와 안정적인 펌웨어를 갖춘 제품이면 충분한 경우가 많습니다. 빠른 입력이 중요한 사용자는 높은 Scan Rate, 짧고 안정적인 디바운스, 낮은 실제 입력 지연을 함께 확인해야 합니다.

    자기축 키보드를 선택한다면 센서 샘플링 속도만 보지 말고 작동 지점 정확도, 래피드 트리거 안정성, 키별 캘리브레이션과 펌웨어 업데이트도 확인하는 것이 좋습니다. 무선 키보드는 최고 Polling Rate보다 절전 복귀 시간과 연결 안정성이 체감에 더 큰 영향을 줄 수도 있습니다.

    Link&Tem 결론

    Scan Rate는 키보드가 내부에서 키 상태를 발견하는 속도이고, Polling Rate는 판별한 입력을 PC에 전달하는 속도입니다. 두 수치는 모두 높을수록 각 단계의 대기 시간을 줄일 수 있지만, 실제 성능은 디바운스, 펌웨어, 연결 방식과 시스템 환경까지 포함해 판단해야 합니다. 제품 사양에서는 Hz 숫자보다 그 숫자가 어떤 구간을 나타내는지 먼저 확인하는 것이 중요합니다.

    자주 묻는 질문

    Q. 1,000Hz Polling Rate면 입력 지연이 1ms인가요?
    아닙니다. 1,000Hz는 약 1ms마다 USB 입력 보고를 처리할 기회가 있다는 뜻입니다. 스캔, 디바운스, 펌웨어와 스위치 작동 시간이 추가되므로 전체 입력 지연은 1ms보다 길 수 있습니다.
    Q. Scan Rate가 높으면 Polling Rate는 낮아도 되나요?
    내부에서 입력을 빠르게 발견할 수는 있지만 PC로 전달되는 주기가 느리면 전송 단계가 병목이 됩니다. 두 수치가 균형 있게 구성되어야 각 단계의 대기 시간을 줄일 수 있습니다.
    Q. 8,000Hz 키보드는 무조건 더 좋은가요?
    전송 대기 시간을 줄이는 데는 유리하지만 모든 환경에서 큰 체감 차이가 생기는 것은 아닙니다. 시스템 부하, 펌웨어 안정성, 디바운스와 실제 지연 측정 결과까지 함께 확인해야 합니다.
    Q. 키보드 테스트 사이트로 Scan Rate를 측정할 수 있나요?
    일반적인 웹 키보드 테스트는 키 인식과 동시 입력 여부를 확인하는 용도입니다. 브라우저에서 보이는 이벤트만으로 내부 매트릭스 스캔 주기를 정확하게 측정하기는 어렵습니다.
    Q. 무선 키보드도 1,000Hz를 지원할 수 있나요?
    전용 2.4GHz 수신기를 사용하는 일부 키보드는 1,000Hz 이상의 보고율을 지원합니다. Bluetooth 모드는 전력 효율과 호환성을 우선해 다른 주기로 동작할 수 있으므로 연결 모드별 사양을 확인해야 합니다.
    Q. NKRO와 Polling Rate는 같은 기능인가요?
    아닙니다. NKRO는 여러 키를 동시에 정확하게 판별하고 보고하는 능력이고, Polling Rate는 입력 보고가 PC로 전달될 수 있는 빈도입니다. 동시 입력 개수와 전송 주기는 서로 다른 성능 항목입니다.

    📚 함께 보면 좋은 글

    Scan Rate와 Polling Rate를 이해했다면 키보드가 여러 입력을 구분하고, VIA와 VIAL이 키맵 정보를 처리하는 구조도 함께 살펴볼 수 있습니다. 아래 글을 순서대로 읽으면 하드웨어 스캔부터 설정 소프트웨어까지 전체 흐름을 연결해 이해하는 데 도움이 됩니다.

    공식 참조 자료

    Sources

    1. USB Implementers Forum, Device Class Definition for Human Interface Devices 1.11
    2. USB Implementers Forum, HID Usage Tables 1.4
    3. QMK Firmware Documentation, keyboard matrix scanning and debounce concepts
    Link&Tem 한 줄 정리
    Scan Rate는 키를 발견하는 속도, Polling Rate는 발견한 입력을 PC에 전달하는 속도입니다.