tag:blogger.com,1999:blog-59336718112507383302024-03-26T23:38:07.298-07:00Mouse Acceleration in competitive gamingThis blog is dedicated to povohat's mouse acceleration driver, which is based on the QuakeLive mouse acceleration settings.KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-5933671811250738330.post-23093579693650765372017-04-14T12:56:00.002-07:002017-04-14T12:56:41.935-07:00Copying your accel settings between DPIs<style type="text/css">
/*number inputs*/
input[type="number"] {
-moz-appearance:textfield;
width:50px; height:30px;
text-align:center;
margin:3px;
float:left;}
/* Webkit browsers like Safari and Chrome */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
/*select and equals elements*/
select, .equals {
margin:3px;
float:left;}
/*output element*/
output {
display:block;
border:1px solid #333333;
border-radius:5px;
min-width:25px; height:25px;
margin:3px; padding:2px;
text-align:center;
background:#000000;
color:#ffffff;
float:left; }
</style>
<script type="text/javascript">
function DPIUpdateOutput() {
//get form
var form = document.getElementById("dpicalc");
//get outputs
var newaccel = form.elements["newaccel"];
var newoffset = form.elements["newoffset"];
var newscalex = form.elements["newscalex"];
var newscaley = form.elements["newscaley"];
//get inputs
var olddpi = parseFloat(form.elements["olddpi"].value);
var newdpi = parseFloat(form.elements["newdpi"].value);
var oldaccel = parseFloat(form.elements["oldaccel"].value);
var oldoffset = parseFloat(form.elements["oldoffset"].value);
var oldscalex = parseFloat(form.elements["oldscalex"].value);
var oldscaley = parseFloat(form.elements["oldscaley"].value);
// perform calculations
newaccel.value = (oldaccel*olddpi/newdpi).toFixed(4);
newoffset.value = (oldoffset*newdpi/olddpi).toFixed(4);
newscalex.value = (oldscalex*olddpi/newdpi).toFixed(4);
newscaley.value = (oldscaley*olddpi/newdpi).toFixed(4);
}
</script>
<br />
If you are interested in increasing your mouse's DPI to create a smoother acceleration curve, this calculator can help you get a similar feel to the curve you are currently using. Note that it won't be exactly the same as before due to the driver having more inputs to work with, but overall I find higher DPIs feel much better and more consistent.<br />
<hr />
<form id="dpicalc" oninput="DPIUpdateOutput()" onload="DPIUpdateOutput()">
<table border="1">
<tbody>
<tr><td><b>Setting</b></td><td><b>Old</b></td><td><b>New</b></td></tr>
<tr><td>DPI</td><td><input name="olddpi" step="any" type="number" value="400" /></td><td><input name="newdpi" step="any" type="number" value="3200" /></td></tr>
<tr><td>Post-Scale X </td><td><input name="oldscalex" step="any" type="number" value="1" /></td><td><output for="oldscalex olddpi newdpi" name="newscalex"></output></td></tr>
<tr><td>Post-Scale Y </td><td><input name="oldscaley" step="any" type="number" value="1" /></td><td><output for="oldscaley olddpi newdpi" name="newscaley"></output></td></tr>
<tr><td>Acceleration</td><td><input name="oldaccel" step="any" type="number" value="0.1" /></td><td><output for="oldaccel olddpi newdpi" name="newaccel"></output></td></tr>
<tr><td>Offset </td><td><input name="oldoffset" step="any" type="number" value="0" /></td><td><output for="oldoffset olddpi newdpi" name="newoffset"></output></td></tr>
</tbody></table>
</form>
<br />
<hr />
Note that if you have the "Scale Accel with Post-Scale X" or "Scale SensCap with Post-Scale X" options checked, then the values for those variable will be adjusted when you change Post-Scale X. Make sure that your sensitivity cap number is the same as the old number before you save changes (Sensitivity cap is a multiplier of how much your sensitivity can be raised relative to post-scale, so if it was 2 to double your sensitivity, make sure it's still 2 after you change the other values).<br />
<br />
And if you use any Power that isn't 2, I have no idea if this is right or not - sorry.KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com19tag:blogger.com,1999:blog-5933671811250738330.post-40003593033673919062016-11-06T06:12:00.001-08:002018-02-21T19:20:12.449-08:00Troubleshooting the Interception Driver installationSo, you are here because you've installed the driver and followed the directions, but for some reason your settings in the GUI don't seem to take effect. Hopefully this can help.<br />
<br />
This is caused when the dependencies didn't install correctly. If you run interaccel.exe directly, does it immediately open and close? If it's working right, it should stay open and look something like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.imgur.com/V2FmVsX.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://i.imgur.com/V2FmVsX.png" width="320" /></a></div>
<br />
<br />
If it stays open, it's actually working correctly, and you may not have changed any settings that affect anything (sensitivity is just a scalar for coming from QuakeLive - it doesn't affect anything you'd feel without acceleration turned on. Try changing the post-scale numbers around instead).<br />
<br />
So, if interaccel.exe closed immediately, you will want to make sure that you have the correct <a href="https://www.microsoft.com/en-us/download/details.aspx?id=48145">MS Visual C++ Redistributable</a> installed, and then after that it's all about making sure the driver_install.bat actually ran correctly. There are a few things that can block it from working:<br />
<br />
<ol>
<li>Sometimes Windows isn't actually running it as admin from the batch file. You can try to run a command prompt as admin by typing "cmd" in the start search bar and right clicking the program then running it as admin. From there, use the "cd" command to change to the directory with driver_install.bat, and run it directly like that.</li>
<li>Some antivirus products have been known to sandbox the installer, which results in the installer thinking it worked correctly, but it actually didn't get to write the files to the Windows directory. Turn off AV for a minute, run the installer, and turn AV back on.</li>
<li>And sometimes, Windows just gets into a really weird state where it doesn't let the installer do its thing. A simple reboot and try again has fixed it way too many times.</li>
<li>In the worst case scenario, you could try installing it from safe mode. More than one user reported that got it to properly install.</li>
<li>One user reported the following: "it is the act of plugging in the mouse [that fixed a problem] . I have to unplug-replug in the mouse for it to work. I had tried my other mice between reboots." </li>
</ol>
<div>
And don't forget to reboot once the installer runs.</div>
<div>
<br /></div>
KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com18tag:blogger.com,1999:blog-5933671811250738330.post-24147280984836934632015-12-18T19:42:00.001-08:002015-12-18T19:42:25.298-08:00Reflex mouse accel configuration wizard<style type="text/css">
/*number inputs*/
input[type="number"] {
-moz-appearance:textfield;
width:50px; height:30px;
text-align:center;
margin:3px;
float:left;}
/* Webkit browsers like Safari and Chrome */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
/*select and equals elements*/
select, .equals {
margin:3px;
float:left;}
/*output element*/
output {
display:block;
border:1px solid #333333;
border-radius:5px;
min-width:25px; height:25px;
margin:3px; padding:2px;
text-align:center;
background:#000000;
color:#ffffff;
float:left; }
</style>
<script type="text/javascript">
function ReflexUpdateOutput() {
//get form
var form = document.getElementById("reflexcalc");
//get outputs
var accel = form.elements["accel"];
var senscap = form.elements["senscap"];
var offset = form.elements["offset"];
var power = form.elements["power"];
var postscalex = form.elements["postscalex"];
var postscaley = form.elements["postscaley"];
var angle = form.elements["angle"];
//get inputs
var sens = parseFloat(form.elements["sens"].value);
var dpi = parseFloat(form.elements["dpi"].value);
// perform calculations
accel.value = (sens*69/dpi).toFixed(4);
senscap.value = sens*2;
offset.value = 0;
power.value = 2;
postscalex.value = 1;
postscaley.value = 1;
angle.value = 0;
}
</script>
<p>Confused by Reflex's mouse acceleration options? Completely understandable - there's a lot going on with all of the variables. Even worse - acceleration settings deeply depend on your mouse's DPI, so you can't just copy/paste someone else's settings and hope they work for you!</p>
<p>So, I wrote this little tool to give you a starting point. First, enter your <a href="http://www.mouse-sensitivity.com/dpianalyzer.html">mouse DPI</a> and reflex game sensitivity (aka m_speed in console). Then go to into Reflex's "Options" menu, then "Mouse Settings" and copy the outputs this tool spat out (you'll need to check the box for "Enable Advanced Options").</p>
<p>
<form id="reflexcalc" oninput="ReflexUpdateOutput()" onload="ReflexUpdateOutput()">
<table border="1">
<tr><td>DPI</td><td><input name="dpi" type="number" step="any" value="" /></td></tr>
<tr><td>Reflex Sensitivity</td><td><input name="sens" type="number" step="any" value="5" /></td></tr>
</table>
<br>
<table border="1">
<tr><td>Acceleration</td><td><output name="accel" for="sens dpi"></td></tr>
<tr><td>Sensitivity Cap</td><td><output name="senscap" for="sens dpi"></td></tr>
<tr><td>Offset</td><td><output name="offset" for="sens dpi"></td></tr>
<tr><td>Power</td><td><output name="power" for="sens dpi" value="2"></td></tr>
<tr><td>Post-Scale X</td><td><output name="postscalex" for="sens dpi" value="1"></td></tr>
<tr><td>Post-Scale Y</td><td><output name="postscaley" for="sens dpi" value="1"></td></tr>
<tr><td>Angle</td><td><output name="angle" for="sens dpi" value="0"></td></tr>
</table>
</form>
</p>
<p>Now that you've copied those settings into the menu, before you go in game do some quick wrist flicks and see if the little white circle can make it to the flat part of the curve at the top. Hopefully it can (and hopefully it doesn't reach it with very slow mouse movements). If not, tweak the acceleration value up or down until you can make it hit the flat part.</p>
<p>Next, go in game and see how it feels. It might feel like it's terribly high sensitivity. If so, change both of the post-scale settings to something like 0.6. If it's still too high, change it to 0.5 or something lower. Basically, tweak those values according to your preference and try to leave the other values alone. The "x" value is for horizontal movement, and the "y" value is for vertical. I have come to appreciate higher vertical sensitivity (I have 0.31 X and 0.5 Y) for easier rocket jumps.</p>
<p>If you end up liking the in game mouse acceleration options, keep in mind that povohat wrote <a href="http://mouseaccel.blogspot.com/2015/12/new-method-for-mouse-acceleration.html">an awesome driver</a> that lets you have the same feeling in Windows and any other game. And <a href="http://mouseaccel.blogspot.com/2015/12/copying-your-accel-settings-between.html">this tool</a> will let you copy your Reflex settings directly to the driver for the same acceleration curve and feeling.</p>KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com4tag:blogger.com,1999:blog-5933671811250738330.post-13137437085725482832015-12-15T13:45:00.000-08:002016-11-06T05:46:12.895-08:00Copying your accel settings between the driver and games.<style type="text/css">
/*number inputs*/
input[type="number"] {
-moz-appearance:textfield;
width:50px; height:30px;
text-align:center;
margin:3px;
float:left;}
/* Webkit browsers like Safari and Chrome */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
/*select and equals elements*/
select, .equals {
margin:3px;
float:left;}
/*output element*/
output {
display:block;
border:1px solid #333333;
border-radius:5px;
min-width:25px; height:25px;
margin:3px; padding:2px;
text-align:center;
background:#000000;
color:#ffffff;
float:left; }
</style>
<script type="text/javascript">
function DriverUpdateOutput() {
//get form
var form = document.getElementById("drivercalc");
//get outputs
var qlsenscap = form.elements["qlsenscap"];
var reflexsenscap = form.elements["reflexsenscap"];
var qlaccel = form.elements["qlaccel"];
var reflexaccel = form.elements["reflexaccel"];
var qloffset = form.elements["qloffset"];
var reflexoffset = form.elements["reflexoffset"];
var qlpower = form.elements["qlpower"];
var reflexpower = form.elements["reflexpower"];
var qlscalex = form.elements["qlscalex"];
var reflexscalex = form.elements["reflexscalex"];
var qlscaley = form.elements["qlscaley"];
var reflexscaley = form.elements["reflexscaley"];
//get inputs
var sens = parseFloat(form.elements["sens"].value);
var qlsens = parseFloat(form.elements["qlsens"].value);
var reflexsens = parseFloat(form.elements["reflexsens"].value);
var accel = parseFloat(form.elements["accel"].value);
var senscap = parseFloat(form.elements["senscap"].value);
var offset = parseFloat(form.elements["offset"].value);
var power = parseFloat(form.elements["power"].value);
var scalex = parseFloat(form.elements["scalex"].value);
var scaley = parseFloat(form.elements["scaley"].value);
// perform calculations
qlsenscap.value = (senscap*qlsens/sens).toFixed(4);
reflexsenscap.value = (senscap*reflexsens/sens).toFixed(4);
qlaccel.value = (accel*qlsens/sens).toFixed(4);
reflexaccel.value = (accel*reflexsens/sens).toFixed(4);
qloffset.value = (offset*qlsens/sens).toFixed(4);
reflexoffset.value = (offset*reflexsens/sens).toFixed(4);
qlpower.value = power;
reflexpower.value = power;
qlscalex.value = (0.022*scalex).toFixed(6);
reflexscalex.value = scalex;
qlscaley.value = (0.022*scaley).toFixed(6);
reflexscaley.value = scaley;
}
function QLUpdateOutput() {
//get form
var form = document.getElementById("qlcalc");
//get outputs
var reflexsens = form.elements["reflexsens"];
var reflexsenscap = form.elements["reflexsenscap"];
var reflexaccel = form.elements["reflexaccel"];
var reflexoffset = form.elements["reflexoffset"];
var reflexpower = form.elements["reflexpower"];
var reflexscalex = form.elements["reflexscalex"];
var reflexscaley = form.elements["reflexscaley"];
var sens = form.elements["sens"];
var accel = form.elements["accel"];
var senscap = form.elements["senscap"];
var offset = form.elements["offset"];
var power = form.elements["power"];
var scalex = form.elements["scalex"];
var scaley = form.elements["scaley"];
//get inputs
var qlsens = parseFloat(form.elements["qlsens"].value);
var qlsenscap = parseFloat(form.elements["qlsenscap"].value);
var qlaccel = parseFloat(form.elements["qlaccel"].value);
var qloffset = parseFloat(form.elements["qloffset"].value);
var qlpower = parseFloat(form.elements["qlpower"].value);
var qlscalex = parseFloat(form.elements["qlscalex"].value);
var qlscaley = parseFloat(form.elements["qlscaley"].value);
// perform calculations
reflexsens.value = (qlsens*3.839733).toFixed(4);
reflexsenscap.value = (qlsenscap*3.839733).toFixed(4);
reflexaccel.value = (qlaccel*3.839733).toFixed(4);
reflexoffset.value = (qloffset*3.839733).toFixed(4);
reflexpower.value = qlpower;
reflexscalex.value = (qlscalex/0.022).toFixed(4);
reflexscaley.value = (qlscaley/0.022).toFixed(4);
sens.value = 1;
senscap.value = (qlsenscap/qlsens).toFixed(4);
accel.value = (qlaccel/qlsens).toFixed(4);
offset.value = (qloffset/qlsens).toFixed(4);
power.value = qlpower;
scalex.value = (qlscalex/0.022).toFixed(4);
scaley.value = (qlscaley/0.022).toFixed(4);
}
function ReflexUpdateOutput() {
//get form
var form = document.getElementById("reflexcalc");
//get outputs
var qlsens = form.elements["qlsens"];
var qlsenscap = form.elements["qlsenscap"];
var qlaccel = form.elements["qlaccel"];
var qloffset = form.elements["qloffset"];
var qlpower = form.elements["qlpower"];
var qlscalex = form.elements["qlscalex"];
var qlscaley = form.elements["qlscaley"];
var sens = form.elements["sens"];
var accel = form.elements["accel"];
var senscap = form.elements["senscap"];
var offset = form.elements["offset"];
var power = form.elements["power"];
var scalex = form.elements["scalex"];
var scaley = form.elements["scaley"];
//get inputs
var reflexsens = parseFloat(form.elements["reflexsens"].value);
var reflexsenscap = parseFloat(form.elements["reflexsenscap"].value);
var reflexaccel = parseFloat(form.elements["reflexaccel"].value);
var reflexoffset = parseFloat(form.elements["reflexoffset"].value);
var reflexpower = parseFloat(form.elements["reflexpower"].value);
var reflexscalex = parseFloat(form.elements["reflexscalex"].value);
var reflexscaley = parseFloat(form.elements["reflexscaley"].value);
// perform calculations
qlsens.value = (reflexsens/3.839733).toFixed(4);
qlsenscap.value = (reflexsenscap/3.839733).toFixed(4);
qlaccel.value = (reflexaccel/3.839733).toFixed(4);
qloffset.value = (reflexoffset/3.839733).toFixed(4);
qlpower.value = reflexpower;
qlscalex.value = (reflexscalex*0.022).toFixed(6);
qlscaley.value = (reflexscaley*0.022).toFixed(6);
sens.value = 1;
senscap.value = (reflexsenscap/reflexsens).toFixed(4);
accel.value = (reflexaccel/reflexsens).toFixed(4);
offset.value = (reflexoffset/reflexsens).toFixed(4);
power.value = reflexpower;
scalex.value = reflexscalex;
scaley.value = reflexscaley;
}
</script>
<p>Are you using mouse acceleration settings in Reflex or QL and want to get the same feeling in the other game or driver? Do you want to take your driver settings and use them in a game where the computer doesn't have the driver installed? I can help (if QL is involved, I'm assuming cl_mouseaccelstyle 1). First, here's a table of the equivalent options/commands between the driver, Quake Live, and Reflex:</p>
<table border="1">
<tr><td><b>Driver</b></td><td><b>Quake Live</b></td><td><b>Reflex</b></td></tr>
<tr><td>Sensitivity</td><td>sensitivity</td><td>m_speed</td></tr>
<tr><td>Acceleration</td><td>cl_mouseaccel</td><td>m_advanced_acceleration</td></tr>
<tr><td>Sensitivity Cap</td><td>cl_mousesenscap</td><td>m_advanced_sensitivity_cap</td></tr>
<tr><td>Offset</td><td>cl_mouseacceloffset</td><td>m_advanced_offset</td></tr>
<tr><td>Power</td><td>cl_mouseaccelpower</td><td>m_advanced_power</td></tr>
<tr><td>Post-Scale X</td><td>m_yaw</td><td>m_advanced_postscale_x</td></tr>
<tr><td>Post-Scale Y</td><td>m_pitch</td><td>m_advanced_postscale_y</td></tr>
</table>
<br>
<hr>
<p>Use this calculator if you want to convert from Quake Live to Reflex or the driver:</p>
<p>
<form id="qlcalc" oninput="QLUpdateOutput()" onload="QLUpdateOutput()">
<table border="1">
<tr><td><b>Setting</b></td><td><b>Driver</b></td><td><b>Quake Live</b></td><td><b>Reflex</b></td></tr>
<tr><td>Sensitivity</td><td><output name="sens" for="qlsens"></td><td><input name="qlsens" type="number" step="any" value="1" /></td><td><output name="reflexsens" for="qlsens"></td></tr>
<tr><td>Acceleration</td><td><output name="accel" for="qlaccel sens"></td><td><input name="qlaccel" type="number" step="any" value="0" /></td><td><output name="reflexaccel" for="qlaccel sens"></td></tr>
<tr><td>Sens Cap</td><td><output name="senscap" for="qlsenscap sens"></td><td><input name="qlsenscap" type="number" step="any" value="0" /></td><td><output name="reflexsenscap" for="qlsenscap sens"></td></tr>
<tr><td>Offset</td><td><output name="offset" for="qloffset sens"></td><td><input name="qloffset" type="number" step="any" value="0" /></td><td><output name="reflexoffset" for="qloffset sens"></td></tr>
<tr><td>Power</td><td><output name="power" for="qlpower"></td><td><input name="qlpower" type="number" step="any" value="2" /></td><td><output name="reflexpower" for="qlpower"></td></tr>
<tr><td>Post-Scale X</td><td><output name="scalex" for="qlscalex"></td><td><input name="qlscalex" type="number" step="any" value="0.022" /></td><td><output name="reflexscalex" for="qlscalex"></td></tr>
<tr><td>Post-Scale Y</td><td><output name="scaley" for="qlscaley"></td><td><input name="qlscaley" type="number" step="any" value="0.022" /></td><td><output name="reflexscaley" for="qlscaley"></td></tr>
</table>
</form>
</p>
<p>Note: Once you've set post-scale values to work as m_yaw and m_pitch values, you will want to set m_yaw back to 0.022 and m_pitch back to 0.022 or -0.022 (depending on if you use inverted mouse).</p>
<hr>
<p>Use this calculator if you want to convert from Reflex to Quake Live or the driver:</p>
<p>
<form id="reflexcalc" oninput="ReflexUpdateOutput()" onload="ReflexUpdateOutput()">
<table border="1">
<tr><td><b>Setting</b></td><td><b>Driver</b></td><td><b>Quake Live</b></td><td><b>Reflex</b></td></tr>
<tr><td>Sensitivity</td><td><output name="sens" for="reflexsens"></td><td><output name="qlsens" for="reflexsens"></td><td><input name="reflexsens" type="number" step="any" value="1" /></td></tr>
<tr><td>Acceleration</td><td><output name="accel" for="reflexaccel sens"></td><td><output name="qlaccel" for="reflexaccel sens"></td><td><input name="reflexaccel" type="number" step="any" value="0" /></td></tr>
<tr><td>Sens Cap</td><td><output name="senscap" for="reflexsenscap sens"></td><td><output name="qlsenscap" for="reflexsenscap sens"></td><td><input name="reflexsenscap" type="number" step="any" value="0" /></td></tr>
<tr><td>Offset</td><td><output name="offset" for="reflexoffset sens"></td><td><output name="qloffset" for="reflexoffset sens"></td><td><input name="reflexoffset" type="number" step="any" value="0" /></td></tr>
<tr><td>Power</td><td><output name="power" for="reflexpower"></td><td><output name="qlpower" for="reflexpower"></td><td><input name="reflexpower" type="number" step="any" value="2" /></td></tr>
<tr><td>Post-Scale X</td><td><output name="scalex" for="reflexscalex"></td><td><output name="qlscalex" for="reflexscalex"></td><td><input name="reflexscalex" type="number" step="any" value="1" /></td></tr>
<tr><td>Post-Scale Y</td><td><output name="scaley" for="reflexscaley"></td><td><output name="qlscaley" for="reflexscaley"></td><td><input name="reflexscaley" type="number" step="any" value="1" /></td></tr>
</table>
</form>
</p>
<hr>
<p>Use this calculator if you want to convert your driver settings to a specific game:</p>
<p>
<form id="drivercalc" oninput="DriverUpdateOutput()" onload="DriverUpdateOutput()">
<table border="1">
<tr><td><b>Setting</b></td><td><b>Driver</b></td><td><b>Quake Live</b></td><td><b>Reflex</b></td></tr>
<tr><td>Sensitivity</td><td><input name="sens" type="number" step="any" value="1" /></td><td><input name="qlsens" type="number" step="any" value="1" /></td><td><input name="reflexsens" type="number" step="any" value="3.8397" /></td></tr>
<tr><td>Acceleration</td><td><input name="accel" type="number" step="any" value="0" /></td><td><output name="qlaccel" for="accel qlsens"></td><td><output name="reflexaccel" for="accel reflexsens"></td></tr>
<tr><td>Sens Cap</td><td><input name="senscap" type="number" step="any" value="0" /></td><td><output name="qlsenscap" for="senscap qlsens"></td><td><output name="reflexsenscap" for="senscap reflexsens"></td></tr>
<tr><td> Offset </td><td><input name="offset" type="number" step="any" value="0" /></td><td><output name="qloffset" for="offset qlsens"></td><td><output name="reflexoffset" for="offset reflexsens"></td></tr>
<tr><td> Power </td><td><input name="power" type="number" step="any" value="2" /></td><td><output name="qlpower" for="power"></td><td><output name="reflexpower" for="power"></td></tr>
<tr><td> Post-Scale X </td><td><input name="scalex" type="number" step="any" value="1" /></td><td><output name="qlscalex" for="scalex"></td><td><output name="reflexscalex" for="scalex"></td></tr>
<tr><td> Post-Scale Y </td><td><input name="scaley" type="number" step="any" value="1" /></td><td><output name="qlscaley" for="scaley"></td><td><output name="reflexscaley" for="scaley"></td></tr>
</table>
</form>
</p>
<hr>
<p>There are multiple ways to perform these conversions. If you want to do any math yourself, keep in mind that sensitivity is multiplied in <i>before</i> the acceleration, offset, and sensitivity cap calculations are performed, whereas post-scale values are multiplied in <i>after</i>.</p>KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com29tag:blogger.com,1999:blog-5933671811250738330.post-72005403947255222072015-12-04T17:00:00.004-08:002020-10-13T11:57:31.133-07:00New method for the mouse acceleration!<div>10/13/2020 update: <b>Cheat developers started using the Interception driver for malicious purposes, and some services (FaceIt, Vanguard) have taken issue with players who have the Interception driver installed. Fortunately, a few developers in the gaming community have taken it upon themselves to create a standalone mouse acceleration driver that can't be abused for cheat purposes. The new version of mouse acceleration that I personally am using can be found at the following links.</b></div><div><b><br /></b></div><div><b><a href="https://github.com/a1xd/rawaccel/releases">https://github.com/a1xd/rawaccel/releases</a> and <a href="https://discord.com/invite/7pQh8zH">https://discord.com/invite/7pQh8zH</a></b></div><div><b><br /></b></div><div><b>Original (much outdated) post is below, but I highly recommend using raw accel.</b></div><div><br /></div><span><a name='more'></a></span><div><br /></div>Good news, everyone! Povohat found another method to perform mouse acceleration!<br />
<br />
Using the <a href="http://www.oblita.com/interception.html">interception library/driver</a>, povohat wrote a program that reads in mouse inputs and modifies them using the same variables and math as his other driver. Basically, this means we now have a mouse acceleration driver that no longer requires test mode.<br />
<br />
We've been testing the acceleration program/implementation for a few weeks now, but I only got around to adapting the GUI for it yesterday. I've been passing out builds to people looking for any issues, and so far it seems good. Here is the <a href="https://github.com/KovaaK/InterAccel/releases/latest">latest test build</a> (or <a href="https://mega.nz/#!R0kiRL5a!EJqsCjC6Smh1Yq5MW0-jS2yHY5IkX87S93guPgcECD4">mega.nz mirror</a>). If you find anything wrong, let me know!<br />
(01/03/16 fixes: Added support for 2000hz mice in graphing, fixed crash that happened during Windows startup, and tweaked timing of starting new instance of interaccel.exe when using global hotkeys (to avoid short duration of all accel being off). Thanks nGolf and The Man for the troubleshooting!)<br />
(12/19/15 bug fix: opening profiles no longer makes the GUI become useless. Thanks nGolf for the troubleshooting!)<br />
<br />
Installation instructions are contained in the readme.txt. The only hiccups we've noted so far are when the driver doesn't install properly. Some antivirus products seem to sandbox the download and prevents it from installing, so keep an eye out for error messages. Notable changes to the GUI include:<br />
<ul>
<li>Added tooltips for all numeric inputs.</li>
<li>Added hyperlinks to this blog and <a href="http://www.mouse-sensitivity.com/">www.mouse-sensitivity.com</a>.</li>
<li>Added customization wizard to help newcomers have a starting point. (Calculates accel and post-scale values based on your DPI, sets sens-cap to 2).</li>
</ul>
<div>
Ewh from esreality was kind enough to test the input lag of this method of acceleration versus not having it installed. The raw data is <a href="https://docs.google.com/spreadsheets/d/1cktehkalPAbJ5014jL-Vtg3YmGXmNTnAZy5CAQ-Zpkk/edit#gid=1599655144">here</a>, and we were happy to discover that the interception driver doesn't add any input lag! His methodology for testing is the same as <a href="http://www.esreality.com/post/2691945/microsecond-input-lag-measurements/">this post on esreality</a>.<br />
<br />
Next steps to take are: further testing to verify that the GUI isn't broken horribly, get feedback from people on how the wizard settings feel (they aren't too far off from what I'm using, just that they scale to your DPI), and contact anticheat vendors to make sure that the intercept library isn't on a blacklist of sorts for them. The last thing I want is to have anyone get banned for using our mouse accel implementation, but it seems unlikely that it would happen.<br /></div>
<div>
<br /></div>
<div>
Any and all feedback is very welcome!</div>
KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com345tag:blogger.com,1999:blog-5933671811250738330.post-69506372750102130392015-11-25T06:57:00.001-08:002016-06-16T11:29:39.879-07:00FAQFrequently Asked Questions:<br />
<br />
<b>Q: Everyone tells me mouse accel is bad, why should I believe you?</b><br />
<br />
A: Because every other form of mouse accel out there IS bad, and most people aren't familiar with linear acceleration with a sensitivity cap. See <a href="http://mouseaccel.blogspot.com/2015/11/why-other-forms-of-mouse-acceleration.html">this post</a> for my take on other types of accel versus this driver. As for why you should believe me, I guess that's up to you. I've mentioned elsewhere that more pro players in Quake3/QuakeLive use acceleration than not. They have among the best aim in the world, and it clearly works for them. The driver talked about in this blog does the same thing as the acceleration options from those games, and a number of those Quake players (including ClampOK and Noctis) have made the switch to this driver so that they can be at home in other games too.<br />
<br />
<b>Q: Does the driver work with direct input? Raw input?</b><br />
<br />
A: Yes, and yes. The only games that I've had issues with were Farcry 3 and Farcry: Blood Dragon. They have some silly settings that clip mouse input when it is too high (effectively a built in negative accel). Fortunately, there's <a href="http://pcgamingwiki.com/wiki/Far_Cry_3#Negative_mouse_acceleration">a fix</a> for that issue.<br />
<br />
<b>Q: What's the deal with signed/unsigned drivers? Why do I have to jump through so many hoops to install your driver?</b><br />
<br />
A: This discussion is no longer relevant. The current version of the driver doesn't need to be signed (it uses the interception library, which isn't kernel-level). The old response to this question is as follows:<br />
<br />
Every computer hardware manufacturer out there makes drivers that allows their<b> </b>devices to communicate with computers. Drivers are tested by the software engineers in Windows Test mode, and once they have a working product, they get them signed.<br />
<br />
Microsoft explicitly doesn't allow unsigned kernel-level drivers to run on machines under normal circumstances since these drivers have more permission than a typical application/exe. When <a href="http://www.sekoia.fr/blog/windows-driver-signing-bypass-by-derusbi/">malware finds a way around this protection</a>, it's a bad thing. That said, povohat's driver (and my GUI) have the source code included in the zip files. Feel free to audit it and compile it yourself - we have nothing to hide.<br />
<br />
In order to get a driver signed, Microsoft has a <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/dn170454%28v=vs.85%29.aspx">list of certificate authorities</a> (CAs) that they trust, and companies who make drivers will purchase a signing certificate from a CA. Typically it costs a few hundred dollars to have a signing certificate, and it lasts for one year. Luckily, once you sign a version of a driver, it stays signed even if your signing certificate expires after the first year.<br />
<br />
Simply put, we haven't coughed up the money to get a signing certificate. See also: <a href="http://mouseaccel.blogspot.com/2015/11/current-status-of-where-are-we-on.html">"When will the driver be signed?"</a><br />
<br />
<b>Q: Does the driver work play nice with anticheat?</b><br />
<br />
A: For the interception driver - Yes, but argh.<br />
<br />
To date, (6/16/16 as of writing), not a single anticheat vendor has responded to my attempts to contact them. I've addressed VAC, Punkbuster, Fairfight, Blizzard/Warden, and ESEA in various emails, forum posts, and "contact us" type things. Also <u>to date, not a single person has been kicked, banned, or harassed for using this driver under any of these anticheat vendors</u>. There was one instance of an ESEA employee suggesting that you shouldn't use this driver, as it could be used to cheat (wtf?), but he only responded to someone on a forum's direct message, and didn't speak to me.<br />
<br />
If you are using the old driver, the requirement of Windows Test mode will block you from using ESEA anticheat.<br />
<br />
<b>Q: Would I be able to use this on LAN?</b><br />
<br />
A: Depends on whether the tournament organizers will help you get the driver installed. Since you need administrator privileges to install it, you'd definitely need to coordinate it with them. When I was planning on attending Quakecon 2016, I contacted a tournament organizer, and they were fully on-board with having it installed on all tournament machines. (I ended up deciding to not go though)<br />
<br />
<br />
<br />
Got any more questions? Let me know in the comments, and I'll add to this post!KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com33tag:blogger.com,1999:blog-5933671811250738330.post-61000960423519663702015-11-24T19:03:00.000-08:002016-06-16T11:07:29.647-07:00Quickstart guide to configuring the driver post-installationSo, you've got the driver installed and want to see what you can do with it. What next? Well, if you are using the latest version of the interception driver, it includes a Wizard that will give you some starting settings to give a shot. They are calibrated based on your mouse DPI, and it should effectively double your sensitivity as you approach flick speeds. If you'd rather tweak settings on your own, you can follow these instructions:<br />
<br />
First thing's first - click the Settings dropdown menu followed by "Set USB refresh rate". Choose whatever your mouse is running at. Do the same thing for Mouse DPI. Note that the USB refresh rate option will change the way your curve looks, but changing it in the GUI won't affect what your mouse actually polls at. DPI here is solely for reference in the GUI/screenshots of the GUI - it has no impact on your mouse or the graph otherwise.<br />
<br />
The rest of this guide will limit discussion to the basic options (acceleration, sensitivity cap, and post-scale x/y) that most people will want to use. All other options will be left at the defaults.<br />
<br />
<a name='more'></a><br />
First, hop into your game of choice. Take it out of fullscreen and get into a game mode where you can look around without worrying about people killing you.<br />
<br />
I'll assume a simple intended use case: you want to have decent medium to long range tracking with hitscan weapons, but still be able to flick a 180 when needed. I have Quake/Reflex/Overwatch players in mind, but this could apply to many other games. Counterstrike players might want to have lower sensitivities and more accel than I'm suggesting in this starting guide, but feel free to tweak no matter what game you are playing.<br />
<br />
Are you a low sensitivity player (i.e.: 20"+ of mousepad to a 360)? If so, follow direction set <b>A)</b>. Otherwise, follow direction set <b>B)</b>.<br />
<br />
<b>Direction set A) for low sens players:</b><br />
Since you have a low sensitivity, I assume you're going to want to keep your existing low speed tracking sensitivity and find a new comfortable flick mouse sensitivity. Make sure your current sensitivity is familiar to you in game for tracking, and we'll keep your in-game sensitivity setting the same and post-scale x/y the same (1's).<br />
<br />
Try setting the sensitivity cap to 2, and set acceleration to something crazy high like 10 (this won't be permanent). Effectively what will happen is that your in game sensitivity will have doubled. Give flicks a test and see if you can get comfortable doing a 180. Don't worry about doing any smooth tracking with this yet. Move the sensitivity cap up/down a bit until you find something that works for flicks.<br />
<br />
Next, change the acceleration to 0.01. How does that feel? Does it take too long to get to the high sensitivity? Raise it a bit to 0.02 or 0.03. Does it go up too quickly? Lower it. Tweak to your heart's content while practicing flicks, long range tracking, medium range tracking, and close range tracking.<br />
<br />
Once you find something you like, be sure to save your profile. It's always worth saving your profiles as sequential numbers just so that you can come back to them if you decide you don't like any recent tweaks you've made.<br />
<br />
Hypothetically, let's say you want to change your low end mouse sensitivity and keep your flick sensitivity the same. Go under the "Settings" dropdown menu and check the boxes for "Scale Accel with Post-Scale X" and "Scale SensCap with Post-Scale X". Next, tweak your Post-scale X/Y values a little bit. Your curve should keep the same slope and max sensitivity.<br />
<br />
<b>Direction set B) for medium to high sens players:</b><br />
You most likely installed this driver because you want to have better tracking for long to medium range, but you want to keep your muscle memory the same for flicks. So, we'll start out by making sure you can comfortably do a 180 with a flick you are used to. For reference, it takes me 5 inches of mousepad to do a 180. Keep the driver settings default while you adjust in-game sensitivity accordingly.<br />
<br />
Now that you've got a flick you are happy with, go under the "Settings" dropdown menu and check the boxes for "Scale Accel with Post-Scale X" and "Scale SensCap with Post-Scale X". While you're at it, also check the box for "Lock Post-Scale Y to Post-Scale X" (unless you want to have a different vertical sensitivity from horizontal). Set your "Sensitivity Cap" value to 1, "Acceleration" to 0.01, and click "Save Changes" (this won't immediately do anything, but it's required, trust me).<br />
<br />
Next, try setting your dropping your Post-Scale X sensitivity to 0.5. How does that feel? Can you still do a 180 in a flick comfortably? If not, raise your acceleration. If it feels like the sensitivity raises too quickly, lower the acceleration. It's all tweaking from here. Mess around with different values for the Post-Scales and try out tracking targets at different distances.<br />
<br />
Once you find something you like, be sure to save your profile. It's always worth saving your profiles as sequential numbers just so that you can come back to them if you decide you don't like any recent tweaks you've made.<br />
<br />
<b>Ending notes</b><br />
After you've spent all this time tweaking your mouse sensitivity for one game, you wouldn't want to do the same thing for other games, right? Be sure to use <a href="http://www.mouse-sensitivity.com/">http://www.mouse-sensitivity.com/</a> to find out what one game's setting should be for another. All you'll need to take over is the in-game sensitivity setting, and your accel settings should feel perfectly at home (barring any poor programming/built in game accel/etc). Using that site, all I ever need to do to get comfortable in a new game is enter my Quake sensitivity of 1.15 and find out what the equivalent is in another game.KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com55tag:blogger.com,1999:blog-5933671811250738330.post-13724411925045305632015-11-24T17:51:00.002-08:002016-06-16T11:15:18.586-07:00How to find the max speed you move your mouse<div dir="ltr">
When you are looking at your acceleration curve, it's nice to know roughly how fast you move your mouse when performing your fastest flick. Fortunately, there is an easy way with the interception driver.</div>
<div dir="ltr">
</div>
<a name='more'></a><br />
Close InterGUI.exe and interaccel.exe so that all acceleration is turned off. Edit your "settings.txt" with notepad and go down to the very bottom where it says "FancyOutput=0" Change that 0 to a 1. Now run interaccel.exe (not the GUI), and a command window will pop up showing your settings and a live output of your effective mouse speed and sensitivity. Move your mouse around with some flicks and get an idea of the biggest numbers you're seeing. This is the point where you'll want to have your acceleration curve to already be at your sensitivity cap.<br />
<br />
Now, be aware that the FancyOutput option introduces input lag, so you won't want to play games with it. This is why when you run InterGUI.exe, it immediately stomps on FancyOutput and forces it back to 0 when it starts the acceleration back up.<br />
<br />
<b>If you aren't using the interception driver</b>, you can still use the following method to determine your mouse speed:<br />
<br />
<div dir="ltr">
First, save your current mouse accel settings to a profile. We are going to ruin them, and you will want to have a backup. Next, get comfortable navigating the GUI with just your keyboard (using tab, shift-tab, the space bar, and enter), because I'm about to make your mouse difficult to use for the sake of science. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Good with that? K. Now set your post scale values to 0.001, acceleration to 10000, and then set your offset to 10. Either let the sensitivity cap raise itself or set it to 0. Save changes, and give it a test.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Your mouse should be impossibly slow to move until you hit the offset, at which point the accel carries your sensitivity way up. That should give you a feeling for how fast you need to move your mouse to hit 10 on the x-axis. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Now, using keyboard to navigate the GUI, raise the offset and try different values. As you go higher, you should find the point where you no longer can get your cursor to move. This should give you an idea of where on the graph you will reach. I find on 1000hz and 2300 DPI, I can still move the mouse with quick flicks reliably at an offset of 60. Now is a good time to restore the settings you saved to a profile.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Using this new information, you should always aim to have your acceleration curve hit your sensitivity cap before your maximum speed. It doesn't need to land at the cap right as you hit your max speed - my curve hits my cap around 30, but the fastest I move my hand is closer to 60.</div>
KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com4tag:blogger.com,1999:blog-5933671811250738330.post-45401630555405800762015-11-24T17:05:00.001-08:002015-11-25T09:54:00.721-08:00In-depth list of all driver settings.So, you've got the driver installed, and you want to know how to make the most of it. Let's go through the options one by one.<br />
<br />
<a name='more'></a><br />
<br />
First up is the "sensitivity" variable. In povohat's readme for the driver, he writes, "<span style="color: #333333;">if your intention is to replicate your existing QL mouse settings, set this value to your in-game sensitivity </span><span style="color: #333333;">and continue to use this sensitivity value in-game." It technically multiplies the sensitivity into the driver before acceleration calculations happen, and then divides it out after the calculations are done. Simply put, keep sensitivity at 1 unless you are coming from Quake Live.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">The "Acceleration" variable controls how quickly the mouse sensitivity will go up. Pretty straightforward - the closer to 0, the closer to "no accel/flat sensitivity." It's dependent on your mouse DPI and USB refresh rate, so keep that in mind when changing your hardware/mouse software around. Also note that the Pre-Scales and Post-Scales will change this too! There is an option in the GUI dropdown "Settings" menu that allows you to scale acceleration to maintain the same slope when changing post-scales and pre-scales. I highly recommend checking those options once you have an accel curve that you like.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Sensitivity Cap" is the glorious variable that determines where acceleration stops kicking in. It's a multiplier of your base sensitivity (post-scale and pre-scale variables), so a cap of "2" means that accel will only double your sens from its slowest. If you want to maintain muscle memory for flicks, you'll want to scale the sensitivity cap with post-scales and pre-scales too (Settings dropdown in the GUI).</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Speed Cap" is a gimmick. I say this because I specifically asked povohat to add it :). If you've ever been in a game with a vehicle that limits you from turning too quickly, that's what the speed cap feels like. I asked for it to see if you could use it to get perfect turning rate circle jumps in Quake. It's really not that useful though.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Offset" determines how long it will be until mouse acceleration starts to kicks in. You can effectively make the sensitivity flat (no accel) for a short period of time, then let the accel raise it up after that threshold is met. This is nice in theory, but I found that having an offset made it difficult to get used to small changes in the curve. I keep mine at 0, but if you have a curve with a non 0 value that you are happy with, that's quite fine.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Power" determines the exponent of the curve. If you set it to 2 (the default), acceleration is linear. If you set it to 3, you have a parabola. Personally, I like linear accel, but I did try stuff like 2.5 for a while and enjoyed it. Similar to the offset, I found straying from the default made it harder to adjust to small changes to your accel curve, but there's nothing fundamentally wrong with using non standard values.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Pre-Scale X"/"Pre-Scale Y" is a flat multiplier on top of everything (separated into horizontal and vertical mouse movements), but it occurs before the acceleration and offset calculations. Changing this has a tendency to change a few other things inconveniently... I recommend using the next values:</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Post-Scale X"/"Post-Scale Y" is what you will change to affect your starting sensitivity before the acceleration kicks in. It also impacts the other variables you will be changing, but not as dramatically as the Pre-Scales, and as seen above there are options to make the important variables scale with changes to your Post-Scale X value. The X value is for left/right, Y is for up/down. If you want to have your horizontal sensitivity the same as your vertical sensitivity, there is a check box under settings to lock Y to X.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"AngleSnapping" allows you to make mouse movements that are close to a right angle be snapped to a right angle - basically it lets you draw horizontal and vertical lines with your mouse easier. I haven't found much use of it in FPS games, so I keep mine at 0.</span><br />
<span style="color: #333333;"><br /></span>
<span style="color: #333333;">"Angle" is a rotation of the initial mouse movement before any other calculations are performed. It is there to correct for any oddly placed mouse sensors. If you move your mouse perfectly left/right on your mousepad and see that it isn't moving perfectly left/right on screen, you might want to tweak this value.</span>KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com17tag:blogger.com,1999:blog-5933671811250738330.post-19118386085782222282015-11-24T13:02:00.004-08:002015-12-05T05:37:30.451-08:00Why other forms of mouse acceleration are badAs I said in the introduction to this blog, other acceleration options are notoriously bad. I'm going to break down why, but I want to preface all of this with the statement that povohat's mouse accel driver has none of the listed issues if you are using it correctly.<br />
<br />
Games with mouse acceleration forced on never provide a good experience since you always need to tweak the variables of mouse acceleration depending on your mouse's USB refresh rate (125hz feels vastly different to 1000hz with accel), your mouse's DPI, in game sensitivity, and so on. Furthermore, a lot of games only check how far the mouse moved just before it draws a new frame. So if you get into a low framerate area during a heavy battle, you might be moving your mouse at a static speed but find that suddenly it's turning twice as fast as normal! That's unbearably terrible - your frame rate should never destroy your ability to predict where you will be aiming when you move your mouse. <br />
<br />
<a href="https://www.blogger.com/null" name="more"></a><br />
<br />
So, either a game needs to check for mouse input between frames (Reflex, for example is implementing 1000hz input scanning regardless of game FPS to maintain consistency), or you need a driver to handle the acceleration calculations.<br />
<br />
But as most know, plenty of mouse drivers still do very poorly with accel. The most well known is Windows' "Enhance Pointer Precision." What does it actually do? It's what we call "threshold based accel." Basically, if you are moving your mouse slow enough, it acts like a flat mouse sensitivity with no acceleration. Once you pass a certain speed of moving your mouse, your sensitivity suddenly doubles. The curve of mouse sensitivity vs mouse speed would look something like this (vertical axis is effective mouse sensitivity where a flat line means no accel):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvY3PQBw5LdNrvk3Ugmmugqcb0sslVP6L66A5jZ9D7bXKkDL6A9jSjmxJZB3kneeBFS0coA27lzVK-WPE900fmBv6wRDcmb1h8r4j6x43dRbEUb3a6rKeToWBKNtJaDPCa9RKvs9FVHck/s1600/enhance+pointer+precision.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvY3PQBw5LdNrvk3Ugmmugqcb0sslVP6L66A5jZ9D7bXKkDL6A9jSjmxJZB3kneeBFS0coA27lzVK-WPE900fmBv6wRDcmb1h8r4j6x43dRbEUb3a6rKeToWBKNtJaDPCa9RKvs9FVHck/s320/enhance+pointer+precision.jpg" width="301" /></a></div>
<br />
<br />
In theory, it isn't a bad idea - If you're tracking someone at a long range, you can use low sensitivity, and you can get a nice flick in close range to reorient yourself and still stay in the fight. The problem occurs when you are trying to fight someone at a medium range. You might be tracking your opponent and keeping up just fine, then suddenly he gets close enough that your tracking sensitivity doubled. Ew. That just throws people off, and there's a good reason every FPS community out there will tell you to turn it off.<br />
<br />
<i>edit: Per Mark Cranness in the comments of this post, this form of acceleration hasn't been used in Windows for a number of years. The modern "enhance pointer precision" curve apparently looks like <a href="https://drive.google.com/file/d/0B_PnkMGDlD5nR1dSSlZIRFJSazg/view?usp=sharing">this</a>. It's definitely better than a lot of bad accel options out there, but configuring it is quite difficult compared to povohat's driver! :)</i><br />
<br />
Next up: Logitech mouse acceleration. Full disclosure, I haven't used Logitech's driver mouse accel since probably 2001, but this is what the curve looked like back then:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmOKsGee-yQT0SZw7gWEl7BaLc_8gCEyZhCS0Y6HJvzvpuGx-zExFMYe16jy2AZheKgpjdeGM7pM32sAAurxHlWxOZQdCuQFDv2hzog4OPHYAOazy-ZmEZ0xH_wTdeNLLuEYgKRj8P3rw/s1600/logitech.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmOKsGee-yQT0SZw7gWEl7BaLc_8gCEyZhCS0Y6HJvzvpuGx-zExFMYe16jy2AZheKgpjdeGM7pM32sAAurxHlWxOZQdCuQFDv2hzog4OPHYAOazy-ZmEZ0xH_wTdeNLLuEYgKRj8P3rw/s320/logitech.jpg" width="297" /></a></div>
<br />
It starts out low and then begins raising as a parabola. y=x^2 style accel. The problem with this mouse acceleration is that as you move the mouse faster, it becomes completely uncontrollable. It's also rather difficult (but not impossible) to get muscle memory working for flicks since the difference in sensitivity becomes very large. Logitech's accel options of "low," "medium," and "high," controlled how quickly the accel would raise, but it was always uselessly fast when you flicked.<br />
<br />
So, what did Quake 3's mouse accel option look like? Linear, like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_iN8WirTaDa7qyKlNS0TC3NBdWDlShFj2vq2WzPp78vbxJekJMxIklxsXId_T12bmTU1NhO6rlF05iivjFHF_Ah4e106avDbErthO97jlcsT6Y-w1ehhhGyOjYkNehsF1wsg8xP7DhKg/s1600/q3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_iN8WirTaDa7qyKlNS0TC3NBdWDlShFj2vq2WzPp78vbxJekJMxIklxsXId_T12bmTU1NhO6rlF05iivjFHF_Ah4e106avDbErthO97jlcsT6Y-w1ehhhGyOjYkNehsF1wsg8xP7DhKg/s320/q3.jpg" width="304" /></a></div>
<br />
So now, what we've got is a mouse acceleration that grants you the ability to track at low speeds, a gradual/predictable increase in sensitivity, and a sane sensitivity at the high end. Quake 3's console variable let you specify exactly how much you wanted (the slope of the line), so you could fit it to your preferences. If you changed to a different mouse with a different DPI, you can tweak the curve exactly as you wanted to. This is why pro players in Quake 3 started using mouse acceleration - you get the benefits of low sensitivity (great long range tracking) and high sensitivity (you won't lose your target in close range).<br />
<br />
Finally, how I'd like to show how I'm using mouse acceleration:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcOlIdG5L28chSNh8pS5etTPkiXOBY3Q-sVNUqdALOF5j_AIyUpbqPe-CuBGG7-Cph9hBks7qNc23KLtBg-coFA5lv80qNNkKKzdm_1ov2D9olh2banPPLRaylAIHNfTLJ_MzeGgrZyzY/s1600/kov.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcOlIdG5L28chSNh8pS5etTPkiXOBY3Q-sVNUqdALOF5j_AIyUpbqPe-CuBGG7-Cph9hBks7qNc23KLtBg-coFA5lv80qNNkKKzdm_1ov2D9olh2banPPLRaylAIHNfTLJ_MzeGgrZyzY/s320/kov.jpg" width="301" /></a></div>
<br />
So, I've got linear mouse acceleration going on, which has some great benefits. What is new is that I have a "sensitivity cap" where suddenly acceleration stops happening. The most amazing part about that sensitivity cap is that my muscle memory for flicks will work perfectly. I know how much mousepad it takes to do a 180, and I can perform it on command. Even better - if I change to playing a game where there are more long range fights, I can drop my base sensitivity but have it cap out at the same top level, and I can still do my 180 flicks by muscle memory!KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com30tag:blogger.com,1999:blog-5933671811250738330.post-49133724689761514562015-11-24T12:02:00.003-08:002020-05-28T11:11:16.082-07:00How to install the unsigned driver on 64bit Windows 8/10 (OLD DRIVER VERSION)<b>Note: The instructions listed in this post are for the old version of the mouse acceleration driver that required running Windows in test mode. The newer version of the driver <a href="https://www.kovaak.com/mouse-acceleration/">here</a>. The old site that was previously referenced in these instructions has been taken over by malware, and this version of the driver is unavailable. Please go <a href="https://www.kovaak.com/mouse-acceleration/">here</a> instead!</b><br />
<br />
<br />
This method keeps Windows in Test Mode for the driver to work. (I have been running my copy of Windows 10 in Test Mode since the day I installed it.) If you are on an older version of Windows, you should be able to use the DSEO method to turn test mode off after you have signed the driver yourself (see the official installation instructions for details).<br />
<a name='more'></a><br />
<ol>
<li>Download the latest version of the driver from povohat's site.</li>
<li>Open a command prompt with administrator privileges, and type: <pre>Bcdedit.exe -set TESTSIGNING ON</pre>
<pre>(if the operation failed, you may need to go to your BIOS settings </pre>
<pre>and turn secure boot off, then do step 2 again. Note that if you </pre>
<pre>are dual booting linux, GRUB has overwritten the MBR that BCDEdit </pre>
<pre>tries to access, and I don't know how to get around that.)</pre>
</li>
<li>Reboot.</li>
<li>Verify that the corner of your desktop shows "Test Mode" </li>
<li>Open device manager</li>
<li>Under "mice and other pointing devices", right click your mouse device (eg: "HID-compliant mouse")</li>
<li>Select update driver software</li>
<li>Browse my computer for driver software</li>
<li>Let me pick from a list of device drivers on my computer</li>
<li>Have disk</li>
<li>Locate moufiltr.inf</li>
<li>Select HID Mouse (moufiltr) and press next</li>
<li>Continue past any warnings about unsigned drivers and/or compatibility</li>
<li>The OS may prompt you to reboot, and you should do so if required</li>
</ol>
At this point, you should be able to run the GUI (currently not included in the driver zip - <a href="https://dl.dropboxusercontent.com/u/4369386/qlfiltersettings-2.04.zip">DL here</a>), change the post-scale values to 0.5, click save changes, and feel that your mouse sensitivity has been cut in half. Congratulations, it's now installed on 64bit Windows 8/10!<br />
<br />
If you got a Code 10 or Code 45 error message upon installing the driver, that means b8 mysteriously dislikes your computer. If you unplug your mouse and connect it to a different USB port, you should be back on the normal Windows mouse driver. <a href="https://dl.dropboxusercontent.com/u/4369386/qlmoufiltr_b7.zip">Download b7 here</a> and start again from device manager as above with the b7 file instead (note that download zip includes a version of the GUI that works with b7, but not b8). If you're still having problems, let me know!KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com3tag:blogger.com,1999:blog-5933671811250738330.post-9129316166950368522015-11-24T08:19:00.000-08:002016-01-03T17:41:01.615-08:00"When will the driver be signed?" (as of 1/3/16)1/3/16 Update: The <a href="mouseaccel.blogspot.com/2015/12/new-method-for-mouse-acceleration.html">new method of mouse acceleration</a> is working well enough (and doesn't require signing/test mode) that I think we're going to abandon the thought of getting the old driver signed. The text below was written 11/24/15.
<br /><br />
A common question I am getting is "how close are you to getting the driver signed?" Here's the current status:<br />
<br />
<a href="https://www.reactos.org/">ReactOS</a> is an interesting project that has a driver signing certificate. They are willing to (and have in the past) sign open source drivers that are not malicious, don't subvert DRM, don't subvert security features - our favorite mouse accel driver fits the criteria. I made initial contact with them, and they indicated that we might be able to get the driver signed with their cert. However...<br />
<br />
<a name='more'></a><br /><br />
The most recent version of povohat's driver (b8) is finicky. Some people who try to install it get a cryptic error message (code 10, or code 45). When I've helped people get through those errors, the only thing I could do was give them the previous version of the driver (b7), which has universally worked. So, what's new in b8? Per my understanding, povohat rewrote some sections to use the most up to date function calls that Microsoft wants for drivers. B8 was a future-proofing update that was intended to make it work with later versions of Windows that have yet to come out.<br />
<br />
I really don't want to have the ReactOS people sign b8 and run into these errors. I'd much rather have a version of the driver that installs reliably before we get it signed. Similarly, I don't think I want to have them sign the old version of the driver and then go bug them again with b9.<br />
<br />
So, long story short: we need to bug povohat.<br />
<br />
And if the ReactOS signing certificate falls through, I will likely start to investigate crowdfunding options.KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com0tag:blogger.com,1999:blog-5933671811250738330.post-67888450578994437262015-11-24T08:08:00.000-08:002017-04-14T12:59:13.986-07:00Why higher DPIs can be good for mouse accelIn a number of competitive FPS communities, there seems to be a stigma against high DPI. Many gamers run their mice at 400 DPI for various reasons. In traditional flat/no accel cases, that's fine, but I believe it's less than optimal for povohat's driver.<br />
<br />
<b>Important note: some mice have known tracking issues/inconsistencies/jitter at higher DPI. Google your mouse and see if people recommend avoiding certain DPIs. If your mouse is bad at 5000 DPI, but it's good at anything from 400-2500, use something like 2500 or a multiple of 400 to make the conversion easier.</b><br />
<br />
<a name='more'></a><br />
<br />
That aside, here's my argument for higher DPI: If you are running your mouse at 1000hz and 400 DPI, chances are that the fastest you will realistically move your mouse will only show, for example, a change of 15 counts (or dots). Since the driver reads in how many counts (an interger value) and uses the acceleration settings to change it, what does that mean? Well, your entire acceleration curve has to be packed into the range of 1 to 15. Most of the time you'd probably be moving your mouse and only get a count less than 10. A small change in the speed you move the mouse could result in a larger jump in sensitivity than you desire. Effectively, you've got a bunch of step increases in sensitivity. It would look like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg88EmlMjcEYTR3UJ28C55BWLNvPRTdRwi3nX2qIvJE_37RA-3v53Wyg1wa7oQif4I75923U8fGFR3chy9CFFtiuOh5Y4cs9BBiQv32V54L5j5IvQQd7gtQel9LeaZnOtVsdf0aONeX2KQ/s1600/400dpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="309" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg88EmlMjcEYTR3UJ28C55BWLNvPRTdRwi3nX2qIvJE_37RA-3v53Wyg1wa7oQif4I75923U8fGFR3chy9CFFtiuOh5Y4cs9BBiQv32V54L5j5IvQQd7gtQel9LeaZnOtVsdf0aONeX2KQ/s320/400dpi.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPHpKqWXsDWHYbRbwf9RiMg9wxtrZn1smKIQjLQbpJMZbXYLBa0iyb1letkSU3OOnQIGR0XCOg8wyLWOUnqdF_w0ykcgqs7fHU99lfuDQ3muTtkKtUTVIQBRNEpqszuZkxUzxQmYXZQY4/s1600/400dpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
If you used 800 DPI instead of 400, you could get the same effective curve (you'd have to tweak your post-scale and acceleration values), but it would be spread out over a twice the number of points, and thus be smoother/have smaller jumps in sensitivity. 800 DPI would look like this:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi40HqEc_C6P7-1XIUUpT9M0VHMu-ALSA1K4IoZxFv8PDPpDkH4ZJEekJzy_z75oppaXsbB71UAMUyDR2WonmfWmEg_n6obtg0NmPjLRQXfDEuPhhkrCnPsccW3DUIERaaXzXAvTEYsaDg/s1600/800dpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="309" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi40HqEc_C6P7-1XIUUpT9M0VHMu-ALSA1K4IoZxFv8PDPpDkH4ZJEekJzy_z75oppaXsbB71UAMUyDR2WonmfWmEg_n6obtg0NmPjLRQXfDEuPhhkrCnPsccW3DUIERaaXzXAvTEYsaDg/s320/800dpi.png" width="320" /></a></div>
As you go to higher DPIs, you could make your curve even smoother. I've used 2300 to 3200 on mice, but I don't notice any difference jumping up to 12000. See also: <a href="http://mouseaccel.blogspot.com/2017/04/copying-your-accel-settings-between-dpis.html">how to copy settings between DPIs</a>.KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com33tag:blogger.com,1999:blog-5933671811250738330.post-78588874189636903062015-11-24T07:41:00.001-08:002016-06-16T10:56:16.679-07:00Introduction to Mouse Accel for competitive gamingHey guys,<br />
<br />
So, this blog will be about mouse acceleration and how it's actually a good thing for competitive level gamers. I'm not talking about Windows "enhance pointer precision" or any mouse manufacturer's settings for mouse acceleration - they are all absolutely terrible and should never be used.<br />
<br />
As a quick background, the first "good" acceleration (to my knowledge) was from Quake 3. You could set a console variable to determine how much linear increase your sensitivity raised based on how fast you were moving your mouse. Notably, Quake 3's mouse accel was independent of frame rate. Many games that implement mouse accel fail to make it consistent when your frame rate flucuates, so you should avoid it in most titles. Years down the road, QuakeLive added two other variables related to mouse acceleration that made it more than just good: an offset, and a sensitivity cap.<br />
<br />
<a name='more'></a><br /><br />
With an offset, you can specify that your mouse should feel like it has no acceleration when moving slowly. Admittedly, I'm not using an offset these days, but it helps people ease into the world of mouse accel. With a sensitivity cap, you can specify that your sensitivity should stop being raised past a certain point. This means that in an FPS you can maintain your muscle memory for how much it takes to do a 180 degree flick and still tweak your sensitivity for the purposes of long to medium range tracking.<br />
<br />
The options available in Quake3/QuakeLive were enough to have more than half of the top level pro players use it. But, it was limited to just those games... until povohat wrote a driver that gives the same mouse acceleration options available to anyone in any game. This blog is about that driver - installing it, configuring it, and any updates on it. The driver has been available since 2013, but it is only recently picking up in popularity. I'm finding myself answering a lot of the same questions over and over (it's very cool that people like the driver, but it's taking more of my time than I'd like - hence this blog).<br />
<br />
And to introduce myself: I'm KovaaK. I wrote the GUI to the driver that shows the curve of your mouse sensitivity and lets you save/use different profiles. In gaming, I'm best known for playing QuakeWorld and Reflex competitively and <a href="https://www.youtube.com/user/KovaaK">my Youtube channel</a> where I put out content teaching people how to play said games.KovaaKhttp://www.blogger.com/profile/12649032750919719438noreply@blogger.com74