자유게시판
어제 리얼포스 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 두가지의 이벤트로 구성되기 때문입니다.
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
Fujitsu Happy Hacking II
Apple Keyboards
2007.08.03 23:07:36 (*.147.17.83)
글쎄요... 일본모사이트에 이글이 얼마나 신빙성이 있는지는 모르겠지만 만약 usb버젼 해피나 리얼이 반쪽무한이라면 PFU사와Topre사는 사기를 치는게 되지않을까요?
2007.08.03 23:14:08 (*.51.218.144)
얼마나 신빙성이 있는게 아니고
USB에서 한번에 전송할수있는 데이터 량이 6byte라는스펙이 있기때문에
그거이상된다는게 뭔가 이상한거죠 -_-;
USB에서 한번에 전송할수있는 데이터 량이 6byte라는스펙이 있기때문에
그거이상된다는게 뭔가 이상한거죠 -_-;
2007.08.04 00:17:16 (*.223.90.173)
그리고 N-key 롤오버라는 정의는 키보드 컨트롤러에 적용되는 것이지....PC <-> 키보드의 인터페이스 규격에 따른 제한과는 상관 없다고 보는게 타당하다는 말도 있습니다. 즉, N-key 롤오버라고 해서 반드시 "모든 키가 다 동시입력"이라는 말은 아니라는 것이죠.
그리고 그 일본 웹사이트에 올라온 내용은 2ch의 유저들이 직접 테스트하고 검증한 내용이라고 합니다. 실제로 키 입력 이벤트를 추적하는 유틸리티도 공개한 상태더군요.
그리고 그 일본 웹사이트에 올라온 내용은 2ch의 유저들이 직접 테스트하고 검증한 내용이라고 합니다. 실제로 키 입력 이벤트를 추적하는 유틸리티도 공개한 상태더군요.
2007.08.04 00:19:32 (*.223.90.173)
지금 리얼포스 91/89U가 없는 관계로 (-_-;) 직접 테스트 해보진 못하겠는데...그 키입력 이벤트 프로그램으로 한번 실험해 보실 분 안계신지....
2007.08.04 00:22:00 (*.223.90.173)
뭐 IBM의 키보드 설계상...키 입력은 Down과 Up의 두가지 신호로 구성되게 만들었으니, Down은 발생되어도 Up이 발생하지 않으면 진짜 "모든 키 동시입력"이 아니라고 봐야 한다는게 2ch 키보드 오타쿠들의 지론인 듯 싶습니다. -_-;;;
뭐 현실 상에서 6개 이상의 키를 누를 일은 별로 없지만....
뭐 현실 상에서 6개 이상의 키를 누를 일은 별로 없지만....
작성된지 6개월이 지난 글에는 새 코멘트를 달 수 없습니다.