Jon you're right, I left out one `
This is the mapping: vnoremap <C-x> <Esc> `.``gvP``P
<Esc> leaves visual mode, `. moves to the last edit point (call it point A), `` moves back to where we started, gv goes back to visual mode, P pastes the last deleted text over the visual selection. So far it's pretty much the same as P, except we have a mark for point A in place.
`` will now move back to where we last jumped from, that is, to point A from above. Lastly, P will now put the contents that were overwritten by the first P, which completes the swap.
This only works if putting in visual mode does an exchange, which is the difference between Vim and ViEmu in this regard.
The exchange behaviour is useful in a number of other ways too, so it would be great to get it implemented if it's not too hard.
If you're trying this out, there is one case where it won't work. If you try and swap a line for the next line, you'll delete the mark for point A and the command will fail. However, for that use case a plain ddp is of course easier.
Now, for your questions of visual mode put (or exchange, as might be a better name) implementation:
* The register specifies where you paste from.
* Regardless of which register you pasted from, the overwritten text is put into the default register, not into the specified register.
* In Vim, an undo after a visual mode paste restores the text, but not the registers.