The x86 architecture is awesome. If you get an IRQ from the keyboard, you have to acknowledge it to PIC1. But if you get an IRQ from the mouse, you have to acknowledge it to PIC1 and PIC2. And in both situations, you are reading the data from the same I/O.
I have wasted too much time wondering why I have data in 8042 buffer from the mouse, but IRQ wasn't firing more than once...