Csgo and the mouse problem

Everything about latency. Tips, testing methods, mouse lag, display lag, game engine lag, network lag, whole input lag chain, VSYNC OFF vs VSYNC ON, and more! Input Lag Articles on Blur Busters.
Post Reply
holiday
Posts: 40
Joined: 19 Feb 2019, 11:55

Csgo and the mouse problem

Post by holiday » 13 May 2023, 04:27

Hi guys,

i think this one deserves a new topic. For a while i posted here about the strange mouse behaviour: viewtopic.php?t=9769

Csgo, the same goes for cs 1.6 or css, using the following mouse parameters:

m_mousespeed 1
m_mouseaccel1 0
m_mouseaccel2 0

In cs 1.6 if no mouse rawinput is in use this will activate the mouse enhanced precision aka mousespeed (mouse acceleration)

In csgo if no mouse rawinput is in use this will not activate the mouse enhanced precision.

This shows that csgo by default use noforce commands i guess the noforcemspd and the noforcemaccel command.

After a long research i found two interesting sources:

http://web.archive.org/web/200909231543 ... ead/411262

https://www.hltv.org/forums/threads/260 ... e-commands
Jonathan E. - HLTV.org
As many things in CS it is up to personal preference.

In my case I play sometimes with all three or just accel and parms.

Bare in mind that when using the noforcemspd command there is a tricky side effect.
You have a faster horizontal (x) speed but a slower vertical speed (y) and that makes some player do feel uncomfortable.
Because, didn't we want an even mouse movement removing the acceleration?
The noforcempsd command just does not help much with regard to that.

As said, test, test and test and keep what you feel more comfortable with.

If you do want to test the mouse fix without actually installing it just uncheck 'Enhance pointer precision' box. That way you can do your tests without the need of restarting the computer due to registry adding/deleting of the mouse fix reg file.
Most people in this topics talk about that noforcemspd changes their y sensitivity. How and why i dont know, maybe someone here can tell this.

I found out like in my old post that -useforcedmparms and m_mousespeed set to 0 makes your sensitivity (small precise mouse movements faster)

I claim that csgo by default has a wrong strange mouseinput where small precise mouse movements are to slow and that u can only fix this with -useforcedmparms and m_mousespeed 0. Iam on the way to prove this and look for people who can help me with that.


I think i should add some more details:

First the csgo mouse code: https://github.com/perilouswithadollars ... _mouse.cpp

Code: Select all

