From 2352033b481aad8c552b9f9a184769b5f2bd8687 Mon Sep 17 00:00:00 2001 From: TomW Date: Mon, 19 Oct 2015 18:31:12 +0100 Subject: [PATCH] Implemented PS/2 mouse Status Request command. --- src/mouse_ps2.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/mouse_ps2.c b/src/mouse_ps2.c index dd64b90..a0786c4 100644 --- a/src/mouse_ps2.c +++ b/src/mouse_ps2.c @@ -22,6 +22,7 @@ static struct uint8_t flags; uint8_t resolution; + uint8_t sample_rate; uint8_t command; @@ -41,6 +42,7 @@ void mouse_ps2_write(uint8_t val) break; case 0xf3: /*Set sample rate*/ + mouse_ps2.sample_rate = val; keyboard_at_adddata_mouse(0xfa); break; @@ -50,6 +52,8 @@ void mouse_ps2_write(uint8_t val) } else { + uint8_t temp; + mouse_ps2.command = val; switch (mouse_ps2.command) { @@ -67,7 +71,21 @@ void mouse_ps2_write(uint8_t val) mouse_ps2.cd = 1; keyboard_at_adddata_mouse(0xfa); break; - + + case 0xe9: /*Status request*/ + keyboard_at_adddata_mouse(0xfa); + temp = mouse_ps2.flags; + if (mouse_buttons & 1) + temp |= 1; + if (mouse_buttons & 2) + temp |= 2; + if (mouse_buttons & 4) + temp |= 3; + keyboard_at_adddata_mouse(temp); + keyboard_at_adddata_mouse(mouse_ps2.resolution); + keyboard_at_adddata_mouse(mouse_ps2.sample_rate); + break; + case 0xf2: /*Read ID*/ keyboard_at_adddata_mouse(0xfa); keyboard_at_adddata_mouse(0x00);