Handles mouse movements and clicks.
More...
#include <device/mouse.h>
|
| 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.
|
|
| Gate () |
| Constructor.
|
|
virtual | ~Gate () |
| Destructor.
|
|
bool | is_queued () const |
| Status about the epilogue.
|
|
void | set_queued (bool val) |
| Set epilogue status.
|
|
|
const unsigned | MAX_X |
| Maximum X position of the mouse.
|
|
const unsigned | MAX_Y |
| Maximum Y position of the mouse.
|
|
|
void | updatePos () |
| Helper to update current position from state.
|
|
|
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.
|
|
Handles mouse movements and clicks.
This class ensures correct initialization of the mouse and, above all, its interrupt handling.
◆ Mouse()
Mouse::Mouse |
( |
unsigned |
max_x, |
|
|
unsigned |
max_y |
|
) |
| |
|
inlineexplicit |
Constructor.
Defines a virtual window for the mouse.
- Parameters
-
max_x | Maximum X position (excluding) for the mouse |
max_y | Maximum Y position (excluding) for the mouse |
◆ 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
-
x | Reference to variable for the X position (0 ≤ x < MAX_X) of the mouse |
y | Reference to variable for the Y position (0 ≤ y < MAX_Y) of the mouse |
◆ isPressed()
Check if a given mouse button is pressed.
- Parameters
-
btn | Button to check for press |
- Returns
true
if button is currently pressed
◆ 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()
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()
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.
◆ state
◆ previous
Previous state (to detect button press)
Current X position of the mouse.
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: