You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This crate provides a basic interface for interacting with a ps2 mouse.
Basic Example
use ps2_mouse::{Mouse,MouseState};use spinning_top::Spinlock;use x86_64::instructions::port::PortReadOnly;pubstaticMOUSE:Lazy<Spinlock<Mouse>> = Lazy::new(|| Spinlock::new(Mouse::new()));// Initialize the mouse and set the on complete event.fninit_mouse(){MOUSE.lock().init().unwrap();MOUSE.lock().set_on_complete(on_complete);}// This will be fired when a packet is finished being processed.fnon_complete(mouse_state:MouseState){println!("{:?}", mouse_state);}// An example interrupt based on https://os.phil-opp.com/hardware-interrupts/. The ps2 mouse is configured to fire// interrupts at PIC offset 12.extern"x86-interrupt"fnmouse_interrupt_handler(_stack_frame:&mutInterruptStackFrame){letmut port = PortReadOnly::new(0x60);let packet = unsafe{ port.read()};MOUSE.lock().process_packet(packet);unsafe{PICS.lock().notify_end_of_interrupt(InterruptIndex::Mouse.into());}}