The Pedigree Project 0.1
linux-input-abi.h
1/* Copyright (c) 2026, Pedigree Developers. */
2#ifndef LINUX_INPUT_ABI_H
3#define LINUX_INPUT_ABI_H
4
5#include <stdint.h>
6
7enum LinuxInputEventType : uint16_t {
8 LinuxEvSyn = 0,
9 LinuxEvKey = 1,
10 LinuxEvRelative = 2,
11 LinuxEvAbsolute = 3,
12};
13
14enum LinuxInputRelativeAxis : uint16_t {
15 LinuxRelX = 0,
16 LinuxRelY = 1,
17 LinuxRelWheel = 8,
18};
19
20enum LinuxInputAbsoluteAxis : uint16_t {
21 LinuxAbsX = 0,
22 LinuxAbsY = 1,
23};
24
25enum LinuxInputButton : uint16_t {
26 LinuxBtnLeft = 0x110,
27 LinuxBtnRight = 0x111,
28 LinuxBtnMiddle = 0x112,
29 LinuxBtnSide = 0x113,
30 LinuxBtnExtra = 0x114,
31};
32
34 int64_t seconds;
35 int64_t microseconds;
36 uint16_t type;
37 uint16_t code;
38 int32_t value;
39};
40
42 uint16_t busType;
43 uint16_t vendor;
44 uint16_t product;
45 uint16_t version;
46};
47
49 int32_t value;
50 int32_t minimum;
51 int32_t maximum;
52 int32_t fuzz;
53 int32_t flat;
54 int32_t resolution;
55};
56
57static_assert(sizeof(LinuxInputEvent) == 24, "Linux input event ABI changed");
58static_assert(sizeof(LinuxInputId) == 8, "Linux input identifier ABI changed");
59static_assert(sizeof(LinuxInputAbsInfo) == 24, "Linux absolute axis ABI changed");
60
61#endif