| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- IMPLEMENTATION MODULE KbdInput;
- (*
- * REPERTOIRE
- * Release 1.6
- * By Charles Bradford and Cole Brecheen
- * (c) Copyright 1985-1992 PMI
- * Green Bay, Wisconsin
- * All rights reserved
- * (414) 468-6040
- *
- * $Header: D:/logfiles/mods/kbdinput.mov 1.8 17 Mar 1991 17:56:26 coleb $
- *
- *)
- IMPORT BigSets;
- IMPORT ErrorManager;
- IMPORT FAPI;
- IMPORT LowLevel;
- IMPORT M2Strings;
- IMPORT StrConv;
- IMPORT StrEdit;
- IMPORT StringIO;
- IMPORT SYSTEM;
- VAR
- Initialized : BOOLEAN;
- VAR
- KbdState: FAPI.KBDINFO;
- PROCEDURE DefaultKeyHit( LegalKeys: KeyNumSet ): CARDINAL;
- VAR
- CharData: FAPI.KBDKEYINFO;
- bufch: CHAR;
- TmpResult: CARDINAL;
- BEGIN
- REPEAT
- IF NOT TypeAheadLegal THEN
- TmpResult:=FAPI.KBDFLUSHBUFFER(0)
- END;
- IF FAPI.KBDCHARIN(SYSTEM.ADR(CharData), 0, 0) # 0 THEN
- ErrorManager.WARN( "KBDCHARIN");
- END;
- IF (CharData.chChar = FAPI.UCHAR(0C)) OR
- (CharData.chChar = FAPI.UCHAR(CHR(0E0H))) THEN
- TmpResult := ORD(CharData.chScan) + Extended;
- ELSE
- TmpResult := ORD(CharData.chChar);
- END;
- UNTIL BigSets.InSet(LegalKeys, TmpResult);
- RETURN(TmpResult);
- END DefaultKeyHit;
- PROCEDURE CAPkey( KeyNum: CARDINAL ): CARDINAL;
- (*This routine serves the same function for numeric key
- values that CAP serves for ASCII values.*)
- BEGIN
- IF (KeyNum >= 97) (*ORD('a')*)
- AND (KeyNum <= 122) (*ORD('z')*) THEN
- RETURN KeyNum - 32; (*ORD('a') - ORD('A')*)
- ELSE
- RETURN KeyNum;
- END;
- END CAPkey;
- PROCEDURE ReassignKey(KeyCode : CARDINAL; NewDefn :
- ARRAY OF CHAR);
- BEGIN
- END ReassignKey;
- PROCEDURE Init();
- BEGIN
- IF Initialized THEN
- RETURN;
- ELSE
- Initialized := TRUE;
- END;
- BigSets.Init();
- ErrorManager.Init();
- LowLevel.Init();
- M2Strings.Init();
- StrConv.Init();
- StrEdit.Init();
- StringIO.Init();
- (*EntryDiag:
- StringIO.WriteEol( 1, 'Entering KbdInput' );
- :EntryDiag*)
- KeyHit := DefaultKeyHit;
- TypeAheadLegal := TRUE;
- BigSets.InitSet( AnyKeyNum );
- BigSets.AppendSet( AnyKeyNum, "{0..400}" );
- BigSets.InitSet( YorN );
- BigSets.AppendSet( YorN, "{'y', 'Y', 'n', 'N'}" );
- KbdState.cb := SYSTEM.TSIZE(FAPI.KBDINFO);
- KbdState.fsMask := FAPI.KEYBOARD_BINARY_MODE;
- IF FAPI.KBDSETSTATUS(SYSTEM.ADR(KbdState), 0) # 0 THEN
- ErrorManager.WARN("KBDSETSTATUS");
- END;
- (*EntryDiag:
- StringIO.WriteEol( 1, 'Exiting KbdInput' );
- :EntryDiag*)
- END Init;
- BEGIN
- Initialized := FALSE;
- Init();
- END KbdInput.
|