PatchworkOS
Loading...
Searching...
No Matches
Mouse Abstraction

Mouse driver abstraction. More...

Data Structures

struct  mouse_t
 Mouse structure. More...
 

Macros

#define MOUSE_MAX_EVENT   32
 Maximum number of queued mouse events.
 

Functions

mouse_tmouse_new (const char *name)
 Allocate and initialize a mouse structure.
 
void mouse_free (mouse_t *mouse)
 Free and deinitialize a mouse structure.
 
void mouse_push (mouse_t *mouse, mouse_buttons_t buttons, int64_t deltaX, int64_t deltaY)
 Push a new mouse event to the mouse event queue.
 

Detailed Description

Mouse driver abstraction.

Mouse devices are exposed as /dev/mouse/[id] directories, containing the following files:

Macro Definition Documentation

◆ MOUSE_MAX_EVENT

#define MOUSE_MAX_EVENT   32

Maximum number of queued mouse events.

Definition at line 24 of file mouse.h.

Function Documentation

◆ mouse_free()

void mouse_free ( mouse_t mouse)

Free and deinitialize a mouse structure.

Removes the mouse from /dev/mouse/[id].

Parameters
mousePointer to the mouse structure to free.

Definition at line 141 of file mouse.c.

References DEREF, mouse_t::dir, and mouse.

Referenced by ps2_mouse_init().

◆ mouse_new()

mouse_t * mouse_new ( const char *  name)

Allocate and initialize a mouse structure.

Will make the mouse available under /dev/mouse/[id].

Parameters
nameDriver specified name of the mouse device.
Returns
On success, the new mouse structure. On failure, NULL and errno is set.

Definition at line 81 of file mouse.c.

References atomic_fetch_add, calloc(), DEREF, mouse_t::dir, dirInodeOps, EINVAL, errno, mouse_t::eventsFile, eventsOps, free(), mouse_t::lock, lock_init(), MAX_NAME, mouse, mouseDir, mouse_t::name, mouse_t::nameFile, nameOps, newId, NULL, snprintf(), strncpy(), sysfs_dir_new(), sysfs_file_new(), wait_queue_deinit(), wait_queue_init(), mouse_t::waitQueue, and mouse_t::writeIndex.

Referenced by ps2_mouse_init().

◆ mouse_push()

void mouse_push ( mouse_t mouse,
mouse_buttons_t  buttons,
int64_t  deltaX,
int64_t  deltaY 
)

Push a new mouse event to the mouse event queue.

The event will be made available to user space by reading the stream file.

Parameters
mousePointer to the mouse structure.
buttonsThe button state.
deltaXThe change in X position.
deltaYThe change in Y position.

Definition at line 147 of file mouse.c.

References EOK, mouse_t::events, mouse_t::lock, LOCK_SCOPE, mouse, MOUSE_MAX_EVENT, mouse_event_t::time, timer_uptime(), WAIT_ALL, wait_unblock(), mouse_t::waitQueue, and mouse_t::writeIndex.

Referenced by ps2_mouse_handle_packet().