I would like to have a program that has the purpose of recording keyboard and mouse inputs which offers configuration options. The UI needs to offer 3 sections: Recording, Sequences, Playback.
The recording state is to be initiated and stopped with hotkeys.
This screen will let the user define which hotkeys should be used for to record and stop recording.
Recording needs to have 3 options:
-Keyboard recording only
-Mouse recording only
-Keyboard and mouse recording
During recording, all user input is to be captured depending on which recording option was selected (see above). The UI needs to show some appropriate graphical feedback when there is a recording in progress.
When a recording has been finished, you should be able to save the recording and name it.
The sequences section will list all of the recorded macros. The main goal is to construct a list of macros to be played on after another in sequential order. So this screen needs to have two lists, the first list is your recorded macros which you can select, the second list is the list which you are about to execute.
The user should be able to easily add and remove items to the playback sequence.
Each macro in the sequence needs to have the following options:
- repeat count (how many times this macro is repeated before moving to the next item in the list, on the UI this can be a simple input field where the user enters a number)
- playback speed. (This should be a simple input field where the user enters a percentage. 100% will play the macro at the same speed as the recording, 200% will be twice as fast).
- random delay factor. This is a factor which is applied to each action which gives the delay between actions some randomness. The input for this should be milliseconds. For example if a recording has two keys pressed 1 second part, by setting the random delay factor to 100ms, the action will be performed after a random delay of 1 second plus or minus 100 milliseconds (0.9 seconds to 1.1 seconds). Having the random delay factor set to 0 will play the macro as it was originally recorded.
- random mouse position factor. This is similar to the random delay factor. The input should be in pixels. This gives some randomness to where the mouse clicks so that each time the macro is run it may be slightly different. By entering 5 pixels as the random factor, if the recording had a mouse click at point 100,100 the macro will replay this click at a point by adding or subtracting a random number between 0 to 5 from both x and y. So the resulting click may end up at 103,99.
The user should be able to save these sequences and name them. For example "My Sequence".
The playback section is where the user decides how to bind keys to certain macros or sequences. On this screen the user should be able to create new bindings. When they create a new binding, they can select:
- A keyboard key or mouse button for the binding (or combination of keys, for example CTRL + x).
- Which macro or sequence the bind should be linked to.
- A playback mode.
There are 3 playback modes.
- Toggle. in this mode, when the binding key is pressed, the sequence will begin and play. When the binding key is pressed again the sequence stops playing. Pressing the binding key again after it has stopped should start the sequence from the beginning. When the sequence finishes nothing else happens.
- Infinite Toggle. This is the same as Toggle except that when the sequence finishes it plays again from the beginning.
- On KeyDown. In this mode, while the binding key is being held down the sequence will run. When the binding key is released the sequence will stop.
This software is to be used to replay macros in the context of online games so it must not be detectable by common anti-cheats.