home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-3.DMS / in.adf / Units / Keymap.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  1.9 KB  |  129 lines

  1. unit Keymap;
  2.  
  3. INTERFACE
  4. uses Exec, Input;
  5.  
  6.  
  7. type
  8.     pKeyMapResource = ^tKeyMapResource;
  9.     tKeyMapResource = record
  10.         kr_Node: tNode;
  11.         kr_List: tList;
  12.         end;
  13.  
  14.     pKeyMap = ^tKeyMap;
  15.     tKeyMap = record
  16.         km_LoKeyMapTypes: pbyte;
  17.         km_LoKeyMap: plong;
  18.         km_LoCapsable: pbyte;
  19.         km_LoRepeatable: pbyte;
  20.         km_HiKeyMapTypes: pbyte;
  21.         km_HiKeyMap: plong;
  22.         km_HiCapsable: pbyte;
  23.         km_HiRepeatable: pbyte;
  24.         end;
  25.  
  26.     pKeyMapNode = ^tKeyMapNode;
  27.     tKeyMapNode = record
  28.         kn_Node: tNode;
  29.         kn_KeyMap: tKeyMap;
  30.         end;
  31.  
  32.  
  33.  
  34. var
  35.     KeymapBase: pLibrary;
  36.  
  37.  
  38. const
  39.     KCB_ALT = 1;
  40.     KCF_ALT = 2;
  41.     DP_2DINDEXMASK = $F;
  42.     DPB_MOD = 0;
  43.     DPF_MOD = 1;
  44.     KCB_NOP = 7;
  45.     DP_2DFACSHIFT = 4;
  46.     KCF_NOP = $80;
  47.     KCB_CONTROL = 2;
  48.     KCF_CONTROL = 4;
  49.     KC_VANILLA = 7;
  50.     KCB_STRING = 6;
  51.     KCB_DEAD = 5;
  52.     KCF_STRING = $40;
  53.     KCF_DEAD = $20;
  54.     KCB_DOWNUP = 3;
  55.     DPB_DEAD = 3;
  56.     KCF_DOWNUP = 8;
  57.     DPF_DEAD = 8;
  58.     KCB_SHIFT = 0;
  59.     KCF_SHIFT = 1;
  60.     KC_NOQUAL = 0;
  61.  
  62.  
  63. procedure SetKeyMapDefault (keyMap: pKeyMap);
  64. function AskKeyMapDefault: pKeyMap;
  65. function MapRawKey
  66.         (event: pInputEvent;
  67.         buffer: STRPTR;
  68.         length: integer;
  69.         keyMap: pKeymap): integer;
  70.  
  71. function MapANSI
  72.         (string_: STRPTR;
  73.         count: longint;
  74.         buffer: STRPTR;
  75.         length: longint;
  76.         keyMap: pKeyMap): longint;
  77.  
  78.  
  79.  
  80. IMPLEMENTATION
  81. procedure SetKeyMapDefault; xassembler;
  82. asm
  83.     move.l    a6,-(sp)
  84.     move.l    8(sp),a0
  85.     move.l    KeymapBase,a6
  86.     jsr        -$1E(a6)
  87.     move.l    (sp)+,a6
  88. end;
  89.  
  90. function AskKeyMapDefault; xassembler;
  91. asm
  92.     move.l    a6,-(sp)
  93.     move.l    KeymapBase,a6
  94.     jsr        -$24(a6)
  95.     move.l    d0,8(sp)
  96.     move.l    (sp)+,a6
  97. end;
  98.  
  99. function MapRawKey; xassembler;
  100. asm
  101.     movem.l    a2/a6,-(sp)
  102.     lea        $C(sp),a6
  103.     move.l    (a6)+,a2
  104.     move.w    (a6)+,d1
  105.     move.l    (a6)+,a1
  106.     move.l    (a6)+,a0
  107.     move.l    KeymapBase,a6
  108.     jsr        -$2A(a6)
  109.     move.w    d0,$1A(sp)
  110.     movem.l    (sp)+,a2/a6
  111. end;
  112.  
  113. function MapANSI; xassembler;
  114. asm
  115.     movem.l    a2/a6,-(sp)
  116.     lea        $C(sp),a6
  117.     move.l    (a6)+,a2
  118.     move.l    (a6)+,d1
  119.     move.l    (a6)+,a1
  120.     move.l    (a6)+,d0
  121.     move.l    (a6)+,a0
  122.     move.l    KeymapBase,a6
  123.     jsr        -$30(a6)
  124.     move.l    d0,$20(sp)
  125.     movem.l    (sp)+,a2/a6
  126. end;
  127.  
  128. end.
  129.