<> <> <> <> <<>> <> <<>> DIRECTORY KeyMappingTypes, KeyTypes; KeyMapping: CEDAR DEFINITIONS ~ BEGIN KeySym: TYPE = KeyTypes.KeySym; KeyCode: TYPE = KeyTypes.KeyCode; Mapping: TYPE ~ KeyMappingTypes.Mapping; KeySyms: TYPE ~ REF READONLY KeySymsRep; KeySymsRep: TYPE ~ RECORD [SEQUENCE n: BYTE OF KeySym]; KeyTable: TYPE ~ REF KeyTableRep; KeyTableRep: TYPE ~ ARRAY KeyCode OF REF KeySymsRep; KeyCodes: TYPE ~ REF READONLY KeyCodesRep; KeyCodesRep: TYPE ~ RECORD [SEQUENCE n: NAT OF KeyCodeIndexPair]; KeyCodeIndexPair: TYPE ~ PACKED RECORD [keyCode: KeyCode, glyphIndex: BYTE]; CountKeySyms: PROC [mapping: Mapping, keyCode: KeyCode] RETURNS [count: NAT]; <> <<>> GetKeySym: PROC [mapping: Mapping, keyCode: KeyCode, i: NAT] RETURNS [keySym: KeySym]; <> <<>> GetKeySyms: PROC [mapping: Mapping, keyCode: KeyCode] RETURNS [keySyms: KeySyms]; <> <> <<>> KeyCodesFromKeySym: PROC [mapping: Mapping, keySym: KeySym] RETURNS [keyCodes: KeyCodes]; <> <> WalkKeySymsProc: TYPE ~ PROC [keySym: KeySym] RETURNS [done: BOOL ¬ FALSE]; WalkKeySyms: PROC [mapping: Mapping, walkProc: WalkKeySymsProc] RETURNS [aborted: BOOL ¬ FALSE]; <> <> NewMapping: PROC [keyTable: KeyTable, maxCode: KeyCode ¬ KeyCode.LAST] RETURNS [mapping: Mapping]; <> END.