Quick start
- Assign a Start Key and Stop Key. The same key in both fields becomes a one-key start/stop toggle.
- On the Key/Mouse tab, enter an output key in the first column and a repeat interval in the right half of Delay and Interval.
- Review start/stop audio and minimize options, then save the profile.
- Bring a Diablo IV.exe window to the foreground and press Start.
Input safety behavior
Alt+Tab / focus loss
When Diablo IV loses the foreground, repeating timers stop and all key or mouse outputs owned by D4Assist are released. They resume safely when the game returns.
Windows key
D4Assist releases synthetic keys before suspending, reducing accidental combinations such as Win+4 or Win+F.
Stop has priority
Starting is allowed only while Diablo IV is foreground. The Stop key is still accepted outside the game as a safety action.
Input failure
If Windows rejects a SendInput operation, D4Assist stops Immediate mode and the normal macro safely.
Top Start/Stop area
| Field | Behavior |
|---|---|
| Start Key | Starts the normal macro only while Diablo IV is foreground. |
| Stop Key | Stops the normal macro and Immediate timers and releases owned synthetic inputs. |
| Same Start/Stop key | Using [XButton1] in both fields creates an atomic toggle. Keyboard auto-repeat and duplicate XButton DOWN packets are filtered. |
| Do not start | Blocks new starts for both the normal macro and Immediate mode. Assign a key in the hotkey field to the right of the checkbox; while Diablo IV is foreground, pressing that key toggles the checkbox ON/OFF. Stopping remains available. |
| Save / Load | Saves or loads a profile INI. Recently used profiles are listed on the right. |
[HOME], [DEL], or [F8]. One press enables Do not start; the next disables it. The toggle is accepted only while Diablo IV is foreground and is saved in D4Assist.ini. If it shares a key with Start/Stop, Start/Stop handling takes priority, so a separate key is recommended.Key/Mouse tab — 8 normal rows
Each row is an independent repeating task. An output key and a positive interval are both required.
| Column | Meaning | Example |
|---|---|---|
| Key+ | Keyboard or mouse output sent to the game. Multiple keys can be joined with | or &. | 4, [mbRight], 2&3&R |
| Initial delay | Delay in milliseconds before the row first runs. | 500 |
| Interval | Repeat period in milliseconds. Values from 1 to 29 are treated as 30ms. | 100, 1000 |
| Holding | Owns and holds a DOWN state instead of sending ordinary clicks; UP is sent when the row stops or focus is lost. | Hold a mouse button |
| Pause Key | Temporarily stops this row. Alternate or combined input notation is accepted. | [SHIFT] |
| Active Key | The row runs while this activation condition is satisfied. Empty means run as soon as the main macro starts. | F, [CONTROL] |
| Description | User note only; it does not change input behavior. | Defensive skill |
Reset Time (msec) resets the elapsed-time display to zero at that period. Zero disables automatic reset.
Immediate mode — up to 5 slots
Immediate mode works only while the normal macro is OFF. Holding the right activation key repeatedly sends the left output at the middle interval.
output
physical key
In this example, holding the right F repeats the left F every 30ms. Matching output and activation keys are supported.
- All five rows can be configured with different activation keys.
- The minimum interval is 30ms. Smaller values such as 10 are normalized to 30 when loaded or started.
- 30ms is theoretically about 33.3 sends per second; actual throughput may be lower.
- Immediate mode does not start while D4Assist itself has focus or Diablo IV is not foreground.
- Releasing the activation key or losing game focus stops the corresponding slot.
Keyboard and mouse notation
| Type | Examples |
|---|---|
| Letters and digits | A–Z, 0–9 |
| Function and control keys | [F1]–[F12], [SPACE], [ENTER], [ESC], [TAB] |
| Modifiers | [SHIFT], [CONTROL], [ALT] |
| Navigation | [DEL], [INS], [HOME], [END], [PGUP], [PGDN], arrow keys |
| Mouse buttons | [mbLeft], [mbRight], [mbMiddle], [XButton1], [XButton2] |
| Wheel output | [WheelUp], [WheelDn] may be emitted, but physical wheel input is excluded as a control. |
Multiple keys and AND mode
A|B represents alternatives for a condition. A&B requires both keys for a condition and sends a simultaneous down/up group when used as output. Multikey AND Mode changes the separator used while adding keys to a field.
Select an input field and press ESC or Backspace to clear it.
Other tabs and Environment
Sequence Key
This tab is explicitly marked as unsupported. Do not rely on it for a profile.
Stop Keys
Up to 16 named controls are available. The final character of the Name field chooses the behavior.
| Name example | Action |
|---|---|
Emergency | Stops the entire macro |
Pause+ | Toggles global pause/resume on each press |
HoldPause- | Pauses while held and resumes on release |
Environment
- Stay on top: keeps D4Assist above other windows.
- Only Diablo IV process: permanently enabled in this build and fixed to
Diablo IV.exe. - Alpha Blend: changes the assist window opacity.
- Minimize when start: minimizes D4Assist when the macro starts.
- Play audio when start/stop: plays
tts\start.wavandtts\stop.wav. - Key and Mouse click modifier: adds 0–50ms between DOWN and UP. Blank or zero is recommended unless a device needs it.
Saving, files, and portable use
No installer is required. Copy the complete Final folder to move the program.
| File/folder | Purpose |
|---|---|
D4Assist.exe | Application |
D4Assist.ini | Window position, selected language, audio, and recent profile settings |
User *.ini files | Key/Mouse and Immediate profiles |
D4Assist.files | Recently opened profile list |
lang | Korean and English UI files |
tts | Start/stop WAV and TTS media |
styles | Optional skin resources |
D4Assist_Help_KO.html, D4Assist_Help_EN.html | Offline manuals. They must be beside D4Assist.exe for the Help menu to open them locally. |
D4Assist_Release_KO.html, D4Assist_Release_EN.html | Offline release notes; place them beside the EXE. |
Build intermediates such as .ilc, .ild, .ilf, .ils, .map, and .tds are not required for distribution.
Changing language
Choose Korean or English under View → Language. The program restarts and Help subsequently opens the matching manual.
Start/stop audio
- Confirm the
ttsfolder is besideD4Assist.exe. - Confirm
tts\start.wavandtts\stop.wavexist. - Enable start/stop audio in Environment and use names
startandstopwithout the.wavextension. - In Windows Settings → System → Sound → Volume mixer, assign D4Assist to the desired HDMI or Realtek output.
Troubleshooting
| Symptom | Check |
|---|---|
| Start key does nothing | Make sure Diablo IV is foreground, Do not start is unchecked, and no key field is being edited. |
| Do-not-start hotkey does not toggle | Make sure Diablo IV is foreground and the hotkey field is not being edited. If it shares a key with Start/Stop, Start/Stop handling takes priority. |
| Fast wheel scrolling does not start/stop | This is intentional. Physical wheel input is excluded from control handling. |
| Immediate mode does not run | Stop the normal macro; fill all three fields; put Diablo IV, not D4Assist, in the foreground. |
| 10ms changes to 30 | Normal. The floor prevents VCL timer overload and event-queue flooding. |
| A key seems stuck after Alt+Tab | Press Stop once. If needed, restart D4Assist and review duplicate Holding rows. |
| No start/stop audio | Check the WAV files, option, mute state, volume, and D4Assist output device in Windows Volume mixer. |
| SendInput blocked | Windows, the game, or security software rejected synthetic input. D4Assist stops rather than bypassing the policy. |
| Help opens GitHub instead of the manual | Place D4Assist_Help_KO.html and D4Assist_Help_EN.html beside D4Assist.exe. The selected language is tried first, then the other language; GitHub is opened only when both local files are unavailable. |
Known limitations
- If a mouse driver generates XButton DOWN/UP packets indistinguishable from physical input, software cannot identify their origin perfectly.
- Windows scheduling prevents a guaranteed exact 0ms response at the instant of Alt+Tab.
- Windows or security software may reject or remove low-level hooks. D4Assist retries, but cannot force installation.
- Diablo IV or security policy may block
SendInput. No bypass is included. - 30ms is a requested interval, not a real-time guarantee.
1.0.4.1 changes
- Unified legacy D3Assist / D3Assistant names to D4Assist / D4Assistant
- Removed YoloMouse integration, UI, and obsolete Cursors assets
- Added a user-configurable hotkey that toggles Do not start, persisted in
D4Assist.ini - Standardized Backspace notation to
[BACK] - Changed
CheckKeyStaterepeat handling so repeated keyboard/mouse DOWN events are forwarded instead of swallowed - Removed unused legacy global input helpers that bypassed the checked synthetic-input path
- Added failure, length, and signature validation to executable version queries
- Preserved KEYUP/MouseUp release delivery when the settings window becomes active
- Changed XButton synthetic-input rejection from timing-only logic to the D4Assist input tag
- Retained the 1.0.3.186 safety work: Diablo IV foreground checks, Windows-key/Alt+Tab release, five Immediate slots, 30ms minimum intervals, and safe stop on input failure
- Updated About information for 1.0.4.1:
Copyright © 2017-2026 D4 UBOO CLUB,Modified by CYPER, andMulti-Key Macro Utility for Diablo IV, while retainingImproved Key Stroer in Windows System. - Updated Korean and English offline help and release notes for 1.0.4.1
These notes are based on source-level inspection and static validation. Final C++Builder compilation and real Diablo IV behavior still require validation in the target Windows environment.