Config tweaking only offers solutions within the existing state of an engine; it is really all about the question: what can we do with what we have, in order to achieve what suits our taste better? I am afraid crouching, is a function that would require grand external fix - a mod. Every mod, if aimed to be well done, is a ton of work, especially minding the hazard of breaching the game integrity - compatibility issues.
It is definitely possible to slow the protagonist down with certain c-var alterations, although since I do know little of mapping at the moment, I am not certain how do you apply those config tweaks dynamically on a map setting. However, since it is possible to alter a difficulty level through the touch of a selected entity in-game - albeit, a difficulty level tweak, may require a map restart, while a common c-var of another kind, unnecessarily - I think similarly one could manipulate the movement-related c-vars, such as:
Name: sv_friction
Default: 4
Description: The friction value for the player's movement.
Note: You can use this command to lower the amount of friction on the map for the player's movement. If you set this variable to 0 you will turn the map into an ice and the player won't be able to stop. If you set this variable to a negative value, the player will gain speed when he moves. If you increase this variable you can really slow the player down.
The drawback, is that “sv_friction”, will not arbitrarily limit the ability to run, therefore the protagonist - paradoxically - will still be able to move a little bit faster on demand, even though the environment, should not allow him to do so effectively, I imagine.
That is why, the good old “sv_maxspeed”, could actually do the job as well; the limiting of which - if gone down to the level of walking speed only or even below that - would restrict the total speed of protagonist movement, regardless whether it refers to walking or running.
Name: sv_maxspeed
Type: Register
Default: 320
Description: The maximum speed that the player can achieve through running.
Note: This is the maximum running speed for the player. The player can however exceed this speed when he's falling or when he's being thrown by explosions. It is also possible to exceed this speed by running next to a wall and use keys bound to the "+moveleft" or "+moveright" commands in order to achieve a gliding effect with the wall, thus speeding up the player's velocity. There is also a way to increase the player's speed by using the above mentioned keys in quick succession when running on flat ground.
In order to control the jumping ability of a protagonist, you could tweak the gravity value:
Name: sv_gravity
Type: Register
Default: 800
Description: The amount of gravity on the level.
Note: You can have a lot of fun with this variable. If you set it to 0 everybody will become weight less and will start drifting throughout the level, the grenades will also bounce in funny ways. If you set this variable to a negative value, the players will look like hot air balloons and will start rising towards the sky.
The gravity tweak, may arguably not give sufficient results, if to think of actually increasing it, rather than decreasing. Therefore, in case you are using some arbitrary keybindings, defined in a “quake.rc” or an “autoexec.cfg” file of a modpack, you may as well simply unbind the “+jump” ability, but then, you would need to know what key it was bound to specifically, in order to flawlessly restore the ability later.
From what I know, there is no option to cache or save a state of config through the engine, so that to restore the config on demand afterwards. One could, yet, use various config sheets throughout the map, running “exec” command to initiate them on a trigger, maybe. It does not solve the problem of interacting with custom player setup, especially in terms of keybindings, anyway.
I believe a modder, may request to have certain custom, mod-specific keybindings respected, but it should come with a transparent warning, that the mod uses custom config and keybindings, which could - in some cases - overwrite the original gamestate; which is why, a backup or a certain way of mod installation, is suggested, placing the mod folder parallel to an ‘id1’ folder, rather than within it.
That is, at least, how I understand that it works.
On a footnote, what applies to the “+jump” ability, applies also to the “+speed” one, meaning you could still use the “sv_friction” config with the “+speed” function unbound - making sure, though, that the “cl_alwaysrun”, is “0”.
Also, it just came to my mind that one could use the “sv_friction”, while having simultaneously altered the “cl_movespeedkey” to “1”, in order to simply nullify the running mode multiplier; which the latter one, tends to be at “2” on default. This way, the “cl_alwaysrun”, is not an issue. The problem with “cl_movespeedkey”, however, is that it does not affect the “cl_sidespeed” - the strafing movement speed, which at default value, is higher than the “cl_forwardspeed” and the “cl_backspeed” line movement, at their default. On the other hand, restricting the strafe movement too much, may handicap any ‘Quake’ combat experience.