Microsoft introduced "enhanced pointer precision" in Windows XP, which is basically acceleration. When you move your mouse slowly it doesn't move much on the screen, meaning you can be more controlled with small things, like drawing. When you move your mouse fast it speeds it up to full speed so your pointer gets across the screen. This is an all very well idea, until you try to play computer games. When the acceleration just screws with your mind. This is a trick to disable acceleration completely, not just for one game.
For games like Half-Life you can simply put a few switches into the command line to disable functionality:
-noforcemparms -noforcemaccel -noforcemspd
This will apply to any Half-Life based game, such as Team Fortress, and Counter-Strike. There are simular commands for other games based on the Quake engine, it's just a case of finding them all, and applying them all. This then leaves you with all the other hundreds of games that aren't based on the Quake engine.
There exists the simple ability of being able to turn off this enhanced pointer precision in the mouse control panel (My Computer > Control Panel > Mouse > Pointer Options). Of course, in traditional Microsoft style, this fails to do anything across the board, it's just for Windows.
So what is next? Well, there is a registry setting which can be altered. I do not know exactly what this does, but it apparently controls the 'curved' applied the mouse acceleration, in hex, natch. Some bright person did a bit of trial and error and came up with a rather good solution. Now I can't say if it's exactly correct, but it feels a whole lot better than before, so you may want to try it.
What do you is create a registry file (*.reg), and into it you put the following (exactly).
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,00,a0,00,00,00,00,00,00,00,40,
01,00,00,00,00,00,00,80,02,00,00,00,00,00,00,00,05,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,66,a6,02,00,00,00,00,00,cd,4c,
05,00,00,00,00,00,a0,99,0a,00,00,00,00,00,38,33,15,00,00,00,00,00
Then double click this file, and you will be asked if you want to integrate it with the registry, to which you select yes.
If you do not like the new settings then use the below to change it back to normal in the same fashion. Although that said, this is my default, I don't know if it applies across the board. It's certainly annoying, and that's all default means...
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Mouse]
"SmoothMouseXCurve"=hex:00,00,00,00,00,00,00,00,15,6e,00,00,00,00,00,00,00,40, 01,00,00,00,00,00,29,dc,03,00,00,00,00,00,00,00,28,00,00,00,00,00
"SmoothMouseYCurve"=hex:00,00,00,00,00,00,00,00,b8,5e,01,00,00,00,00,00,cd,4c,
05,00,00,00,00,00,cd,4c,18,00,00,00,00,00,00,00,38,02,00,00,00,00
I hope this helps anybody who is going mad over this.