User Guide
Welcome to Custom Curve, the definitive software for complete control over mouse sensitivity. This guide walks you through every part of the application, from creating your first profile to fine-tuning advanced acceleration features.
Introduction
Custom Curve allows you to easily create a personalized mouse acceleration curve that works seamlessly across your entire system. With unmatched customization, it's the complete mouse sensitivity tool for everything from gaming to productivity.
Overview
The main window organizes features into five key areas, accessible via the top toolbar.
Profiles
This section allows you to create, save, load, and manage up to 10 profiles of unique sensitivity or acceleration settings. You can create multiple profiles tailored for different tasks (e.g. "Desktop", "Gaming - High DPI", "Design - Low Speed").
Profiles are organised into a list on the left side of the UI (hint: the list can be collapsed to make additional space for the curve editor).
To add a new profile, click the green '+' icon at the bottom left of the Profiles pane.
Some curated profile presets are also available here, intended to be used as starting points - see the end of this user guide for more details.
The active profile is always indicated by the orange 'tick' icon.
Rules
Use the Rules section to assign specific profiles to automatically activate when a particular application or game window is active.
This can ensure you always have the right settings without manual switching. You can also optionally create hotkeys and/or specify mouse button shortcuts to switch profiles manually within these defined applications.
Hint: Default rules are inactive when the Custom Curve GUI has window focus - this is to prevent profile switching while editing settings. To test the profile changes for Default window context, simply click out of the GUI window, such as to Desktop or a Notepad window.
New Application
This adds a new window context to switch profile automatically when the application becomes active, and allows defining keyboard and mouse button shortcuts within it.
- Application: Set the name of the window context.
-
Detection: Here you can configure how Custom Curve detects the active window.
Process name uses the running process in the task manager (typically an executable) of the target window. For example, for Notepad, this would be notepad.exe. Window title uses the name shown in the window title bar. You can choose to match either by:
- Substring: Only part of the name is required to be specified - such as otepa for the Notepad example.
- Exact: The name needs to match precisely, this is case-sensitive.
- Regex: Matches the string using Regular Expressions. This can sometimes work more reliably for certain applications.
-
Startup Profile: This is the profile that is automatically switched to the first time the application is detected by the GUI.
This is not necessarily the same profile that it will always switch to upon window change - for example, if you change the profile using a context-specific keyboard shortcut, navigate to a different window, then back to your context window, Custom Curve will remember the profile you were last on in that context, NOT the startup profile.
The Default-context startup profile is always switched to upon GUI startup, and automatically updated with every manual 'Apply'. Hotkey shortcuts and tray icon profile switches are considered temporary changes and do not update the startup profile.
New Shortcut
Here you can add keybinds or mouse button shortcuts within each window context.
The default profile switching logic is "go-to". This means the profile will activate on key / button press, and pressing the same hotkey again will have no further effect. If you wish to toggle between two different profiles in the same context, make two shortcuts on different keys.
Checking the Hold option changes the logic to activate upon key / button press, to then revert to the previously active profile upon key / button release.
Options
The Options menu contains general application settings, including:
- Appearance: Including a Dark and Light theme, and color accents.
- Curve editor options: These allow customization of the feedback meters used on the main graph interface.
- Startup: Whether the Custom Curve Interface should launch automatically in the system tray when your computer starts. This is required for profile switching functionality. Note: the driver will always start with Windows and apply the last active configuration regardless of this setting.
- Preset Import: Controls whether importing presets automatically scales your mouse velocity according to your DPI value (normalization). This is strongly recommended so you experience the presets as the author intended.
- Profile Changes: By default, applying a new profile shows a confirmation dialog with a timeout that reverts the settings automatically. This prevents accidental changes that could cause you to lose cursor control. You can adjust the timeout duration or disable the confirmation entirely.
After each apply, the profile exits edit mode and requires explicit action to re-enter it. This prevents accidental changes and helps you track what's been modified. Experienced users can enable 'Stay in edit mode after applying' to speed up incremental editing. - Processing: This option allows binding a shortcut key to disable all driver processing. The keybind requires at least two modifiers to prevent accidental activation. This option can also be toggled from the system tray icon.
- Various Confirmation Dialogs.
History Recorder
The History Recorder is a powerful analysis tool. It continually records your mouse velocity over time, allowing you to visualize your mouse movements to assist in creating perfect settings.
The GUI display shows both the average mouse velocity and the single maximum value within each sample interval.
- Samples: Sets the total number of past data samples stored in the UI.
- Interval: Sets the time span between samples drawn.
Increasing both Samples and Interval values allows a longer time period to be navigated in the History window. Setting a shorter Interval allows a finer resolution to be displayed.
Use mouse scroll wheel to zoom, and click & drag to navigate the graph.
You can record and export all mouse velocity data to a .csv file if you wish to analyze them further using third-party tools. This exported data is not constrained by the visual Samples or Interval thresholds. The recorded X & Y data is subject to the Velocity → Metric setting.
Hint: If you want to understand your natural motions to assist making a curve, it is recommended to first record while playing a game on the sensitivity you are used to without acceleration first, and with Velocity → Metric set to Euclidean.
Profiles - Sensitivity Tab
This tab contains all options to create your custom acceleration curve, along with advanced options relating to mouse sensitivity.
Graph Editor
The main graph shows the mouse input velocity along the X-axis, and corresponding sensitivity on the Y-axis.
The "Sensitivity" in Custom Curve is a multiplier applied to each mouse input packet. It is not related to any in-game "sensitivity" value.
Click the 'Edit' button to make changes to the profile (hint: once in Edit mode, the velocity meters respond to your mouse movements on the selected profile, even when not yet applied to mouse input).
Click 'Save and Apply' to write the settings to the driver so they are active on your mouse input.
-
Input Meters: Your mouse movement is shown by a velocity meter along the graph X-axis, allowing you to see how your motions relate to the sensitivity curve as you are shaping it.
Note: The velocity is affected by your mouse DPI, unless you use the Normalization feature.
The currently active sensitivity of the whole input vector (i.e. including diagonal movements) is shown by the sensitivity meter on the graph's Y-axis for reference. You can enable/disable this meter separately using the Curve Editor options.
-
Spline Curve: Custom Curve provides a spline curve to easily create arbitrary acceleration curves using control points with variable weighting.
Drag control points to shape the curve, and adjust weight sliders to control their influence over the curve shape. Up to 64 control points in total can be added or deleted by right-clicking within the graph area.
- Holding Shift + drag scales the whole curve from the selected control point.
- Holding Alt + drag moves the whole curve from the selected control point.
- Holding Ctrl + drag restricts control point movement to a 90-degree cross. This allows easy movement directly along either the sensitivity or velocity axis.
- Navigation: You can zoom with the mouse wheel and pan by holding the left mouse button and dragging. Re-scale the view with middle mouse button, or maximise the curve view using double-left click.
- Snap icons: These allow you to restrict control points to rounded values for convenience. Right-click on the Snap icon to set the resolution.
Curve
Here you'll find additional options for the main curve editor.
These include separate horizontal & vertical sensitivity curves, adding an 'Offset' and for controlling the behaviour for velocities beyond the curve, using variable slopes.
The Offset and Slope are shown by a dashed line on the graph at the left and right of the curve respectively, and available behaviour is as follows:
- Align: The slope is dictated by the shape of the curve immediately following / preceding it.
- Flat / Limit: This sets a classic flat offset and sensitivity cap respectively.
- Custom: Drag the slopes to any position using the graph editor.
- Vertical / Horizontal ratio, Sensitivity & Velocity scaling: These input fields function as shortcuts to easily scale both horizontal and/or vertical curves simultaneously by entering a multiplier.
Input
Velocity Options
These settings relate to how the acceleration function perceives the mouse input.
-
Metric: Configures how the acceleration curve interprets input velocity.
In Independent mode, the X-component of the mouse input drives a horizontal curve, while the Y-component drives a separate vertical curve - this is true even if you only have a single acceleration curve setup.
In Euclidean mode, the magnitude of the whole input vector is used to drive both horizontal and vertical curves (or a single curve applied to both mouse axes).
The difference is that Euclidean mode is a directionless input based on the "real-life" distance of the mouse movement, whereas Independent mode behaves differently depending on input direction. Mathematically, this can introduce a curl effect, and also scales down diagonal input to the accel curve.
It is best to simply try out both options when using acceleration, and see which you prefer by feel.
-
Velocity Smoothing: Stabilizes the input signal perceived by the acceleration curve, reducing jitter for more consistent detection.
Mouse input is inherently noisy, and often more so with wireless devices - this feature helps the sensitivity transformations through the acceleration curve accurately reflect your true hand motions.
Note: this setting does not smooth the mouse input directly, only how it's perceived by the acceleration function.
Since the smoothing function has exponential decay, the value is the half-life time (in milliseconds) of past inputs weighting on current input. A general guide is as follows:
Use values of 10 or less for wired mice with built-in sensor smoothing or those with Motion Sync features.
Use values greater than 10 for inexpensive wireless mice or those lacking any sensor smoothing or Motion Sync.
Hand Accel Modulation
This allows the input to the acceleration curve to be a function of not only mouse velocity, but also your mouse hand's physical acceleration.
Specifically, a scaling factor (modulation) that is derived from the physical acceleration of the mouse is applied to the input velocity, before it, in turn, is sent as input to the acceleration curve.
This feature is useful for gamers who find in certain situations they under or over compensate with their reactions - such as 'over-flicking'.
This can be common when using mouse acceleration, especially if the curve that is otherwise comfortable has a large sensitivity range.
When combined with both velocity smoothing and / or output smoothing, it can also help stabilize when making fast left-right tracking motions.
Parameters are as follows:
-
Scale: The domain scaling factor of the physical acceleration. This is how reactive the function is to your hand's acceleration. Positive values boost velocity, negative values dampen or "cut" velocity.
The scaling is affected by mouse DPI, so it is recommended to use Normalization with this feature.
-
Limit: Controls the range of the function. This is the overall size of the effect and the maximum multiplier / divisor that could be applied to the velocity.
Limit values less than 5 are initially recommended, since this can already result in a significant change to sensitivity, depending on the Scale value and curve shape.
- Scale On: Deceleration means modulation occurs when you are slowing-down your hand. Acceleration means modulation occurs when you are speeding-up your hand.
-
Detection smoothing: Ensures consistent detection of the physical acceleration.
In most cases, this can be left on Normal, except… For mice with either built-in sensor smoothing or Motion Sync, use Low. For inexpensive wireless mice, those with unsmoothed sensors, or just on systems with particularly noisy mouse input, it can be better to use High.
If the meter shows significant modulation when speeding up your hand with ScaleOn Deceleration (or vice versa), it is advisable to increase the detection smoothing. This smoothing is only used for detection, it is not applied to the mouse input itself.
When configuring this feature, it's useful to understand how the Scale and Limit parameters interact...
Scale values close to zero, combined with a high Limit, produce modulation that only occurs with severe changes in physical hand acceleration.
By contrast, significant scale values (positive or negative) combined with a lower Limit, produce modulation that's spread more evenly across the full range of physical hand acceleration.
The Hand Accel Meter shows the resulting multiplier or divisor being applied to the input velocity. Initially, we recommend you use Scale and Limit combinations that result in a max of '2' on the meter, this range will work well for typical curve shapes. The net effect is also naturally shown in the Velocity Meter on the main curve graph.
Bias
These settings apply when there are two discrete sensitivities for horizontal and vertical mouse movement (or if using Independent Metric with a single curve).
This allows full control over both the degree of directional shift that occurs with diagonal inputs, and how the configured sensitivity curves are mapped to input angle.
-
Mode: A linear blend between two styles of sensitivity application.
Component mode applies the horizontal curve to the X-component of mouse input, and the Vertical curve to the Y-component. This is the standard method used to scale horizontal and vertical mouse input, but results in variable directional shift for diagonal inputs depending on the difference in horizontal & vertical sensitivity and the input angle.
Bias mode always applies a single sensitivity to both mouse input components, maintaining the input direction (that is; the cursor always goes in the same direction as the mouse on the mouse pad). The sensitivity applied is derived from the angle of input, the sensitivity curves for each axis, and a coefficient defined by the Bias Spline curve.
Adjusting the slider between the two performs a linear blend of the two modes. When using Independent Metric, the effect is also represented by the Velocity meters.
-
Bias Spline Curve: Controls the distribution of horizontal and vertical sensitivity by input angle for the Bias portion of the scaling.
The graph X-axis shows the mouse input angle, and the graph Y-axis shows its relationship to the configured horizontal & vertical sensitivities. The resulting effect can be seen in the vector sensitivity meter on the main graph Y-axis.
Note: The Bias Spline Curve has less influence as the Mode slider is moved towards Component.
Output
Post-Scale Options
These features are not related to the acceleration function, rather apply post-scale to the output.
-
Dimension: This feature controls how the input responds as you move the mouse in curves and diagonals vs horizontal & vertical directions.
This allows control over the "looseness" (positive values) or "tightness" (negative) of the overall mouse feel without affecting the horizontal & vertical sensitivity directly.
You can use this liberally by feel on a given day, without affecting your 'muscle memory' for actions like 180-degree turns in a game.
Hint: It is easiest to feel the effect by moving the cursor in circles while experimenting with values.
- Dimension Shape: Increasing the Shape focuses the effect more to diagonals, rather than to varying curved motions as well.
-
Output Smoothing: This smoothing function applies directly to the output of Custom Curve. Since this affects the mouse input directly, it has a more noticeable effect vs velocity smoothing.
Values of 10ms or less can help stabilise mice with poor tracking on a given surface and / or erratic polling stability, making it easier to control the cursor. It can also help users who feel they have "shaky aim" in games.
Unlike common smoothing algorithms used onboard mouse devices or in games, the Custom Curve algorithm allows significant smoothing without appreciable motion delay. Values greater than 10ms introduce a more typical smoothing feel, with high values having accessibility use cases.
Normalization
These features enable the 'virtual distance units' (i.e 'counts') sent by the mouse to be represented as a physical, real-world measurement within Custom Curve, and simplify converting settings between different mouse DPI values.
-
Polling Rate: In most cases this can be left set to Auto.
Entering your mouse's polling rate (which is always configured separately in your mouse software / firmware) instructs Custom Curve to replace dividing by time to find velocity, with a fixed divisor derived from the polling rate.
This effectively converts the input to the acceleration function from a velocity to a distance. This clamps input values to a minimum of 1 count, but reduces jitter in the signal, especially if polling stability is erratic.
If you use a wireless mouse and/or one with a very high polling rate and find the input meter is "spiking" on smooth hand motions, add your polling rate here for a better outcome.
-
Mouse DPI: Adding your mouse DPI (configured separately in your mouse software / firmware) converts the input velocity from a virtual 'counts per millisecond' to a real-world 'inches per second' that is easy to reconcile on your mouse pad.
This is not just a visual graph change, it re-scales the input velocity according to the DPI value. As a result, a curve created with any entered DPI value will respond identically when you switch mouse DPI - simply update this value with no need to re-scale the curve.
It is best to use a minimum mouse DPI of 800 to provide sufficient input resolution for all of Custom Curve's features. 1600 DPI or greater is recommended. It is especially important to use a high DPI if you manually enter a Polling Rate value.
-
Normalize Output: This option re-scales the output after processing and converts sensitivity to effective mouse DPI.
This can be more comprehensible than the abstract unitless ratio of "sensitivity" to work with, and allows using values directly for comparison - such as when converting a sensitivity value from one game to another.
This also allows you to use a mouse with very high DPI for increased input resolution while preserving the controlled output of a lower DPI mouse, without manually adjusting sensitivity.
Profiles - Angle Tab
This tab is dedicated to Rotation and Angle Snapping features.
Rotation
Custom Curve allows powerful customization of angle adjustment per-axis, along with a feature to detect your natural mouse movement angles for horizontal & vertical and calculate a correction, if required.
To use the angle detection feature:
- Hold Shift and swipe your mouse across the grid area, then release Shift. Resize the GUI window first, if required.
- You can do this for both horizontal and vertical motions, ensuring a correction to one does not negatively affect the other.
Ticking the Average option continually accumulates over the previous 10 attempts, helping to form a consistent detection.
Mode: How the angle correction is applied…
- Both: A single correction is applied to all input angles.
-
Split: The angle correction for Horizontal & Vertical fades to zero at 45 degrees, ensuring adjustments to vertical have no effect on "mostly horizontal" inputs, and vice versa.
Split is best used when the required corrections are in opposing directions.
-
Blend: The angle correction is linearly interpolated between the configured adjustments for Horizontal & Vertical for all input angles between them.
Blend is more natural when the required corrections are in the same direction, but to varying amounts.
Angle Snapping
This feature compensates for slight angular deviations in your physical movement to keep the cursor traveling perfectly horizontally or vertically, if desired.
Custom Curve allows per-axis tuning, and two modes:
-
Legacy: All angles below the defined threshold are quantized to the nearest axis.
This standard method can be useful for 2D application work but directly reduces angular resolution, making it less suitable for gaming.
-
Soft: Angles are gently biased toward the nearest axis without reducing angular resolution, rather, the input angles required to reach them are smoothly compressed.
This is mathematically similar to the "curl" effect seen with Independent Metric acceleration, but can also apply to a static sensitivity. It is designed with gaming use cases in mind.
GUI Hotkeys
Profile Pane
- Ctrl + N Add new profile
- Ctrl + D Duplicate selected profile
- Ctrl + I Import profile from file (supports .cc4 or .ccurve files)
- Ctrl + E Export selected profile to .cc4 file
- Ctrl + C Copy selected profile to clipboard
- Ctrl + V Paste profile from clipboard
- Del Delete selected unapplied profile
Curve Graph Editor
- Click & Drag Pan
- Scrollwheel Zoom
- Ctrl + Scrollwheel Alternate zoom mode
- Double Left-Click Maximise curve view
- Middle Click Rescale curve view
- A Add a new control point at cursor position
- D Delete control point under cursor
- V Toggle vertical / horizontal curve selection
- Shift + Drag points Scale curve from selected control point
- Alt + Drag points Move selected and subsequent control points together
- Ctrl + Drag points Restrict control point movement to axis
General
- Ctrl + Z Undo last text box entry
- Shift + Drag Slider Fine adjustment
Preset Guide
Custom Curve includes 16 curve presets intended as starting points for customisation. These cover various use cases and are based on established conventions.
To use presets, add a new profile and select from the list within the application. Each preset includes a thumbnail preview and a description of its intended use.
Presets are default scaled to a Normalized 'inches per second' velocity - it is strongly recommended to add your mouse DPI when trying them out. You will be prompted to do so upon preset import.
Horizontal curve Vertical curve (separate H / V presets)
Preset 1: Natural
An intuitive shape for all round use in both 2D cursor and 3D gaming environments. This curve smoothly scales to a limit of the user’s usual sensitivity with no detectable hard-cap, and provides increasing precision with slower motions. A great curve style for both beginners and experienced users.
Preset 2: Capped Linear
This style also serves as a great introduction and has been preferred by many long-term users of acceleration. The rate of sensitivity increase is always consistent, and it hard-caps to stabilise the sensitivity for fast hand motions.
Preset 3: Quadratic
This style increases sensitivity in a "concave up" shape. The increase at slow hand speeds is gentle and the increase just prior to the limit is sharper, before hard-capping for faster motions. This shape is sometimes preferred for games that require lots of accurate left-right tracking combined with fast flicks, but without using an offset.
Preset 4: Offset Linear
An alternative to the Quadratic curve, with sensitivity linearly increasing only once the user’s mouse speed surpasses 5 inches per second (i.e the “offset” speed). The idea is to define a fixed sensitivity across all hand speeds where tracking movements are required, at the expense of a less-smooth increase once acceleration kicks in.
Preset 5: S-Shaped
A symmetrical Sigmoid curve. A combination of the gentle rise of the Quadratic curve but with the smooth scaling to limit from the Natural style. Removes any feeling of hard-cap to the acceleration and is another great style for all round use.
Preset 6: Uncapped Linear
A good choice for those who like a consistent increase with no upper limit to the acceleration. Recommended for those using higher sensitivity ranges where hand movements are slower and more controlled. Provides a great amount of flexibility, but is not recommended for users who make lots of ballistic “flick” hand motions.
Preset 7: Precision
This style starts at zero and rises very quickly. The majority of sensitivity change occurs at the very slowest (and therefore most controlled) hand speeds. This is nice for users who like the general feel of an unaccelerated sensitivity, yet with a very large bonus to precision only with the very slowest motions. Great for point ‘n’ click / sniping play-styles in games.
Preset 8: Jump
This curve style is for those who like the feel of an unaccelerated sensitivity at the majority of their hand speeds, with a bump to sensitivity only with their fastest motions (such as when turning around in a 3D game). This enables a user to game on a fixed low sensitivity for the majority of their motions, but without the cumbersome movements which would then be required for navigation.
Preset 9: Modulated Precision
This preset integrates deceleration-based velocity damping into the Precision curve style. As hand speed decreases, input velocity is further reduced, resulting in enhanced stopping control and greater flick stability.
Preset 10: Modulated Jump
This preset applies acceleration-based velocity boosting to the Jump curve style. Aggressive or more forceful hand motions produce greater input speed, allowing to hit the accel at lower velocities too if the movement is highly reactive.
Preset 11: Developer's Curve 1 H / V
Works like the Natural style, but with a larger sensitivity range and a small vertical sensitivity boost at low velocities. This helps compensate for the typically smaller forward/back range of motion, improving comfort across various aiming styles. It uses Independent Metric to naturally introduce directional curl, making it easier to track smoothly along each cardinal axis.
Preset 12: Developer's Curve 2 H / V
An asymmetrical Sigmoid curve with the upper portion of the “S” extended to cover faster hand movements. It’s designed for low-sensitivity players who use a wide range of hand speeds, placing the curve’s midpoint where controlled movement transitions into ballistic motion. Vertical sensitivity is increased at slower hand speeds for comfort, using a non-linear bias that avoids all directional drift.
Preset 13: Developer's Curve 3 H / V
This is a low-delta variant of Preset 12, but scales around a sensitivity of 1, has a directionally true linear Bias and the vertical sensitivity left unaccelerated. The idea is to use this setting at the usual in-game sensitivity value without requiring further changes. This is an excellent starting point for someone not yet used to acceleration who wants both higher precision and navigation comfort simultaneously. This is a very subtle curve, so may not provide enough gain for a user already used to acceleration.
Preset 14: Developer's Curve 4 H / V
Combines a vertical Natural and horizontal Sigmoid style with a smooth linear Bias between the axes. This is a very comfortable shape and suitable for many types of games and aim styles.
Preset 15: Windows Enhance Pointer Precision
An emulation of the Windows 10/11 Enhance Pointer Precision (EPP) curve at the default 6/11 (10/20) pointer speed setting. This enables the curve to be used in Raw Input games that bypass the native Windows behaviour. Because the Windows function does not normalize for time, keep the polling rate setting in the Output tab at 1000 Hz to ensure accurate emulation, regardless of your mouse’s actual polling rate.
Preset 16: Power Curve (Exponent 0.05)
An emulation of the default acceleration curve found in many Source Engine games. This curve style is mathematically linear in logarithmic space, resulting in smooth acceleration that works well with most aiming styles. Because Source Engine acceleration depends on the in-game frame rate (FPS), the emulation can only match a single specific FPS. To match it correctly, scale the control points along the velocity axis by (in-game FPS) / 1000