I have a suggestion, but you might not like it...
Remove GRUB and use Lilo. Set Lilo on the beginning of the Linux partition, rather than the MBR. Let WinXP have the MBR and put an entry into it's bootloader for your linux partition. You'll have to store a copy of the 512 byte boot record on the linux partition, but you can peel it off into a file using dd under linux. Then you can boot with WinXP, the boot screen will give an option to boot into windows or linux, and select linux. I had to do it this way when I set up duel boot with WinXP a year or so ago.
Also... my laptop has issues with the Legacy USB. If I enable it, Lnx-bbc will let me type in the boot parameters, but it loses the keyboard about halfway through the boot process. If it's disabled, it will work just fine. It's the Legacy USB that causes the most problems.
Your other option is to get a PS/2 keyboard and use that instead.