home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / KeyMap.def < prev    next >
Text File  |  1994-05-25  |  3KB  |  100 lines

  1. |##########|
  2. |#MAGIC   #|CLABLMAF
  3. |#PROJECT #|""
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx---x--x---xxx-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|x-xx-x----------
  9. |##########|
  10. DEFINITION MODULE KeyMap;
  11. (* $A- *)
  12. FROM Exec    IMPORT Node,List,LibraryPtr;
  13. FROM System  IMPORT LONGSET,SysStringPtr,Regs;
  14. FROM Input   IMPORT Qualifiers,InputEventPtr;
  15.  
  16. TYPE
  17.   KeyMapTypes        = (shift,alt,control,downup,kmp4,dead,string,nop);
  18.   KeyMapTypeSet      = SET OF KeyMapTypes;
  19.   DeadPrefixBytes    = (dpbMod,dpb1,dpb2,dpbDead);
  20.   DeadPrefixByteSet  = SET OF DeadPrefixBytes;
  21.  
  22. CONST
  23.   dp2dIndexMax  = $0F;
  24.   dp2dFacShift  = 4;
  25.   maxKeys       = 64;
  26.   noQual        = KeyMapTypeSet:{};
  27.   vanilla       = KeyMapTypeSet:{shift,alt,control}
  28.  
  29. TYPE
  30.   BitTable         = ARRAY [maxKeys DIV (8*LONGSET'SIZE)] OF LONGSET;
  31.   BitTablePtr      = POINTER TO BitTable;
  32.  
  33.   KeyInfo          = RECORD
  34.                        IF KEY : INTEGER
  35.                          OF 0 THEN ch : ARRAY [0..3] OF CHAR;
  36.                          OF 1 THEN st : SysStringPtr;
  37.                         END
  38.                      END;
  39.  
  40.   Types            = ARRAY [0..maxKeys-1] OF KeyMapTypeSet;
  41.   TypesPtr         = POINTER TO Types;
  42.  
  43.   Info             = ARRAY [0..maxKeys-1] OF KeyInfo;
  44.   InfoPtr          = POINTER TO Info;
  45.  
  46.   KeyMap           = RECORD
  47.                        loKeyMapTypes   : TypesPtr;
  48.                        loKeyMap        : InfoPtr;
  49.                        loCapsable      : BitTablePtr;
  50.                        loRepeatable    : BitTablePtr;
  51.                        hiKeyMapTypes   : TypesPtr;
  52.                        hiKeyMap        : InfoPtr;
  53.                        hiCapsable      : BitTablePtr;
  54.                        hiRepeatable    : BitTablePtr;
  55.                      END;
  56.   KeyMapPtr        = POINTER TO KeyMap;
  57.  
  58.   KeyMapNode       = RECORD OF Node
  59.                        keyMap : KeyMap
  60.                      END;
  61.  
  62.   KeyMapResource   = RECORD OF Node
  63.                        keyMaps : List
  64.                      END;
  65.   CodeQualPair     = RECORD
  66.                        code : SHORTCARD;
  67.                        qual : SET OF [lShift..rCommand];
  68.                      END;
  69.   CodeQualArray    = ARRAY OF CodeQualPair;
  70.  
  71. VAR
  72.   KeymapBase  : LibraryPtr;
  73.  
  74. LIBRARY KeymapBase BY -30
  75.   PROCEDURE SetKeyMapDefault(keyMap IN A0 : KeyMapPtr);
  76.  
  77. LIBRARY KeymapBase BY -36
  78.   PROCEDURE AskKeyMapDefault():KeyMapPtr;
  79.  
  80. LIBRARY KeymapBase BY -42
  81.   PROCEDURE MapRawKey(event  IN A0 : InputEventPtr;
  82.                       buffer IN A1 : ANYPTR;
  83.                       length IN D1 : INTEGER;
  84.                       keyMap IN A2 : KeyMapPtr):INTEGER;
  85.  
  86. LIBRARY KeymapBase BY -48
  87.   PROCEDURE MapANSI(REF string IN A0 : STRING;
  88.                         count  IN D0 : LONGINT;
  89.                     VAR buffer IN A1 : CodeQualArray;
  90.                         length IN D1 : LONGINT;
  91.                         keyMap IN A2 : KeyMapPtr):LONGINT;
  92.  
  93. GROUP
  94.   All    = KeyMapTypes,KeyMapTypeSet,DeadPrefixBytes,DeadPrefixByteSet,
  95.            dp2dIndexMax,dp2dFacShift,maxKeys,noQual,vanilla,BitTable,
  96.            BitTablePtr,KeyInfo,Types,TypesPtr,Info,InfoPtr,KeyMap,
  97.            KeyMapPtr,KeyMapNode,KeyMapResource;
  98.  
  99. END KeyMap.
  100.