
However, every other key press functions just fine, only receiving a single interrupt for press and release:

I'm using bochs as my emulator, and here is my code for interrupt handling:
Code: Select all
isr_stub%+%1: ; code from OSDev wiki
pushad
cld
push dword %1
call exception_handler
pop eax
popad
iret
Code: Select all
void exception_handler(unsigned int i)
{
if (i <= 31) {
printf("Exception: %u\n", i); // TODO
__asm__ volatile ("cli; hlt");
}
if (i == PIC_KEYB) {
unsigned char in = inb(0x60);
// I have a keyboard driver in the works but downgraded to printing the scancodes to diagnose this problem
printf("scancode: %x\n", in);
PIC_sendEOI(1);
}
}