KBDINPUT.MOD 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. IMPLEMENTATION MODULE KbdInput;
  2. (*
  3. * REPERTOIRE
  4. * Release 1.6
  5. * By Charles Bradford and Cole Brecheen
  6. * (c) Copyright 1985-1992 PMI
  7. * Green Bay, Wisconsin
  8. * All rights reserved
  9. * (414) 468-6040
  10. *
  11. * $Header: D:/logfiles/mods/kbdinput.mov 1.8 17 Mar 1991 17:56:26 coleb $
  12. *
  13. *)
  14. IMPORT BigSets;
  15. IMPORT ErrorManager;
  16. IMPORT FAPI;
  17. IMPORT LowLevel;
  18. IMPORT M2Strings;
  19. IMPORT StrConv;
  20. IMPORT StrEdit;
  21. IMPORT StringIO;
  22. IMPORT SYSTEM;
  23. VAR
  24. Initialized : BOOLEAN;
  25. VAR
  26. KbdState: FAPI.KBDINFO;
  27. PROCEDURE DefaultKeyHit( LegalKeys: KeyNumSet ): CARDINAL;
  28. VAR
  29. CharData: FAPI.KBDKEYINFO;
  30. bufch: CHAR;
  31. TmpResult: CARDINAL;
  32. BEGIN
  33. REPEAT
  34. IF NOT TypeAheadLegal THEN
  35. TmpResult:=FAPI.KBDFLUSHBUFFER(0)
  36. END;
  37. IF FAPI.KBDCHARIN(SYSTEM.ADR(CharData), 0, 0) # 0 THEN
  38. ErrorManager.WARN( "KBDCHARIN");
  39. END;
  40. IF (CharData.chChar = FAPI.UCHAR(0C)) OR
  41. (CharData.chChar = FAPI.UCHAR(CHR(0E0H))) THEN
  42. TmpResult := ORD(CharData.chScan) + Extended;
  43. ELSE
  44. TmpResult := ORD(CharData.chChar);
  45. END;
  46. UNTIL BigSets.InSet(LegalKeys, TmpResult);
  47. RETURN(TmpResult);
  48. END DefaultKeyHit;
  49. PROCEDURE CAPkey( KeyNum: CARDINAL ): CARDINAL;
  50. (*This routine serves the same function for numeric key
  51. values that CAP serves for ASCII values.*)
  52. BEGIN
  53. IF (KeyNum >= 97) (*ORD('a')*)
  54. AND (KeyNum <= 122) (*ORD('z')*) THEN
  55. RETURN KeyNum - 32; (*ORD('a') - ORD('A')*)
  56. ELSE
  57. RETURN KeyNum;
  58. END;
  59. END CAPkey;
  60. PROCEDURE ReassignKey(KeyCode : CARDINAL; NewDefn :
  61. ARRAY OF CHAR);
  62. BEGIN
  63. END ReassignKey;
  64. PROCEDURE Init();
  65. BEGIN
  66. IF Initialized THEN
  67. RETURN;
  68. ELSE
  69. Initialized := TRUE;
  70. END;
  71. BigSets.Init();
  72. ErrorManager.Init();
  73. LowLevel.Init();
  74. M2Strings.Init();
  75. StrConv.Init();
  76. StrEdit.Init();
  77. StringIO.Init();
  78. (*EntryDiag:
  79. StringIO.WriteEol( 1, 'Entering KbdInput' );
  80. :EntryDiag*)
  81. KeyHit := DefaultKeyHit;
  82. TypeAheadLegal := TRUE;
  83. BigSets.InitSet( AnyKeyNum );
  84. BigSets.AppendSet( AnyKeyNum, "{0..400}" );
  85. BigSets.InitSet( YorN );
  86. BigSets.AppendSet( YorN, "{'y', 'Y', 'n', 'N'}" );
  87. KbdState.cb := SYSTEM.TSIZE(FAPI.KBDINFO);
  88. KbdState.fsMask := FAPI.KEYBOARD_BINARY_MODE;
  89. IF FAPI.KBDSETSTATUS(SYSTEM.ADR(KbdState), 0) # 0 THEN
  90. ErrorManager.WARN("KBDSETSTATUS");
  91. END;
  92. (*EntryDiag:
  93. StringIO.WriteEol( 1, 'Exiting KbdInput' );
  94. :EntryDiag*)
  95. END Init;
  96. BEGIN
  97. Initialized := FALSE;
  98. Init();
  99. END KbdInput.
  100.