home *** CD-ROM | disk | FTP | other *** search
- unit Keymap;
-
- INTERFACE
- uses Exec, Input;
-
-
- type
- pKeyMapResource = ^tKeyMapResource;
- tKeyMapResource = record
- kr_Node: tNode;
- kr_List: tList;
- end;
-
- pKeyMap = ^tKeyMap;
- tKeyMap = record
- km_LoKeyMapTypes: pbyte;
- km_LoKeyMap: plong;
- km_LoCapsable: pbyte;
- km_LoRepeatable: pbyte;
- km_HiKeyMapTypes: pbyte;
- km_HiKeyMap: plong;
- km_HiCapsable: pbyte;
- km_HiRepeatable: pbyte;
- end;
-
- pKeyMapNode = ^tKeyMapNode;
- tKeyMapNode = record
- kn_Node: tNode;
- kn_KeyMap: tKeyMap;
- end;
-
-
-
- var
- KeymapBase: pLibrary;
-
-
- const
- KCB_ALT = 1;
- KCF_ALT = 2;
- DP_2DINDEXMASK = $F;
- DPB_MOD = 0;
- DPF_MOD = 1;
- KCB_NOP = 7;
- DP_2DFACSHIFT = 4;
- KCF_NOP = $80;
- KCB_CONTROL = 2;
- KCF_CONTROL = 4;
- KC_VANILLA = 7;
- KCB_STRING = 6;
- KCB_DEAD = 5;
- KCF_STRING = $40;
- KCF_DEAD = $20;
- KCB_DOWNUP = 3;
- DPB_DEAD = 3;
- KCF_DOWNUP = 8;
- DPF_DEAD = 8;
- KCB_SHIFT = 0;
- KCF_SHIFT = 1;
- KC_NOQUAL = 0;
-
-
- procedure SetKeyMapDefault (keyMap: pKeyMap);
- function AskKeyMapDefault: pKeyMap;
- function MapRawKey
- (event: pInputEvent;
- buffer: STRPTR;
- length: integer;
- keyMap: pKeymap): integer;
-
- function MapANSI
- (string_: STRPTR;
- count: longint;
- buffer: STRPTR;
- length: longint;
- keyMap: pKeyMap): longint;
-
-
-
- IMPLEMENTATION
- procedure SetKeyMapDefault; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l KeymapBase,a6
- jsr -$1E(a6)
- move.l (sp)+,a6
- end;
-
- function AskKeyMapDefault; xassembler;
- asm
- move.l a6,-(sp)
- move.l KeymapBase,a6
- jsr -$24(a6)
- move.l d0,8(sp)
- move.l (sp)+,a6
- end;
-
- function MapRawKey; xassembler;
- asm
- movem.l a2/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,a2
- move.w (a6)+,d1
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l KeymapBase,a6
- jsr -$2A(a6)
- move.w d0,$1A(sp)
- movem.l (sp)+,a2/a6
- end;
-
- function MapANSI; xassembler;
- asm
- movem.l a2/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,a2
- move.l (a6)+,d1
- move.l (a6)+,a1
- move.l (a6)+,d0
- move.l (a6)+,a0
- move.l KeymapBase,a6
- jsr -$30(a6)
- move.l d0,$20(sp)
- movem.l (sp)+,a2/a6
- end;
-
- end.
-