|
PatchworkOS
|
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_t * | mouse_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. | |
Mouse driver abstraction.
Mouse devices are exposed as /dev/mouse/[id] directories, containing the following files:
events: A read-only pollable file that can be read to receive mouse events as mouse_event_t structs.name: A read-only file that contains the mouse driver specified name (e.g. "PS/2") | #define MOUSE_MAX_EVENT 32 |
| void mouse_free | ( | mouse_t * | mouse | ) |
Free and deinitialize a mouse structure.
Removes the mouse from /dev/mouse/[id].
| mouse | Pointer 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_t * mouse_new | ( | const char * | name | ) |
Allocate and initialize a mouse structure.
Will make the mouse available under /dev/mouse/[id].
| name | Driver specified name of the mouse device. |
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().
| 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.
| mouse | Pointer to the mouse structure. |
| buttons | The button state. |
| deltaX | The change in X position. |
| deltaY | The 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().