;; SCCSID = @(#)kbdxlat.inc 12.1 88/03/18 ;****************************************************************** ;* ;* EQUATES,STRUCS & MACROS FOR ACCESSING TRANSLATE TABLE FIELDS. ;* MaxAct Equ 15h ;Highest Action number allowed in Action field. AT Equ 00h ; AT Keyboard EN Equ 01h ; ENhanced Keyboard ifdef JAPAN ; MSKK Aug.04.1993 V-AKihiS ; BUGBUG - should investigate OEM ID and OEM keyboard type of other keyboards. JP_OEM Equ 10h ; Japan OEMs reserved keyboard ID. ;;;; JP_OEM Equ 01h ; Japan OEMs reserved keyboard ID. OEM_AX Equ 00h ; OEMs ID (0=AX maker) AX_DESKTOP Equ 01h ; AX desktop type keyboard. endif ;****************************************************************** ;* * ;* EQUATES & STRUCS FOR ACCESSING TRANSLATE TABLE FIELDS. * ;* * ;***** * ;* The KeyDef Structure: * ;****** KDef Struc ;Structure definition for a XlateTable KeyDef entry. XlateOp dw 0 ;Accent flags & Action number. Char1 db 0 ;Usually the unshifted character for a key. Char2 db 0 ;Usually the left/right/Caps shifted char for a key. Char3 db 0 ;Usually the Alt-Graphics shift char for a key. Char4 db 0 ;Only used by a couple of keytypes. Char5 db 0 ;Only used by a one of keytype (14h) KDef Ends KDefLen Equ Size KDef ;***** ;* Structure of the Translate Table itself. ;***** Header Struc ; Following is the Xlate Table Header: XT_CP dw ? ;The translate table code page value. XTFlags1 dw ? ;First flagword (use equates below for access). XTFlags2 dw ? ;Second flagword. XTKbdType dw ? ;FUTURE (keyboard type that uses this table). XTKbdSubType dw ? ;FUTURE (keyboard sub-type that uses this table). XTLength dw ? ;Length of table in bytes. XTEntryCount dw 127 ;Number of scan codes (= keydef entries). XTEntryWidth dw 7 ;Width of each entry. XTCountry dw 'US' ;@@ Language this table represents. XTTableID dw 1 ;@@ DCR031/PTM1730, added for use by Winthorne. XTSubCountry db ' ' ;&& DCR #17 Add kbd kayout ID XTRes dw 8 dup(?) ;&& RESERVED words (changed from 11, see ;&& above). Header Ends HeaderLen Equ Size Header ;***** ;* The Accent Entry Structure: ;***** AccEntry Struc ;Definition for entries in the AccentTable below. NonAcChar db 0 ;Char code to pass when next char isn't accented. NonAcScan db 0 ;Scan " " " " " " " " CtlAcChar db 0 ;Char code to pass on Ctl-[accent key] keystroke. CtlAcScan db 0 ;Scan " " " " " " AltAcChar db 0 ;Char code to pass on Atl-[accent key] keystroke. AltAcScan db 0 ;Scan " " " " " " ;20 pairs of "from"(chars to be accented) and "to"(result char) values: AcMap1 db 0 ; db 0 ; AcMap2 db 0 ; db 0 ; AcMap3 db 0 ; db 0 ; AcMap4 db 0 ; db 0 ; AcMap5 db 0 ; db 0 ; AcMap6 db 0 ; db 0 ; AcMap7 db 0 ; db 0 ; AcMap8 db 0 ; db 0 ; AcMap9 db 0 ; db 0 ; AcMap10 db 0 ; db 0 ; AcMap11 db 0 ; db 0 ; AcMap12 db 0 ; db 0 ; AcMap13 db 0 ; db 0 ; AcMap14 db 0 ; db 0 ; AcMap15 db 0 ; db 0 ; AcMap16 db 0 ; db 0 ; AcMap17 db 0 ; db 0 ; AcMap18 db 0 ; db 0 ; AcMap19 db 0 ; db 0 ; AcMap20 db 0 ; db 0 ; AccEntry Ends ; AccEntryLen Equ Size AccEntry ; ;***** ;* Structure of the Translate Table itself. ;***** XTSTRUC Struc XTHead db HeaderLen dup(?) ;@@ Following are the key definitions themselves. KDefs db 127*KDefLen dup (?) ;The keydefs. ;@@ Following are the accent entries. Accents db 7*46 dup (?) ;The accent entries. XTSTRUC Ends ;******** ;* AccEnt - Accent Entry Macro: ;******** AccEnt Macro PARMS .xlist AccEntry .list Endm ;******** ;* KeyDef - Key definition entry macro: ;******** KeyDef Macro f,g1,g2,g3,g4,g5,g6,g7,a,b,c,d,e .erre f LE MaxAct ;Error if Action number is too big. z = g7*8000h+g6*4000h+g5*2000h+g4*1000h+g3*800h+g2*400h+g1*200h+f .xlist KDef .list Endm ;******* ;* XtHeader - Header definition Macro: ;******* XtHeader Macro cp,a,b,c,d,e,f,g,h,i,kb,l,cc,cs ;&& DCR #17 - Machine z = i*256+h*128+g*64+f*32+e*16+d*8+c*4+b*2+a ;&& flag added and CS Header <&cp,z,,&kb,,&l,,,cc,,cs> ;&& for subcountryID Endm ; * ;***** END OF TRANSLATE TABLE DEFINITIONS ****************