본문 바로가기
Gadget

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

by applefan 2011. 2. 21.

지난 회에서 쓴 문제점을 해결 한 것입니다. 
Teensy++ 2.0에서는 Ref/GND로 되어있는 PIN을 Apple IIgs보드에서는 사용합니다. 그렇기 때문에 Ref/GND에 연결되는 IIgs PIN을 다른 사용하지 않는 PIN으로 Bypass하였습니다. 또한 PIN이 너무 길어 조립할 경우 뚜껑이 덮이지 않는 문제가 있어 PIN 길이를 절반만 남기고 다 잘라 냈습니다. 다음 그림을 보시죠. 

우선 다음 그림은 이해를 돕기위해 기판의 사진을 좌/우로 바꾼 사진입니다. 
외 사진에서 보면 Teensy++ 2.0의 31/30번 PIN은 Teensy++ 2.0보드 내에서 다른 용도로 사용하고 있습니다. 그리고 Apple IIgs 키보드 의 PCB에서는 Teensy++2.0의 26번과 7번에 해당하는 위치가 VDD/GND로 되어있습니다. 즉 이대로 연결 할 경우 Teensy의 26번은 항상 VDD로 될 것이고 7번은 항상 GND로 될 것입니다. 그래서 26/7번에서 올라가는 PIN을 없애고, 30/31번에서 올라가는 PIN을 Teensy에 연결하지 않고 7/26번으로 연결해줍니다. 

정리를 하면
• Row 4에 사용되는 PIN(30번)이 Teensy++ 2.0에서는 GND로 잡혀있기 때문에 이를 D4로 Bypass( D4는 IIgs에서 GND로 사용됨)
• Row 5에 사용되는 PIN(29번)이 Teensy++ 2.0에서는 Ref로 잡혀 있기 때문에 이를 F2로 Bypass (F2는 IIgs에서 PWR로 사용됨)

사실 이전 글에서 쓴 matrix는 문제가 있었습니다. column의 bit 순서가 반대가 되어 다른 키가 눌리더군요. 한예를 들면 예전에는 "A"를 R7C0로 적어 놨었는데, 정작 A 를 누르니 R7C7이 눌리더군요. 그래서 잘 보니 bit가 역순으로 인식되게 세팅을 해 놓았더군요. 

하여간..
tmk/macway/keymap.c에서 Matrix와 key들간의 mapping table을 수정하였습니다. 그리고 t.m.k.에서는 키보드 배열을 여러개 사용할 수 있게 되어있는데(layer) 지금은 하나만 남겨두고 다 지웠습니다. 


결과적으로
• Key는 제대로 눌림 (단 matrix를 사용하지 않는 특수키는 제외.)
• Key를 한번 눌러도 여러번 눌리는 일이 다시 발생(adb to usb converter에서도 이런일이 발생.) 아마도 de-bouncing에 관련된 기능을 넣어야 할 것으로 보입니다 .(이유는 아직 모릅니다. )

이로써 절반은 성공을 하였습니다. : )

참고로 수정된 Key Matrix입니다. 




C7

C6

C5

C4

C3

C2

C1

C0



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





















R0(34)

B1


Col7(19)

C6


SHIFT(37)

B4

R1(33)

B0


Col6(18)

C5


CNTRL(36)

B3

R2(32)

E7


Col5(17)

C4


CMD(24)

F4

R3(31)

E6


Col4(16)

C3


OPTION(23)

F5

R4(30)

GND

D4

Col3(15)

C2 


PWR(6)

?

R5(29)

AREF

F2

Col2(14)

C1


CAP(6)

D3

R6(28)

F0


Col1(13)

C0 




R7(27)

F1


Col0(12)

E1




R8(22)

F6







R9(21)

F7









댓글