어제 리얼포스 USB모델과 HHKP의 제약에 대해 글을 올렸는데....
USB 1.1규격과 PS/2 규격에서의 키보드 제어 방식의 차이점에 대해 조금 더 알아보았습니다.

먼저, PS/2 키보드 포트는 키보드 입력을 IBM에서 고안한 방식을 그대로 사용하고 있습니다.
IBM의 PC-AT 방식에 따르면 키보드는 키가 눌려지면 Key Down이벤트 신호를 발생시키고, 키에서 손을 떼면 Key Up 이벤트를 발생시킵니다.
따라서 키를 누르고 있다고 해서 계속 컴퓨터로 전기적 신호가 가는건 아니고, 오로지 키를 누르는 순간과 떼는 순간에만 신호가 발생되게 됩니다.
따라서 키를 여러개 누르면 Key Down이벤트가 PS/2포트를 통해 차례로 (키보드 컨트롤러가 인식한 순서대로) 컴퓨터로 전송되고, 키를 하나씩 뗄 때마다 각 키에 해당하는 Key Up 이벤트 신호를 전송하는 셈입니다.

하지만 USB 1.1 HID규격은 이것과는 전혀 다르게 작동한다고 합니다.
단순히 Key Down과 Up 이벤트 신호만 전송하면 장땡인 PS/2와는 달리....USB에서는 실제로 눌려진 키들의 정보를 한꺼번에 리스트로 만들어서 전송해야 한다고 하네요.

그런데, 문제는 USB 1.1규격에는 한번에 전송할 수 있는 데이터의 양이 6비트로 제한됩니다.
따라서 각 키마다 1비트씩 차지하기 때문에...총 6개의 키만이 정상적으로 입력이 되는 셈입니다.

한편..."리얼포스 USB나 HHKP가 이런 제약이 있다 한들....키가 눌리기만 하면 장땡이 아닌가..."하는 질문에 대해서는 다음과 같은 시나리오로 설명이 가능합니다.

어떤 게임이나 응용 프로그램에서 7개 이상의 키를 눌러야 하고, 각각의 키를 따로 눌렀다 떼어야 한다고 가정하면....6키 제한이 걸려있는 USB키보드의 경우는 제한을 초과하는 키에 대해서는 비록 Key Down이벤트를 발생시켰다 하더라도 Key Up이벤트를 발생시킬 수 없습니다.
즉, Z+X+C+V+B+N+M 의 7개 키를 눌렀다가 M키를 떼면, M키는 눌렸다고 인식을 할지는 모르나 떼었다고는 인식을 못한다는 말이 되니깐요. -_-;;;
PC에서 키보드의 이벤트는 Key Down과 Key Up 두가지의 이벤트로 구성되기 때문입니다.

NMB RT-101+ Everex version, with white linear switch (IT'S THE FREAKIN' BEST KEYBOARD EVER)

NMB RT-101+ Advanced Logic Research ver. with black click switch

Omni Key Ultra, Alps White Click

Zenith ZKB-2R, with Alps Green Linear

Zenith ZKB-2, with Alps Yellow Linear

Wang 725, with Alps Black Non-click

Sejins

Cherrys

Trigem PAXIM 8901 Alps White Click

IBMs

Topre RealForce 101

Fujitsu Happy Hacking II

Apple Keyboards

NECs