Ultimate Shift Controller
User Guide
Version 3.0.9


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 1. Distribution Type and System Requirements
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Distribution type:
Freeware. There is no usage fee.

System requirements:
- 64-bit Windows
- Windows 10 or Windows 11
- .NET 8 Desktop Runtime (x64)
- Keyboard and mouse

Ultimate Shift Controller is a 64-bit application. Available inputs and behavior may vary depending on the keyboard, mouse, application, or game.
Virtual controller features may require additional drivers and configuration.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 2. Installation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

There is no installer.

1. Extract the distributed ZIP file to a folder of your choice.
2. Run UltimateShiftController.exe from the extracted folder.
3. Configure the mappings you need and click [Save].

The application stores settings in its own folder, so use a writable location such as Desktop, Documents, or another application folder.
Do not run the program directly from inside the ZIP file.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 3. Uninstallation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. Turn off [Run at startup] in Settings.
2. Exit Ultimate Shift Controller, including its tray instance.
3. Delete the extracted application folder.

To remove settings and profiles too, delete the [Settings] folder. Back it up first if you want to keep your configuration.
Drivers installed separately for virtual controller features are not removed with the application folder. Remove them separately according to each driver's instructions.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 4. About This Software
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ultimate Shift Controller is a Windows application that combines keyboard and mouse inputs so familiar keys and buttons can perform different tasks when needed.

You can remap keys, run shortcuts from mouse buttons, and switch to alternate assignments while holding a layer trigger.
It is not limited to games. It can also help with writing, image editing, video editing, streaming, browser control, and other shortcut-heavy applications.

The basic keyboard and mouse features do not require virtual controller setup or additional controller drivers.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 5. Main Features
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Remap keyboard keys
- Use middle mouse, button 4, and button 5 as inputs or outputs
- Register shortcuts using SHIFT, CTRL, ALT, and the Windows key
- Send multiple keys from one input
- Use F1-F24, Home, End, Insert, Delete, Page Up, Page Down, and more
- Give one physical key up to four roles
- Switch between NORMAL, HYPER, ULTRA, and ULTIMATE while holding trigger inputs
- Repeat registered outputs with Turbo
- Organize mappings with tabs
- Save and switch between multiple profiles
- Import and export profiles
- Show the current layer and status in the HUD
- Keep the application available from the system tray
- Use left/right mouse buttons as mapping inputs in HYPER, ULTRA, and ULTIMATE
- Translate selected text with Google Chrome on-device translation models

You do not need to use every feature. Starting with NORMAL and HYPER is recommended.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 6. Basic Setup
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1. Run UltimateShiftController.exe.
2. Select the layer you want to edit at the top of the window.
3. In the upper field of a row, register the source key or mouse button.
4. In the lower field of the same row, register the output key or shortcut.
5. Click [Save].
6. Press the registered input and confirm that it works.

Example:

  Input : Q
  Output: CTRL+1

In the selected layer, pressing Q sends CTRL+1.
Click a field to enter input-waiting mode, then press the key, key combination, or supported mouse button you want to register.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 7. The Four Input Layers
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[NORMAL]
The default layer.

[HYPER]
Used while the HYPER trigger is held.

[ULTRA]
Used while the ULTRA trigger is held.

[ULTIMATE]
Used only while both HYPER and ULTRA triggers are held. There is no separate ULTIMATE trigger.

The layer buttons at the top select which layer you are editing. The active layer during use is determined by the HYPER and ULTRA trigger states.

  Neither held       -> NORMAL
  HYPER only         -> HYPER
  ULTRA only         -> ULTRA
  HYPER + ULTRA      -> ULTIMATE


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 8. HYPER / ULTRA / ULTIMATE and External Mouse Setup
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

To configure HYPER:

1. Select [HYPER].
2. Set the HYPER trigger input.
3. Register the assignments you want to use in HYPER.
4. Click [Save].

Configure ULTRA in the same way. ULTIMATE only needs assignments for the state where both triggers are held.

Example:

  HYPER trigger: Mouse Button 4
  ULTRA trigger: Mouse Button 5

Then the same Q key can perform different actions in NORMAL, HYPER, ULTRA, and ULTIMATE.

[Using F13-F24 as layer triggers]

HYPER and ULTRA logical trigger keys are limited to F13-F24 and must be different. F13 and F14 are common choices because they rarely conflict with normal application or game controls.

Example:

  HYPER trigger key: F13
  ULTRA trigger key: F14

Choosing a trigger key in USC is not enough by itself. Configure a physical key, mouse button, controller input, or external device button to send the same F-key. A non-Turbo USC mapping that outputs F13-F24 can also ignite the layer through USC's internal route; it is not re-captured through the global hook.

Left and right mouse buttons can be registered only on the input side of HYPER, ULTRA, and ULTIMATE mappings. They remain blocked on NORMAL inputs and all output fields to protect ordinary clicking. For non-Turbo mappings, the output remains held until the source input is released.

[Razer Synapse 2]

Synapse 2 can save F13-F24 even though the key name is not shown on the screen.
Example for F13:

1. In USC's NORMAL layer, temporarily remap physical F1 to output F13.
2. Open the key registration screen for the desired mouse button in Synapse 2.
3. While Synapse 2 is waiting for input, press physical F1. USC sends F13.
4. The key name is not displayed, but save the assignment as it is.
5. Restore USC's temporary F1 mapping to normal F1.
6. Set USC's HYPER trigger to F13.

Use the same method with F14 for ULTRA.

[Razer Synapse 3]

If Synapse 3 lets you assign F13-F24 directly, assign F13 or F14 to the desired mouse button and use the same F-key as the USC HYPER or ULTRA trigger.

[Logitech G-Shift / G HUB]

