KeyStruct31
        &       KeyTran31-KeyStruct31
        &       (KeyTran31End-KeyTran31) :SHR: 2
        &       InkeyTran-KeyStruct31
        &       ShiftingKeyList-KeyStruct31
        &       SpecialList31-KeyStruct31
        &       SpecialCodeTable31-KeyStruct31
        &       KeyStructInit-KeyStruct31
        &       PendingAltCode31-KeyStruct31
        &       PendingAltSpecial31-KeyStruct31
        &       PadK31NumTran-KeyStruct31-(SpecialList31Pad-SpecialList31)
        &       PadK31CurTran-KeyStruct31-(SpecialList31Pad-SpecialList31)

KeyTran31
        =       &1B, &1B, &1B, &1B
        =       &81, &91, &A1, &B1
        =       &82, &92, &A2, &B2
        =       &83, &93, &A3, &B3
        =       &84, &94, &A4, &B4
        =       &85, &95, &A5, &B5
        =       &86, &96, &A6, &B6
        =       &87, &97, &A7, &B7
        =       &88, &98, &A8, &B8
        =       &89, &99, &A9, &B9
        =       &CA, &DA, &EA, &FA
        =       &CB, &DB, &EB, &FB
        =       &CC, &DC, &EC, &FC
        =       &80, &90, &A0, &B0
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF

        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &37, &07, &07
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &29, &FF, &1C, &1C
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &08, &08, &08, &08
        =       &CD, &DD, &ED, &FD

        =       &1E, &1E, &1E, &1E
        =       &9F, &8F, &BF, &AF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &7A, &5A, &1A, &1A
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &75, &55, &15, &15
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF

        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &8B, &9B, &AB, &BB
        =       &9E, &8E, &BE, &AE
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF

        =       &67, &47, &07, &07
        =       &68, &48, &08, &08
        =       &6A, &4A, &0A, &0A
        =       &6B, &4B, &0B, &0B
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &0D, &0D, &0D, &0D
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF

        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &8F, &9F, &AF, &BF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF

        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &8C, &9C, &AC, &BC
        =       &8E, &9E, &AE, &BE
        =       &8D, &9D, &AD, &BD
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &C0, &D0, &E0, &F0
        =       &C0, &D0, &E0, &F0
        =       &C1, &D1, &E1, &F1
        =       &C2, &D2, &E2, &F2
        =       &C3, &D3, &E3, &F3
        =       &C4, &D4, &E4, &F4
        =       &FF, &FF, &FF, &FF
KeyTran31End

SpecialList31
        =       SpecialList31End-SpecialList31-1
SpecialList31Pad
        =       K1NumPadSlash, K1NumPadStar, K1NumPadHash
        =       K1NumPad7, K1NumPad8, K1NumPad9, K1NumPadMinus
        =       K1NumPad4, K1NumPad5, K1NumPad6, K1NumPadPlus
        =       K1NumPad1, K1NumPad2, K1NumPad3, K1NumPadEnter
        =       K1NumPad0, K1NumPadDot

        =       K1ShiftLeft, K1ShiftRight, K1CtrlLeft, K1CtrlRight
        =       K1AltLeft, K1AltRight
        =       K1RightMouse, K1CentreMouse, K1LeftMouse
        =       K1CapsLock, K1Tab
        =       K1Delete
        =       K1NumLock, K1ScrollLock, K1Break
K31TopBitSet
        =       &10, &11, &12, &13, &14, &15, &16, &17
        =       &18, &19, &1A, &1B, &1C, &27, &29, &2A
        =       &2B, &2C, &2E, &2F, &30, &31, &32, &33
        =       &3C, &3D, &3E, &3F, &44, &45, &46, &4D
        =       &4E, &4F, &50, &51, &52, &53, &54, &55
        =       &56, &57, &5F
SpecialList31End
        ALIGN

SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessK1Pad-SpecialCodeTable31
        &       ProcessKShift-SpecialCodeTable31
        &       ProcessKShift-SpecialCodeTable31
        &       ProcessKCtrl-SpecialCodeTable31
        &       ProcessKCtrl-SpecialCodeTable31
        &       ProcessKAlt-SpecialCodeTable31
        &       ProcessKAlt-SpecialCodeTable31
        &       ProcessKRight-SpecialCodeTable31
        &       ProcessKCentre-SpecialCodeTable31
        &       ProcessKLeft-SpecialCodeTable31
        &       ProcessKCaps-SpecialCodeTable31
        &       ProcessKTab-SpecialCodeTable31
        &       ProcessKDelete-SpecialCodeTable31
        &       ProcessKNum-SpecialCodeTable31
        &       ProcessKScroll-SpecialCodeTable31
        &       ProcessKBreak-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31
        &       ProcessK31TopBitSet-SpecialCodeTable31

