Lines Matching +full:linux +full:- +full:event +full:- +full:codes
1 .. _input-event-codes:
4 Input event codes
8 The input protocol uses a map of types and codes to express input device values
9 to userspace. This document describes the types and codes and how and when they
12 A single hardware event generates multiple input events. Each input event
13 contains the new value of a single data item. A special event type, EV_SYN, is
15 the same moment in time. In the following, the term "event" refers to a single
16 input event encompassing a type, code, and value.
19 of event codes have changed. However, the state is maintained within the Linux
22 event code values using the EVIOCG* ioctls defined in linux/input.h. The event
24 class/input/event*/device/capabilities/, and the properties of a device are
25 provided in class/input/event*/device/properties.
27 Event types
30 Event types are groupings of codes under a logical input construct. Each
31 type has a set of applicable codes to be used in generating events. See the
32 Codes section for details on valid codes for each type.
36 - Used as markers to separate events. Events may be separated in time or in
41 - Used to describe state changes of keyboards, buttons, or other key-like
46 - Used to describe relative axis value changes, e.g. moving the mouse 5 units
51 - Used to describe absolute axis value changes, e.g. describing the
56 - Used to describe miscellaneous input data that do not fit into other types.
60 - Used to describe binary state input switches.
64 - Used to turn LEDs on devices on and off.
68 - Used to output sound to devices.
72 - Used for autorepeating devices.
76 - Used to send force feedback commands to an input device.
80 - A special type for power button and switch input.
84 - Used to receive force feedback device status.
86 Event codes
89 Event codes define the precise type of event.
92 ------
94 EV_SYN event values are undefined. Their usage is defined only by when they are
95 sent in the evdev event stream.
99 - Used to synchronize and separate events into packets of input data changes
106 - TBD
110 - Used to synchronize and separate touch events. See the
111 multi-touch-protocol.txt document for more information.
115 - Used to indicate buffer overrun in the evdev client's event queue.
117 event and query the device (using EVIOCG* ioctls) to obtain its
121 ------
124 to represent the 'A' key on a keyboard. When a key is depressed, an event with
125 the key's code is emitted with value 1. When the key is released, an event is
130 A few EV_KEY codes have special meanings:
134 - These codes are used in conjunction with input trackpads, tablets, and
136 When an event occurs and a tool is used, the corresponding BTN_TOOL_<name>
149 certain value. BTN_TOUCH may be combined with BTN_TOOL_<name> codes. For
161 EVIOCGPROP, defined in linux/input.h, will be used to convey the device type.
165 - These codes denote one, two, three, and four finger interaction on a
169 Note that all BTN_TOOL_<name> codes and the BTN_TOUCH code are orthogonal in
170 purpose. A trackpad event generated by finger touches should generate events
172 codes should have a value of 1 during any synchronization frame.
174 Note: Historically some drivers emitted multiple of the finger count codes with
178 be used to emit these codes. Please see multi-touch-protocol.txt for details.
181 ------
185 space is unknown. If the absolute position is known, EV_ABS codes should be used
186 instead of EV_REL codes.
188 A few EV_REL codes have special meanings:
192 - These codes are used for vertical and horizontal scroll wheels,
194 physical size of which varies by device. For high-resolution wheels
195 this may be an approximation based on the high-resolution scroll events,
196 see REL_WHEEL_HI_RES. These event codes are legacy codes and
202 - High-resolution scroll wheel data. The accumulated value 120 represents
203 movement by one detent. For devices that do not provide high-resolution
205 high-resolution scrolling, the value may be a fraction of 120.
207 If a vertical scroll wheel supports high-resolution scrolling, this code
209 and REL_HWHEEL may be an approximation based on the high-resolution
210 scroll events. There is no guarantee that the high-resolution data
212 event.
215 ------
220 A few EV_ABS codes have special meanings:
224 - Used to describe the distance of a tool from an interaction surface. This
225 event should only be emitted while the tool is hovering, meaning in close
229 - BTN_TOOL_<name> should be set to 1 when the tool comes into detectable
236 - Used to describe multitouch input events. Please see
237 multi-touch-protocol.txt for details.
240 -----
254 ------
259 A few EV_MSC codes have special meaning:
263 - Used to report the number of microseconds since the last reset. This event
267 A reset to zero can happen, in which case the time since the last event is
272 ------
278 ------
283 ------
289 -----
295 ------
297 EV_PWR events are a special type of event used specifically for power
304 i.e., the event types. In the case of two devices emitting the same event
309 --------------------------------------
313 transformations, such as scaling, flipping and rotating). Non-direct input
314 devices require non-trivial transformation, such as absolute to relative
316 drawing tablets; non-direct devices: touchpads, mice.
319 on the screen and thus requires use of an on-screen pointer to trace user's
320 movements. Typical pointer devices: touchpads, tablets, mice; non-pointer
325 traditional way, using emitted event types.
328 --------------------
339 ------------------
344 touchpads, the semi-mt property should be set.
355 -----------------------
369 ------------------------
376 regular directional axes and accelerometer axes on the same event node.
381 The guidelines below ensure proper single-touch and multi-finger functionality.
382 For multi-touch functionality, see the multi-touch-protocol.txt document for
386 ----
394 ------------
404 ---------
411 on the trackpad. Where multi-finger support is available, BTN_TOOL_<name> should
417 -------
424 BTN_{0,1,2,etc} are good generic codes for unlabeled buttons. Do not use