From 9a7b6f6c61aad48e654c915077a5954957477a7a Mon Sep 17 00:00:00 2001 From: Tianhao Wang Date: Wed, 17 Apr 2024 21:08:02 +0200 Subject: mask keyboard interrupt while polling key --- src/machine/keyctrl.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/machine') diff --git a/src/machine/keyctrl.rs b/src/machine/keyctrl.rs index 349f4ff..dc3402d 100644 --- a/src/machine/keyctrl.rs +++ b/src/machine/keyctrl.rs @@ -186,6 +186,10 @@ impl KeyboardController { // this should be called by the interrupt handler prologue pub fn fetch_key(&mut self) { + // mask keyboard interrupts when polling. + let was_masked = Self::is_int_masked(); + if !was_masked {Self::disable_keyboard_int();} + // I'd like to see if this panics.... let sr = self.read_status().unwrap(); // ignore mouse events @@ -193,6 +197,7 @@ impl KeyboardController { return; } self.update_state(self.dport.inb()); + if !was_masked {Self::enable_keyboard_int();} } // this should be called by the "epilogue" -- cgit v1.2.3-70-g09d2