TopBitSetTable31
        =       &B2, &00, &B3, &00, &00, &03, &00, &03
        =       &00, &03, &00, &03, &00, &03, &00, &03
        =       &26, &00, &31, &00, &01, &00, &01, &00
        =       &7C, &00, &00, &03, &00, &03, &00, &03
        =       &E9, &00, &32, &00, &00, &00, &00, &00
        =       &40, &00, &00, &03, &00, &03, &00, &03
        =       &22, &00, &33, &00, &03, &00, &03, &00
        =       &23, &00, &00, &03, &00, &03, &00, &03
        =       &27, &00, &34, &00, &04, &00, &04, &00
        =       &BC, &00, &00, &03, &00, &03, &00, &03
        =       &28, &00, &35, &00, &05, &00, &05, &00
        =       &BD, &00, &00, &03, &00, &03, &00, &03
        =       &A7, &00, &36, &00, &1E, &00, &1E, &00
        =       &5E, &00, &00, &03, &00, &03, &00, &03
        =       &E8, &00, &37, &00, &07, &00, &07, &00
        =       &00, &03, &00, &03, &00, &03, &00, &03
        =       &21, &00, &38, &00, &08, &00, &08, &00
        =       &A1, &00, &00, &03, &00, &03, &00, &03
        =       &E7, &00, &39, &00, &09, &00, &09, &00
        =       &7B, &00, &00, &03, &00, &03, &00, &03
        =       &E0, &00, &30, &00, &00, &00, &00, &00
        =       &7D, &00, &00, &03, &00, &03, &00, &03
        =       &29, &00, &B0, &00, &1C, &00, &1C, &00
        =       &00, &03, &00, &03, &00, &03, &00, &03
        =       &2D, &00, &5F, &00, &1F, &00, &1F, &00
        =       &AD, &00, &99, &00, &00, &03, &00, &03
        =       &61, &01, &41, &01, &01, &00, &01, &00
        =       &E6, &01, &C6, &01, &00, &03, &00, &03
        =       &65, &01, &45, &01, &05, &00, &05, &00
        =       &80, &00, &00, &03, &00, &03, &00, &03
        =       &72, &01, &52, &01, &12, &00, &12, &00
        =       &B6, &00, &AE, &00, &00, &03, &00, &03
        =       &74, &01, &54, &01, &14, &00, &14, &00
        =       &8D, &00, &00, &03, &00, &03, &00, &03
        =       &79, &01, &59, &01, &19, &00, &19, &00
        =       &00, &03, &A5, &00, &00, &03, &00, &03
        =       &69, &01, &49, &01, &09, &00, &09, &00
        =       &9E, &00, &00, &03, &00, &03, &00, &03
        =       &6F, &01, &4F, &01, &0F, &00, &0F, &00
        =       &F8, &01, &D8, &01, &00, &03, &00, &03
        =       &70, &01, &50, &01, &10, &00, &10, &00
        =       &FE, &01, &DE, &01, &00, &03, &00, &03
        =       &03, &02, &05, &02, &1B, &00, &1B, &00
        =       &5B, &00, &00, &03, &00, &03, &00, &03
        =       &24, &00, &2A, &00, &1D, &00, &1D, &00
        =       &5D, &00, &8F, &00, &00, &03, &00, &03
        =       &B5, &00, &A3, &00, &00, &03, &00, &03
        =       &01, &02, &00, &03, &00, &03, &00, &03
        =       &71, &01, &51, &01, &11, &00, &11, &00
        =       &9B, &01, &9A, &01, &00, &03, &00, &03
        =       &73, &01, &53, &01, &13, &00, &13, &00
        =       &DF, &00, &00, &03, &00, &03, &00, &03
        =       &64, &01, &44, &01, &04, &00, &04, &00
        =       &F0, &01, &D0, &01, &00, &03, &00, &03
        =       &66, &01, &46, &01, &06, &00, &06, &00
        =       &00, &03, &AA, &00, &00, &03, &00, &03
        =       &6C, &01, &4C, &01, &0C, &00, &0C, &00
        =       &9F, &00, &00, &03, &00, &03, &00, &03
        =       &6D, &01, &4D, &01, &0D, &00, &0D, &00
        =       &00, &03, &BA, &00, &00, &03, &00, &03
        =       &F9, &00, &25, &00, &00, &03, &00, &03
        =       &02, &02, &00, &03, &00, &03, &00, &03
        =       &3C, &00, &3E, &00, &00, &03, &00, &03
        =       &5C, &00, &00, &03, &00, &03, &00, &03
        =       &77, &01, &57, &01, &17, &00, &17, &00
        =       &AB, &00, &92, &00, &00, &03, &00, &03
        =       &78, &01, &58, &01, &18, &00, &18, &00
        =       &BB, &00, &93, &00, &00, &03, &00, &03
        =       &63, &01, &43, &01, &03, &00, &03, &00
        =       &A2, &00, &A9, &00, &00, &03, &00, &03
        =       &76, &01, &56, &01, &16, &00, &16, &00
        =       &90, &00, &94, &00, &00, &03, &00, &03
        =       &62, &01, &42, &01, &02, &00, &02, &00
        =       &91, &00, &95, &00, &00, &03, &00, &03
        =       &6E, &01, &4E, &01, &0E, &00, &0E, &00
        =       &00, &03, &96, &00, &00, &03, &00, &03
        =       &2C, &00, &3F, &00, &00, &03, &00, &03
        =       &00, &03, &BF, &00, &00, &03, &00, &03
        =       &3B, &00, &2E, &00, &00, &03, &00, &03
        =       &00, &03, &D7, &00, &00, &03, &00, &03
        =       &3A, &00, &2F, &00, &00, &03, &00, &03
        =       &00, &03, &F7, &00, &00, &03, &00, &03
        =       &3D, &00, &2B, &00, &00, &03, &00, &03
        =       &7E, &00, &00, &03, &00, &03, &00, &03
        =       &20, &00, &20, &00, &20, &00, &20, &00
        =       &A0, &00, &A0, &00, &00, &03, &00, &03

ProcessK31TopBitSet     DoTopBit        31

        DoAccent        31, Latin1

PadK31NumTran
        =       &2F, &2A, &23, &37, &38, &39, &2D, &34
        =       &35, &36, &2B, &31, &32, &33, &0D, &30
        =       &2E
PadK31CurTran
        =       &2F, &2A, &23, &1E, &8F, &9F, &2D, &8C
        =       &FF, &8D, &2B, &8B, &8E, &9E, &0D, &CD
        =       &7F
        ALIGN

        END