@Adam I've local-paired doing TDD in Java (ugh) extensively and remote-paired (in Python and APL) occasionally. Local pairing usually has the devs alternating use of the keyboard and mouse. (A writes a test, B makes it pass, B writes a test, A makes it pass). It can be quite a pleasant and productive experience.
Remote paring *can* work but IMO it always feels painful however it's done.