자유게시판
안녕하세요?
키보드 자작중 몇 가지 새로 알게된 사실과 의문점이 있어 글을 올립니다.
USB 키보드의 경우 내부에 Diode를 넣어 Ghost 현상을 방지 하더라도 최대 동시 입력이 6개 밖에 안된 다고 알고 있었습니다.
그런데 프로그램 작성중 USB 규격을 보니 반은 맞고 반은 틀린 예기인것 같습니다.
일단 USB 키보드 쪽에서 한번에 컴퓨터로 보낼수 있는 데이타는 다음과 같이 8개 입니다.
출처 - The last HID 1.11 Specification 60 페이지
이중 0번과 1번은 일반 적인 키에 사용 되지 않고 2 - 7번(Keyboard 1 - 6) 6개의 장소(Byte)만 사용 하기 때문에
실제로 여러개의 키가 동시 입력 되더라도 6개만 컴퓨터로 전달 되게 됩니다.
(참고로, 실제는 6개 이상 입력 될경우 프로그램 적으로 입력 오류 신호를 컴퓨터에 전달하도록 규격되어 있습니다)
그런데 한가지 중요한 사실은 0번 장소(Byte)의 용도 입니다.
<meta charset="utf-8">출처 - The last HID 1.11 Specification 56 페이지
0번의 경우 상기 표의 8개의 키(좌우 CTRL, SHIFT, ALT, WINDOW)가 동시에 눌렸을 경우에도
컴퓨터쪽으로 내용을 전달 할수 있게 되어있습니다.
0번의 경우 이런게 가능한 이유는 각 비트를 해당키에 맞춰 쪼개 쓰기 때문입니다.
이러한 사실을 봤을때 결과 적으로 최소 입력 가능한 키는 6개 이지만
경우에 따라 최대 14개의 키까지 동시 입력이 될것으로 생각 됩니다.
(테스트 방법이 생각 나지 않아 아직 확인해 보지는 못하였습니다.)
혹시 이에 대하여 좀 더 자세한 정보를 알고 계신 분이 있으면 지식 공유를 부탁 드립니다.
그럼 모두 즐거운 하루 보내시기 바랍니다.
진정한 커스텀 키보드를 위하여...
질문은 질답란에 적어주셔도 되구요.^^;;
비슷했는데 조금 촛점이 틀렸어요. report라고 하는것의 크기를 조절할 수 있어요. 그걸 조절하면 6+1이 좀 더 많이 보고할 수 있어요. 이론적으로 그렇고 geekhack에서 두어달전에 토론되던 내용같네요. http://geekhack.org/showwiki.php?title=NKey+Rollover+-+Overview+Testing+Methodology+and+Results 이 링크를 보시면 많은 종류의 키보드가 조사되었는데 이상하게 6+1이 넘는 녀석이 있더란 예기구요. http://geekhack.org/showthread.php?t=13162 이 링크를 보시면 구체적으로 어떤짓을 하면 그렇게 할 수 있나가 나와있어요.
스펙상은 저게 맞지만 윈도우의 경우 modifier 포함 최대 7 키가 넘게 눌리면 이상동작을 하는 경향이 있더군요. 아마 드라이버 코딩시 내부 버퍼를 7개만 잡아놓은 것이 아닌가 싶습니다.
리눅스에서는 modifier 포함 최대 14키까지 무리없이 입력 가능하고, 윈도우에서는 7 키 이상을 누르면 엄한 고스트키현상이 납니다.
음... 머 이론적으로는 가능하겠네요^^;; 전 집에서는 PS/2 쓰고있고 회사에서는 USB로 쓰고있는데 한번 테스트 해봐야겠네요.
이런것까지 분석하시는 키매니아 분들 정말 대단해요^^;;