이하의 글들은 어디까지나 제가 예에전에 어디선가 본 글에 대한 어렴풋한 기억을 토대로 나머지는 모두 저의 추측으로 쓴 글입니다. 따라서 정확하지 않은 내용들이 상당수 들어가 있을 수 있습니다. 따라서 대략 이런가 보다... 정도로 이해해 주시기 바랍니다. ^^



질답란에 보면, 어떤 키보드는 키 동시 입력을 몇개까지 지원하는지 등에 대한 질문글이 종종 올라옵니다.
특히 저도 예전에는 그랬었지만, 기계식 키보드는 N키 롤 오버를 지원한다는 잘못된 지식을 가지신 분들이 종종 계신 것 같습니다. (아마 구형 키보드들이 N키 롤오버를 지원하면서 기계식인 것들이 종종 있어서 그런 말이 떠돈 것이 아닌가 싶습니다만.)

기계식과 멤브레인 등은 각각의 키(즉 스위치)에 관련된 메커니즘 입니다. 키 하나하나가 어떤 스위치로 구현되었는가 등을 나타내는 것이라고 할 수 있습니다. 이것들에 대해서는 technoa 에 강좌란을 찾아보시면 꽤 자세히 설명되어 있는 글을 보실 수 있습니다. : )

그리고, 롤오버는, 각각의 스위치와는 상관 없이 어떤 스위치가 눌렸는지를 알아내는 회로 구성에 달려있다고 보시면 되겠습니다.

제가 알기로는, 요즘 키보드들은 내부 회로가 거의 그림 1과 같은 그물망 식으로 구성이 되어 있습니다.
대략 A, B, C, D에서 신호가 나오고 1,2,3,4등으로 신호를 받는다고 생각하시면 되겠습니다. 그리고 점들이 실제 키가 위치하는 것으로 키가 눌리면 접점이 연결된다고 보시면 되겠습니다.
즉 여러 키를 눌렀는데, 정상적으로 처리가 되는 경우는 그림 2, 3과 같은 경우라고 보시면 되겠습니다. 그림 2에서처럼 B1, B2, B3가 눌렸으면 1, 2, 3으로 각각 B 라는 신호가 나와서 B1, B2, B3가 눌린 것을 알 수 있고, 그림 3에서는 B1, C1이 눌렸을 때 1로 B, C 라는 신호가 나와서 B1, C1이 눌린 것을 인식할 수 있지요.
그럼 정상적으로 인식할 수 없는 경우는 어떤 경우인가 하면, 그림 5와 같은 경우라고 보시면 됩니다. B1, B2, C2가 눌렸을 때, 이상적이라면 그림 4처럼 1로는 B 신호가, 2로는 B, C 신호가 나와야 할 것입니다. 하지만 B2가 눌리면서 C신호가 B선을 따라 흘러가서 1로도 C 신호가 나오게 됩니다. 따라서 그림 5처럼 1, 2 모두로 B, C 신호가 나오게 됩니다. 그럼 C1이 눌렸는지 안 눌렸는지 알 수가 없게 된다는 것이지요. (반대로 B1, B2, C1이 눌려도 C2가 눌렸는지 안 눌렸는지 알 수 없습니다.)
이처럼 키가 눌리지도 않았는데, 그 신호가 오는 경우를 고스트 현상이라고 하면서 이 경우를 그대로 처리하면 키가 눌리지도 않아도 키가 눌린 것처럼 됩니다. 따라서 보통 키보드들은 이런 경우는 입력 자체를 불허해 버립니다. 각각 키보드마다 내부 회로와 고스트 현상을 막는 알고리즘 등이 달라서 동시 허용 키 수와 위치(?)가 달라지게 됩니다.

그럼 모든 키들을 동시에 눌러도 처리할 수 있게 하려면 어떻게 해야 할까요?
제가 듣기로는 가장 단순한(?) 방법으로는 고스트 현상을 막는 메커니즘을 빼 버리는 것이라고 합니다. 물론 이럴 경우 고스트현상이 일어나서 누르지도 않은 키가 눌렸다고 하는 현상이 일어나게 됩니다. (일부 저가형 키보드는 이렇게 하는 경우도 실제 있다고 합니다. -_-)
완벽한 방법으로는... 저런 방식에서라면 각각 접점을 연결해 주는 스위치에 다이오드를 연결하여 세로선의 신호가 가로선으로는 들어갈 수 없게 막아주면 되겠지요. (아니면 방식 자체가 달라지거나, 회로 구성을 바꾼다거나 해야 겠지요.)