StuBS
Mouse Class Reference

Handles mouse movements and clicks. More...

#include <device/mouse.h>

Inheritance diagram for Mouse:
[legend]
Collaboration diagram for Mouse:
[legend]

Public Member Functions

 Mouse (unsigned max_x, unsigned max_y)
 Constructor.
 
void getPos (unsigned &x, unsigned &y) const
 Retrieve the current mouse position.
 
bool isPressed (MouseButton btn) const
 Check if a given mouse button is pressed.
 
void plugin ()
 Initialization of the mouse.
 
bool prologue () override
 Prologue of mouse interrupts.
 
void epilogue () override
 Epilogue of mouse interrupts.
 
- Public Member Functions inherited from Gate
 Gate ()
 Constructor.
 
virtual ~Gate ()
 Destructor.
 
bool is_queued () const
 Status about the epilogue.
 
void set_queued (bool val)
 Set epilogue status.
 

Public Attributes

const unsigned MAX_X
 Maximum X position of the mouse.
 
const unsigned MAX_Y
 Maximum Y position of the mouse.
 

Private Member Functions

void updatePos ()
 Helper to update current position from state.
 

Private Attributes

Pointer state
 Last state of the mouse.
 
Pointer previous
 Previous state (to detect button press)
 
unsigned x
 Current X position of the mouse.
 
unsigned y
 Current Y position of the mouse.
 

Additional Inherited Members

- Protected Member Functions inherited from Queue< T, ContainerType >::Node
 Node ()
 

Detailed Description

Handles mouse movements and clicks.

This class ensures correct initialization of the mouse and, above all, its interrupt handling.

Constructor & Destructor Documentation

◆ Mouse()

Mouse::Mouse ( unsigned  max_x,
unsigned  max_y 
)
inlineexplicit

Constructor.

Defines a virtual window for the mouse.

Parameters
max_xMaximum X position (excluding) for the mouse
max_yMaximum Y position (excluding) for the mouse

Member Function Documentation

◆ updatePos()

void Mouse::updatePos ( )
inlineprivate

Helper to update current position from state.

◆ getPos()

void Mouse::getPos ( unsigned &  x,
unsigned &  y 
) const
inline

Retrieve the current mouse position.

Parameters
xReference to variable for the X position (0 ≤ x < MAX_X) of the mouse
yReference to variable for the Y position (0 ≤ y < MAX_Y) of the mouse

◆ isPressed()

bool Mouse::isPressed ( MouseButton  btn) const
inline

Check if a given mouse button is pressed.

Parameters
btnButton to check for press
Returns
true if button is currently pressed

◆ plugin()

void Mouse::plugin ( )

Initialization of the mouse.

Initialization of the mouse and activation of the specific interrupt handling: The object will register itself at the Plugbox and configure the IOAPIC to receive the corresponding interrupts.

Note
The mouse interrupts should be configured as level triggered.

◆ prologue()

bool Mouse::prologue ( )
overridevirtual

Prologue of mouse interrupts.

This method directly handles interrupts caused by the mouse. The position of the mouse and the pressed buttons are calculated and stored in variables, which are used by the epilogue to draw the cursor on the screen.

Optional:
Implement method

Implements Gate.

◆ epilogue()

void Mouse::epilogue ( )
overridevirtual

Epilogue of mouse interrupts.

The current position of the cursor is drawn on the screen using TextMode::showMouse(). Press and release events of the buttons are printed to the debug output.

Reimplemented from Gate.

Member Data Documentation

◆ state

Pointer Mouse::state
private

Last state of the mouse.

◆ previous

Pointer Mouse::previous
private

Previous state (to detect button press)

◆ x

unsigned Mouse::x
private

Current X position of the mouse.

◆ y

unsigned Mouse::y
private

Current Y position of the mouse.

◆ MAX_X

const unsigned Mouse::MAX_X

Maximum X position of the mouse.

◆ MAX_Y

const unsigned Mouse::MAX_Y

Maximum Y position of the mouse.


The documentation for this class was generated from the following files: