-
Notifications
You must be signed in to change notification settings - Fork 21
Key matrix
The keys of the Truly Ergonomic keyboard are arranged in 18 groups which I will call columns. Each column is wired to up to 8 keys. This means the schematic supports up to 18×8 = 144 physical keys. (Actually, models 109/209 have 88 keys.)
The firmware numbers columns from 0 to 17, and scans them in this order. In each column, bits are numbered 0 (least significant) to 7 (most significant). The key index is obtained by multiplying the column index by 8, then adding the bit index.
To read a column, the firmware sets one bit in the ports P1÷P3 to 0 while all others are held at 1, and reads port P0. A zero bit means that the corresponding key is down; a one bit means the key is up. (The value is immediately bit-complemented, so that down keys are represented as 1 in all subsequent data flow.)
Port P1 P2 P3
Bit 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 3 4
Column 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
The exact arrangement is (column:bit):
Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del
9:5 9:1 9:3 10:1 10:3 14:1 14:3 15:1 15:3 16:1 16:3 17:1 17:3 10:2
Caps Fn Num
3:2 7:4 5:3
Eu2 `~ 1! 2@ 3# 4$ 5% GUI 6^ 7& 8* 9( 0) -_ =+
0:5 0:6 2:4 2:1 11:1 12:1 12:3 2:3 13:1 13:3 11:3 15:4 16:4 15:2 14:4
\| /? q w e r t Hen y u i o p [{ ]}
14:0 16:7 2:5 9:0 11:2 12:4 12:2 0:2 13:4 13:2 11:4 15:5 16:6 15:0 14:5
LeftShift a s d f g Tab h j k l ;: RghtShift
6:5 2:0 9:7 11:0 12:6 12:0 2:2 13:5 13:0 11:5 15:7 16:5 6:6
Left Ctrl z x c v b Bksp n m ,< .> '" RightCtrl
3:5 2:6 9:6 11:7 12:7 12:6 14:6 13:7 13:6 11:6 15:6 16:0 3:6
LBln LAlt PgUp LeftSpace Entr RghtSpace Up RAlt RBln
7:5 5:0 Home 9:4 End 4:3 14:2 3:3 Left 4:4 Rght 5:7 3:0
17:4 PgDn 17:2 14:7 Down 4:1
9:2 16:2
Or a different view:
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.3 P3.4
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.0───│────│────A──RBln───│──LAlt───│────│────│────W────│────D────G────J───\|───[{───'"────│──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.1───│────│───2@────│──Rght───│────│────│────│───F1───F3───3#───4$───6^───F5───F7───F9───F11─
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.2──Hen───│───Tab─CapL───│────│────│────│────│──PgDn──Del───E────T────U──Entr──-_──Down──End─
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.3───│────│───GUI─RSpc─LSpc─NumL───│────│────│───F2───F4───8*───5%───7&───F6───F8───F10 F12─
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.4───│────│───1!────│───Up────│────│───Fn────│──PgUp───│────I────R────Y───=+───9(───0)──Home─
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.5──Eu2───│────Q──LCtr───│────│──LShf─LBln───│───Esc───│────K────B────H───]}────O───;:────│─
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.6──`~────│────Z──RCtr───│────│──RShf───│────│────X────│───,<────F────M──Bksp──.>────P────│─
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
P0.7───│────│────│────│────│──RAlt───│────│────│────S────│────C────V────N──Left───L───/?────│─