G HUB can select F1-F24 from key assignments. Assign F13 or F14 to a G-Shift or normal mouse button, then use the same F-key in USC.

[Other mice and keyboards]

The same method works with other devices whose configuration software can register F13-F24. Some software may save the key even when its name is not displayed.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 9. Tabs, Profiles, and Saving
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Tabs]
Use tabs to organize assignments by purpose. Tabs can be added, deleted, renamed, and reordered.

[Profiles]
Profiles store the complete configuration. Separate them by game, application, or task as needed.

Always click [Save] after making changes. Unsaved changes may be lost when exiting or switching profiles.
Settings and profiles are stored in the [Settings] folder next to the executable. Copy that folder too when moving the application to another computer or location.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 10. Turbo, HUD, and Status Controls
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Turbo]
Repeats the registered output at the configured interval.

[US HUD]
Displays the current layer and configured labels. Position, size, colors, and opacity can be changed in Settings.

[CLEAN]
Attempts to clear stuck pressed-state displays or input states held inside the application. It is not a general keyboard disable function.

[Keyboard Lock]
Temporarily blocks keyboard input for cleaning. Click the same button with the mouse to unlock.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 11. Important Settings
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[Kill mapped inputs]
Prevents the original input and remapped output from acting at the same time. Enabling it is usually recommended.

[Disable unmapped inputs while shifted]
Prevents unassigned inputs from passing through in HYPER, ULTRA, or ULTIMATE. Check this option if some keys do not respond while a layer is active.

[Minimize to tray]
Moves the application to the system tray when minimized. Double-click the tray icon to restore it.

[Start in tray]
Starts the application in the tray.

[Run at startup]
Starts USC when you sign in to Windows.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 12. Virtual Controller Features
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Virtual controller features are intended for advanced users.
Depending on your environment, they may require additional drivers, physical/virtual controller separation, game input settings, and device-order knowledge. Incorrect setup can cause double input from both physical and virtual controllers.

Because connection states and screens are difficult to explain accurately in plain text, detailed setup is provided in the illustrated GitHub guide:
https://github.com/Lu-ci-el/UltimateShiftController/blob/main/Instructions_en.md

Virtual controller setup is not required when using only keyboard/mouse mappings, layers, and shortcuts.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 13. Troubleshooting
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Click [Save] after changing settings.
- The layer selected at the top is the edit target; trigger inputs determine the active layer during use.
- If HYPER or ULTRA does not activate, check both the USC trigger key and the physical input that sends it.
- If the original and remapped inputs both act, check [Kill mapped inputs].
- If some keys stop working in a layer, check [Disable unmapped inputs while shifted].
- If Keyboard Lock is enabled, unlock it with the mouse.
- Press [CLEAN] if pressed-state indicators remain stuck.
- Some keyboards cannot report every multi-key combination because of hardware rollover limits.
- If settings cannot be saved, move the application to a writable folder.
- Avoid locations such as Program Files where standard users may not have write permission.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 14. Contact and Bug Reports
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Bug reports are accepted through GitHub Issues:
https://github.com/Lu-ci-el/UltimateShiftController/issues

This is the author's contact and bug-report channel. A GitHub account is required.
When possible, include the problem, reproduction steps, whether it happens every time, your Windows/keyboard/mouse environment, and any error messages or logs.

Reports are used for investigation and future fixes, but individual replies, immediate fixes, and support for every environment are not guaranteed.
Feature requests, custom development requests, and requests connected to abuse or disruptive behavior are not accepted.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 15. Notes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Back up the [Settings] folder regularly.
- Exit the application before updating it.
- Mappings may conflict with shortcuts in the target application.
- Check the rules of any online game or service before use.
- Do not use the software to interfere with other users, cheat, abuse services, or cause disruption.
- The author is not responsible for damage resulting from use of this software.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ USC_TRANSLATION_3_0_4 / Translation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

- Translation requires 64-bit Google Chrome and supported on-device models. Microsoft Edge is not used as a fallback.
- Enable "Use translation" and open Translation Settings. [Translation key] selects a logical F13-F24 key and cannot reuse the HYPER or ULTRA logical trigger.
- Left-click [Ignition key] to capture it and right-click to clear it. It may be a physical keyboard/mouse/controller chord or a non-Turbo mapping output from the current USC layer. Physical and internal halves are never combined.
- Selected foreign text is translated into the language currently selected in USC. Selected text in your own language is translated into the last successful conversation language, or the default target when none is known.
- Results appear in the Simple Window. To obtain selected text, USC sends exactly one Ctrl+C to the foreground application as separate scan-code events in the order Left Ctrl DOWN → C DOWN → C UP → Left Ctrl UP, briefly holding Ctrl before C. It never sends C first and never retries C after a failed copy. Only a proven clipboard update is translated; otherwise translation remains fail-closed and the Simple Window reports that the selection could not be obtained. Screen capture and OCR are not used.
- USC's 14 built-in languages can be prepared in one batch. Extra languages can be prepared individually with a BCP-47 tag when Chrome supports them.
- Opening Settings, pressing Refresh, or selecting a pack row does not download anything. Only an explicit DL or built-in bulk DL has download authority.
- Explicit DL opens a short-lived, token-protected local page in normal Google Chrome. It also works while Chrome is already running and starts only after a trusted click in Chrome. No external website is opened; Chrome owns the models.
- Normal translation uses a hidden one-request helper over standard input/output and opens no Chrome page, tab, window, or localhost listener. It never auto-downloads a missing model.
- USC stores only settings and lightweight evidence under [Settings\Translation]. Chrome profiles, TranslateKit, language packs, models, components, runtime, and cache are not copied into USC.
- Markdown, URLs, code, quotations, paragraphs, and line breaks are protected outside the model, split under finite limits, and reassembled. Save permanent changes with [Save] in the USC main window.
