I'd suggest a microprocessor with built-in USB, such as the PIC 18F2455 (or one of its variants). The USB interface to your PC is very simple and ends up looking like an RS-232 serial port to the PC. The driver is probably already in your OS if you're using recent Windows.
The way I interpret the data sheet, I would connect Q1 - Q4 to digital inputs on the microcontroller. Then connect the DSO (pin 15) to a digital input with an interrupt-on-change and process when it goes high. When you get the interrupt, read the Q1 - Q4 data, do whatever pre-processing you may want and send it out the USB port.
I can't definitively tell by the data sheet if the KT3170 output would change if you pressed a second key while the first one is still pressed, but I'd guess that the fist output would stay latched unless you fully released the first key prior to the second press. You might have to just try and see.
If you press one key and then quickly press the next, you should be okay and get the second keypress as the maximum interdigit pause time is 40 ms. As long as you aren't faster than 40 ms between presses, you'll get the second press.
I don't know what your transmit latency will be. You'll have to look for that in the transmitter/receiver pair documentation.
To understand all of this stuff, take a look at "Table 18-1. Equations for Calculating Baud Rate Register Setting" from the datasheet on page 189. The equation you suggested you found in some example code
UBRR1 = (F_CPU / 4 / baud - 1) / 2;
... is kind of close to the equation for Asynchronous Double Speed mode (U2Xn = 1)... but not exactly.
If you know the baud rate and crystal speed you intend to operate at, I would just pull the register settings out of "Table 18-9. Examples of UBRRn Settings for Commonly Used Oscillator Frequencies" on datasheet page 210 and call it a day. The only reason to use any of those equations is if you want to be able to change the settings dynamically at run-time for some reason (or if you want to do thins "elegantly" in software, I prefer compile time certainty for something like this to remove doubt).
For the settings you outlined in your question, that would be:
UCSR1A = 0; // importantly U2X1 = 0
UCSR1B = 0; // interrupts enabled in here if you like
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); // no parity, 8 data bits, 1 stop bit
UCSR1D = 0; // no cts, no rts
UBRR1 = 103; // 9600 baud @ 16MHz XTAL with U2X1 = 0
As a side note, while the hardware does store the baud rate register (UBBRn) as two 8-bit registers, in software there is no need to treat it as such. You can access the High and Low registers (e.g. UBRR1H and UBRR1L respectively) but you can also just
assign to (or read from) the named "combined" register as though it was a 16-bit register.
UBRR1 = 0x0343;
is functionally equivalent to UBRR1H = 0x03; UBRR1L = 0x43;
Best Answer
Section 21, "USB controller", subsection 21.3, "Typical Application Implementation", of the datasheet shows methods of connecting the device along with associated components to USB in various bus- or self-powered configurations.