본문 바로가기

학습컨텐츠/하드웨어

입력 Device의 원리 (2) - 키보드 회로의 구조와 원리

이 글은 카이스트 2006년 가을학기 사이버 과학영재교육센터(http://talent.kaist.ac.kr/)에서 학습컨텐츠로 사용되었던 것입니다.


목차


우리가 컴퓨터를 켜면 매일 손을 얹어 글씨를 입력하고 명령을 내리는 키보드와 마우스, 얼마나 많은 키보드와 마우스가 만들어지고, 키보드와 마우스가 어떻게 태어나는지를 상상해본 적 있나요? 이런 궁금증을 살펴보기 위해 이번부터는 정보과학 분야에서 하드웨어의 원리 및 응용 부문에 속하는 input device 분야를 다루고자 합니다. 여러 관점에서 키보드에 대한 이야기를 한번 낱낱이 파헤쳐봅시다.


1.    서론

2.    키보드 행렬이란?

3.    키보드 행렬의 작동 원리

4.    유령키와 교체키

5.    키보드 회로의 구현


그림 1 행렬 구조의 키보드 회로 (115키), 상위 레이어(上), 하위 레이어(中), 겹침(下)




서론


키보드에는 여러 종류가 있다. 일반적인 하나의 키보드에는 100여 개 정도의 스위치가 있고, 이것이 키보드에서 가장 민감하고 중요한 부분이기 때문에, 키보드의 종류는 작동에 사용되는 스위치 기술에 따라 분류된다.

스위치 기술에 따른 키보드의 종류에는 역학적 키보드, 정전용량 키보드, 돔스위치(dome-switch) 키보드, 멤브레인 키보드 등이 있다.[1]

그렇다면 이들 키보드의 작동 원리는 무엇일까? 돔스위치 키보드가 작동하는 원리는 다음과 같다.

        

표 1 키보드가 작동하는 원리[2]


1. 키가 눌리면, 그 아래의 고무 돔이 내려간다. 이로 인해 키보드 아래 회로에서 도선의 접촉이 일어난다.

2. 도선의 접촉으로 인해 전류가 흐르고, 신호의 세기가 변한다.

3. 검사 신호가 방출된다. 그 결과에 따라, 키보드에 내장된 칩에 의해 어떤 키가 눌러졌는지 인지된다. 키에 해당하는 비트 코드가 발생된다.

4. 키보드 케이블(혹은 무선 연결)을 통해 발생된 코드가 컴퓨터로 전해진다.

5. 컴퓨터에 내장된 칩이 받은 비트 신호를 해독한다. 컴퓨터는 키의 눌림에 따라 (화면에 글자를 띄운다던가 프로그램을 실행시키는 등) 할 일을 결정한다.



일반적으로 키보드의 원리는 스위치 기술에 관계 없이 동일하다. 돔스위치 키보드의 경우는 고무 돔에 의해 회로의 스위치가 열리고 닫혔다. 다른 키보드의 경우도 위의 1단계에서 회로의 스위치가 열리고 닫히는 과정을 제외하고는 거의 같다.

앞으로의 절에서는 위의 3단계가 어떻게 이루어지는 지를 구체적으로 알아볼 것이다. 이를 위하여, 키보드 회로가 어떤 구조를 가지고 있으며, 키보드에 내장된 칩이 눌린 키를 어떻게 인지하는지 살펴보자.





키보드 행렬이란?


키보드의 회로는 키보드 행렬(keyboard matrix)이라는 이름으로 불린다. 이는 그 구조가 행렬의 형태를 띠고 있기 때문이다. 먼저 이 행렬 구조를 사용하는 이유에 대해 알아보자.



그림 2 행렬 구조가 아닌 키보드 회로 (4키)


그림 2는 행렬 구조를 사용하지 않은 키보드 회로의 모습이다. 출력 포트 A와 입력 포트 B에는 각각 1개, 4개의 핀이 있고, 그 사이에 4개의 스위치가 있다. 출력 포트의 핀에서는 신호가 방출된다. 만약 2번 키가 눌리면, 2번 스위치가 닫히고 입력 포트의 2번 핀으로 신호가 도달하게 된다. 키가 개 일 때, 핀의 개수는 개가 된다는 것을 쉽게 알 수 있다. 키보드 행렬을 사용하게 되면 이를 크게 줄일 수 있다.



그림 3 행렬 구조의 키보드 회로 (16키)



그림 3는 행렬 구조를 사용한 키보드 회로의 모습이다. 핀의 개수는 두 개의 포트에 각각 4개로, 앞의 경우와 비교했을 때 채 두 배가 되지 않는다. 반면 스위치의 개수는 4개에서 16개로 늘어났음을 알 수 있다. 이와 같이, 키보드 행렬을 사용하면 키의 개수가 개일 때, 단 개 정도의 핀으로 이를 구현할 수 있다.

 

키의 개수

핀의 개수(A)

핀의 개수(B)

1

2

2

4

5

4

9

10

6

16

17

8

25

26

10

36

37

12

49

50

14

64

65

16

81

82

18

100

101

20

 



그림 4 행렬 구조를 사용한 경우(B)와 그렇지 않은 경우(A), 키의 개수에 대한 핀의 개수

        

위 표와 그래프는 두 경우 키의 개수에 따른 핀의 개수를 비교하고 있다. (A)는 키보드 행렬을 사용하지 않은 경우이고, (B)는 사용한 경우이다. 키의 개수가 증가할수록 키보드 행렬을 사용하는 것이 훨씬 효율적임을 알 수 있다. 여기서 효율적이라 함은 같은 개수의 핀으로 더 많은 키를 구현할 수 있다는 의미이다. 통상적인 키보드에서 키의 개수가 100개 가량 된다는 것을 고려하면, 키보드 행렬을 사용하는 이유를 쉽게 알 수 있을 것이다.





키보드 행렬의 작동 원리


키보드 행렬의 구조를 보다 간단하게 표현하면 아래 그림과 같다. 그림 5는 키가 64개인 키보드의 회로로, 출력 포트(Port A)의 8개 행, 그리고 입력 포트(Port B)의 8개 열 있다. 키의 눌림은 한 행과 열을 연결시킨다. 그림에서처럼 맨 윗줄의 맨 왼쪽 키를 누르면, 첫 번째 행과 첫 번째 열이 연결된다.


 
그림 5 8x8 키보드 행렬의 모형


키보드 행렬의 작동 원리는 간단하다. 출력 포트에 있는 각각의 핀에 순차적으로 신호를 흘려 보낸다. 위 그림과 같은 경우, 0번 출력 핀으로 신호를 보냈을 때, 0번 입력 핀에서 신호가 감지된다. 그 외의 경우에는 입력 포트에서 신호가 감지되지 않는다. 이를 통해 우리는 어떤 키가 눌렸는지를 알 수 있다.

여러 개의 키가 동시에 눌린 경우도 방법은 같다. 0번 출력 핀으로 신호를 보냈을 때, 1번과 2번 입력 핀에서 신호가 감지된다면, 맨 윗줄의 왼쪽에서 두 번째와 세 번째 키가 눌린 것이다. 0번 출력 핀에 7번 입력 핀이 반응하고, 7번 출력 핀에 0번 입력 핀이 반응한다면, 맨 위 맨 오른쪽 키와 맨 아래 맨 왼쪽 키가 눌린 것이다.




유령키와 교체키


동시에 눌러진 키들로 인해 원치 않은 회로의 연결이 발생하는 경우가 있다. 그림 6에서 검게 칠해진 키들을 눌렀다고 해보자. 그러면 3번째 행으로 신호를 보냈을 때, 세 접점을 통해 전류가 흘러 4번째 열뿐 아니라 6번째 열에서도 신호가 감지된다. 따라서 가위 표가 쳐진 키까지 함께 눌린 것으로 인식된다.

이를 '유령키(ghost key)'라고 한다. 이런 경우에는 예기치 않은 결과를 방지하기 위해, 에러가 발생된다. (유령키의 발생 메커니즘이 잘 이해되지 않는 사람은 참고자료실의 플래시를 보도록 하자.)



그림 6 유령키의 발생


한글이나 Microsoft® Word 같은 워드프로세서에서는 여러 개의 키를 동시에 누르고 있어도 가장 늦게 눌린 키만을 인식하여, 해당하는 문자를 화면에 계속 출력한다. 믹스웨이버나 비트매니아 같은 게임을 해보면, 유령키로 인해 에러가 발생하곤 한다. 3개 이상의 키를 동시에 누르면, 삐 소리와 함께 모두 누르지 않은 것으로 인식되는 것이다.

게임에서 이런 일이 발생하여서는 안 되므로, 비디오 게임 컨트롤러에는 키보드 행렬을 사용하지 않는다. 사실 게임 컨트롤러에는 그다지 많은 키가 필요하지 않으므로, 굳이 키보드 행렬을 사용할 이유도 없다. (여담이지만, 컴퓨터로도 약간의 시간차를 두고 1~2개씩 나누어 누르면 미스를 내지 않을 수 있다.)



방금 설명한 바에 따르면, 셋 이상의 키를 동시에 누르면 에러가 발생할 수 있다. 그러나 실제로 우리는 셋 이상의 키를 동시에 누르는 경우가 종종 있다. Ctrl+Alt+Del과 같은 단축키를 사용할 때가 바로 그것이다.

이것은 여러 방법으로 구현되는데, 그 중 하나가 일부 키를 교체키(alternation key)로 두는 것이다. 일반 키가 교체키와 함께 눌리면, 제2의 코드가 발생된다. 즉, 10개의 일반 키와 단 한 개의 교체키만으로 20개의 코드를 만들 수 있다는 말이다. 교체키에는 두 가지 종류가 있는데, 하나는 일회성 교체키이고 다른 하나는 잠금형 교체키이다.


(1) 일회성(one-shot) 교체키

일회성 교체키는 일회에 한해서만 유효하다. 일회성 교체키의 사용법에는 또 두 가지가 있는데, 하나는 다른 키들과 동시에 누르는 것이고, 다른 하나는 순차적으로 누르는 것이다. 순차적으로 누르는 교체키의 경우, 두 키를 동시에 누르는 것이 아니라, 먼저 교체키를 눌렀다 뗀 후 일반 키를 눌러서 사용한다.

PC 키보드에는 Ctrl키, Shift키, Alt키 등의 일회성 교체키가 있는데, 모두 전자의 방법으로 사용되는 것이 보통이다. 후자는 공학용 전자계산기에서 찾아볼 수 있다. 순차적으로 누르는 방법을 채택하면, 여러 키를 동시에 누를 필요가 없으므로 유령키를 피할 수 있다.


(2) 잠금형(lock-based) 교체키

잠금형 교체키는 스위치 혹은 토글과 같다. 잠금형 교체키를 한번 누르면 제2의 모드로 넘어가고, 다시 한 번 누르면 원래대로 돌아온다. 예컨대 Caps Lock의 경우, 누를 때마다 영어 알파벳의 대/소문자가 전환된다. 이 외에도 PC 키보드에는 Scroll Lock, Num Lock 등의 잠금형 교체키가 있다.


교체키의 눌림으로 인한 제2의 코드 발생 메커니즘은 키보드에 내장된 칩에서 해주는 일인데, 거기에 대해서는 여기서 더 깊이 다루지 않을 것이다.




키보드 회로의 구현


그렇다면 이러한 키보드 회로를 실제로 어떻게 구현하는 걸까? 만약 2절의 그림 3처럼 회로를 만든다면, 점 표시가 없는 두 도선의 접점에서 전류가 흘러 문제가 생길 것이다. 따라서 두 겹의 레이어(Layer)로 된 회로를 사용하여 이 문제를 해결한다.



그림 7 키보드 회로의 실제 모습


그림 7은 실제 S사 키보드를 뜯은 사진이다. 이 행렬은 8개의 행과 18개의 열을 가지고 있다. 두 겹의 회로는 평소에 약간의 간격을 두고 떨어져 있다가, 키가 눌리면 큰 점으로 표시된 부분이 서로 접촉하여 스위치가 닫힌 효과를 내게 된다.

점 표시가 없는 부분에서 도선의 접촉이 일어나는 것을 방지하기 위해, 두 레이어 사이에는 사실 또 한 겹의 투명한 레이어가 있다. 이 레이어는 점 표시가 있는 곳마다 구멍이 뚫려 있어, 아래 위 회로의 접촉을 가능케 한다. 그림 8을 자세히 보면 이 투명 레이어를 볼 수 있을 것이다.

그림 9는 키보드 회로와 칩이 만나는 곳이다. 칩에는 키보드 회로와 연결된 포트가 두 개 (그림의 붉은 사각형) 있다. 왼쪽 포트에는 8개의 핀, 오른쪽 포트에는 18개의 핀이 있음을 볼 수 있다. 칩에는 이 외에도 전원 포트나 컴퓨터 CPU와 연결된 포트 등이 있다.

투명 레이어를 제외한 각 레이어의 안쪽 면은 전도성 잉크로 인쇄가 되어있다. 이 잉크는 전기가 흐르는 성분으로 되어있어, 두 장의 얇은 막이 회로의 기능을 할 수 있게 해준다.



그림 8 키보드 회로의 실제 모습



그림 9 키보드에 내장된 칩의 모습





참고문헌


[1] Wikipedia, Keyboard Technology, 2006년 8월 27일 접속.

     URL: http://en.wikipedia.org/wiki/Keyboard_technology

[2] Wikipedia, Computer Keyboard, 2006년 8월 27일 접속.

     URL: http://en.wikipedia.org/wiki/Computer_keyboard

[3] Amtel® Corporation, AVR243: Matrix Keyboard Decoder, 8-bit AVR® Micro-controller Application Note.

[4] Tseng Han Hsing, A Keyboard Scanner.