XenevaOS
Loading...
Searching...
No Matches
devinput.h
Go to the documentation of this file.
1
30#ifndef __DEV_INPUT_H__
31#define __DEV_INPUT_H__
32
33#include <stdint.h>
34#include <aurora.h>
35
36struct __VFS_NODE__;
37typedef struct __VFS_NODE__ AuVFSNode;
38
39#define LEFT_CLICK 0x01
40#define RIGHT_CLICK 0x02
41#define MIDDLE_CLICK 0x04
42#define MOUSE_SCROLL_UP 0x05
43#define MOUSE_SCROLL_DOWN 0x06
44
45#define AU_INPUT_MOUSE 1
46#define AU_INPUT_KEYBOARD 2
47#define AU_INPUT_TOUCH 3
48
49#define MOUSE_IOCODE_SETPOS 10
50#define INPUT_RING_IOCODE_GET_STATS 11
51
52
53#define NUM_MOUSE_PACKETS 20
54#define NUM_KEYBOARD_PACKETS 512
55#define NUM_INPUT_RING_PACKETS 256
56
57#ifdef ARCH_X64
58#pragma pack(push,1)
59#endif
70
71/* Lock-free SPSC stream used by latency-sensitive consumers such as DeodhaiXR.
72 * Producers publish complete AuInputMessage records; readers drain without
73 * blocking. Indices are owned by one side each and are synchronized with the
74 * AArch64 data barrier in the kernel implementation. --axiss */
81
88
89#ifdef ARCH_X64
90#pragma pack(pop)
91#endif
92
93/*
94* AuDevInputInitialise -- mounts to pipe
95* for hid devices, @mice and @kybrd
96*/
97extern void AuDevInputInitialise();
98
99/*
100* AuDevReadMice -- reads packets from pipe
101* to buffer
102* @para, inputmsg -- Pointer to the buffer
103*/
105
106/*
107* AuDevWriteMice -- writes a packet to pipe
108* @param outmsg -- packet to write
109*/
111
112/*
113* AuDevReadkybrd -- reads packets from pipe
114* to buffer
115* @para, inputmsg -- Pointer to the buffer
116*/
118
119/*
120* AuDevReadConsoleKybrd -- reads packets from console-specific keyboard queue
121* @para, inputmsg -- Pointer to the buffer
122*/
124
125/*
126* AuDevWritekybrd -- writes a packet to pipe
127* @param outmsg -- packet to write
128*/
130
132 uint64_t* buffer, uint32_t length);
133
134#endif
#define AU_EXTERN
Definition aurora.h:54
#define AU_EXPORT
Definition aurora.h:40
int int32_t
Definition acefiex.h:160
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
AU_EXTERN AU_EXPORT void AuDevReadKybrd(AuInputMessage *inputmsg)
Definition devinput.cpp:74
AU_EXTERN AU_EXPORT void AuDevWriteMice(AuInputMessage *outmsg)
Definition devinput.cpp:63
AU_EXTERN AU_EXPORT void AuDevWriteKybrd(AuInputMessage *outmsg)
Definition devinput.cpp:85
AU_EXTERN AU_EXPORT void AuDevReadConsoleKybrd(AuInputMessage *inputmsg)
Definition devinput.c:118
void AuDevInputInitialise()
Definition devinput.cpp:207
struct _au_input_ring_ AuInputRing
AU_EXTERN AU_EXPORT void AuDevReadMice(AuInputMessage *inputmsg)
Definition devinput.cpp:52
AU_EXTERN AU_EXPORT size_t AuDevInputRingRead(AuVFSNode *fs, AuVFSNode *file, uint64_t *buffer, uint32_t length)
Definition devinput.c:155
struct _au_input_ring_stats_ AuInputRingStats
#define NUM_INPUT_RING_PACKETS
Definition devinput.h:55
struct _au_input_msg_ AuInputMessage
Definition vfs.h:129
Definition devinput.h:60
uint32_t code
Definition devinput.h:65
uint32_t code3
Definition devinput.h:67
int32_t xpos
Definition devinput.h:62
int32_t ypos
Definition devinput.h:63
uint32_t code4
Definition devinput.h:68
uint32_t code1
Definition devinput.h:66
uint8_t type
Definition devinput.h:61
uint8_t button_state
Definition devinput.h:64
Definition devinput.h:75
volatile uint32_t read
Definition devinput.h:76
volatile uint32_t dropped
Definition devinput.h:78
volatile uint32_t write
Definition devinput.h:77
AuInputMessage packets[NUM_INPUT_RING_PACKETS]
Definition devinput.h:79
Definition devinput.h:82
uint32_t keyboard_dropped
Definition devinput.h:84
uint32_t mouse_dropped
Definition devinput.h:83
uint32_t keyboard_pending
Definition devinput.h:86
uint32_t mouse_pending
Definition devinput.h:85
Definition fs.h:142