KeyStruct48
        &       KeyTran48-KeyStruct48
        &       (KeyTran48End-KeyTran48) :SHR: 2
        &       InkeyTran-KeyStruct48
        &       ShiftingKeyList-KeyStruct48
        &       SpecialList48-KeyStruct48
        &       SpecialCodeTable48-KeyStruct48
        &       KeyStructInit-KeyStruct48
        &       PendingAltCode48-KeyStruct48
        &       PendingAltSpecial48-KeyStruct48
        &       PadK48NumTran-KeyStruct48-(SpecialList48Pad-SpecialList48)
        &       PadK48CurTran-KeyStruct48-(SpecialList48Pad-SpecialList48)

KeyTran48
        =       &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
        =       &37, &26, &07, &07
        =       &FF, &FF, &FF, &FF
        =       &FF, &FF, &FF, &FF
        =       &30, &29, &00, &00
        =       &FF, &FF, &FF, &FF
        =       &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
        =       &77, &57, &17, &17
        =       &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
KeyTran48End

SpecialList48
        =       SpecialList48End-SpecialList48-1
SpecialList48Pad
        =       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
K48TopBitSet
        =       &10, &11, &12, &13, &14, &15, &16, &18
        =       &19, &1B, &1C, &1D, &27, &29, &2A, &2B
        =       &2C, &2E, &2F, &30, &31, &32, &33, &3C
        =       &3D, &3E, &3F, &44, &45, &46, &4E, &4F
        =       &50, &51, &52, &53, &54, &55, &56, &57
        =       &5F
SpecialList48End
        ALIGN

SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessK1Pad-SpecialCodeTable48
        &       ProcessKShift-SpecialCodeTable48
        &       ProcessKShift-SpecialCodeTable48
        &       ProcessKCtrl-SpecialCodeTable48
        &       ProcessKCtrl-SpecialCodeTable48
        &       ProcessKAlt-SpecialCodeTable48
        &       ProcessKAlt-SpecialCodeTable48
        &       ProcessKRight-SpecialCodeTable48
        &       ProcessKCentre-SpecialCodeTable48
        &       ProcessKLeft-SpecialCodeTable48
        &       ProcessKCaps-SpecialCodeTable48
        &       ProcessKTab-SpecialCodeTable48
        &       ProcessKDelete-SpecialCodeTable48
        &       ProcessKNum-SpecialCodeTable48
        &       ProcessKScroll-SpecialCodeTable48
        &       ProcessKBreak-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48
        &       ProcessK48TopBitSet-SpecialCodeTable48

TopBitSetTable48
        =       &60, &00, &7E, &00, &00, &03, &00, &03
        =       &AC, &00, &B0, &00, &00, &03, &00, &03
        =       &31, &00, &21, &00, &01, &00, &01, &00
        =       &B9, &00, &A1, &00, &00, &03, &00, &03
        =       &32, &00, &40, &00, &00, &00, &00, &00
        =       &B2, &00, &00, &03, &00, &03, &00, &03
        =       &33, &00, &23, &00, &03, &00, &03, &00
        =       &B3, &00, &A3, &00, &00, &03, &00, &03
        =       &34, &00, &24, &00, &04, &00, &04, &00
        =       &BC, &00, &00, &03, &00, &03, &00, &03
        =       &35, &00, &25, &00, &05, &00, &05, &00
        =       &BD, &00, &8E, &00, &00, &03, &00, &03
        =       &36, &00, &5E, &00, &1E, &00, &1E, &00
        =       &BE, &00, &8B, &00, &00, &03, &00, &03
        =       &38, &00, &2A, &00, &08, &00, &08, &00
        =       &00, &03, &8F, &00, &00, &03, &00, &03
        =       &39, &00, &28, &00, &09, &00, &09, &00
        =       &00, &03, &B1, &00, &00, &03, &00, &03
        =       &2D, &00, &5F, &00, &1F, &00, &1F, &00
        =       &AD, &00, &99, &00, &00, &03, &00, &03
        =       &3D, &00, &2B, &00, &00, &03, &00, &03
        =       &97, &00, &98, &00, &00, &03, &00, &03
        =       &A3, &00, &A4, &00, &00, &03, &00, &03
        =       &00, &03, &00, &03, &00, &03, &00, &03
        =       &71, &00, &51, &00, &11, &00, &11, &00
        =       &9B, &01, &9A, &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
        =       &5B, &00, &7B, &00, &1B, &00, &1B, &00
        =       &02, &02, &00, &03, &00, &03, &00, &03
        =       &5D, &00, &7D, &00, &1D, &00, &1D, &00
        =       &01, &02, &00, &03, &00, &03, &00, &03
        =       &5C, &00, &7C, &00, &1C, &00, &1C, &00
        =       &9C, &00, &9D, &00, &00, &03, &00, &03
        =       &61, &01, &41, &01, &01, &00, &01, &00
        =       &E6, &01, &C6, &01, &00, &03, &00, &03
        =       &73, &01, &53, &01, &13, &00, &13, &00
        =       &DF, &00, &A7, &00, &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
        =       &3B, &00, &3A, &00, &00, &03, &00, &03
        =       &05, &02, &8C, &00, &00, &03, &00, &03
        =       &27, &00, &22, &00, &00, &03, &00, &03
        =       &03, &02, &00, &03, &00, &03, &00, &03
        =       &7A, &01, &5A, &01, &1A, &00, &1A, &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
        =       &6D, &01, &4D, &01, &0D, &00, &0D, &00
        =       &B5, &00, &BA, &00, &00, &03, &00, &03
        =       &2C, &00, &3C, &00, &00, &03, &00, &03
        =       &04, &02, &D7, &00, &00, &03, &00, &03
        =       &2E, &00, &3E, &00, &00, &03, &00, &03
        =       &06, &02, &F7, &00, &00, &03, &00, &03
        =       &2F, &00, &3F, &00, &00, &03, &00, &03
        =       &07, &02, &BF, &00, &00, &03, &00, &03
        =       &20, &00, &20, &00, &20, &00, &20, &00
        =       &A0, &00, &A0, &00, &00, &03, &00, &03

ProcessK48TopBitSet     DoTopBit        48

        DoAccent        48, Latin1

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

        END