you need to manually open the file for the keymap that you use and edit it. For the change to be permanent you have to edit the one that you actually use; however, for testing you will copy the one that you use to another file name and test it out so if anything gets ****ed you only have to reboot.
I used to use xmodmap, but I got so used to having my caps mapped to an additional control that whenever I was in the console or logged in remotely through ssh I constantly would hit my non-existent modifier.
all the system keymaps are in /usr/share/keymaps/
if you use qwerty it will probably be /usr/share/keymaps/i386/qwerty/us.kmap.gz
I currently use dvorak, but for simplicity's sake we'll stick with qwerty...
make a copy of your keymap. For example,
cd /usr/share/keymaps/i386/qwerty/
cp us.kmap.gz testing.kmap.gz
Now you can edit your keymap file. Please note the gz extension is a gzipped archive. Some editors can read this extension. notably EMACS, but with most you will have to unzip the archive, edit it, and the rezip it. It's easiest to just use emacs here because you will probably have to fiddle with the results a bit.
Once you have edited the file, save it.
To test out the new keymap run
loadkeys /usr/share/keymaps/i386/qwerty/testing.kmap.gz
once you get it how you like, then set it as your defaust keymap
PS
there are many specialized layouts included that have multiple keys mapped to a single keycode, brovse through some of them, the syntax is quite intuitive...