home *** CD-ROM | disk | FTP | other *** search
- * SetPWkeys
- * 1991 by Preben Nielsen
- *
- *
- *HISTORY
- * Made with Hisoft V2.12
- *
- * V1.0 20-Apr-91: The program has now existed for a long time, but I
- * don't remember exactly when I started on it.
- * V1.1 07-May-91: Modified it to accommodate 3 new functions.
- * 08-May-91: Modified it to accommodate 2 new functions.
- * Added arrow-images.
- * 11-May-91: Located an error. The correct number of hotkeys
- * didn't get saved to file (oops).
- * 14-May-91: Added string-gadgets to control handler-priority and
- * mouse speed/threshold.
- * 15-May-91: Added string-gadgets to control screen/mouse blanking.
- * V2.0 18-May-91: Now uses Workbench 2.x colors.
- * 19-May-91: Help, I just found out that my "TellInputDevice"
- * routine trashes memory-address 0 because it didn't
- * do a "NewList" on its Message-port. It didn't cause
- * any problems most of the time, but it has now been
- * cured.
-
- OPT O+
- OPT O1+ ; Tells when a branch could be optimised to short
- OPT i+ ; Tells when '#' is probably missing
-
- incdir "AsmInc:"
- include "exec/exec_lib.i"
- include "exec/io.i"
- include "exec/memory.i"
- include "exec/interrupts.i"
- include "devices/input.i"
- include "libraries/dos_lib.i"
- include "libraries/dosextens.i"
- include "graphics/graphics_lib.i"
- include "graphics/gfxbase.i"
- include "graphics/text.i"
- include "intuition/intuition.i"
- include "intuition/intuition_lib.i"
- include "PWkeys.i"
-
- POPSCREEN ; If this is defined then the screen will
- ; pop up from below
- CUSTOMCOLORS ; If you remove this then it uses WB-colors
-
- PLANES =1 ; Bitplanes on screen
- SWDIFF =10 ; Difference between screen and window y-coords
-
- FUNCTEXTS =KeyFuncNumber+3
- GADTEXTS =13
- MSGTEXTS =14
-
- TITLE =0
- NOFILE =-1
- READERROR =-2
- WRITEERROR =-3
- GOODREAD =-4
- GOODWRITE =-5
- NOHANDLER =-6
- CANTREMOVE =-7
- CANTINSTALL =-8
- IMPORTOK =-9
- EXPORTOK =-10
- DUPLICATES =-11
- WRONGPRI =-12
- NOERRORS =-13
-
- KEYMASK =$FF
-
- SELECTEDBOX =0
- GHOSTEDBOX =1
-
- Prepare MACRO
- IFC '\1','Exec_Call'
- movea.l 4.W,A6
- ENDC
- IFC '\1','Intuition_Call'
- movea.l IntBase(DB),A6
- ENDC
- IFC '\1','Gfx_Call'
- movea.l GraphBase(DB),A6
- ENDC
- IFC '\1','Dos_Call'
- movea.l DosBase(DB),A6
- ENDC
- ENDM
- CallLib MACRO
- jsr _LVO\1(A6)
- ENDM
- Call MACRO
- bsr \1
- ENDM
- Push MACRO Push <reg list | all>
- IFC '\1','all'
- movem.l D0-D7/A0-A6,-(SP)
- ENDC
- IFNC '\1','all'
- movem.l \1,-(SP)
- ENDC
- ENDM
- Pop MACRO Pop <reg list | all>
- IFC '\1','all'
- movem.l (SP)+,D0-D7/A0-A6
- ENDC
- IFNC '\1','all'
- movem.l (SP)+,\1
- ENDC
- ENDM
- rAPtr MACRO Name
- DefSiz set DefSiz+4
- DefPtr set DefPtr-4
- \1 = DefPtr
- ENDM
- rLong MACRO Name
- DefSiz set DefSiz+4
- DefPtr set DefPtr-4
- \1 = DefPtr
- ENDM
- rWord MACRO Name
- DefSiz set DefSiz+2
- DefPtr set DefPtr-2
- \1 = DefPtr
- ENDM
- rByte MACRO Name
- DefSiz set DefSiz+1
- DefPtr set DefPtr-1
- \1 = DefPtr
- ENDM
- rStorage MACRO Name,Size ;def storage
- DefSiz set DefSiz+\2
- DefPtr set DefPtr-\2
- \1 = DefPtr
- ENDM
- rEVEN MACRO ;word boundary
- IFNE DefPtr&1
- DefPtr set DefPtr-1
- DefSiz set DefSiz+1
- ENDC
- ENDM
- rStart MACRO ;def var section
- DefPtr set 0
- DefSiz set 0
- ENDM
- rEnd MACRO ;def var section
- RelSize = DefSiz
- ENDM
- rAlloc MACRO
- link DB,#-RelSize
- ENDM
- rFree MACRO ;De-allocate storage
- unlk DB
- ENDM
- rClear MACRO ;reset all variables
- movem.l D0/A0,-(SP)
- move.w #RelSize-1,D0
- move.l DB,A0
- rClr.\@ clr.b -(A0)
- dbf D0,rClr.\@
- movem.l (SP)+,D0/A0
- ENDM
- Gadget MACRO
- dc.l \1
- dc.w \2,\3,\4,\5,\6,\7,\8
- ENDM
- Gadget2 MACRO
- dc.l \1,\2,\3,\4,\5
- dc.w \6
- dc.l \7
- ENDM
- Border MACRO
- dc.w \1,\2
- dc.b \3,\4,\5,\6
- dc.l \7,\8
- ENDM
- Image MACRO
- dc.w \1,\2,\3,\4,\5
- dc.l \6
- dc.b \7,\8
- dc.l \9
- ENDM
- IntuiText MACRO
- dc.b \1,\2,\3,0
- dc.w \4,\5
- dc.l TxtAttr,\6,\7
- ENDM
- Detach MACRO ; Detach <'process name'>,stacksize,processpri
- SECTION MultiSplit,CODE
- Start Prepare Exec_Call
- suba.l A1,A1
- CallLib FindTask ; Find us
- move.l D0,A0
- tst.l pr_CLI(A0)
- bne.S SegSplit
- jmp ProcessStart ; from WorkBench
- SegSplit link A4,#-100
- CallLib Forbid ; From Dos
- lea DName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,D5
- beq 6$
- move.l Start-4(PC),A1
- move.l A1,D3
- moveq #0,D6 ; Number of segments
- moveq #ML_SIZE,D7 ; Size of memory to allocate
- move.l SP,A0
- 1$ move.l A1,D0 ; Count segments and make MemEntries on the stack
- beq.S 2$
- adda.l A1,A1
- adda.l A1,A1
- subq.l #4,A1
- move.l A1,(A0)+ ; MemList -> ml_me[0].me_Addr = Segment
- move.l (A1),(A0)+ ; MemList -> ml_me[0].me_Length = Length
- move.l 4(A1),A1
- addq.w #1,D6
- addq.w #ME_SIZE,D7
- bra.S 1$
- 2$ move.l D7,D0
- move.l #MEMF_PUBLIC|MEMF_CLEAR,D1
- CallLib AllocMem ; Allocate Memlist
- move.l D0,A2
- tst.l D0
- beq.S 5$
- move.w D6,ML_NUMENTRIES(A2) ; MemList -> ml_NumEntries = number of segments
- move.l SP,A0
- lea ML_ME(A2),A1
- move.l D7,D0
- sub.w #ML_SIZE+1,D0
- 3$ move.b (A0)+,(A1)+
- dbf D0,3$
- move.l #ProcessName,D1
- moveq #\3,D2 ; Priority
- move.l #\2,D4 ; Stacksize
- move.l D5,A6
- CallLib CreateProc
- Prepare Exec_Call
- move.l D0,A0
- tst.l D0
- beq.S 4$
- lea -pr_MsgPort(A0),A0 ; Now we have process
- not.l pr_CLI(A0) ; All MY programs will now think they were started from the CLI
- lea TC_MEMENTRY(A0),A0
- move.l A2,A1
- CallLib AddTail ; AddTail(&Process->pr_Task.tc_MemEntry,&MemList->ml_Node);
- lea Start-4(PC),A1
- clr.l (A1) ; Split the segments
- bra.S 5$
- 4$ move.l A2,A1 ; CreateProc failed. Can't do anything then
- move.l D7,D0
- CallLib FreeMem
- 5$ move.l D5,A1
- CallLib CloseLibrary
- 6$ CallLib Permit
- unlk A4
- moveq #0,D0
- rts
- DName dc.b 'dos.library',0
- ProcessName dc.b \1,0 ; CreateProc makes a copy of this name
- SECTION ProcessCode,CODE
- ProcessStart
- ENDM
-
- DB EQUR A4
-
- InitProcess Detach <'SetPWkeys Process'>,4000,0
- rAlloc ; Allocate memory for variables
- rClear ; Clear the memory
- Prepare Exec_Call
- suba.l A1,A1
- CallLib FindTask ; Find us
- move.l D0,PProcess(DB)
- movea.l D0,A2
- tst.l pr_CLI(A2)
- bne.S GetLibs
- WBenchStartup lea pr_MsgPort(A2),A0
- CallLib WaitPort ; wait for a message
- lea pr_MsgPort(A2),A0
- CallLib GetMsg ; then get it
- move.l D0,WBenchMsg(DB) ; save it for later reply
- GetLibs lea DosName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,DosBase(DB)
- beq Error
- lea GfxName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,GraphBase(DB)
- beq.S Error
- lea IntName(PC),A1
- CallLib OldOpenLibrary
- move.l D0,IntBase(DB)
- beq.S Error
- Prepare Intuition_Call
- lea NewS(PC),A0
- IFD POPSCREEN
- move.l GraphBase(DB),A1
- move.w gb_NormalDisplayRows(A1),ns_TopEdge(A0)
- ori.w #SCREENBEHIND,ns_Type(A0)
- ENDC
- CallLib OpenScreen
- move.l D0,DScreen(DB)
- beq.S Error
- moveq #sc_ViewPort,D1
- add.l D0,D1
- move.l D1,ScrVp(DB)
- moveq #sc_RastPort,D1
- add.l D0,D1
- move.l D1,Rp(DB)
-
- IFD CUSTOMCOLORS
- Prepare Gfx_Call
- move.l ScrVp(DB),A0
- lea ColorTable(PC),A1
- moveq #2,D0
- CallLib LoadRGB4
- ENDC
- Prepare Intuition_Call
- lea NewW(PC),A0
- move.l DScreen(DB),nw_Screen(A0)
- CallLib OpenWindow
- move.l D0,DWindow(DB)
- movea.l D0,A0
- beq.S Error
- move.l wd_UserPort(A0),Up(DB)
- Call SetAPen1
- bra.S Main
-
- Exit
- Error
- FreeWindow Prepare Intuition_Call
- move.l DWindow(DB),D0
- beq.S FreeScreen
- IFD POPSCREEN
- Call PushScreen
- ENDC
- move.l DWindow(DB),A0
- CallLib CloseWindow
- FreeScreen move.l DScreen(DB),D0
- beq.S FreeIntuition
- movea.l D0,A0
- CallLib CloseScreen
- FreeIntuition Prepare Exec_Call
- move.l IntBase(DB),D0
- beq.S FreeGraphics
- movea.l D0,A1
- CallLib CloseLibrary
- FreeGraphics move.l GraphBase(DB),D0
- beq.S FreeDos
- movea.l D0,A1
- CallLib CloseLibrary
- FreeDos move.l DosBase(DB),D0
- beq.S ReplyWB
- movea.l D0,A1
- CallLib CloseLibrary
- ReplyWB move.l WBenchMsg(DB),D2
- beq.S AllDone
- CallLib Forbid
- movea.l D2,A1
- CallLib ReplyMsg ; Reply WBenchMessage if we are started from WB
- AllDone rFree
- moveq #0,D0
- rts
-
- Main Prepare Intuition_Call
-
- move.w #FFx1+74,D0
- moveq #FFy1+13,D1
- move.l Rp(DB),A0
- lea UArrowImage(PC),A1
- CallLib DrawImage
-
- moveq #FFx1,D0
- moveq #FFy1,D1
- move.l Rp(DB),A0
- lea WFuncBorder(PC),A1
- CallLib DrawBorder
- move.w #FFx2,D0
- moveq #FFy2,D1
- move.l Rp(DB),A0
- lea SFuncBorder(PC),A1
- CallLib DrawBorder
- move.w #FFx3,D0
- moveq #FFy3,D1
- move.l Rp(DB),A0
- lea MFuncBorder(PC),A1
- CallLib DrawBorder
-
- moveq #0,D0
- moveq #KY-5,D1
- move.l Rp(DB),A0
- lea KeybBorder(PC),A1
- CallLib DrawBorder
- moveq #TITLE,D0
- Call WriteMsg
- Call WriteTexts
- Call DrawKeys
- Call SetAPen0
- lea ReturnKey2(PC),A2
- move.w Box_x(A2),D2
- add.w Box_Width(A2),D2
- move.w Box_y(A2),D3
- move.w D2,D0
- move.w D3,D1
- move.l Rp(DB),A1
- CallLib Move
- move.w D2,D0
- move.w D3,D1
- subq.w #1,D1
- add.w Box_Height(A2),D1
- move.l Rp(DB),A1
- CallLib Draw
- subq.w #1,D2
- move.w D2,D0
- move.w D3,D1
- addq.w #1,D1
- move.l Rp(DB),A1
- CallLib Move
- move.w D2,D0
- move.w D3,D1
- add.w Box_Height(A2),D1
- subq.w #1,D1
- move.l Rp(DB),A1
- CallLib Draw
- Call SetAPen1
-
- Call DoImport
- cmp.w #IMPORTOK,D0 ; Did we find handler ?
- beq.S 1$
-
- Call ClearFunctions ; No we didn't !
- Call ClearKeyboard
- Call SetStrings
- lea Funcs(PC),A0
- bset #SELECTEDBOX,Box_Flags(A0)
- move.l A0,CurFunc(DB)
- Call FillKeyboard
- Call FillFunctions
- 1$
- IFD POPSCREEN
- Call PopScreen ; Bring screen up
- ENDC
- EventLoop tst.w Quit(DB)
- bne Exit
- movea.l Up(DB),A0
- Prepare Exec_Call
- CallLib WaitPort
- GetNextMsg Call GetAMessage
- beq.S EventLoop
- move.l Class(DB),D0
- cmpi.w #GADGETUP,D0
- beq.S DoGadget
- cmpi.w #GADGETDOWN,D0
- beq.S DoGadget
- cmpi.w #MOUSEBUTTONS,D0
- beq DoMouse
- bra.S GetNextMsg
-
- IFD POPSCREEN
- MOVESTEP =10
- PopScreen Prepare Intuition_Call
- move.l DScreen(DB),A0
- CallLib ScreenToFront
- moveq #-MOVESTEP,D2
- move.l DScreen(DB),A0
- move.w sc_TopEdge(A0),D1
- Call PScreen
- rts
-
- PushScreen moveq #MOVESTEP,D2
- move.l GraphBase(DB),A0
- move.w gb_NormalDisplayRows(A0),D1
- move.l DScreen(DB),A0
- sub.w sc_TopEdge(A0),D1
- Prepare Intuition_Call
- Call PScreen
- move.l DScreen(DB),A0
- CallLib ScreenToBack
- rts
-
- * Call: D1 = y-coordinates to move screen
- * D2 = delta-y
- PScreen ext.l D1
- move.w D1,D3
- divu #MOVESTEP,D1
- swap D1
- sub.w D1,D3
- tst.w D2
- bpl.S 1$
- neg.w D1
- 1$ tst.w D1
- beq.S 4$
- bra.S 3$
- 2$ move.w D2,D1
- 3$ moveq #0,D0
- move.l DScreen(DB),A0
- CallLib MoveScreen
- 4$ sub.w #MOVESTEP,D3
- bge.S 2$
- rts
- ENDC
-
- * A gadget was selected
- DoGadget
- GJ movea.l IAddress(DB),A1
- move.w gg_GadgetID(A1),D0 ; GadgetID is offset from GJ
- jsr GJ(PC,D0.W)
- bra GetNextMsg
-
-
- * User clicked the 'Check' gadget
- DoCheck move.l CurFunc(DB),A0
- Call KeysToFunc
- Call SortKeys
- moveq #DUPLICATES,D7
- Call FindDuplicates
- bge.S 1$
- Call GetStrings
- move.l D0,D7
- bmi.S 1$
- moveq #NOERRORS,D7
- 1$ move.l D7,D0
- Call WriteMsg
- DoGadgets rts
-
- DoQuit not.w Quit(DB)
- rts
-
- * User clicked the 'Import' gadget
- * Returns error-code in D0 !!!
- DoImport Prepare Exec_Call
- CallLib Forbid
- lea PWkeysPortName(PC),A1
- CallLib FindPort
- move.l D0,D2
- CallLib Permit
- moveq #NOHANDLER,D7
- tst.l D2
- beq.S 1$
- move.l D0,A0 ; Handler was installed
- move.l ihs_Interrupt+IS_DATA(A0),A0
- lea TBuf(DB),A1
- move.w #pw_SIZE,D0 ; Copy keydefinition from the
- Call MemCopy ; handlers memory
- clr.l pw_MWaitTime(A1)
- clr.l pw_SWaitTime(A1)
- Call ClearFunctions
- Call ClearKeyboard
- Call UnsortKeys
- Call InitFuncs
- Call SetStrings
- lea Funcs(PC),A0
- bset #SELECTEDBOX,Box_Flags(A0)
- move.l A0,CurFunc(DB)
- Call FillKeyboard
- Call FillFunctions
- moveq #IMPORTOK,D7
- 1$ move.l D7,D0
- Call WriteMsg
- rts
-
- * User clicked the 'Export' gadget
- DoExport move.l CurFunc(DB),A0
- Call KeysToFunc
- Call SortKeys
- moveq #DUPLICATES,D7
- Call FindDuplicates
- bge.S 2$
- Call MakeMasks
- Call CountKeys
- Call GetStrings
- move.l D0,D7
- bmi.S 2$
- Prepare Exec_Call
- CallLib Forbid
- lea PWkeysPortName(PC),A1
- CallLib FindPort
- move.l D0,D2
- CallLib Permit
- moveq #NOHANDLER,D7
- tst.l D2
- beq.S 2$
- move.l D2,A2
- move.l A2,A0
- moveq #IND_REMHANDLER,D0
- moveq #CANTREMOVE,D7
- Call TellInputDevice
- bne.S 2$
- lea TBuf(DB),A0
- move.b pw_Pri(A0),ihs_Interrupt+LN_PRI(A2) ; HandlerBlock.HInterrupt.is_Node.ln_Pri = PRI;
- move.l ihs_Interrupt+IS_DATA(A2),A1
- move.w #pw_SIZE,D0 ; Copy keydefinition into the
- Call MemCopy ; PWkeys-handler memory
- move.l A2,A0
- moveq #IND_ADDHANDLER,D0
- moveq #EXPORTOK,D7
- Call TellInputDevice
- beq.S 2$
- Prepare Exec_Call
- move.l ihs_MemEntry(A2),A0
- CallLib FreeEntry
- moveq #CANTINSTALL,D7
- 2$ move.l D7,D0
- Call WriteMsg
- rts
-
- * User clicked the 'Undo' gadget
- DoUndo Call ClearKeyboard
- move.l CurFunc(DB),A0
- Call FillKeyboard
- rts
-
- * User clicked the 'Clear' gadget
- DoClear Call ClearKeyboard
- rts
-
- * User clicked the 'Save' gadget
- DoSave move.l CurFunc(DB),A0
- Call KeysToFunc
- Call SortKeys
- moveq #DUPLICATES,D7
- Call FindDuplicates
- bge.S 2$
- Call MakeMasks
- Call CountKeys
- Call GetStrings
- move.l D0,D7
- bmi.S 2$
- Prepare Dos_Call
- lea FBuffer(PC),A0
- move.l A0,D1
- move.l #MODE_NEWFILE,D2
- moveq #NOFILE,D7
- CallLib Open
- move.l D0,FHandle(DB)
- beq.S 1$
- move.l D0,D1
- lea TBuf(DB),A0
- move.l A0,D2
- move.l #pw_SIZE,D3
- moveq #WRITEERROR,D7
- CallLib Write
- cmp.l D0,D3
- bne.S 1$
- moveq #GOODWRITE,D7
- 1$ move.l FHandle(DB),D1
- beq.S 2$
- CallLib Close
- 2$ move.l D7,D0
- Call WriteMsg
- rts
-
- * User clicked the 'Load' gadget
- DoLoad Prepare Dos_Call
- lea FBuffer(PC),A0
- move.l A0,D1
- move.l #MODE_OLDFILE,D2
- moveq #NOFILE,D7
- CallLib Open
- move.l D0,FHandle(DB)
- beq.S 1$
- move.l D0,D1
- lea TBuf(DB),A0
- move.l A0,D2
- move.l #pw_SIZE,D3
- moveq #READERROR,D7
- CallLib Read
- cmp.l D0,D3
- bne.S 1$
- lea TBuf(DB),A0
- movem.l (A0),D0-D1
- movem.l PWkVersionID(PC),D2-D3
- cmp.l D0,D2
- bne.S 1$
- cmp.l D1,D3
- bne.S 1$
- Call ClearFunctions
- Call ClearKeyboard
- Call UnsortKeys
- Call InitFuncs
- Call SetStrings
- lea Funcs(PC),A0
- bset #SELECTEDBOX,Box_Flags(A0)
- move.l A0,CurFunc(DB)
- Call FillKeyboard
- Call FillFunctions
- moveq #GOODREAD,D7
- 1$ move.l FHandle(DB),D1
- beq.S 2$
- CallLib Close
- 2$ move.l D7,D0
- Call WriteMsg
- rts
-
- * The user pressed/released a mousebutton
- DoMouse cmpi.w #SELECTDOWN,Code(DB)
- bne DoM
- move.w Qual(DB),D0
- andi.w #SHIFT,D0
- beq.S DoLB
- * Perhaps the user clicked on a qualifier-key with RMB
- DoRB cmp.w #KY-SWDIFF,MouseY(DB)
- blt DoSelFunc
- Call WhichKey
- bmi DoM
- tst.w KeyBox_Qual(A0) ; Is it a qual-key ?
- beq DoM
- btst #SELECTEDBOX,Box_Flags(A0)
- beq.S 1$
- btst #GHOSTEDBOX,Box_Flags(A0)
- bne.S 1$
- Call RawInvert ; Key was raw
- move.l #-1,CurCode(DB)
- 1$ Call QualInvert
- bra DoM
- * Perhaps the user clicked on a key with LMB
- DoLB cmp.w #KY-SWDIFF,MouseY(DB)
- blt.S DoSelFunc
- Call WhichKey
- bmi DoM
- move.l CurCode(DB),D0
- move.l A0,CurCode(DB)
- tst.l D0
- bmi.S 5$
- lea ReturnKey1(PC),A1 ; Treat the two
- lea ReturnKey2(PC),A2 ; parts of the
- cmp.l A1,A0 ; RETURN-key as
- beq.S 1$ ; if they were
- cmp.l A2,A0 ; one
- bne.S 3$
- 1$ cmp.l A1,D0
- beq.S 2$
- cmp.l A2,D0
- bne.S 3$
- 2$ move.l A0,D0
-
- 3$ cmp.l A0,D0
- beq.S 4$
- move.l D0,A0 ; Changed key
- Call RawInvert
- move.l CurCode(DB),A0
- bra.S 5$
- 4$ move.l #-1,CurCode(DB) ; Unselected a key
- 5$ btst #SELECTEDBOX,Box_Flags(A0)
- beq.S 6$
- btst #GHOSTEDBOX,Box_Flags(A0)
- beq.S 6$
- Call QualInvert ; Key was qual
- 6$ Call RawInvert
- bra.S DoM
- * Perhaps the user clicked on a function
- DoSelFunc Call WhichFunc
- bmi.S DoM
- move.l CurFunc(DB),A1
- cmp.l A0,A1 ; If the function is already selected
- beq.S 1$ ; then this is click is a 'UNDO' click
- move.l A0,CurFunc(DB)
- move.l A1,A0
- Call KeysToFunc ; Save the selected keys
- btst #GHOSTEDBOX,Box_Flags(A0)
- beq.S 3$
- Call RawInvert
- Call QualInvert
- bset #GHOSTEDBOX,Box_Flags(A0)
- bra.S 4$
- 3$ Call RawInvert ; Unselect function
- 4$ move.l CurFunc(DB),A0
- btst #GHOSTEDBOX,Box_Flags(A0)
- beq.S 2$
- Call QualInvert
- 2$ Call RawInvert ; Select function
- 1$ Call ClearKeyboard
- move.l CurFunc(DB),A0
- Call FillKeyboard
- DoM bra GetNextMsg
-
- * THE INVERT FUNCTONS ONLY PRESERVES A0
- * Complements a key with a pattern
- * Call: A0 = box
- QualInvert Push A0
- bchg #GHOSTEDBOX,Box_Flags(A0)
- movea.l Rp(DB),A1
- move.l #Mask,rp_AreaPtrn(A1)
- move.b #2,rp_AreaPtSz(A1)
- bra.S RI2
- * Complements a key
- * Call: A0 = box
- RawInvert cmp.l #ReturnKey1,A0
- beq.S 1$
- cmp.l #ReturnKey2,A0
- bne.S RI
- 1$ Push A0
- lea ReturnKey1(PC),A0
- Call RI
- lea ReturnKey2(PC),A0
- Call RI
- Pop A0
- rts
- RI Push A0
- RI2 bchg #SELECTEDBOX,Box_Flags(A0)
- move.l A0,A2
- Prepare Gfx_Call
- Call SetDrMd2
- move.w Box_x(A2),D0
- move.w Box_y(A2),D1
- move.w D0,D2
- move.w D1,D3
- addq.w #1,D0
- addq.w #1,D1
- add.w Box_Width(A2),D2
- add.w Box_Height(A2),D3
- subq.w #1,D2
- subq.w #1,D3
- movea.l Rp(DB),A1
- CallLib RectFill
- Call SetDrMd1
- movea.l Rp(DB),A1
- clr.l rp_AreaPtrn(A1)
- clr.b rp_AreaPtSz(A1)
- Pop A0
- rts
-
- * Finds the selected function box (if any)
- * Return: If D0=-1 then couldn't find anything, else A0=FuncBox
- WhichFunc lea Funcs(PC),A0
- bra.S WFK
- * Finds the selected key (if any)
- * Return: If D0=-1 then couldn't find anything, else A0=KeyBox
- WhichKey lea Keys(PC),A0
- WFK move.w MouseX(DB),D6
- move.w MouseY(DB),D7
- add.w #SWDIFF,D7
- 1$ move.w Box_y(A0),D1
- bmi.S 3$
- cmp.w D1,D7
- blt.S 2$
- add.w Box_Height(A0),D1
- cmp.w D1,D7
- bgt.S 2$
- move.w Box_x(A0),D0
- cmp.w D0,D6
- blt.S 2$
- add.w Box_Width(A0),D0
- cmp.w D0,D6
- bgt.S 2$
- moveq #0,D0
- bra.S 4$
- 2$ add.l #FKeyBox_SIZE,A0
- bra.S 1$
- 3$ moveq #-1,D0
- 4$ rts
-
- * Draw all the keys
- DrawKeys lea Keys(PC),A2
- DL Prepare Gfx_Call
- 1$ move.w Box_x(A2),D0
- bmi 3$
- move.w Box_y(A2),D1
- move.l Rp(DB),A1
- CallLib Move
- move.w Box_x(A2),D0
- move.w Box_y(A2),D1
- add.w Box_Width(A2),D0
- move.l Rp(DB),A1
- CallLib Draw
- move.w Box_x(A2),D0
- move.w Box_y(A2),D1
- add.w Box_Width(A2),D0
- add.w Box_Height(A2),D1
- move.l Rp(DB),A1
- CallLib Draw
- move.w Box_x(A2),D0
- move.w Box_y(A2),D1
- add.w Box_Height(A2),D1
- move.l Rp(DB),A1
- CallLib Draw
- move.w Box_x(A2),D0
- move.w Box_y(A2),D1
- move.l Rp(DB),A1
- CallLib Draw
- lea StrBuf(PC),A0
- move.b KeyBox_Char(A2),(A0)
- beq.S 2$
- move.w Box_x(A2),D0
- addq.w #7,D0
- move.w Box_y(A2),D1
- addq.w #8,D1
- move.l Rp(DB),A1
- CallLib Move
- lea StrBuf(PC),A0
- moveq #1,D0
- move.l Rp(DB),A1
- CallLib Text
- 2$ add.l #FKeyBox_SIZE,A2
- bra 1$
- 3$ rts
-
- * Call: A0 = FuncBox
- FillFunctions Call KeysToFunc
- Push A2
- lea Funcs(PC),A2
- bclr #GHOSTEDBOX,Box_Flags(A2) ;Just loaded new file, first item needs to be selected
- Pop A2
- * hilites/unhilites all functions with the 'SELECTEDBOX/GHOSTEDBOX' flag set
- RefreshFunc Push D0-D3/A0-A2/A6
- lea Funcs(PC),A2
- bra.S RFK
- * Call: A0 = FuncBox
- FillKeyboard Call FuncToKeys
- * hilites/unhilites all keys with the 'SELECTEDBOX'/'GHOSTEDBOX' flag set
- RefreshKeys Push D0-D3/A0-A2/A6
- lea Keys(PC),A2
- RFK
- 1$ move.w Box_x(A2),D0
- bmi.S 5$
- btst #SELECTEDBOX,Box_Flags(A2)
- beq.S 4$
- move.l A2,A0
- btst #GHOSTEDBOX,Box_Flags(A2)
- beq.S 2$
- Call QualInvert
- bset #GHOSTEDBOX,Box_Flags(A2)
- bra.S 3$
- 2$ Call RawInvert
- 3$ bset #SELECTEDBOX,Box_Flags(A2)
- 4$ add.l #FKeyBox_SIZE,A2
- bra.S 1$
- 5$ Pop D0-D3/A0-A2/A6
- rts
-
- * Clears all hilite-flags in the 'Funcs' array
- ClearFunctions move.l CurFunc(DB),A0 ; This is because the selected
- bclr #GHOSTEDBOX,Box_Flags(A0); can be both selected and ghosted
- Call RefreshFunc
- Push A2
- lea Funcs(PC),A2
- bra.S CFK
- * Clears all hilite-flags in the 'Keys' array
- ClearKeyboard Call RefreshKeys
- move.l #-1,CurCode(DB)
- Push A2
- lea Keys(PC),A2
- CFK * Clears all hilite-flags in the 'Keys/Funcs' array
- 1$ tst.w Box_x(A2)
- bmi.S 2$
- bclr #SELECTEDBOX,Box_Flags(A2)
- bclr #GHOSTEDBOX,Box_Flags(A2)
- add.l #FKeyBox_SIZE,A2
- bra.S 1$
- 2$ Pop A2
- rts
-
- * Call: A0 = FuncBox
- * Collects all hilite-flags in the 'Keys' array
- KeysToFunc Push D0-D2/A0-A2
- move.l FuncBox_HotKey(A0),A1
- move.w #U_CODE,D1
- moveq #0,D2
- lea Keys(PC),A2
- 1$ move.w Box_x(A2),D0
- bmi.S 4$
- btst #SELECTEDBOX,Box_Flags(A2)
- beq.S 3$
- btst #GHOSTEDBOX,Box_Flags(A2)
- bne.S 2$
- move.w KeyBox_Code(A2),D1
- bra.S 3$
- 2$ or.w KeyBox_Qual(A2),D2
- 3$ add.l #FKeyBox_SIZE,A2
- bra.S 1$
- 4$ cmp.w #U_CODE,D1
- bne.S 5$
- bset #GHOSTEDBOX,Box_Flags(A0) ; If no code then function has to be ghosted
- moveq #U_QUAL,D2 ; If no code then no qualifier
- 5$ move.w D1,HotKey_Code(A1)
- move.w D2,HotKey_Qual(A1)
- Pop D0-D2/A0-A2
- rts
-
- * Call: A0 = FuncBox
- * Set all hilite-flags in the 'Keys' array
- FuncToKeys Push D0/A0/A2
- move.l FuncBox_HotKey(A0),A0
- lea Keys(PC),A2
- 1$ move.w Box_x(A2),D0
- bmi.S 4$
- move.w KeyBox_Code(A2),D0
- cmp.w HotKey_Code(A0),D0
- bne.S 2$
- move.l A2,CurCode(DB)
- bset #SELECTEDBOX,Box_Flags(A2)
- bra.S 3$
- 2$ move.w KeyBox_Qual(A2),D0
- and.w HotKey_Qual(A0),D0
- beq.S 3$
- bset #SELECTEDBOX,Box_Flags(A2)
- bset #GHOSTEDBOX,Box_Flags(A2)
- 3$ add.l #FKeyBox_SIZE,A2
- bra.S 1$
- 4$ Pop D0/A0/A2
- rts
-
- * Makes some masks
- MakeMasks Push D0-D4/A0-A2
- lea TBuf+pw_KeyDefs(DB),A2
- moveq #0,D0
- moveq #-2,D2 ; Code
- ml cmp.w #KeyFuncNumber,D0
- bge.S 5$
- moveq #0,D1 ; Number
- moveq #0,D3 ; Qual
- 1$ move.l D0,D4 ; 'OR' qualifiers for all hotkeys with this code
- add.w D1,D4
- cmp.w #KeyFuncNumber,D4
- bge.S 2$
- mulu #HotKey_SIZE,D4
- lea 0(A2,D4),A0
- cmp.w HotKey_Code(A0),D2
- bne.S 2$
- addq.l #1,D1
- or.w HotKey_Qual(A0),D3
- bra.S 1$
- 2$ tst.w D3
- bne.S 4$
- move.w #KEYMASK,D3
- bra.S 4$
- 3$ move.l D0,D4 ;Store the 'OR'ed qualifiers in all hotkeys with this code
- mulu #HotKey_SIZE,D4
- lea 0(A2,D4),A1
- move.w D3,HotKey_QMask(A1)
- addq.l #1,D0
- 4$ dbf D1,3$
- move.w HotKey_Code(A0),D2
- bra.S ml
- 5$ Pop D0-D4/A0-A2
- rts
-
- InitFuncs Push D0/A0-A2
- lea Funcs(PC),A2
- 1$ move.w Box_x(A2),D0
- bmi.S 2$
- move.l FuncBox_HotKey(A2),A0
- bclr #SELECTEDBOX,Box_Flags(A2)
- bclr #GHOSTEDBOX,Box_Flags(A2)
- cmp.w #U_CODE,HotKey_Code(A0)
- bne.S 3$
- bset #SELECTEDBOX,Box_Flags(A2)
- bset #GHOSTEDBOX,Box_Flags(A2)
- 3$ add.l #FKeyBox_SIZE,A2
- bra.S 1$
- 2$ Pop D0/A0-A2
- rts
-
- * Finds first pair of duplicates (HotKeys must be sorted)
- * Return: D0 != -1 means D0 and D1 are the same (and not undefined)
- FindDuplicates Push A2
- lea TBuf+pw_KeyDefs+HotKey_SIZE(DB),A2
- moveq #KeyFuncNumber,D0
- bra.S 3$
- 1$ move.l -HotKey_SIZE+HotKey_ID(A2),D1
- cmp.l HotKey_ID(A2),D1
- bne.S 2$
- cmp.l #(U_CODE<<16)|U_QUAL,D1
- bne.S 4$
- 2$ addq.l #HotKey_SIZE,A2
- 3$ dbf D0,1$
- moveq #-1,D0
- bra.S 5$
- 4$ moveq #0,D0
- moveq #0,D1
- move.b HotKey_Func(A2),D0
- move.b -HotKey_SIZE+HotKey_Func(A2),D1
- 5$ Pop A2
- tst.l D0
- rts
-
- * Counts the number of defined hotkeys (HotKeys must be sorted)
- * Return: D0 = count
- CountKeys Push D0-D2/A2
- lea TBuf+pw_KeyDefs(DB),A2
- moveq #0,D0
- moveq #KeyFuncNumber,D1
- bra.S 2$
- 1$ move.w HotKey_Code(A2),D2
- cmp.w #U_CODE,D2
- beq.S 3$
- addq.l #1,D0
- addq.l #HotKey_SIZE,A2
- 2$ dbf D1,1$
- 3$ move.w D0,TBuf+pw_KeyNum(DB)
- Pop D0-D2/A2
- rts
-
- SetStrings Push D0-D2/A0-A2/A6
- moveq #0,D0
- move.b PWkPri(PC),D0
- lea PBuffer(PC),A0
- Call BinToStr
- moveq #0,D0
- move.b PWkMouseAccel(PC),D0
- lea SBuffer(PC),A0
- Call BinToStr
- moveq #0,D0
- move.b PWkMouseThresh(PC),D0
- lea TBuffer(PC),A0
- Call BinToStr
- moveq #0,D0
- move.l PWkMTimeout(PC),D0
- lea MouseBuffer(PC),A0
- Call BinToStr
- moveq #0,D0
- move.l PWkSTimeout(PC),D0
- lea ScreenBuffer(PC),A0
- Call BinToStr
- moveq #5,D0
- lea Gad10(PC),A0
- movea.l DWindow(DB),A1
- suba.l A2,A2
- Prepare Intuition_Call
- CallLib RefreshGList
- Pop D0-D2/A0-A2/A6
- rts
-
- GetStrings Push D1-D2/A0-A2/A6
- moveq #WRONGPRI,D2
- lea PBuffer(PC),A0
- Call StrToBin
- cmp.w #127,D0
- bgt.S 1$
- move.b D0,TBuf+pw_Pri(DB)
- lea SBuffer(PC),A0
- Call StrToBin
- move.b D0,TBuf+pw_Accel(DB)
- lea TBuffer(PC),A0
- Call StrToBin
- move.b D0,TBuf+pw_Thresh(DB)
- lea MouseBuffer(PC),A0
- Call StrToBin
- move.l D0,TBuf+pw_MTimeout(DB)
- lea ScreenBuffer(PC),A0
- Call StrToBin
- move.l D0,TBuf+pw_STimeout(DB)
- moveq #0,D2
- 1$ move.l D2,D0
- Pop D1-D2/A0-A2/A6
- tst.w D0
- rts
-
- BinToStr Push D0-D5/A0
- tst.l D0
- beq.S 7$
- moveq #4*4,D1
- moveq #'0',D2
- moveq #0,D4
- 1$ move.w D2,D3
- move.l 9$(PC,D1.l),D5
- 2$ cmp.l D5,D0
- blt.S 3$
- addq.w #1,D3
- sub.l D5,D0
- bra.S 2$
- 3$ cmp.b D2,D3
- bne.S 4$
- tst.w D4
- beq.S 6$
- 4$ moveq #1,D4
- 5$ move.b D3,(A0)+
- 6$ subq.w #4,D1
- bge.S 1$
- bra.S 8$
- 7$ move.b #'0',(A0)+
- 8$ clr.b (A0)+
- Pop D0-D5/A0
- rts
- 9$ dc.l 1,10,100,1000,10000
-
-
- StrToBin Push D1/A0
- moveq #0,D0
- 1$ move.b (A0)+,D1
- beq.S 2$
- sub.w #'0',D1
- mulu #10,D0
- add.w D1,D0
- bra.S 1$
- 2$ Pop D1/A0
- rts
-
- * Sorts HotKeys on 'Code|Qual'
- SortKeys Push D0-D7/A0-A6
- lea TBuf(DB),A1
- lea PWkVersionID(PC),A0
- move.w #pw_SIZE,D0
- Call MemCopy
- moveq #0,D6
- lea TBuf+pw_KeyDefs(DB),A2
- OuterLoop moveq #KeyFuncNumber,D5
- bra.S ContSort
- InnerLoop moveq #KeyFuncNumber,D0
- sub.w D5,D0
- mulu #HotKey_SIZE,D0
- lea -HotKey_SIZE(A2,D0.L),A0
- lea HotKey_SIZE(A0),A1
- move.l HotKey_ID(A0),D0
- move.l HotKey_ID(A1),D1
- cmp.l D0,D1
- bge.S ContSort
- move.l D1,HotKey_ID(A0)
- move.l D0,HotKey_ID(A1)
- move.l HotKey_Mask(A0),D0
- move.l HotKey_Mask(A1),HotKey_Mask(A0)
- move.l D0,HotKey_Mask(A1)
- ContSort subq.w #1,D5
- cmp.w D5,D6
- blt.S InnerLoop
- addq.w #1,D6
- cmp.w #KeyFuncNumber-1,D6
- blt.S OuterLoop
- Pop D0-D7/A0-A6
- rts
-
- * Unsorts HotKeys on to 'Func'
- UnsortKeys Push D0-D7/A0-A6
- lea TBuf(DB),A0
- lea PWkVersionID(PC),A1
- move.w #pw_SIZE,D0
- Call MemCopy
- lea TBuf+pw_KeyDefs(DB),A2
- moveq #KeyFuncNumber,D0
- bra.S 2$
- 1$ moveq #0,D1
- move.b HotKey_Func(A2),D1
- mulu #HotKey_SIZE,D1
- lea KeyDefines(PC),A1
- add.l D1,A1
- move.l HotKey_ID(A2),HotKey_ID(A1)
- move.l HotKey_Mask(A2),HotKey_Mask(A1)
- addq.l #HotKey_SIZE,A2
- 2$ dbf D0,1$
- Pop D0-D7/A0-A6
- rts
-
- rtsValue EQUR D7
- * Open the input device. Set up the I/O block to add or remove the
- * input handler, and send the request to the input device. Finally,
- * close the device
- * Call: A0 = ihs
- * D0 = Function to perform (IND_ADDHANDLER/IND_REMHANDLER)
- * Return: D0 = 0 means succes
- TellInputDevice Push D1-D2/rtsValue/A0-A3/A6
- Prepare Exec_Call
- moveq #-1,rtsValue
- move.l D0,D2
- move.l A0,A2
- lea IReq(DB),A0
- moveq #IOSTD_SIZE,D0
- Call MemClear
- lea IPort(DB),A0
- moveq #MP_SIZE,D0
- Call MemClear
- move.l A0,A3
- move.b #NT_MSGPORT,MP+LN_TYPE(A3) ; mp_Node.ln_Type=NT_MSGPORT;
- move.b #PA_SIGNAL,MP_FLAGS(A3) ; mp_Flags =PA_SIGNAL;
- moveq #-1,D0
- CallLib AllocSignal
- move.b D0,MP_SIGBIT(A3) ; mp_SigBit =MPSigBit;
- bmi.S 2$
- suba.l A1,A1
- CallLib FindTask
- move.l D0,MP_SIGTASK(A3) ; mp_SigTask =FindTask(0);
- lea MP_MSGLIST(A3),A0
- NEWLIST A0
- lea IReq(DB),A1
- move.l A3,IO+MN_REPLYPORT(A1) ; ExtReq->io_Message.mn_ReplyPort =taskReplyPort;
- move.b #NT_MESSAGE,IO+MN+LN_TYPE(A1) ; ExtReq->io_Message.mn_Node.ln_Type=NT_MESSAGE;
- lea InputName(PC),A0 ; input.device
- moveq #0,D0 ; unit#
- moveq #0,D1 ; flags
- CallLib OpenDevice
- tst.w D0 ; flag: error if > 0
- bne.S 1$
- lea IReq(DB),A1
- move.w D2,IO_COMMAND(A1)
- lea ihs_Interrupt(A2),A0
- move.l A0,IO_DATA(A1)
- CallLib DoIO
- move.l D0,rtsValue
- lea IReq(DB),A1
- CallLib CloseDevice
- 1$ move.b MP_SIGBIT(A3),D0
- CallLib FreeSignal
- 2$ move.l rtsValue,D0
- Pop D1-D2/rtsValue/A0-A3/A6
- rts
-
- * Writes the text in the function boxes
- WriteTexts Push D0-D1
- moveq #FUNCTEXTS+GADTEXTS,D1
- bra.S 2$
- 1$ move.w D1,D0
- Call WriteTxt
- 2$ dbf D1,1$
- Pop D0-D1
- rts
-
- * Call: D0 = Msg-number
- WriteMsg Push D0-D4/A0-A2/A6
- neg.w D0
- add.w #FUNCTEXTS+GADTEXTS,D0
- lea TextTab(PC),A1
- move.l A1,A2
- mulu #TE_SIZE,D0
- add.l D0,A2
- add.w TE_Offset(A2),A1
- move.l A1,A2
- move.l DWindow(DB),A0
- Prepare Intuition_Call
- CallLib SetWindowTitles
- Pop D0-D4/A0-A2/A6
- rts
-
- * Call: D0 = Msg-number
- WriteTxt Push D0-D1/A0-A3/A6
- Prepare Gfx_Call
- lea TextTab(PC),A2
- move.l A2,A3
- mulu #TE_SIZE,D0
- add.l D0,A2
- move.w TE_x(A2),D0
- move.w TE_y(A2),D1
- movea.l Rp(DB),A1
- CallLib Move
- move.w TE_Offset(A2),A0
- add.l A3,A0
- Call StrLen
- movea.l Rp(DB),A1
- CallLib Text
- Pop D0-D1/A0-A3/A6
- rts
-
- * Sets the drawing pen.
- * Destroys D0-D1/A0-A1/A6
- SetAPen0 moveq #0,D0
- bra.S SetPenA
- SetAPen1 moveq #1,D0
- SetPenA movea.l Rp(DB),A1 ; D0=Color
- Prepare Gfx_Call
- CallLib SetAPen
- rts
-
- SetDrMd1 moveq #1,D0
- bra.S SetMdDr
- SetDrMd2 moveq #2,D0
- SetMdDr movea.l Rp(DB),A1 ; D0=Drawmode
- Prepare Gfx_Call
- CallLib SetDrMd
- rts
-
-
- * Call: A0 = Memory area
- * D0:16 = Count
- MemClear Push D0-D1/A0
- moveq #0,D1
- bra.S 2$
- 1$ move.b D1,(A0)+
- 2$ dbf D0,1$
- Pop D0-D1/A0
- rts
-
- * Call: A0 = Source
- * A1 = Destination
- * D0:16= Count
- MemCopy Push D0/A0-A1
- bra.S 2$
- 1$ move.b (A0)+,(A1)+
- 2$ dbf D0,1$
- Pop D0/A0-A1
- rts
-
- * Call: A0 = String
- * Return: D0 = length
- StrLen Push A0
- moveq #-1,D0
- 1$ addq.l #1,D0
- tst.b (A0)+
- bne.S 1$
- Pop A0
- rts
-
- * Return: D0 != means that we got a message
- GetAMessage Push D0-D1/A0-A1/A6
- movea.l Up(DB),A0
- Prepare Exec_Call
- CallLib GetMsg
- tst.l D0
- beq.S NoMessage
- GotAMessage movea.l D0,A1
- move.l im_Class(A1),Class(DB)
- move.w im_Code(A1),Code(DB)
- move.w im_Qualifier(A1),Qual(DB)
- move.l im_IAddress(A1),IAddress(DB)
- move.w im_MouseX(A1),MouseX(DB)
- move.w im_MouseY(A1),MouseY(DB)
- CallLib ReplyMsg
- moveq #1,D0
- NoMessage Pop D0-D1/A0-A1/A6
- rts
-
- *====================== Data-definition start =======================
- rStart
- rWord Quit
- rAPtr PProcess
- rAPtr DosBase
- rAPtr GraphBase
- rAPtr IntBase
- rLong WBenchMsg
- rAPtr FHandle
- rAPtr DScreen
- rAPtr DWindow
- rAPtr ScrVp ; ViewPort
- rAPtr Rp ; RastPort
- rAPtr Up ; UserPort
- rLong Class ; IDCMP->Class
- rWord Code ; IDCMP->Code
- rWord Qual ; IDCMP->Qualifier
- rLong IAddress ; IDCMP->IAddress
- rWord MouseX ; IDCMP->MouseX
- rWord MouseY ; IDCMP->MouseY
- rAPtr CurFunc ; Ptr to FuncBox
- rAPtr CurCode ; Ptr to KeyBox
- rStorage IReq,IOSTD_SIZE
- rStorage IPort,MP_SIZE
- rStorage TBuf,pw_SIZE
- rEnd
-
- StrBuf dc.b ' '
- DosName dc.b 'dos.library',0
- GfxName dc.b 'graphics.library',0
- IntName dc.b 'intuition.library',0
- InputName dc.b 'input.device',0
- PWkeysPortName PWkeys_PortName
- EVEN
-
- ScrW =640
- ScrH =197
- NewS dc.w 0,0,ScrW,ScrH,PLANES
- dc.b 0,1
- dc.w V_HIRES,CUSTOMSCREEN
- dc.l TxtAttr,0,0,0
- IDCMP_Flags =GADGETUP|MOUSEBUTTONS
- Other_Flags =NOCAREREFRESH|ACTIVATE|BORDERLESS
- NewW dc.w 0,SWDIFF,ScrW,ScrH-SWDIFF
- dc.b 0,1
- dc.l IDCMP_Flags,Other_Flags,GadgetList,0,0,0,0
- dc.w 0,0,0,0,CUSTOMSCREEN
- IFD CUSTOMCOLORS
- ColorTable dc.w $0AAA,$0000
- ENDC
-
- GadgetList
- Gad1 Gadget Gad2,524,4,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoCheck-GJ,0
- Gad2 Gadget Gad3,586,4,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoQuit-GJ,0
- Gad3 Gadget Gad4,524,20,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoUndo-GJ,0
- Gad4 Gadget Gad5,586,20,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoClear-GJ,0
- Gad5 Gadget Gad6,524,36,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoImport-GJ,0
- Gad6 Gadget Gad7,586,36,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoExport-GJ,0
- Gad7 Gadget Gad8,524,52,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoSave-GJ,0
- Gad8 Gadget Gad9,586,52,BWIDTH,BHEIGHT,GADGHCOMP,RELVERIFY,BOOLGADGET
- Gadget2 BBorder,0,0,0,0,DoLoad-GJ,0
- Gad9 Gadget Gad10,437,105,FWIDTH,FHEIGHT,GADGHCOMP,RELVERIFY,STRGADGET
- Gadget2 FBorder,0,0,0,FileInfo,DoGadgets-GJ,0
- Gad10 Gadget Gad11,256,89,TIMEW,TIMEH,GADGHCOMP,RELVERIFY|LONGINT,STRGADGET
- Gadget2 TBorder,0,0,0,ScreenInfo,DoGadgets-GJ,0
- Gad11 Gadget Gad12,348,89,TIMEW,TIMEH,GADGHCOMP,RELVERIFY|LONGINT,STRGADGET
- Gadget2 TBorder,0,0,0,MouseInfo,DoGadgets-GJ,0
- Gad12 Gadget Gad13,440,89,PRIW,PRIH,GADGHCOMP,RELVERIFY|LONGINT,STRGADGET
- Gadget2 PBorder,0,0,0,PriInfo,DoGadgets-GJ,0
- Gad13 Gadget Gad14,526,89,SPEEDW,SPEEDH,GADGHCOMP,RELVERIFY|LONGINT,STRGADGET
- Gadget2 SBorder,0,0,0,SpeedInfo,DoGadgets-GJ,0
- Gad14 Gadget 0,597,89,SPEEDW,SPEEDH,GADGHCOMP,RELVERIFY|LONGINT,STRGADGET
- Gadget2 SBorder,0,0,0,ThresInfo,DoGadgets-GJ,0
-
- FileBufLen =80
- FileInfo dc.l FBuffer,0
- dc.w 0,FileBufLen,0,0,0,0,0,0
- dc.l 0,0,0
- FBuffer dc.b 'S:PWkeys.Config'
- dcb.b FileBufLen-14,0
- EVEN
- SpeedInfo dc.l SBuffer,0
- dc.w 0,2,0,0,0,0,0,0
- dc.l 0,0,0
- SBuffer dcb.b 3,0
- EVEN
- ThresInfo dc.l TBuffer,0
- dc.w 0,2,0,0,0,0,0,0
- dc.l 0,0,0
- TBuffer dcb.b 3,0
- EVEN
- PriInfo dc.l PBuffer,0
- dc.w 0,4,0,0,0,0,0,0
- dc.l 0,0,0
- PBuffer dcb.b 5,0
- EVEN
- ScreenInfo dc.l ScreenBuffer,0
- dc.w 0,5,0,0,0,0,0,0
- dc.l 0,0,0
- ScreenBuffer dcb.b 6,0
- EVEN
- MouseInfo dc.l MouseBuffer,0
- dc.w 0,5,0,0,0,0,0,0
- dc.l 0,0,0
- MouseBuffer dcb.b 6,0
- EVEN
-
- TxtAttr dc.l FontName
- dc.w TOPAZ_EIGHTY
- dc.b FS_NORMAL,FPB_ROMFONT
- FontName dc.b 'topaz.font',0
- EVEN
-
- UArrowImage Image 0,0*FySpace,16,8,1,UArrowData,%00000001,%00000000,DArrowImage
- DArrowImage Image 0,1*FySpace,16,8,1,DArrowData,%00000001,%00000000,LArrowImage
- LArrowImage Image 0,2*FySpace,16,7,1,LArrowData,%00000001,%00000000,RArrowImage
- RArrowImage Image 1,3*FySpace,16,7,1,RArrowData,%00000001,%00000000,LUArrowImage
- LUArrowImage Image 2,4*FySpace,16,7,1,LUArrowData,%00000001,%00000000,LDArrowImage
- LDArrowImage Image 2,5*FySpace,16,7,1,LDArrowData,%00000001,%00000000,RUArrowImage
- RUArrowImage Image 0,6*FySpace,16,7,1,RUArrowData,%00000001,%00000000,RDArrowImage
- RDArrowImage Image 0,7*FySpace,16,7,1,RDArrowData,%00000001,%00000000,0
-
- FWIDTH =204
- FHEIGHT =11
- FBorder Border -6,-3,1,0,1,17,1$,0
- 1$ dc.w 2,0,FWIDTH+1,0,FWIDTH+3,2,FWIDTH+3,FHEIGHT-1,FWIDTH+1,FHEIGHT+1,2,FHEIGHT+1,0,FHEIGHT-1,0,2,2,0
- dc.w 1,0,-1,2,-1,FHEIGHT-1,1,FHEIGHT+1,FWIDTH+2,FHEIGHT+1,FWIDTH+4,FHEIGHT-1,FWIDTH+4,2,FWIDTH+2,0
- SPEEDW =24
- SPEEDH =11
- SBorder Border -6,-3,1,0,1,17,1$,0
- 1$ dc.w 2,0,SPEEDW+1,0,SPEEDW+3,2,SPEEDW+3,SPEEDH-1,SPEEDW+1,SPEEDH+1,2,SPEEDH+1,0,SPEEDH-1,0,2,2,0
- dc.w 1,0,-1,2,-1,SPEEDH-1,1,SPEEDH+1,SPEEDW+2,SPEEDH+1,SPEEDW+4,SPEEDH-1,SPEEDW+4,2,SPEEDW+2,0
- PRIW =40
- PRIH =11
- PBorder Border -6,-3,1,0,1,17,1$,0
- 1$ dc.w 2,0,PRIW+1,0,PRIW+3,2,PRIW+3,PRIH-1,PRIW+1,PRIH+1,2,PRIH+1,0,PRIH-1,0,2,2,0
- dc.w 1,0,-1,2,-1,PRIH-1,1,PRIH+1,PRIW+2,PRIH+1,PRIW+4,PRIH-1,PRIW+4,2,PRIW+2,0
- TIMEW =48
- TIMEH =11
- TBorder Border -6,-3,1,0,1,17,1$,0
- 1$ dc.w 2,0,TIMEW+1,0,TIMEW+3,2,TIMEW+3,TIMEH-1,TIMEW+1,TIMEH+1,2,TIMEH+1,0,TIMEH-1,0,2,2,0
- dc.w 1,0,-1,2,-1,TIMEH-1,1,TIMEH+1,TIMEW+2,TIMEH+1,TIMEW+4,TIMEH-1,TIMEW+4,2,TIMEW+2,0
- WFuncBorder Border 1,0,1,0,1,24,1$,0
- 1$ dc.w 2,0,FFw1+1,0,FFw1+3,2,FFw1+3,FFh1-1,FFw1+1,FFh1+1,2,FFh1+1,0,FFh1-1,0,2,2,0
- dc.w 1,0,-1,2,-1,FFh1-1,1,FFh1+1,FFw1+2,FFh1+1,FFw1+4,FFh1-1,FFw1+4,2,FFw1+2,0
- dc.w FFw1+4,2,FFw1+4,10,0,10,95,10,95,FFh1,94,FFh1,94,10
- SFuncBorder Border 1,0,1,0,1,20,1$,0
- 1$ dc.w 2,0,FFw2+1,0,FFw2+3,2,FFw2+3,FFh2-1,FFw2+1,FFh2+1,2,FFh2+1,0,FFh2-1,0,2,2,0
- dc.w 1,0,-1,2,-1,FFh2-1,1,FFh2+1,FFw2+2,FFh2+1,FFw2+4,FFh2-1,FFw2+4,2,FFw2+2,0
- dc.w FFw2+4,2,FFw2+4,10,0,10
- MFuncBorder Border 1,0,1,0,1,20,1$,0
- 1$ dc.w 2,0,FFw3+1,0,FFw3+3,2,FFw3+3,FFh3-1,FFw3+1,FFh3+1,2,FFh3+1,0,FFh3-1,0,2,2,0
- dc.w 1,0,-1,2,-1,FFh3-1,1,FFh3+1,FFw3+2,FFh3+1,FFw3+4,FFh3-1,FFw3+4,2,FFw3+2,0
- dc.w FFw3+4,2,FFw3+4,10,0,10
- BWIDTH =50
- BHEIGHT =11
- BBorder Border -2,-1,1,0,1,17,1$,0
- 1$ dc.w 2,0,BWIDTH+1,0,BWIDTH+3,2,BWIDTH+3,BHEIGHT-1,BWIDTH+1,BHEIGHT+1,2,BHEIGHT+1,0,BHEIGHT-1,0,2,2,0
- dc.w 1,0,-1,2,-1,BHEIGHT-1,1,BHEIGHT+1,BWIDTH+2,BHEIGHT+1,BWIDTH+4,BHEIGHT-1,BWIDTH+4,2,BWIDTH+2,0
- KEYBW =ScrW-6
- KEYBH =83
- KeybBorder Border 1,0,1,0,1,17,1$,0
- 1$ dc.w 2,0,KEYBW+1,0,KEYBW+3,2,KEYBW+3,KEYBH-1,KEYBW+1,KEYBH+1,2,KEYBH+1,0,KEYBH-1,0,2,2,0
- dc.w 1,0,-1,2,-1,KEYBH-1,1,KEYBH+1,KEYBW+2,KEYBH+1,KEYBW+4,KEYBH-1,KEYBW+4,2,KEYBW+2,0
-
- TE_x =0
- TE_y =2
- TE_Offset =4
- TE_SIZE =6
- TEntry MACRO 'TextEntry'
- dc.w \1,\2,\3-TextTab
- ENDM
-
- FFx1 =0
- FFy1 =13
- FFw1 =208
- FFh1 =94
- FFx2 =224
- FFy2 =13
- FFw2 =116
- FFh2 =49
- FFx3 =356
- FFy3 =13
- FFw3 =146
- FFh3 =40
-
- FySpace =9
- FTx1 =FFx1+8
- FTx1b =FFx1+102
- FTy1 =FFy1+19
- FTx2 =FFx2+8
- FTy2 =FFy2+19
- FTx3 =FFx3+8
- FTy3 =FFy3+19
-
- TextTab TEntry FTx1,FTy1+0*FySpace,1$
- TEntry FTx1,FTy1+1*FySpace,2$
- TEntry FTx1,FTy1+2*FySpace,3$
- TEntry FTx1,FTy1+3*FySpace,4$
- TEntry FTx1,FTy1+4*FySpace,5$
- TEntry FTx1,FTy1+5*FySpace,6$
- TEntry FTx1,FTy1+6*FySpace,7$
- TEntry FTx1,FTy1+7*FySpace,8$
- TEntry FTx1,FTy1+8*FySpace,9$
- TEntry FTx1b,FTy1+0*FySpace,10$
- TEntry FTx1b,FTy1+1*FySpace,11$
- TEntry FTx1b,FTy1+2*FySpace,12$
- TEntry FTx1b,FTy1+3*FySpace,13$
- TEntry FTx1b,FTy1+4*FySpace,14$
- TEntry FTx1b,FTy1+5*FySpace,15$
- TEntry FTx1b,FTy1+6*FySpace,16$
- TEntry FTx1b,FTy1+7*FySpace,17$
- TEntry FTx1b,FTy1+8*FySpace,18$
- TEntry FTx2,FTy2+0*FySpace,19$
- TEntry FTx2,FTy2+1*FySpace,20$
- TEntry FTx2,FTy2+2*FySpace,21$
- TEntry FTx2,FTy2+3*FySpace,22$
- TEntry FTx3,FTy3+0*FySpace,23$
- TEntry FTx3,FTy3+1*FySpace,24$
- TEntry FTx3,FTy3+2*FySpace,25$
- TEntry FFx1+(FFw1-6*8)/2,FFy1+8,26$
- TEntry FFx2+(FFw2-6*8)/2,FFy2+8,27$
- TEntry FFx3+(FFw3-13*8)/2,FFy3+8,28$
-
- TEntry 529,22,29$
- TEntry 594,22,30$
- TEntry 532,38,31$
- TEntry 592,38,32$
- TEntry 525,54,33$
- TEntry 587,54,34$
- TEntry 532,70,35$
- TEntry 594,70,36$
- TEntry 234,93,37$
- TEntry 332,93,38$
- TEntry 424,93,39$
- TEntry 512,93,40$
- TEntry 568,93,41$
-
- TEntry 10,8,42$
- TEntry 10,8,43$
- TEntry 10,8,44$
- TEntry 10,8,45$
- TEntry 10,8,46$
- TEntry 10,8,47$
- TEntry 10,8,48$
- TEntry 10,8,49$
- TEntry 10,8,50$
- TEntry 10,8,51$
- TEntry 10,8,52$
- TEntry 10,8,53$
- TEntry 10,8,54$
- TEntry 10,8,55$
-
- * Function texts
- 1$
- 2$
- 3$
- 4$ dc.b 'Move',0
- 5$
- 6$
- 7$
- 8$ dc.b 'Place',0
- 9$ dc.b 'To center',0
- 10$ dc.b 'To front',0
- 11$ dc.b 'To back',0
- 12$ dc.b 'Back to front',0
- 13$ dc.b 'Front to back',0
- 14$ dc.b 'Activate prev',0
- 15$ dc.b 'Activate next',0
- 16$ dc.b 'Minimize',0
- 17$ dc.b 'Maximize',0
- 18$ dc.b 'Refresh',0
- 19$ dc.b 'Back to front',0
- 20$ dc.b 'Front to back',0
- 21$ dc.b 'Sub BitPlane',0
- 22$ dc.b 'Add BitPlane',0
- 23$ dc.b 'Toggle Input-Lock',0
- 24$ dc.b 'Toggle Fast-Mouse',0
- 25$ dc.b 'Toggle Sun-Mouse',0
- 26$ dc.b 'Window',0
- 27$ dc.b 'Screen',0
- 28$ dc.b 'Miscellaneous',0
-
- * Gadget texts
- 29$ dc.b 'Check',0
- 30$ dc.b 'Quit',0
- 31$ dc.b 'Undo',0
- 32$ dc.b 'Clear',0
- 33$ dc.b 'Import',0
- 34$ dc.b 'Export',0
- 35$ dc.b 'Save',0
- 36$ dc.b 'Load',0
- 37$ dc.b 'Screen off',0
- 38$ dc.b 'Mouse off',0
- 39$ dc.b 'Priority',0
- 40$ dc.b 'Speed',0
- 41$ dc.b 'Threshold',0
-
- * Message texts
- 42$ SetPWkeys_Title
- 43$ dc.b "Error: Can't find file !",0
- 44$ dc.b "Error: File is not a valid PWkeys-file !",0
- 45$ dc.b "Error: Can't write file !",0
- 46$ dc.b "Settings have now been loaded from file !",0
- 47$ dc.b "Settings have now been written to file !",0
- 48$ dc.b "Error: The PWkeys-handler is not installed !",0
- 49$ dc.b "Error: Can't remove handler. Haven't installed settings !",0
- 50$ dc.b "Error: Can't re-install handler. Handler has now been removed !!!",0
- 51$ dc.b "Settings have now been imported from PWkeys !",0
- 52$ dc.b "Settings have now been exported to PWkeys !",0
- 53$ dc.b "Error: Duplicate hotkey definitions !!",0
- 54$ dc.b "Error: Handler-priority has to be 0-127 (preferably 51-127) !!",0
- 55$ dc.b "The settings are acceptable !",0
- EVEN
-
- Box_x =0
- Box_y =2
- Box_Width =4
- Box_Height =6
- Box_Flags =8
- Box_SIZE =9
- Box MACRO
- dc.w \1,\2,\3,\4 ; x,y,width,height
- dc.b \5 ; Flags
- ENDM
-
- FuncBox_HotKey =10
- FuncBox_SIZE =14
- FuncBox MACRO 'Functionbox'
- Box \1,\2,\3,\4,\5 ; Box definition
- dc.b 0 ; Pad
- dc.l \6 ; Function
- ENDM
-
- KeyBox_Char =9
- KeyBox_Code =10
- KeyBox_Qual =12
- KeyBox_SIZE =14
- FKeyBox_SIZE =14
- KeyBox MACRO 'Keybox'
- Box \1,\2,\3,\4,\5 ; Box definition
- dc.b \6 ; Char
- dc.w \7,\8 ; Raw, Qual
- ENDM
-
- FBx1 =FFx1+4
- FBx1b =FFx1+98
- FBy1 =FFy1+11
- FBx2 =FFx2+4
- FBy2 =FFy2+11
- FBx3 =FFx3+4
- FBy3 =FFy3+11
-
- FBw1 =88
- FBw1b =112
- FBw2 =FFw2-4
- FBw3 =FFw3-4
- FBh =11
-
- Funcs FuncBox FBx1,FBy1+0*FySpace,FBw1,FBh,0,HK1
- FuncBox FBx1,FBy1+1*FySpace,FBw1,FBh,0,HK2
- FuncBox FBx1,FBy1+2*FySpace,FBw1,FBh,0,HK3
- FuncBox FBx1,FBy1+3*FySpace,FBw1,FBh,0,HK4
- FuncBox FBx1,FBy1+4*FySpace,FBw1,FBh,0,HK5
- FuncBox FBx1,FBy1+5*FySpace,FBw1,FBh,0,HK6
- FuncBox FBx1,FBy1+6*FySpace,FBw1,FBh,0,HK7
- FuncBox FBx1,FBy1+7*FySpace,FBw1,FBh,0,HK8
- FuncBox FBx1,FBy1+8*FySpace,FBw1,FBh,0,HK9
- FuncBox FBx1b,FBy1+0*FySpace,FBw1b,FBh,0,HK10
- FuncBox FBx1b,FBy1+1*FySpace,FBw1b,FBh,0,HK11
- FuncBox FBx1b,FBy1+2*FySpace,FBw1b,FBh,0,HK12
- FuncBox FBx1b,FBy1+3*FySpace,FBw1b,FBh,0,HK13
- FuncBox FBx1b,FBy1+4*FySpace,FBw1b,FBh,0,HK14
- FuncBox FBx1b,FBy1+5*FySpace,FBw1b,FBh,0,HK15
- FuncBox FBx1b,FBy1+6*FySpace,FBw1b,FBh,0,HK16
- FuncBox FBx1b,FBy1+7*FySpace,FBw1b,FBh,0,HK17
- FuncBox FBx1b,FBy1+8*FySpace,FBw1b,FBh,0,HK18
- FuncBox FBx2,FBy2+0*FySpace,FBw2,FBh,0,HK19
- FuncBox FBx2,FBy2+1*FySpace,FBw2,FBh,0,HK20
- FuncBox FBx2,FBy2+2*FySpace,FBw2,FBh,0,HK21
- FuncBox FBx2,FBy2+3*FySpace,FBw2,FBh,0,HK22
- FuncBox FBx3,FBy3+0*FySpace,FBw3,FBh,0,HK23
- FuncBox FBx3,FBy3+1*FySpace,FBw3,FBh,0,HK24
- FuncBox FBx3,FBy3+2*FySpace,FBw3,FBh,0,HK25
- FuncBox -1,-1,-1,-1,0,Funcs
-
- Absx =20
- KH =10
- FM =8
- FW =27
- FSPACE =6
- FD =FW+FSPACE
- NW =20
- NSPACE =6
- ND =NW+NSPACE
- KPx =Absx+498
- Arx =Absx+410
- KY =ScrH-80
- R1x =Absx+40
- R2x =Absx+40
- R3x =Absx+50
- R4x =Absx+56
- R5x =Absx+70
- R1y =KY+0*(KH+3)
- R2y =KY+1*(KH+3)
- R3y =KY+2*(KH+3)
- R4y =KY+3*(KH+3)
- R5y =KY+4*(KH+3)
- R6y =KY+5*(KH+3)
-
- Keys
- ReturnKey1
- KeyBox 382,R3y,NW+16,KH*2+3,0,0,RETURN,0
- ReturnKey2
- KeyBox 363,R3y+13,20,KH,0,0,RETURN,0
- KeyBox Absx,R1y,NW,KH,0,0,ESC,0
- KeyBox R1x+00*FD,R1y,FW,KH,0,0,F1,0
- KeyBox R1x+01*FD,R1y,FW,KH,0,0,F2,0
- KeyBox R1x+02*FD,R1y,FW,KH,0,0,F3,0
- KeyBox R1x+03*FD,R1y,FW,KH,0,0,F4,0
- KeyBox R1x+04*FD,R1y,FW,KH,0,0,F5,0
- KeyBox R1x+FM+05*FD,R1y,FW,KH,0,0,F6,0
- KeyBox R1x+FM+06*FD,R1y,FW,KH,0,0,F7,0
- KeyBox R1x+FM+07*FD,R1y,FW,KH,0,0,F8,0
- KeyBox R1x+FM+08*FD,R1y,FW,KH,0,0,F9,0
- KeyBox R1x+FM+09*FD,R1y,FW,KH,0,0,F10,0
- KeyBox Absx,R2y,FW+6,KH,0,'`',$00,0
- KeyBox R2x+00*ND,R2y,NW,KH,0,'1',$01,0
- KeyBox R2x+01*ND,R2y,NW,KH,0,'2',$02,0
- KeyBox R2x+02*ND,R2y,NW,KH,0,'3',$03,0
- KeyBox R2x+03*ND,R2y,NW,KH,0,'4',$04,0
- KeyBox R2x+04*ND,R2y,NW,KH,0,'5',$05,0
- KeyBox R2x+05*ND,R2y,NW,KH,0,'6',$06,0
- KeyBox R2x+06*ND,R2y,NW,KH,0,'7',$07,0
- KeyBox R2x+07*ND,R2y,NW,KH,0,'8',$08,0
- KeyBox R2x+08*ND,R2y,NW,KH,0,'9',$09,0
- KeyBox R2x+09*ND,R2y,NW,KH,0,'0',$0A,0
- KeyBox R2x+10*ND,R2y,NW,KH,0,'-',$0B,0
- KeyBox R2x+11*ND,R2y,NW,KH,0,'=',$0C,0
- KeyBox R2x+12*ND,R2y,NW,KH,0,'\',$0D,0
- KeyBox R2x+13*ND,R2y,NW,KH,0,0,BACKSPACE,0
- KeyBox Arx,R2y,FW+6,KH,0,0,DEL,0
- KeyBox Arx+8+FD,R2y,FW+6,KH,0,0,HELP,0
- KeyBox KPx+00*ND,R2y,NW,KH,0,'[',$5A,0
- KeyBox KPx+01*ND,R2y,NW,KH,0,']',$5B,0
- KeyBox KPx+02*ND,R2y,NW,KH,0,'\',$5C,0
- KeyBox KPx+03*ND,R2y,NW,KH,0,'*',$5D,0
- KeyBox Absx,R3y,FW+16,KH,0,0,TAB,0
- KeyBox R3x+00*ND,R3y,NW,KH,0,'q',$10,0
- KeyBox R3x+01*ND,R3y,NW,KH,0,'w',$11,0
- KeyBox R3x+02*ND,R3y,NW,KH,0,'e',$12,0
- KeyBox R3x+03*ND,R3y,NW,KH,0,'r',$13,0
- KeyBox R3x+04*ND,R3y,NW,KH,0,'t',$14,0
- KeyBox R3x+05*ND,R3y,NW,KH,0,'y',$15,0
- KeyBox R3x+06*ND,R3y,NW,KH,0,'u',$16,0
- KeyBox R3x+07*ND,R3y,NW,KH,0,'i',$17,0
- KeyBox R3x+08*ND,R3y,NW,KH,0,'o',$18,0
- KeyBox R3x+09*ND,R3y,NW,KH,0,'p',$19,0
- KeyBox R3x+10*ND,R3y,NW,KH,0,'[',$1A,0
- KeyBox R3x+11*ND,R3y,NW,KH,0,']',$1B,0
- KeyBox KPx+00*ND,R3y,NW,KH,0,'7',$3D,0
- KeyBox KPx+01*ND,R3y,NW,KH,0,'8',$3E,0
- KeyBox KPx+02*ND,R3y,NW,KH,0,'9',$3F,0
- KeyBox KPx+03*ND,R3y,NW,KH,0,'-',$4A,0
- KeyBox Absx,R4y,NW+3,KH,0,0,$63,CTRL
- KeyBox Absx+ND+3,R4y,NW,KH,0,0,$62,CAPSLOCK
- KeyBox R4x+00*ND,R4y,NW,KH,0,'a',$20,0
- KeyBox R4x+01*ND,R4y,NW,KH,0,'s',$21,0
- KeyBox R4x+02*ND,R4y,NW,KH,0,'d',$22,0
- KeyBox R4x+03*ND,R4y,NW,KH,0,'f',$23,0
- KeyBox R4x+04*ND,R4y,NW,KH,0,'g',$24,0
- KeyBox R4x+05*ND,R4y,NW,KH,0,'h',$25,0
- KeyBox R4x+06*ND,R4y,NW,KH,0,'j',$26,0
- KeyBox R4x+07*ND,R4y,NW,KH,0,'k',$27,0
- KeyBox R4x+08*ND,R4y,NW,KH,0,'l',$28,0
- KeyBox R4x+09*ND,R4y,NW,KH,0,';',$29,0
- KeyBox R4x+10*ND,R4y,NW,KH,0,"'",$2A,0
- KeyBox Arx+1*ND,R4y,NW,KH,0,0,UPARROW,0
- KeyBox KPx+00*ND,R4y,NW,KH,0,'4',$2D,0
- KeyBox KPx+01*ND,R4y,NW,KH,0,'5',$2E,0
- KeyBox KPx+02*ND,R4y,NW,KH,0,'6',$2F,0
- KeyBox KPx+03*ND,R4y,NW,KH,0,'+',$5E,0
- KeyBox Absx,R5y,63,KH,0,0,$60,LSHIFT
- KeyBox R5x+00*ND,R5y,NW,KH,0,'z',$31,0
- KeyBox R5x+01*ND,R5y,NW,KH,0,'x',$32,0
- KeyBox R5x+02*ND,R5y,NW,KH,0,'c',$33,0
- KeyBox R5x+03*ND,R5y,NW,KH,0,'v',$34,0
- KeyBox R5x+04*ND,R5y,NW,KH,0,'b',$35,0
- KeyBox R5x+05*ND,R5y,NW,KH,0,'n',$36,0
- KeyBox R5x+06*ND,R5y,NW,KH,0,'m',$37,0
- KeyBox R5x+07*ND,R5y,NW,KH,0,$2C,$38,0 ;','
- KeyBox R5x+08*ND,R5y,NW,KH,0,'.',$39,0
- KeyBox R5x+09*ND,R5y,NW,KH,0,'/',$3A,0
- KeyBox R5x+10*ND,R5y,67,KH,0,0,$61,RSHIFT
- KeyBox Arx+00*ND,R5y,NW,KH,0,0,LEFTARROW,0
- KeyBox Arx+01*ND,R5y,NW,KH,0,0,DOWNARROW,0
- KeyBox Arx+02*ND,R5y,NW,KH,0,0,RIGHTARROW,0
- KeyBox KPx+00*ND,R5y,NW,KH,0,'1',$1D,0
- KeyBox KPx+01*ND,R5y,NW,KH,0,'2',$1E,0
- KeyBox KPx+02*ND,R5y,NW,KH,0,'3',$1F,0
- KeyBox KPx+03*ND,R5y,NW,KH*2+3,0,0,ENTER,0
- KeyBox Absx+10,R6y,FW+2,KH,0,0,$64,LALT
- KeyBox Absx+10+FD+2,R6y,FW+2,KH,0,0,$66,LAMIGA
- KeyBox 100,R6y,232,KH,0,0,SPACE,0
- KeyBox 338,R6y,FW+2,KH,0,0,$67,RAMIGA
- KeyBox 338+FD+2,R6y,FW+2,KH,0,0,$65,RALT
- KeyBox KPx+00*ND,R6y,NW+ND,KH,0,'0',$0F,0
- KeyBox KPx+02*ND,R6y,NW,KH,0,'.',$3C,0
- KeyBox -1,-1,-1,-1,0,0,0,0
-
- PWkVersionID dc.l 'PWKF'
- PWkVersionNum dc.w PWkeysVersion,PWkeysRevision
- PWkPri dc.b PWkeysPri,0
- PWkMouseAccel dc.b PWkeysMSpeed
- PWkMouseThresh dc.b PWkeysMThresh
- PWkMTimeout dc.l PWkeysMTimeout
- PWkSTimeout dc.l PWkeysSTimeout
- PWkMWaitTime dc.l 0
- PWkSWaitTime dc.l 0
- PWkHotKeys dc.w KeyFuncNumber
- KeyDefines
- HK1 HotKey KP8,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_TOP
- HK2 HotKey KP2,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_BOTTOM
- HK3 HotKey KP4,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_LEFT
- HK4 HotKey KP6,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_RIGHT
- HK5 HotKey KP7,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_LEFT_TOP
- HK6 HotKey KP1,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_LEFT_BOTTOM
- HK7 HotKey KP9,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_RIGHT_TOP
- HK8 HotKey KP3,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_RIGHT_BOTTOM
- HK9 HotKey KP5,LSHIFT|LAMIGA,LSHIFT|LAMIGA,W_TO_CENTER
- HK10 HotKey DOWNARROW,LSHIFT|LAMIGA,SHIFT|AMIGA,W_TO_FRONT
- HK11 HotKey UPARROW,LSHIFT|LAMIGA,SHIFT|AMIGA,W_TO_BACK
- HK12 HotKey DOWNARROW,LAMIGA,SHIFT|AMIGA,BACK_W_TO_FRONT
- HK13 HotKey UPARROW,LAMIGA,SHIFT|AMIGA,FRONT_W_TO_BACK
- HK14 HotKey LEFTARROW,LSHIFT|LAMIGA,LSHIFT|LAMIGA,ACTIVATE_PREV_W
- HK15 HotKey RIGHTARROW,LSHIFT|LAMIGA,LSHIFT|LAMIGA,ACTIVATE_NEXT_W
- HK16 HotKey F1,LSHIFT|LAMIGA,LSHIFT|LAMIGA,MINIMIZE_W
- HK17 HotKey F2,LSHIFT|LAMIGA,LSHIFT|LAMIGA,MAXIMIZE_W
- HK18 HotKey TAB,LSHIFT|LAMIGA,LSHIFT|LAMIGA,REFRESH_W
- HK19 HotKey DOWNARROW,RSHIFT|RAMIGA,SHIFT|AMIGA,BACK_S_TO_FRONT
- HK20 HotKey UPARROW,RSHIFT|RAMIGA,SHIFT|AMIGA,FRONT_S_TO_BACK
- HK21 HotKey F9,RSHIFT|RAMIGA,RSHIFT|RAMIGA,SUB_BITPLANE
- HK22 HotKey F10,RSHIFT|RAMIGA,RSHIFT|RAMIGA,ADD_BITPLANE
- HK23 HotKey BACKSPACE,LAMIGA|RAMIGA,LAMIGA|RAMIGA,TOGGLE_INPUTLOCK
- HK24 HotKey DEL,LAMIGA|RAMIGA,LAMIGA|RAMIGA,TOGGLE_FASTMOUSE
- HK25 HotKey HELP,LAMIGA|RAMIGA,LAMIGA|RAMIGA,TOGGLE_SUNMOUSE
-
- * Image data in CHIP-RAM
- SECTION IMAGEDATA,DATA_C
- Mask dc.w %0011001100110011
- dc.w %1100110011001100
- dc.w %0011001100110011
- dc.w %1100110011001100
-
- UArrowData dc.w %0000000110000000
- dc.w %0000011111100000
- dc.w %0001111111111000
- dc.w %0111111111111110
- dc.w %0000011111100000
- dc.w %0000011111100000
- dc.w %0000011111100000
- dc.w %0000011111100000
- DArrowData dc.w %0000011111100000
- dc.w %0000011111100000
- dc.w %0000011111100000
- dc.w %0000011111100000
- dc.w %0111111111111110
- dc.w %0001111111111000
- dc.w %0000011111100000
- dc.w %0000000110000000
- LArrowData dc.w %0000001100000000
- dc.w %0000111100000000
- dc.w %0011111111111111
- dc.w %1111111111111111
- dc.w %0011111111111111
- dc.w %0000111100000000
- dc.w %0000001100000000
- RArrowData dc.w %0000000011000000
- dc.w %0000000011110000
- dc.w %1111111111111100
- dc.w %1111111111111111
- dc.w %1111111111111100
- dc.w %0000000011110000
- dc.w %0000000011000000
- LUArrowData dc.w %1111111111110000
- dc.w %1111111111000000
- dc.w %1111111111000000
- dc.w %1111111111110000
- dc.w %1111111111111100
- dc.w %1100001111110000
- dc.w %0000000011000000
- LDArrowData dc.w %0000000011000000
- dc.w %1100001111110000
- dc.w %1111111111111100
- dc.w %1111111111110000
- dc.w %1111111111000000
- dc.w %1111111111000000
- dc.w %1111111111110000
- RUArrowData dc.w %0000111111111111
- dc.w %0000001111111111
- dc.w %0000001111111111
- dc.w %0000111111111111
- dc.w %0011111111111111
- dc.w %0000111111000011
- dc.w %0000001100000000
- RDArrowData dc.w %0000001100000000
- dc.w %0000111111000011
- dc.w %0011111111111111
- dc.w %0000111111111111
- dc.w %0000001111111111
- dc.w %0000001111111111
- dc.w %0000111111111111
- END
-
-