1 /*
2  * Copyright 2023 Google LLC
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Input event codes, for codes available in Linux, use the same values as in
7  * https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/input-event-codes.h
8  */
9 
10 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INPUT_INPUT_EVENT_CODES_H_
11 #define ZEPHYR_INCLUDE_DT_BINDINGS_INPUT_INPUT_EVENT_CODES_H_
12 
13 /**
14  * @defgroup input_events Input Event Definitions
15  * @ingroup input_interface
16  * @{
17  */
18 
19 
20 /**
21  * @name Input event types.
22  * @anchor INPUT_EV_CODES
23  * @{
24  */
25 #define INPUT_EV_KEY 0x01               /**< Key event */
26 #define INPUT_EV_REL 0x02               /**< Relative coordinate event */
27 #define INPUT_EV_ABS 0x03               /**< Absolute coordinate event */
28 #define INPUT_EV_MSC 0x04               /**< Miscellaneous event */
29 #define INPUT_EV_VENDOR_START 0xf0      /**< Vendor specific event start */
30 #define INPUT_EV_VENDOR_STOP 0xff       /**< Vendor specific event stop */
31 /** @} */
32 
33 /**
34  * @name Input event KEY codes.
35  * @anchor INPUT_KEY_CODES
36  * @{
37  */
38 #define INPUT_KEY_0 11                  /**< 0 Key */
39 #define INPUT_KEY_1 2                   /**< 1 Key */
40 #define INPUT_KEY_2 3                   /**< 2 Key */
41 #define INPUT_KEY_3 4                   /**< 3 Key */
42 #define INPUT_KEY_4 5                   /**< 4 Key */
43 #define INPUT_KEY_5 6                   /**< 5 Key */
44 #define INPUT_KEY_6 7                   /**< 6 Key */
45 #define INPUT_KEY_7 8                   /**< 7 Key */
46 #define INPUT_KEY_8 9                   /**< 8 Key */
47 #define INPUT_KEY_9 10                  /**< 9 Key */
48 #define INPUT_KEY_A 30                  /**< A Key */
49 #define INPUT_KEY_APOSTROPHE 40         /**< Apostrophe Key */
50 #define INPUT_KEY_B 48                  /**< B Key */
51 #define INPUT_KEY_BACK 158              /**< Back Key */
52 #define INPUT_KEY_BACKSLASH 43          /**< Backslash Key */
53 #define INPUT_KEY_BACKSPACE 14          /**< Backspace Key */
54 #define INPUT_KEY_BLUETOOTH 237         /**< Bluetooth Key */
55 #define INPUT_KEY_BRIGHTNESSDOWN 224    /**< Brightness Up Key */
56 #define INPUT_KEY_BRIGHTNESSUP 225      /**< Brightneess Down Key */
57 #define INPUT_KEY_C 46                  /**< C Key */
58 #define INPUT_KEY_CAPSLOCK 58           /**< Caps Lock Key */
59 #define INPUT_KEY_COFFEE 152            /**< Screen Saver Key */
60 #define INPUT_KEY_COMMA 51              /**< Comma Key */
61 #define INPUT_KEY_COMPOSE 127           /**< Compose Key */
62 #define INPUT_KEY_CONNECT 218           /**< Connect Key */
63 #define INPUT_KEY_D 32                  /**< D Key */
64 #define INPUT_KEY_DELETE 111            /**< Delete Key */
65 #define INPUT_KEY_DOT 52                /**< Dot Key */
66 #define INPUT_KEY_DOWN 108              /**< Down Key */
67 #define INPUT_KEY_E 18                  /**< E Key */
68 #define INPUT_KEY_END 107               /**< End Key */
69 #define INPUT_KEY_ENTER 28              /**< Enter Key */
70 #define INPUT_KEY_EQUAL 13              /**< Equal Key */
71 #define INPUT_KEY_ESC 1                 /**< Escape Key */
72 #define INPUT_KEY_F 33                  /**< F Key */
73 #define INPUT_KEY_F1 59                 /**< F1 Key */
74 #define INPUT_KEY_F10 68                /**< F10 Key */
75 #define INPUT_KEY_F11 87                /**< F11 Key */
76 #define INPUT_KEY_F12 88                /**< F12 Key */
77 #define INPUT_KEY_F13 183               /**< F13 Key */
78 #define INPUT_KEY_F14 184               /**< F14 Key */
79 #define INPUT_KEY_F15 185               /**< F15 Key */
80 #define INPUT_KEY_F16 186               /**< F16 Key */
81 #define INPUT_KEY_F17 187               /**< F17 Key */
82 #define INPUT_KEY_F18 188               /**< F18 Key */
83 #define INPUT_KEY_F19 189               /**< F19 Key */
84 #define INPUT_KEY_F2 60                 /**< F2 Key */
85 #define INPUT_KEY_F20 190               /**< F20 Key */
86 #define INPUT_KEY_F21 191               /**< F21 Key */
87 #define INPUT_KEY_F22 192               /**< F22 Key */
88 #define INPUT_KEY_F23 193               /**< F23 Key */
89 #define INPUT_KEY_F24 194               /**< F24 Key */
90 #define INPUT_KEY_F3 61                 /**< F3 Key */
91 #define INPUT_KEY_F4 62                 /**< F4 Key */
92 #define INPUT_KEY_F5 63                 /**< F5 Key */
93 #define INPUT_KEY_F6 64                 /**< F6 Key */
94 #define INPUT_KEY_F7 65                 /**< F7 Key */
95 #define INPUT_KEY_F8 66                 /**< F8 Key */
96 #define INPUT_KEY_F9 67                 /**< F9 Key */
97 #define INPUT_KEY_FASTFORWARD 208       /**< Fast Forward Key */
98 #define INPUT_KEY_FORWARD 159           /**< Forward Key */
99 #define INPUT_KEY_G 34                  /**< G Key */
100 #define INPUT_KEY_GRAVE 41              /**< Grave (backtick) Key */
101 #define INPUT_KEY_H 35                  /**< H Key */
102 #define INPUT_KEY_HOME 102              /**< Home Key */
103 #define INPUT_KEY_I 23                  /**< I Key */
104 #define INPUT_KEY_INSERT 110            /**< Insert Key */
105 #define INPUT_KEY_J 36                  /**< J Key */
106 #define INPUT_KEY_K 37                  /**< K Key */
107 #define INPUT_KEY_KP0 82                /**< Keypad 0 Key */
108 #define INPUT_KEY_KP1 79                /**< Keypad 1 Key */
109 #define INPUT_KEY_KP2 80                /**< Keypad 2 Key */
110 #define INPUT_KEY_KP3 81                /**< Keypad 3 Key */
111 #define INPUT_KEY_KP4 75                /**< Keypad 4 Key */
112 #define INPUT_KEY_KP5 76                /**< Keypad 5 Key */
113 #define INPUT_KEY_KP6 77                /**< Keypad 6 Key */
114 #define INPUT_KEY_KP7 71                /**< Keypad 7 Key */
115 #define INPUT_KEY_KP8 72                /**< Keypad 8 Key */
116 #define INPUT_KEY_KP9 73                /**< Keypad 9 Key */
117 #define INPUT_KEY_KPASTERISK 55         /**< Keypad Asterisk Key */
118 #define INPUT_KEY_KPCOMMA 121           /**< Keypad Comma Key */
119 #define INPUT_KEY_KPDOT 83              /**< Keypad Dot Key */
120 #define INPUT_KEY_KPEQUAL 117           /**< Keypad Equal Key */
121 #define INPUT_KEY_KPMINUS 74            /**< Keypad Minus Key */
122 #define INPUT_KEY_KPPLUS 78             /**< Keypad Plus Key */
123 #define INPUT_KEY_KPPLUSMINUS 118       /**< Keypad Plus Key */
124 #define INPUT_KEY_L 38                  /**< L Key */
125 #define INPUT_KEY_LEFT 105              /**< Left Key */
126 #define INPUT_KEY_LEFTALT 56            /**< Left Alt Key */
127 #define INPUT_KEY_LEFTBRACE 26          /**< Left Brace Key */
128 #define INPUT_KEY_LEFTCTRL 29           /**< Left Ctrl Key */
129 #define INPUT_KEY_LEFTMETA 125          /**< Left Meta Key */
130 #define INPUT_KEY_LEFTSHIFT 42          /**< Left Shift Key */
131 #define INPUT_KEY_M 50                  /**< M Key */
132 #define INPUT_KEY_MENU 139              /**< Menu Key */
133 #define INPUT_KEY_MINUS 12              /**< Minus Key */
134 #define INPUT_KEY_MUTE 113              /**< Mute Key */
135 #define INPUT_KEY_N 49                  /**< N Key */
136 #define INPUT_KEY_NUMLOCK 69            /**< Num Lock Key */
137 #define INPUT_KEY_O 24                  /**< O Key */
138 #define INPUT_KEY_P 25                  /**< P Key */
139 #define INPUT_KEY_PAGEDOWN 109          /**< Page Down Key */
140 #define INPUT_KEY_PAGEUP 104            /**< Page UpKey */
141 #define INPUT_KEY_PAUSE 119             /**< Pause Key */
142 #define INPUT_KEY_PLAY 207              /**< Play Key */
143 #define INPUT_KEY_POWER 116             /**< Power Key */
144 #define INPUT_KEY_PRINT 210             /**< Print Key */
145 #define INPUT_KEY_Q 16                  /**< Q Key */
146 #define INPUT_KEY_R 19                  /**< R Key */
147 #define INPUT_KEY_RIGHT 106             /**< Right Key */
148 #define INPUT_KEY_RIGHTBRACE 27         /**< Right Brace Key */
149 #define INPUT_KEY_RIGHTMETA 126         /**< Right Meta Key */
150 #define INPUT_KEY_RIGHTSHIFT 54         /**< Right Shift Key */
151 #define INPUT_KEY_S 31                  /**< S Key */
152 #define INPUT_KEY_SCALE 120             /**< Scale Key */
153 #define INPUT_KEY_SCROLLLOCK 70         /**< Scroll Lock Key */
154 #define INPUT_KEY_SEMICOLON 39          /**< Semicolon Key */
155 #define INPUT_KEY_SLASH 53              /**< Slash Key */
156 #define INPUT_KEY_SLEEP 142             /**< System Sleep Key */
157 #define INPUT_KEY_SPACE 57              /**< Space Key */
158 #define INPUT_KEY_T 20                  /**< T Key */
159 #define INPUT_KEY_TAB 15                /**< Tab Key*/
160 #define INPUT_KEY_U 22                  /**< U Key */
161 #define INPUT_KEY_UP 103                /**< Up Key */
162 #define INPUT_KEY_UWB 239               /**< Ultra-Wideband Key */
163 #define INPUT_KEY_V 47                  /**< V Key */
164 #define INPUT_KEY_VOLUMEDOWN 114        /**< Volume Down Key */
165 #define INPUT_KEY_VOLUMEUP 115          /**< Volume Up Key */
166 #define INPUT_KEY_W 17                  /**< W Key */
167 #define INPUT_KEY_WAKEUP 143            /**< System Wake Up Key */
168 #define INPUT_KEY_WLAN 238              /**< Wireless LAN Key */
169 #define INPUT_KEY_X 45                  /**< X Key */
170 #define INPUT_KEY_Y 21                  /**< Y Key */
171 #define INPUT_KEY_Z 44                  /**< Z Key */
172 /** @} */
173 
174 
175 /**
176  * @name Input event BTN codes.
177  * @anchor INPUT_BTN_CODES
178  * @{
179  */
180 #define INPUT_BTN_0 0x100               /**< 0 button */
181 #define INPUT_BTN_1 0x101               /**< 1 button */
182 #define INPUT_BTN_2 0x102               /**< 2 button */
183 #define INPUT_BTN_3 0x103               /**< 3 button */
184 #define INPUT_BTN_4 0x104               /**< 4 button */
185 #define INPUT_BTN_5 0x105               /**< 5 button */
186 #define INPUT_BTN_6 0x106               /**< 6 button */
187 #define INPUT_BTN_7 0x107               /**< 7 button */
188 #define INPUT_BTN_8 0x108               /**< 8 button */
189 #define INPUT_BTN_9 0x109               /**< 9 button */
190 #define INPUT_BTN_A BTN_SOUTH           /**< A button */
191 #define INPUT_BTN_B BTN_EAST            /**< B button */
192 #define INPUT_BTN_C 0x132               /**< C button */
193 #define INPUT_BTN_DPAD_DOWN 0x221       /**< Directional pad Down */
194 #define INPUT_BTN_DPAD_LEFT 0x222       /**< Directional pad Left */
195 #define INPUT_BTN_DPAD_RIGHT 0x223      /**< Directional pad Right */
196 #define INPUT_BTN_DPAD_UP 0x220         /**< Directional pad Up */
197 #define INPUT_BTN_EAST 0x131            /**< East button */
198 #define INPUT_BTN_GEAR_DOWN 0x150       /**< Gear Up button */
199 #define INPUT_BTN_GEAR_UP 0x151         /**< Gear Down button */
200 #define INPUT_BTN_LEFT 0x110            /**< Left button */
201 #define INPUT_BTN_MIDDLE 0x112          /**< Middle button */
202 #define INPUT_BTN_MODE 0x13c            /**< Mode button */
203 #define INPUT_BTN_NORTH 0x133           /**< North button */
204 #define INPUT_BTN_RIGHT 0x111           /**< Right button */
205 #define INPUT_BTN_SELECT 0x13a          /**< Select button */
206 #define INPUT_BTN_SOUTH 0x130           /**< South button */
207 #define INPUT_BTN_START 0x13b           /**< Start button */
208 #define INPUT_BTN_THUMBL 0x13d          /**< Left thumbstick button */
209 #define INPUT_BTN_THUMBR 0x13e          /**< Right thumbstick button */
210 #define INPUT_BTN_TL 0x136              /**< Left trigger (L1) */
211 #define INPUT_BTN_TL2 0x138             /**< Left trigger 2 (L2) */
212 #define INPUT_BTN_TOUCH 0x14a           /**< Touchscreen touch */
213 #define INPUT_BTN_TR 0x137              /**< Right trigger (R1) */
214 #define INPUT_BTN_TR2 0x139             /**< Right trigger 2 (R2) */
215 #define INPUT_BTN_WEST 0x134            /**< West button */
216 #define INPUT_BTN_X BTN_NORTH           /**< X button */
217 #define INPUT_BTN_Y BTN_WEST            /**< Y button */
218 #define INPUT_BTN_Z 0x135               /**< Z button */
219 /** @} */
220 
221 /**
222  * @name Input event ABS codes.
223  * @anchor INPUT_ABS_CODES
224  * @{
225  */
226 #define INPUT_ABS_BRAKE 0x0a            /**< Absolute brake position */
227 #define INPUT_ABS_GAS 0x09              /**< Absolute gas position */
228 #define INPUT_ABS_RUDDER 0x07           /**< Absolute rudder position */
229 #define INPUT_ABS_RX 0x03               /**< Absolute rotation around X axis */
230 #define INPUT_ABS_RY 0x04               /**< Absolute rotation around Y axis */
231 #define INPUT_ABS_RZ 0x05               /**< Absolute rotation around Z axis */
232 #define INPUT_ABS_THROTTLE 0x06         /**< Absolute throttle position */
233 #define INPUT_ABS_WHEEL 0x08            /**< Absolute wheel position */
234 #define INPUT_ABS_X 0x00                /**< Absolute X coordinate */
235 #define INPUT_ABS_Y 0x01                /**< Absolute Y coordinate */
236 #define INPUT_ABS_Z 0x02                /**< Absolute Z coordinate */
237 /** @} */
238 
239 /**
240  * @name Input event REL codes.
241  * @anchor INPUT_REL_CODES
242  * @{
243  */
244 #define INPUT_REL_DIAL 0x07             /**< Relative dial coordinate */
245 #define INPUT_REL_HWHEEL 0x06           /**< Relative horizontal wheel coordinate */
246 #define INPUT_REL_MISC 0x09             /**< Relative misc coordinate */
247 #define INPUT_REL_RX 0x03               /**< Relative rotation around X axis */
248 #define INPUT_REL_RY 0x04               /**< Relative rotation around Y axis */
249 #define INPUT_REL_RZ 0x05               /**< Relative rotation around Z axis */
250 #define INPUT_REL_WHEEL 0x08            /**< Relative wheel coordinate */
251 #define INPUT_REL_X 0x00                /**< Relative X coordinate */
252 #define INPUT_REL_Y 0x01                /**< Relative Y coordinate */
253 #define INPUT_REL_Z 0x02                /**< Relative Z coordinate */
254 /** @} */
255 
256 /**
257  * @name Input event MSC codes.
258  * @anchor INPUT_MSC_CODES
259  * @{
260  */
261 #define INPUT_MSC_SCAN 0x04             /**< Scan code */
262 /** @} */
263 
264 /** @} */
265 
266 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_INPUT_INPUT_EVENT_CODES_H_ */
267