if ( CommandLine()->FindParm ("-useforcedmparms" ) ) 
	{
#ifdef WIN32
		m_fMouseParmsValid = SystemParametersInfo( SPI_GETMOUSE, 0, m_rgOrigMouseParms, 0 ) ? true : false;
#else
		m_fMouseParmsValid = false;
In this you see that when useforcedmparms is used csgo is using the coded mouse parameters mousespeed 1 and mouseaccel threshold 1 and 2. This command says use the forced mouseparamters so by default csgo is coded as noforcemspd and noforcemaccel.

holiday
Posts: 40
Joined: 19 Feb 2019, 11:55

Re: Csgo and the mouse problem

Post by holiday » 23 May 2023, 06:53

Update:

can you guys try this:

-useforcedmparms as launch options
m_mousespeed 0 and m_rawinput 0 in the console.

My previous tests was always with rawinput 1. Means the windows settings getting ignored. This was a mistake i think :!:


So in theory with this settings csgo go back to the old engine behaviour and uses the windows mousespeed 0 and the thresholds1 as 0 and threshold2 as 0 like cs 1.6 (before the 2013 update) with noforce commands.

Raw input prevents from using the windows settings. But for this test we want the windows settings so we see if the mouse input become the same as in 1.6.

Feedback desired :D

holiday
Posts: 40
Joined: 19 Feb 2019, 11:55

Re: Csgo and the mouse problem

Post by holiday » 06 Jun 2023, 00:31

More tests are done and this is now my take about the mouse input in csgo:

In theory m_mouseaccel1/2 represent the -noforcemaccel launch option and m_mousespeed the -noforcemspd launch option.

m_mousemaccel1 and m_mousemaccel2 set to 0.0 = -noforcemaccel
m_mousespeed set to 0 = -noforcemspd

Back in cs 1.6 people used -noforcemparms -noforcemaccel or -noforcemparms -noforcemaccel -noforcemspd. Some said that with -noforcemspd it makes their y sens slower.

Examples:
https://www.hltv.org/forums/threads/260 ... e-commands (Comment 4)
https://www.hltv.org/forums/threads/176688/noforcemspd (Comment 11)

This: http://web.archive.org/web/200909231543 ... ead/411262 is a good read where people discussed the difference in the launch options back in cs 1.6. Since csgo is still using the same parameters its also the case for csgo.

There also a lot topics arround the internet that says m_mousespeed 0 in csgo makes it harder to control the recoil which also confirms that this can be the -noforcemspd launch command.

Csgo uses by default -noforcemparms (assumed cause you need to set -useforcedmparms to activate -noforcemaccel and -noforcemspd)

And since they are console commands they still matter even if you use rawinput the engine checks first for this commands.

Common commands used in cs 1.6 translate to csgo:

-noforcemparms -noforcemaccel =m_mouseaccel1/2 0.0
-noforcemparms -noforcemaccel -noforcemspd = m_mouseaccel1/2 0.0 m_mousespeed 0
-noforcemaccel -noforcemspd = -useforcedmparms -noforcemspd -noforcemaccel

So if every launch options create a different feel/mouse input and you dont want to replicate your cs 1.6 mouse feeling use -useforcedmparms and m_rawinput 1 in csgo + leave the rest untouched.

Please if you try give feedback people. Thanks
Last edited by holiday on 06 Jun 2023, 07:57, edited 1 time in total.

andreeeeee-
Posts: 16
Joined: 23 Dec 2022, 05:59

Re: Csgo and the mouse problem

Post by andreeeeee- » 06 Jun 2023, 04:22

Hey, I'm subscribed to this thread and I really appreciate all the analysis that you're doing.

Just would like to drop a comment on your last post:
m_customaccel1 and m_customaccel2 set to 0.0 = -noforcemaccel
I think here you actually mean m_mouseaccel1 and m_mouseaccel2, right?

Because of this, I took a look at the list of available commands in the game console and came across this one:
"m_customaccel" = "0" client archive - Custom mouse acceleration:
0: custom accelaration disabled
1: mouse_acceleration
I wonder if, when this value is set to "0", m_customaccel1 and m_customaccel2 are still read and applied by the game engine or not.

Have you found anything about this?

Thanks again

Slender
Posts: 589
Joined: 25 Jan 2020, 17:55

Re: Csgo and the mouse problem

Post by Slender » 06 Jun 2023, 07:59

// Mouse Fix

m_customaccel "0"
m_customaccel_exponent "0"
m_customaccel_max "0"
m_customaccel_scale "0"
m_mouseaccel1 "0"
m_mouseaccel2 "0"
m_mousespeed "0"
m_side "0"
m_forward "0"

m_yaw "0.022"
m_pitch "0.022"

c_maxdistance "0"
c_maxpitch "0"
c_maxyaw "0"
c_mindistance "0"
c_minpitch "0"
c_minyaw "0"
c_orthoheight "0"
c_orthowidth "0"
c_thirdpersonshoulder "0"
c_thirdpersonshoulderaimdist "0"
c_thirdpersonshoulderdist "0"
c_thirdpersonshoulderheight "0"
c_thirdpersonshoulderoffset "0"

joy_accelmax "0"
joy_accelscale "0"
joy_accelscalepoly "0"
joy_advanced "0"
joy_advaxisr "0"
joy_advaxisu "0"
joy_advaxisv "0"
joy_advaxisx "0"
joy_advaxisy "0"
joy_advaxisz "0"
joy_autoaimdampen "0"
joy_autoAimDampenMethod "0"
joy_autoaimdampenrange "0"
joy_axisbutton_threshold "0"
joy_cfg_preset "0"
joy_circle_correct "0"
joy_curvepoint_1 "0"
joy_curvepoint_2 "0"
joy_curvepoint_3 "0"
joy_curvepoint_4 "0"
joy_curvepoint_end "0"
joy_diagonalpov "0"
joy_display_input "0"
joy_forwardsensitivity "0"
joy_forwardthreshold "0"
joy_gamma "0"
joy_inverty "0"
joy_lowend "0"
joy_lowend_linear "0"
joy_lowmap "0"
joy_movement_stick "0"
joy_name "0"
joy_pitchsensitivity "0"
joy_pitchthreshold "0"
joy_response_look "0"
joy_response_look_pitch "0"
joy_response_move "0"
joy_sensitive_step0 "0"
joy_sensitive_step1 "0"
joy_sensitive_step2 "0"
joy_sidesensitivity "0"
joy_sidethreshold "0"
joy_wingmanwarrior_centerhack "0"
joy_wingmanwarrior_turnhack "0"
joy_yawsensitivity "0"
joy_yawthreshold "0"
joystick "0"
zoom_sensitivity_ratio_joystick "0"

joystick_force_disabled "1"
joystick_force_disabled_set_from_options "1"
joy_no_accel_jump "1"

xbox_autothrottle "0"
xbox_throttlebias "0"
xbox_throttlespoof "0"

mc_accel_band_size "0"
mc_dead_zone_radius "0"
mc_max_pitchrate "0"
mc_max_yawrate "0"

sk_autoaim_mode "0"

aim_flickstick_circular_deadzone_max "0"
aim_flickstick_circular_deadzone_min "0"
aim_flickstick_crank_sensitivity "0"
aim_flickstick_crank_tightness "0"
aim_flickstick_enabled "0"
aim_flickstick_flick_snap_mode "0"
aim_flickstick_flick_tightness "0"
aim_flickstick_forward_deadzone "0"
aim_flickstick_release_dampen_speed "0"
aim_gyro_acceleration "0"
aim_gyro_base_sensitivity "0"
aim_gyro_circular_deadzone "0"
aim_gyro_conversion_mode "0"
aim_gyro_enable_mode "0"
aim_gyro_high_sense_multiplier "0"
aim_gyro_high_sense_speed "0"
aim_gyro_invert_pitch "0"
aim_gyro_invert_yaw "0"
aim_gyro_low_sense_speed "0"
aim_gyro_pitchyaw_ratio "0"
aim_gyro_precision_speed "0"
aim_gyro_raw "0"
aim_gyro_ray_angle "0"
aim_gyro_siapi_convert_pixels_to_angles "0"
aim_gyro_siapi_sensitivity_setting "0"
aim_gyro_siapi_vertical_scale_setting "0"
aim_gyro_square_deadzone_pitch "0"
aim_gyro_square_deadzone_yaw "0"
aim_gyro_zoom_dampening_level1 "0"
aim_gyro_zoom_dampening_level2 "0"
aim_stick_circular_deadzone_max "0"
aim_stick_circular_deadzone_min "0"
aim_stick_extra_turning_delay "0"
aim_stick_extra_turning_ramp_up_time "0"
aim_stick_extra_yaw "0"
aim_stick_invert_pitch "0"
aim_stick_invert_yaw "0"
aim_stick_rate_pitch "0"
aim_stick_rate_yaw "0"
aim_stick_response_curve "0"
aim_stick_square_deadzone_pitch "0"
aim_stick_square_deadzone_yaw "0"
aim_stick_zoom_dampening_level1 "0"
aim_stick_zoom_dampening_level2 "0"
aim_touchpad_circular_deadzone_min "0"
aim_touchpad_invert_pitch "0"
aim_touchpad_invert_yaw "0"
aim_touchpad_sensitivity_pitch "0"
aim_touchpad_sensitivity_yaw "0"
aim_touchpad_square_deadzone_pitch "0"
aim_touchpad_square_deadzone_yaw "0"
aim_touchpad_zoom_dampening_level1 "0"
aim_touchpad_zoom_dampening_level2 "0"

move_stick_aggression_strength "0"
move_stick_aggressive "0"
move_stick_circular_deadzone_max "0"
move_stick_circular_deadzone_min "0"
move_stick_response_curve "0"
move_stick_square_deadzone_forward "0"
move_stick_square_deadzone_strafe "0"
move_stick_walk_zone "0"
move_touchpad_circular_deadzone_min "0"
move_touchpad_sensitivity_forward "0"
move_touchpad_sensitivity_strafe "0"
move_touchpad_square_deadzone_forward "0"
move_touchpad_square_deadzone_strafe "0"

holiday
Posts: 40
Joined: 19 Feb 2019, 11:55

Re: Csgo and the mouse problem

Post by holiday » 06 Jun 2023, 08:04

andreeeeee- wrote:
06 Jun 2023, 04:22
Hey, I'm subscribed to this thread and I really appreciate all the analysis that you're doing.

Just would like to drop a comment on your last post:
m_customaccel1 and m_customaccel2 set to 0.0 = -noforcemaccel
I think here you actually mean m_mouseaccel1 and m_mouseaccel2, right?

Because of this, I took a look at the list of available commands in the game console and came across this one:
"m_customaccel" = "0" client archive - Custom mouse acceleration:
0: custom accelaration disabled
1: mouse_acceleration
I wonder if, when this value is set to "0", m_customaccel1 and m_customaccel2 are still read and applied by the game engine or not.

Have you found anything about this?

Thanks again

Yes my bad its m_mouseaccel1/2 i edited my post.

m_mouseaccel1/2 set to 0.0 means -noforcemaccel in the engine code.

Code: Select all

static ConVar m_mouseaccel1( "m_mouseaccel1", "0", FCVAR_ARCHIVE, "Windows mouse acceleration initial threshold (2x movement).", true, 0, false, 0.0f );
static ConVar m_mouseaccel2( "m_mouseaccel2", "0", FCVAR_ARCHIVE, "Windows mouse acceleration secondary threshold (4x movement).", true, 0, false, 0.0f );
m_customaccel is just the inbuild acceleration system from csgo. So 0 means its disabled. This has nothing to do with the m_mousespeed or m_mouseaccel commands.

Code: Select all

static ConVar m_customaccel( "m_customaccel", "0", FCVAR_ARCHIVE, "Custom mouse acceleration:"
	"\n0: custom accelaration disabled"
	"\n1: mouse_acceleration = min(m_customaccel_max, pow(raw_mouse_delta, m_customaccel_exponent) * m_customaccel_scale + sensitivity)"
	"\n2: Same as 1, with but x and y sensitivity are scaled by m_pitch and m_yaw respectively."
	"\n3: mouse_acceleration = pow(raw_mouse_delta, m_customaccel_exponent - 1) * sensitivity"
Last edited by holiday on 06 Jun 2023, 08:27, edited 2 times in total.

holiday
Posts: 40
Joined: 19 Feb 2019, 11:55

Re: Csgo and the mouse problem

Post by holiday » 06 Jun 2023, 08:05

Slender wrote:
06 Jun 2023, 07:59
// Mouse Fix

m_customaccel "0"
m_customaccel_exponent "0"
m_customaccel_max "0"
m_customaccel_scale "0"
m_mouseaccel1 "0"
m_mouseaccel2 "0"
m_mousespeed "0"
m_side "0"
m_forward "0"

m_yaw "0.022"
m_pitch "0.022"

c_maxdistance "0"
c_maxpitch "0"
c_maxyaw "0"
c_mindistance "0"
c_minpitch "0"
c_minyaw "0"
c_orthoheight "0"
c_orthowidth "0"
c_thirdpersonshoulder "0"
c_thirdpersonshoulderaimdist "0"
c_thirdpersonshoulderdist "0"
c_thirdpersonshoulderheight "0"
c_thirdpersonshoulderoffset "0"

joy_accelmax "0"
joy_accelscale "0"
joy_accelscalepoly "0"
joy_advanced "0"
joy_advaxisr "0"
joy_advaxisu "0"
joy_advaxisv "0"
joy_advaxisx "0"
joy_advaxisy "0"
joy_advaxisz "0"
joy_autoaimdampen "0"
joy_autoAimDampenMethod "0"
joy_autoaimdampenrange "0"
joy_axisbutton_threshold "0"
joy_cfg_preset "0"
joy_circle_correct "0"
joy_curvepoint_1 "0"
joy_curvepoint_2 "0"
joy_curvepoint_3 "0"
joy_curvepoint_4 "0"
joy_curvepoint_end "0"
joy_diagonalpov "0"
joy_display_input "0"
joy_forwardsensitivity "0"
joy_forwardthreshold "0"
joy_gamma "0"
joy_inverty "0"
joy_lowend "0"
joy_lowend_linear "0"
joy_lowmap "0"
joy_movement_stick "0"
joy_name "0"
joy_pitchsensitivity "0"
joy_pitchthreshold "0"
joy_response_look "0"
joy_response_look_pitch "0"
joy_response_move "0"
joy_sensitive_step0 "0"
joy_sensitive_step1 "0"
joy_sensitive_step2 "0"
joy_sidesensitivity "0"
joy_sidethreshold "0"
joy_wingmanwarrior_centerhack "0"
joy_wingmanwarrior_turnhack "0"
joy_yawsensitivity "0"
joy_yawthreshold "0"
joystick "0"
zoom_sensitivity_ratio_joystick "0"

joystick_force_disabled "1"
joystick_force_disabled_set_from_options "1"
joy_no_accel_jump "1"

xbox_autothrottle "0"
xbox_throttlebias "0"
xbox_throttlespoof "0"

mc_accel_band_size "0"
mc_dead_zone_radius "0"
mc_max_pitchrate "0"
mc_max_yawrate "0"

sk_autoaim_mode "0"

aim_flickstick_circular_deadzone_max "0"
aim_flickstick_circular_deadzone_min "0"
aim_flickstick_crank_sensitivity "0"
aim_flickstick_crank_tightness "0"
aim_flickstick_enabled "0"
aim_flickstick_flick_snap_mode "0"
aim_flickstick_flick_tightness "0"
aim_flickstick_forward_deadzone "0"
aim_flickstick_release_dampen_speed "0"
aim_gyro_acceleration "0"
aim_gyro_base_sensitivity "0"
aim_gyro_circular_deadzone "0"
aim_gyro_conversion_mode "0"
aim_gyro_enable_mode "0"
aim_gyro_high_sense_multiplier "0"
aim_gyro_high_sense_speed "0"
aim_gyro_invert_pitch "0"
aim_gyro_invert_yaw "0"
aim_gyro_low_sense_speed "0"
aim_gyro_pitchyaw_ratio "0"
aim_gyro_precision_speed "0"
aim_gyro_raw "0"
aim_gyro_ray_angle "0"
aim_gyro_siapi_convert_pixels_to_angles "0"
aim_gyro_siapi_sensitivity_setting "0"
aim_gyro_siapi_vertical_scale_setting "0"
aim_gyro_square_deadzone_pitch "0"
aim_gyro_square_deadzone_yaw "0"
aim_gyro_zoom_dampening_level1 "0"
aim_gyro_zoom_dampening_level2 "0"
aim_stick_circular_deadzone_max "0"
aim_stick_circular_deadzone_min "0"
aim_stick_extra_turning_delay "0"
aim_stick_extra_turning_ramp_up_time "0"
aim_stick_extra_yaw "0"
aim_stick_invert_pitch "0"
aim_stick_invert_yaw "0"
aim_stick_rate_pitch "0"
aim_stick_rate_yaw "0"
aim_stick_response_curve "0"
aim_stick_square_deadzone_pitch "0"
aim_stick_square_deadzone_yaw "0"
aim_stick_zoom_dampening_level1 "0"
aim_stick_zoom_dampening_level2 "0"
aim_touchpad_circular_deadzone_min "0"
aim_touchpad_invert_pitch "0"
aim_touchpad_invert_yaw "0"
aim_touchpad_sensitivity_pitch "0"
aim_touchpad_sensitivity_yaw "0"
aim_touchpad_square_deadzone_pitch "0"
aim_touchpad_square_deadzone_yaw "0"
aim_touchpad_zoom_dampening_level1 "0"
aim_touchpad_zoom_dampening_level2 "0"

move_stick_aggression_strength "0"
move_stick_aggressive "0"
move_stick_circular_deadzone_max "0"
move_stick_circular_deadzone_min "0"
move_stick_response_curve "0"
move_stick_square_deadzone_forward "0"
move_stick_square_deadzone_strafe "0"
move_stick_walk_zone "0"
move_touchpad_circular_deadzone_min "0"
move_touchpad_sensitivity_forward "0"
move_touchpad_sensitivity_strafe "0"
move_touchpad_square_deadzone_forward "0"
move_touchpad_square_deadzone_strafe "0"
joystick touchpad controller etc. is not used when playing with the mouse. This commands are placebo except the m_mousespeed 0 which relate to the noforcemspd launch option.

Post Reply