본문 바로가기
Gadget

Keyboard Controller for Apple Desktop Bus Keyboard (IIgs) - 1

by applefan 2011. 2. 20.
이 전에 제작하던 adb to usb converter ( http://applefan.tistory.com/44 ) 에 문제가 있었습니다. 확실하진 않지만, 윈도우즈에서는
잘 동작하고 맥에서는 간간히 키가 여러번 눌리는 현상입니다. 

선이 주렁주렁 달리는 것도 싫던차에 그냥 IIgs용 키보드 컨트롤러를 만들어 보기로 했습니다. 다행히 IIgs 컨트롤러와 Teensy++2.0과 핀 개수가 동일합니다. 



우선 기존과 동일하게 Teensy++ 2.0을 사용할 것이고, 소스도 그 때 사용하던 소스에서 macway방식을 사용할 예정입니다. 
지난번 소스를 보면 adb to usb converter/HHK 수정/macway 수정/PS2 to usb converter등등 여러 소스가 합쳐져있습니다. 

우선 막무가내로 macway에서 컴파일을 하고 그냥 올려봤습니다. 뭐 예상했지만, 난리도 아닙니다. 지 멋대로 여러 키가 눌리는 것처럼 보이는군요. 바로 껐습니다. -_-; 

키보드 컨트롤러를 심기위해서는 Keyboard Matrix 가 있어야 소스를 수정할 수 있습니다. 일종의 매핑 테이블입니다. 이걸 왜해야 하는지 우선 키보드 동작원리를 알아야 합니다. 

다음은 키보드 매트릭스에 대한 참고글입니다. ( http://mmkeyboard.tistory.com/89 )

위 글에 대한 완벽한 이해는 필요가 없을 수는 있지만, 매트릭스에 대한 부분은 이해를 해야 기존 키보드에서 매트릭스를 얻어 낼 수 있습니다. 우선 기판을 살펴보겠습니다. 


IIgs에는 각 키마다 번호가 적혀있습니다. 없는 경우는 매직으로 써 두는 것이 좋습니다. 굉장히 헷갈리는 과정입니다. 위 사진을 보면 납땜이 굉장히 많습니다만 실제로는 번호 위/옆에 있는 두개의 납땜만이 중요한 것이고 나머지는 신경 안써도 됩니다. 저 두개의 납땜이 하나는 row용이고 하나는 column용입니다. 

매트릭스를 얻는 방법은 추후에 좀 더 설명을 하기로 하고, 우선 IIgs의 매트릭스는 다음과 같습니다. 




C0

C1

C2

C3

C4

C5

C6

C7



19

18

17

16

15

14

13

12

R0

34

65

UP

63

/

62

.

46

l

14

del

13

=

12

-

11

0

R1

33

48

47

;

32

ENTER

31

]

30

[

29

p

28

o

27

i

R2

32

36

NUM-

35

NUM9

34

NUM8

33

NUM7

52

NUM+

51

NUM6

50

NUM5

49

NUM4

R3

31

1

ESC

2

1

3

2

4

3

5

4

6

5

7

6

10

9

R4

30

18

NUM*

17

NUM/

16

NUM=

15

NUM_CLS

69

NUM_ENTERN

68

NUM3

67

NUM2

66

NUM1

R5

29

73

SPACE

76

LEFT

75

\

74

`

80

NUM.

78

DOWN

79

NUM0

77

RIGHT

R6

28

54

z

55

x

56

c

57

v

58

b

59

n

60

m

61

,

R7

27

38

a

39

s

40

d

41

f

42

g

43

h

44

j

45

k

R8

22













8

7

9

8

R9

21

19

tab

20

q

21

w

22

e

23

r

24

t

25

y

26

u


 그리고 이러한 매트릭스를 쓰지 않는 키들이 있습니다. 

SHIFT(37)

B4

CNTRL(36)

B3

CMD(24)

F4

OPTION(23)

F5

PWR(6)

D3

CAP(6)

D3?

(Caps lock은 뭔가 잘못 되었는지 하고 보니 PWR키와 겹치는 군요. 나중에 다시 고쳐야 합니다. )
위에서 보면 알 수 있듯이 IIgs는 left/right SHIFT의 구별이 없습니다.

그런데 문제가 있습니다. 위 매트릭스와 Teensy의 핀배치를 보면 문제가 있습니다. 

위 사진에서 보면 21-34 번핀을 ROW로 쓰고 12-19번 핀이 Column으로 사용됩니다. 그러나 Teensy++ 2.0에서는 30/29번이 다른 용도로 사용이 되고 있습니다.  이럴 경우 1:1로 쓸 수는 없고 pin 을 다르게 연결해줘야 합니다. IIgs를 전혀 손상시키지 않는 것이 목표이기 때문에 이에 대한 고민이 좀 필요합니다. 





댓글