Skip to content
Yuri Khan edited this page May 11, 2014 · 3 revisions

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───/?────│─

Clone this wiki locally