Last time I was using Ubuntu+Unity as my main desktop (11.xx), I used `xmodmap` to swap my keys, and found that every so often it'd be reverted. Have you experienced similar problems with this technique?
(Of course then I switched to xfce on my laptop, which seems to run its own xmodmap command after its run startup scripts or something which overrides them, which is kinda annoying, haven't found a nice way to get around that).
(Apologies if me saying 'runs at startup' was misleading -- obviously if I had tried to do it from a script that ran on boot, before X starts (rather than on session start) it could never have worked in the first place!).
Edit: now I've started thinking about it again, I've changed the autostart script to call another which sleeps for 10s before xmodmap, which seems to have fixed the problem.