Code Page Translation Table
XlateTable: XHeader : XHeader KeyDef1 : KeyDef KeyDef2 : KeyDef KeyDef3 : KeyDef . . . . . . KeyDef127 : KeyDef AccentTbl : AccentTable End XlateTable XHeader: XTableID : WORD [Code PageNumber] XTableFlags1 : Rec [Word Width] : The following three bits determine which shift key : or key combination affects CHAR3 of each KeyDef. ShiftAlt : Bit 0 [Use Shift+Alt instead of Ctrl+Alt] AltGrafL : Bit 1 [Use left Alt key as Alt+Graphics] AltGrafR : Bit 2 [Use right Alt key as Alt+Graphics] ShiftLock : Bit 3 [Treat Caps Lock as ShiftLock] DefaultTable : Bit 4 [Default table for the Lang.] ShiftToggle : Bit 5 [Toggle or LatchShiftLock] : When 1 toggle, else latch AccentPass : Bit 6 [Pass accent and non-accent key through] : When 1 pass on accent keys and beep, else beep : only. : The following four bits determine which shift key or : key combination causes Char5 to be used in each : KeyDef. CapsShift : Bit 7 [Caps+Shift uses CHAR5] MachDep : Bit 8 [Machine-dependent table] Reserved : Bits 9-10 Reserved : Bits 11-15 EndRec XtableFlags1
XTableFlags2 : Rec[WORD Width] Reserved : Bits 0-15 EndRec XtableFlags2 KbdType : WORD [Keyboard type, see below] KbdSubType : WORD [Reserved] XtableLen : WORD [Length of table] EntryCount : WORD [Number of KeyDef entries] EntryWidth : WORD [Width of KeyDef entries] Country : WORD [Language ID] TableTypeID : WORD [Identifies the table type] 1st byte (type) : 01X 00X 2nd byte (sub-type) : 00X Reserved SubCountryID : 4 Bytes [Sub-language Identifier] Reserved : 8 WORDS [Reserved] End XHeader KeyDef = Rec [127 copies of this record.] XlateOp = Rec [WORD field] [Translate operation specifier.] AccentFlags : 7 Bits [See Notes 1 and 8.] KeyType : 9 bits [See Note 2.] Char1 : Byte [Use depends on KeyType, see below.] Char2 : Byte [Use depends on KeyType, see below.] Char3 : Byte [Use depends on KeyType, see below.] Char4 : Byte [Use depends on KeyType, see below.] Char5 : Byte [Use depends on KeyType, see below.] EndRec KeyDef AccentTable = Rec [Table of accent key definitions.] AccentEntry1 : AccentEntry AccentEntry2 : AccentEntry . . . . . . AccentEntry7 : AccentEntry EndRec AccentTable AccentEntry = Rec [Accent entry definition. See Notes 1 and 9.] NonAccent : 2 Bytes [Char/scan code when not used as accent] CtlAccent : 2 Bytes [Char/scan code when used with CTL.] AltAccent : 2 Bytes [Char/scan code when used with Alt.] Map1 : 2 Bytes [From char-to-char for translation.] Map2 : 2 Bytes " " " " . . " " " " . . " " " " . . " " " " Map20 : 2 Bytes " " " " EndRec AccentEntry TableTypeID 1st Byte 2nd Byte type sub-type 00X Reserved OS/2 01X 00X