Post

하드웨어 구조 - 4

KEYBOARD

가장 일반적인 입력 기기이다. 예전에는 SERIAL 단자나 PS/2 방식의 포트를 사용했지만 최근에는 USB방식으로 거의 대부분 바뀌었다.

키보드는 종류가 여러개다. 가장 일반적이고 싼 멤브레인 키보드부터 비싸고 특유의 소리가 매력적인 기계식 키보드까지 그러한 키보드의 종류를 열거하자면 한도 끝도 없겠지만 주요 구조는 결국에 두 개의 겹친 회로의 버튼을 누르면 해당 회로 부분이 접촉되고 그 회로를 통해 신호가 지나가는 식이다.

또한 기본적으로 키보드의 구조는 매트릭스 구조이다. 이러한 매트릭스 구조가 무엇이냐면 아래의 그림과 같이 회로가 교차되는 형태라는 뜻이다.
img.png
출처 : https://kylog.tistory.com/12?category=134985

이런 구조를 취한 이유는 키보드의 입력을 인식하는 마이크로 컨트롤러의 포트 개수의 제한을 우회하고자하는 것인데 만약에 저런 매트릭스 구조를 취하지 않는다면 아래와 같은 형태가 되기 때문이다.
img.png
출처 : https://kylog.tistory.com/12?category=134985

출력 Port A에서 입력 Port B로 데이터가 들어가는데 총 4개의 스위치만 달려있다. 즉 4가지 입력 밖에 인식하지 못한단 뜻이다. 그에 비해 위의 매트릭스 형태로 한다면 입출력 PIN은 각각 4개밖에 안되지만 조합은 4X4이므로 총 16개의 입력 조합을 만들어낼 수 있다.

이런 조합으로 keyboard의 키 조합을 만들어내는데, 문제가 하나 있다. 동시에 눌린 키의 경우 어떻게 인식할 것이냐가 문제인 것이다.

특히 세개의 키가 동시에 눌릴 경우 누르지 않은 키까지 눌린 것으로 체크될 수 있다. 아래의 그림을 보자
img_1.png
출처 : https://kylog.tistory.com/12?category=134985
검게 칠한 부분을 눌렀을때 6열과 4열에 대해서 신호가 인식되고 3행과 6행에서 신호가 인식되었을 경우 3행 6열 버튼에 대해서도 인식되는 경우가 생겨버린다. 이를 유령키 현상이라고 하며 이런 경우를 방지하기 위해 예외처리가 되어있다.

하지만 우리는 종종 세 개의 키를 한번에 누르는 경우가 있다. 이런 경우는 어떻게 된 일일까?

이 경우는 일반키가 아닌 교체키를 누를 경우이다. 일반키와 교체키를 같이 누를 경우 제 2의 신호가 발생되는 것이다.

이러한 교체키는 일회성과 잠금형 교체키 두가지 종류가 있는데 각각 shift키와 Capslock 같은 것들이 바로 그런 키이다.

shift같은 일회성 키의 경우 같이누르는게 아닌 shift를 먼저 누르고 입력하는 것이므로 입력 시퀀스에 대한 감시가 있으면 인식이 가능하고 Capslock의 경우 아예 한번 눌러놓고 모드가 변경되는 것이다.
실질적으로 3가지 키를 순차가 아닌 정말 동시에 누르는 경우는 없는것이기에 문제가 생기지 않는다.

이런식으로 모든 키조합에 대해 고려가 끝난 키 조합은 컨트롤러에서 처리되어 컴퓨터로 전송된다. 이러한 키는 키 코드로 컴퓨터에 전송되는데, ASCII코드와는 다른 별도의 키코드가 있으며 이 부분은 키보드 드라이버에 대한 부분을 다룰때 추가적으로 설명하도록 하겠다.

참고 문헌

  1. 학습 컨텐츠 - 입력 Device의 원리 - 키보드의 작동 원리
  2. 64Bit 멀티코어 OS의 구조 - 한승훈 저
This post is licensed under CC BY 4.0 by the author.