키보드 지연 시간: 지연이 생기는 곳과 측정하는 방법
키보드 지연 시간은 손가락이 키를 누르기 시작한 순간부터 키보드가 그 입력을 컴퓨터로 보낸 순간까지 걸리는 시간이에요. 이 지연은 네 군데에서 쌓여요. 키가 내려가는 거리, 키보드의 키 스캔, 디바운스, 그리고 USB 폴링이에요. 브라우저는 키보드가 입력을 보낸 뒤에야 그 입력을 알 수 있어서, 어떤 웹사이트도 이 지연을 측정할 수 없어요. 측정할 때는 키를 누르는 솔레노이드와, 입력이 키보드를 떠나는 시점을 기록하는 USB 분석기를 써요. 지연을 줄이려면 액추에이션 포인트를 더 짧게 하고, 폴링레이트는 가장 높게, 디바운스는 키가 두 번 입력되지 않는 범위에서 가장 낮게 설정하세요.
키 입력이 컴퓨터에 닿기 전에 기다리는 곳
- 키 이동 거리스위치가 작동하는 지점까지 키가 내려가요
- 스캔키보드 칩이 격자 모양으로 배치된 키를 한 줄씩 확인해요
- 디바운스스위치 접점의 튐이 멈출 때까지 기다리거나, 튐을 무시해요
- USB 폴링컴퓨터가 다음번에 키보드에 새 입력을 물어볼 때까지 입력이 기다려요
모두 합치면: 키보드 지연 시간
웹페이지는 여기서부터만 시간을 잴 수 있어요
컴퓨터와 화면 게임이 입력을 반영해 프레임을 그리고 디스플레이가 보여 줘요: 인풋렉의 나머지 부분
지연이 생기는 곳
- 키 이동 거리. 키가 액추에이션 포인트에 닿기 전에는 아무 일도 일어나지 않아요. 초당 240프레임으로 촬영했을 때, 보통의 키 입력은 키가 끝까지 내려가는 데 4~8프레임이 걸렸어요. 이동 거리만으로도 10 ms쯤은 쉽게 더해질 수 있어요. 그 테스트에서 가장 빠른 키보드는 이동 거리도 단연 가장 짧았어요.
- 스캔. 대부분의 키보드는 키를 격자 모양으로 배선하고 한 줄씩 확인해요. 스캔이 느린 키보드는 스위치가 닫히고 몇 밀리초가 지나서야 입력을 알아챌 수 있어요.
- 디바운스. 스위치 접점은 닫힐 때 잠깐 튀어요. 키보드는 입력을 바로 보내고 튐을 무시하거나, 접점이 안정될 때까지 기다려요. 많은 커스텀 키보드가 쓰는 오픈소스 펌웨어 QMK에서는 기본 디바운스 시간이 5 ms예요.
- USB 폴링. 컴퓨터는 폴링레이트에 맞춰 키보드에 새 입력이 있는지 물어봐요. 폴링 직후에 누른 입력은 다음 폴링까지 기다려야 해요.
폴링레이트를 밀리초로 보면
폴링 간격은 1,000 ms를 폴링레이트로 나눈 값이에요. 입력은 평균적으로 그 절반만큼 기다려요.
| 폴링레이트 | 폴링 간격 | 평균 대기 시간 |
|---|---|---|
| 125 Hz | 8 ms | 4 ms |
| 250 Hz | 4 ms | 2 ms |
| 500 Hz | 2 ms | 1 ms |
| 1000 Hz | 1 ms | 0.5 ms |
| 8000 Hz | 0.125 ms | 0.0625 ms |
125 Hz에서 1,000 Hz로 올리면 평균 3.5 ms가 줄어요. 실제로 측정한 키보드끼리는 이보다 훨씬 큰 차이가 나요. 2017년 Dan Luu가 키보드 21개를 측정했을 때 결과는 15~60 ms였고, 그중 게이밍 키보드 두 개는 다른 키보드보다 빠르지 않았어요.
키보드 지연 시간을 측정하는 방법
- 솔레노이드와 USB 분석기. RTINGS와 LTT Labs는 솔레노이드로 키를 누르고, 솔레노이드가 키에 닿는 순간을 표시한 뒤, 입력이 키보드를 떠나는 시점을 USB 분석기로 기록해요. RTINGS는 200번 누른 결과를 평균 내요. 두 곳 모두 먼저 디바운스는 가장 낮게, 폴링레이트는 가장 높게 하는 식으로 키보드를 가장 빠른 설정으로 맞춰요.
- 연결 방식마다 따로. LTT Labs는 유선, 2.4 GHz 무선, 블루투스를 따로 측정해요. 연결 방식에 따라 지연 시간이 크게 달라질 수 있기 때문이에요.
- 로직 분석기. Dan Luu는 로직 분석기로 키를 누르기 시작한 순간부터 그 입력으로 생긴 USB 패킷까지의 간격을 쟀어요.
- 집에서는 카메라나 광센서. 키와 화면을 함께 슬로 모션으로 찍거나(초당 240프레임이면 4.2 ms마다 한 프레임), 오픈소스 OSLTT 같은 광센서를 화면에 대세요. 둘 다 키보드만이 아니라 키부터 화면까지 전체 과정의 시간을 재요.
웹사이트로 키보드 지연 시간을 테스트할 수 없는 이유
브라우저는 키보드가 입력을 보내고 컴퓨터가 그 입력을 넘겨준 뒤에야 키 입력을 알게 돼요. 그래서 이 페이지에서 설명한 과정은 웹페이지가 시간을 재기 시작하기 전에 이미 모두 끝나 있어요. 신호가 나온 뒤 키를 누르기까지의 시간을 재는 테스트는 내 반응 속도를 재는 것이고, 반응에는 키보드보다 훨씬 긴 시간이 걸려요. 브라우저로 확인할 수 있는 것은 모든 키가 입력되는지와 몇 개를 동시에 누를 수 있는지(키보드 테스트), 그리고 키가 두 번 입력되는지(키보드 중복 입력 테스트)예요.
키보드 지연 시간을 줄이는 방법
- 폴링레이트를 가장 높게 설정하세요. 제조사 앱에 이 설정이 있다면 바꿀 수 있어요.
- 디바운스를 낮추세요. 앱에서 바꿀 수 있다면 낮추되, 키가 두 번 입력되지 않는 가장 낮은 값에서 멈추세요. 글자가 두 번씩 찍히기 시작하면 키보드에서 글자가 두 번 입력되는 이유를 확인하세요.
- 액추에이션 포인트를 짧게 설정하세요. 마그네틱 키보드나 아날로그 키보드에서는 키가 얼마나 내려가야 입력으로 인정할지 정할 수 있어요. Wooting 같은 키보드의 Rapid Trigger를 쓰면 키를 들어 올리기 시작하는 순간 입력이 떨어지고, 다시 누르는 순간 다시 입력돼요.
- 게임에는 가장 빠른 연결 방식을 쓰세요. 키보드를 여러 방식으로 연결할 수 있다면, 리뷰에서 가장 빠르게 측정된 방식을 쓰세요.
- 그다음에는 나머지 과정을 살펴보세요. 보통은 키보드보다 프레임 레이트와 디스플레이가 지연을 더 많이 만들어요. 인풋렉 줄이는 방법을 확인하세요.
리니어, 넌클릭, 클릭 스위치의 차이와 제조사의 입력 지점·입력 압력 수치는 키보드 축에서 볼 수 있어요.
출처: Dan Luu, 키보드 지연 시간(영어); RTINGS, 키보드 지연 시간 측정 방법(영어); LTT Labs, Labs의 키보드 테스트 방법(영어); QMK, 디바운스 알고리즘(영어); Wooting, Rapid Trigger 설정 방법(영어); OSLTT, 오픈소스 지연 시간 테스트 도구(영어).