// Flush output buffer while (inb(0x64) & 1) inb(0x60);
For brevity, a full bootable example is beyond scope, but a working driver stub in C for a hobby OS is available on GitHub . It includes:
else if (mouse_cycle == 1) mouse_packet[1] = data; mouse_cycle = 2; else if (mouse_cycle == 2) mouse_packet[2] = data; mouse_cycle = 0;
// Flush output buffer while (inb(0x64) & 1) inb(0x60);
For brevity, a full bootable example is beyond scope, but a working driver stub in C for a hobby OS is available on GitHub . It includes: ps/2 compatible mouse driver
else if (mouse_cycle == 1) mouse_packet[1] = data; mouse_cycle = 2; else if (mouse_cycle == 2) mouse_packet[2] = data; mouse_cycle = 0; // Flush output buffer while (inb(0x64) & 1)