Lines Matching full:code
40 <p>The input device reports the presence of the <code>ABS_MT_POSITION_X</code> and
41 <code>ABS_MT_POSITION_Y</code> absolute axes.</p>
58 <p>The input device reports the presence of the <code>ABS_X</code> and <code>ABS_Y</code> absolute
59 axes, and the presence of the <code>BTN_TOUCH</code> key code.</p>
102 <p>If the <code>touch.deviceType</code> property is set, then the device type will be
106 <p>If the input device reports the presence of the <code>INPUT_PROP_DIRECT</code>
107 input property (via the <code>EVIOCGPROP</code> ioctl), then the device type will
112 <p>If the input device reports the presence of the <code>INPUT_PROP_POINTER</code>
113 input property (via the <code>EVIOCGPROP</code> ioctl), then the device type will
117 <p>If the input device reports the presence of the <code>REL_X</code> or <code>REL_Y</code> relative
137 <p><code>BTN_LEFT</code>: mapped to <code>MotionEvent.BUTTON_PRIMARY</code>.</p>
140 <p><code>BTN_RIGHT</code>: mapped to <code>MotionEvent.BUTTON_SECONDARY</code>.</p>
143 <p><code>BTN_MIDDLE</code>: mapped to <code>MotionEvent.BUTTON_MIDDLE</code>.</p>
146 <p><code>BTN_BACK</code> and <code>BTN_SIDE</code>: mapped to <code>MotionEvent.BUTTON_BACK</code>.
147 Pressing this button also synthesizes a key press with the key code
148 <code>KeyEvent.KEYCODE_BACK</code>.</p>
151 <p><code>BTN_FORWARD</code> and <code>BTN_EXTRA</code>: mapped to <code>MotionEvent.BUTTON_FORWARD</code>.
152 Pressing this button also synthesizes a key press with the key code
153 <code>KeyEvent.KEYCODE_FORWARD</code>.</p>
156 <p><code>BTN_STYLUS</code>: mapped to <code>MotionEvent.BUTTON_SECONDARY</code>.</p>
159 <p><code>BTN_STYLUS2</code>: mapped to <code>MotionEvent.BUTTON_TERTIARY</code>.</p>
166 <p>Elsewhere in Android, as in the <code>MotionEvent</code> API, a <em>tool</em> is often referred
171 <p><code>BTN_TOOL_FINGER</code> and <code>MT_TOOL_FINGER</code>: mapped to <code>MotionEvent.TOOL_TYPE_FINGER</code>.</p>
174 <p><code>BTN_TOOL_PEN</code> and <code>MT_TOOL_PEN</code>: mapped to <code>MotionEvent.TOOL_TYPE_STYLUS</code>.</p>
177 <p><code>BTN_TOOL_RUBBER</code>: mapped to <code>MotionEvent.TOOL_TYPE_ERASER</code>.</p>
180 <p><code>BTN_TOOL_BRUSH</code>: mapped to <code>MotionEvent.TOOL_TYPE_STYLUS</code>.</p>
183 <p><code>BTN_TOOL_PENCIL</code>: mapped to <code>MotionEvent.TOOL_TYPE_STYLUS</code>.</p>
186 <p><code>BTN_TOOL_AIRBRUSH</code>: mapped to <code>MotionEvent.TOOL_TYPE_STYLUS</code>.</p>
189 <p><code>BTN_TOOL_MOUSE</code>: mapped to <code>MotionEvent.TOOL_TYPE_MOUSE</code>.</p>
192 <p><code>BTN_TOOL_LENS</code>: mapped to <code>MotionEvent.TOOL_TYPE_MOUSE</code>.</p>
195 <p><code>BTN_TOOL_DOUBLETAP</code>, <code>BTN_TOOL_TRIPLETAP</code>, and <code>BTN_TOOL_QUADTAP</code>:
196 mapped to <code>MotionEvent.TOOL_TYPE_FINGER</code>.</p>
204 <p>The <code>InputReader</code> component takes care to distinguish touching tools from hovering
208 using <code>MotionEvent.ACTION_DOWN</code>, <code>MotionEvent.ACTION_MOVE</code>, <code>MotionEvent.ACTION_DOWN</code>,
209 <code>MotionEvent.ACTION_POINTER_DOWN</code> and <code>MotionEvent.ACTION_POINTER_UP</code>.</p>
211 <code>MotionEvent.ACTION_HOVER_ENTER</code>, <code>MotionEvent.ACTION_HOVER_MOVE</code>
212 and <code>MotionEvent.ACTION_HOVER_EXIT</code>.</p>
220 <p>For example, if the device reports the <code>BTN_TOUCH</code> key code, the system will
221 assume that <code>BTN_TOUCH</code> will always be used to indicate whether the tool is
228 <p><code>ABS_X</code>: <em>(REQUIRED)</em> Reports the X coordinate of the tool.</p>
231 <p><code>ABS_Y</code>: <em>(REQUIRED)</em> Reports the Y coordinate of the tool.</p>
234 <p><code>ABS_PRESSURE</code>: <em>(optional)</em> Reports the physical pressure applied to the tip
238 <p><code>ABS_TOOL_WIDTH</code>: <em>(optional)</em> Reports the cross-sectional area or width of the
242 <p><code>ABS_DISTANCE</code>: <em>(optional)</em> Reports the distance of the tool from the surface of
246 <p><code>ABS_TILT_X</code>: <em>(optional)</em> Reports the tilt of the tool from the surface of the
250 <p><code>ABS_TILT_Y</code>: <em>(optional)</em> Reports the tilt of the tool from the surface of the
254 <p><code>BTN_TOUCH</code>: <em>(REQUIRED)</em> Indicates whether the tool is touching the device.</p>
257 <p><code>BTN_LEFT</code>, <code>BTN_RIGHT</code>, <code>BTN_MIDDLE</code>, <code>BTN_BACK</code>, <code>BTN_SIDE</code>, <code>BTN_FORWARD</code>,
258 <code>BTN_EXTRA</code>, <code>BTN_STYLUS</code>, <code>BTN_STYLUS2</code>:
262 <p><code>BTN_TOOL_FINGER</code>, <code>BTN_TOOL_PEN</code>, <code>BTN_TOOL_RUBBER</code>, <code>BTN_TOOL_BRUSH</code>,
263 <code>BTN_TOOL_PENCIL</code>, <code>BTN_TOOL_AIRBRUSH</code>, <code>BTN_TOOL_MOUSE</code>, <code>BTN_TOOL_LENS</code>,
264 <code>BTN_TOOL_DOUBLETAP</code>, <code>BTN_TOOL_TRIPLETAP</code>, <code>BTN_TOOL_QUADTAP</code>:
273 <p><code>ABS_MT_POSITION_X</code>: <em>(REQUIRED)</em> Reports the X coordinate of the tool.</p>
276 <p><code>ABS_MT_POSITION_Y</code>: <em>(REQUIRED)</em> Reports the Y coordinate of the tool.</p>
279 <p><code>ABS_MT_PRESSURE</code>: <em>(optional)</em> Reports the physical pressure applied to the
283 <p><code>ABS_MT_TOUCH_MAJOR</code>: <em>(optional)</em> Reports the cross-sectional area of the
287 <p><code>ABS_MT_TOUCH_MINOR</code>: <em>(optional)</em> Reports the length of the shorter dimension of the
288 touch contact. This axis should not be used if <code>ABS_MT_TOUCH_MAJOR</code> is reporting an
292 <p><code>ABS_MT_WIDTH_MAJOR</code>: <em>(optional)</em> Reports the cross-sectional area of the tool itself,
297 <p><code>ABS_MT_WIDTH_MINOR</code>: <em>(optional)</em> Reports the length of the shorter dimension of
298 the tool itself. This axis should not be used if <code>ABS_MT_WIDTH_MAJOR</code> is reporting
302 <p><code>ABS_MT_ORIENTATION</code>: <em>(optional)</em> Reports the orientation of the tool.</p>
305 <p><code>ABS_MT_DISTANCE</code>: <em>(optional)</em> Reports the distance of the tool from the
309 <p><code>ABS_MT_TOOL_TYPE</code>: <em>(optional)</em> Reports the <a href="#tools-and-tool-types">tool type</a> as
310 <code>MT_TOOL_FINGER</code> or <code>MT_TOOL_PEN</code>.</p>
313 <p><code>ABS_MT_TRACKING_ID</code>: <em>(optional)</em> Reports the tracking id of the tool.
321 <p><code>ABS_MT_SLOT</code>: <em>(optional)</em> Reports the slot id of the tool, when using the Linux
326 <p><code>BTN_TOUCH</code>: <em>(REQUIRED)</em> Indicates whether the tool is touching the device.</p>
329 <p><code>BTN_LEFT</code>, <code>BTN_RIGHT</code>, <code>BTN_MIDDLE</code>, <code>BTN_BACK</code>, <code>BTN_SIDE</code>, <code>BTN_FORWARD</code>,
330 <code>BTN_EXTRA</code>, <code>BTN_STYLUS</code>, <code>BTN_STYLUS2</code>:
334 <p><code>BTN_TOOL_FINGER</code>, <code>BTN_TOOL_PEN</code>, <code>BTN_TOOL_RUBBER</code>, <code>BTN_TOOL_BRUSH</code>,
335 <code>BTN_TOOL_PENCIL</code>, <code>BTN_TOOL_AIRBRUSH</code>, <code>BTN_TOOL_MOUSE</code>, <code>BTN_TOOL_LENS</code>,
336 <code>BTN_TOOL_DOUBLETAP</code>, <code>BTN_TOOL_TRIPLETAP</code>, <code>BTN_TOOL_QUADTAP</code>:
346 <p>The minimum and maximum values of the <code>ABS_X</code>, <code>ABS_Y</code>, <codecode>
347 and <code>ABS_MT_POSITION_Y</code> axes define the bounds of the active area of the device
353 <pre><code>displayX = (x - minX) * displayWidth / (maxX - minX + 1)
355 </code></pre>
379 <p>The values reported by <code>ABS_PRESSURE</code> or <code>ABS_MT_PRESSURE</code>, if they
387 <p>The values reported by <code>ABS_TOOL_WIDTH</code>, <code>ABS_MT_TOUCH_MAJOR</code>, <code>ABS_MT_TOUCH_MINOR</code>,
388 <code>ABS_MT_WIDTH_MAJOR</code>, or <code>ABS_MT_WIDTH_MINOR</code> should be non-zero when the tool
397 <p>The values reported by <code>ABS_DISTANCE</code> or <code>ABS_MT_DISTANCE</code> should approach
405 <p>The values reported by <code>ABS_TILT_X</code> and <code>ABS_TILT_Y</code> should be zero when the
410 by <code>(max + min) / 2</code> for each axis. Values smaller than the center point
413 <p>The <code>InputReader</code> converts the X and Y tilt components into a perpendicular
414 tilt angle ranging from 0 to <code>PI / 2</code> radians and a planar orientation angle
415 ranging from <code>-PI</code> to <code>PI</code> radians. This representation results in a
421 <p>If the tool type is reported by <code>ABS_MT_TOOL_TYPE</code>, it will supercede any tool
422 type information reported by <code>BTN_TOOL_*</code>.
424 <code>MotionEvent.TOOL_TYPE_FINGER</code>.</p>
430 <p>When using the single-touch protocol, the tool is active if <code>BTN_TOUCH</code>,
431 or <code>BTN_TOOL_*</code> is 1.</p>
432 <p>This condition implies that the <code>InputReader</code> needs to have at least some
452 <p>If the tool is <code>BTN_TOOL_MOUSE</code> or <code>BTN_TOOL_LENS</code>, then the tool
460 <p>If the tool is active and the driver supports the <code>BTN_TOUCH</code> key code and
461 <code>BTN_TOUCH</code> has a value of zero, then the tool is hovering.</p>
466 <p>The <code>InputReader</code> supports both multi-touch protocol 'A' and 'B'. New drivers
478 such as <code>SYN_MT_REPORT</code> followed by <code>SYN_REPORT</code>.</p>
485 <code>ABS_MT_PRESSURE</code>.</p>
487 <code>ABS_MT_TOUCH_MAJOR</code>. The old behavior was incompatible with the
491 <p>Touch size information should be reported using <code>ABS_MT_TOUCH_MAJOR</code>.</p>
493 <code>ABS_MT_TOOL_MAJOR</code>. The old behavior was incompatible with the
507 <p>The <code>EventHub</code> reads raw events from the <code>evdev</code> driver.</p>
510 <p>The <code>InputReader</code> consumes the raw events and updates internal state about
515 <p>If the BACK or FORWARD buttons were pressed or released, the <code>InputReader</code>
516 notifies the <code>InputDispatcher</code> about the key event.</p>
519 <p>The <code>InputReader</code> determines whether a virtual key press occurred. If so,
520 it notifies the <code>InputDispatcher</code> about the key event.</p>
523 <p>The <code>InputReader</code> determines whether the touch was initiated within the
524 bounds of the display. If so, it notifies the <code>InputDispatcher</code> about
529 the <code>InputReader</code> notifies the <code>InputDispatcher</code> about the hover event.</p>
532 <p>If the touch device type is <em>pointer</em>, the <code>InputReader</code> performs pointer
534 the <code>InputDispatcher</code> about the pointer event.</p>
537 <p>The <code>InputDispatcher</code> uses the <code>WindowManagerPolicy</code> to determine whether
539 Then, the <code>InputDispatcher</code> delivers the events to the appropriate applications.</p>
569 device driver as <code>EV_ABS</code> events.</p>
571 <dt><code>raw.x</code></dt>
572 <dd>The value of the <code>ABS_X</code> or <code>ABS_MT_POSITION_X</code> axis.</dd>
573 <dt><code>raw.y</code></dt>
574 <dd>The value of the <code>ABS_Y</code> or <code>ABS_MT_POSITION_Y</code> axis.</dd>
575 <dt><code>raw.pressure</code></dt>
576 <dd>The value of the <code>ABS_PRESSURE</code> or <code>ABS_MT_PRESSURE</code> axis, or 0 if not available.</dd>
577 <dt><code>raw.touchMajor</code></dt>
578 <dd>The value of the <code>ABS_MT_TOUCH_MAJOR</code> axis, or 0 if not available.</dd>
579 <dt><code>raw.touchMinor</code></dt>
580 <dd>The value of the <code>ABS_MT_TOUCH_MINOR</code> axis, or <code>raw.touchMajor</code> if not available.</dd>
581 <dt><code>raw.toolMajor</code></dt>
582 <dd>The value of the <code>ABS_TOOL_WIDTH</code> or <code>ABS_MT_WIDTH_MAJOR</code> axis, or 0 if not available.</dd>
583 <dt><code>raw.toolMinor</code></dt>
584 <dd>The value of the <code>ABS_MT_WIDTH_MINOR</code> axis, or <code>raw.toolMajor</code> if not available.</dd>
585 <dt><code>raw.orientation</code></dt>
586 <dd>The value of the <code>ABS_MT_ORIENTATION</code> axis, or 0 if not available.</dd>
587 <dt><code>raw.distance</code></dt>
588 <dd>The value of the <code>ABS_DISTANCE</code> or <code>ABS_MT_DISTANCE</code> axis, or 0 if not available.</dd>
589 <dt><code>raw.tiltX</code></dt>
590 <dd>The value of the <code>ABS_TILT_X</code> axis, or 0 if not available.</dd>
591 <dt><code>raw.tiltY</code></dt>
592 <dd>The value of the <code>ABS_TILT_Y</code> axis, or 0 if not available.</dd>
596 by calling <code>EVIOCGABS</code> ioctl for each axis.</p>
598 <dt><code>raw.*.min</code></dt>
600 <dt><code>raw.*.max</code></dt>
602 <dt><code>raw.*.range</code></dt>
603 <dd>Equivalent to <code>raw.*.max - raw.*.min</code>.</dd>
604 <dt><code>raw.*.fuzz</code></dt>
606 <dt><code>raw.width</code></dt>
607 <dd>The inclusive width of the touch area, equivalent to <code>raw.x.range + 1</code>.</dd>
608 <dt><code>raw.height</code></dt>
609 <dd>The inclusive height of the touch area, equivalent to <code>raw.y.range + 1</code>.</dd>
617 <dt><code>output.width</code></dt>
620 the output width equals <code>raw.width</code>, indicating that no interpolation will
622 <dt><code>output.height</code></dt>
625 the output height equals <code>raw.height</code>, indicating that no interpolation will
627 <dt><code>output.diag</code></dt>
629 <code>sqrt(output.width ^2 + output.height ^2)</code>.</dd>
636 <h4 id="touchdevicetype"><code>touch.deviceType</code></h4>
637 <p><em>Definition:</em> <code>touch.deviceType</code> = <code>touchScreen</code> | <code>touchPad</code> | <code>pointer</code> | <code>default</code></p>
641 <p>If the value is <code>touchScreen</code>, the touch device is a touch screen associated
645 <p>If the value is <code>touchPad</code>, the touch device is a touch pad not associated
649 <p>If the value is <code>pointer</code>, the touch device is a touch pad not associated
654 <p>If the value is <code>default</code>, the system automatically detects the device type
661 <h4 id="touchorientationaware"><code>touch.orientationAware</code></h4>
662 <p><em>Definition:</em> <code>touch.orientationAware</code> = <code>0</code> | <code>1</code></p>
666 <p>If the value is <code>1</code>, touch positions reported by the touch device are rotated
670 <p>If the value is <code>0</code>, touch positions reported by the touch device are immune
674 <p>The default value is <code>1</code> if the device is a touch screen, <code>0</code> otherwise.</p>
687 <h4 id="touchgesturemode"><code>touch.gestureMode</code></h4>
688 <p><em>Definition:</em> <code>touch.gestureMode</code> = <code>pointer</code> | <code>spots</code> | <code>default</code></p>
693 <p>If the value is <code>pointer</code>, the touch pad gestures are presented by way of a cursor
697 <p>If the value is <code>spots</code>, the touch pad gestures are presented by an anchor
702 <p>The default value is <code>pointer</code> when the <code>INPUT_PROP_SEMI_MT</code> input property
703 is set, or <code>spots</code> otherwise.</p>
704 <h3 id="x-and-y-fields"><code>X</code> and <code>Y</code> Fields</h3>
709 <pre><code>xScale = output.width / raw.width
725 </code></pre>
726 <h3 id="touchmajor-touchminor-toolmajor-toolminor-size-fields"><code>TouchMajor</code>, <code>TouchMinor</code>, <code>ToolMajor</code>, <code>ToolMinor</code>, <code>Size</code> Fields</h3>
727 <p>The <code>TouchMajor</code> and <code>TouchMinor</code> fields describe the approximate dimensions
729 <p>The <code>ToolMajor</code> and <code>ToolMinor</code> fields describe the approximate dimensions
731 <p>The <code>Size</code> field describes the normalized size of the touch relative to
735 <p>When both the approximate length and breadth can be measured, then the <code>TouchMajor</code> field
736 specifies the longer dimension and the <code>TouchMinor</code> field specifies the shorter dimension
738 then the <code>TouchMajor</code> and <code>TouchMinor</code> fields will be equal.</p>
739 <p>Likewise, the <code>ToolMajor</code> field specifies the longer dimension and the <code>ToolMinor</code>
747 <h4 id="touchsizecalibration"><code>touch.size.calibration</code></h4>
748 <p><em>Definition:</em> <code>touch.size.calibration</code> = <code>none</code> | <code>geometric</code> | <code>diameter</code>
749 | <code>area</code> | <code>default</code></p>
754 <p>If the value is <code>none</code>, the size is set to zero.</p>
757 <p>If the value is <code>geometric</code>, the size is assumed to be specified in the same
761 <p>If the value is <code>diameter</code>, the size is assumed to be proportional to
765 <p>If the value is <code>area</code>, the size is assumed to be proportional to the
769 <p>If the value is <code>default</code>, the system uses the <code>geometric</code> calibration if the
770 <code>raw.touchMajor</code> or <code>raw.toolMajor</code> axis is available, otherwise it uses
771 the <code>none</code> calibration.</p>
774 <h4 id="touchsizescale"><code>touch.size.scale</code></h4>
775 <p><em>Definition:</em> <code>touch.size.scale</code> = <a non-negative floating point number></p>
777 <p>The default value is <code>1.0</code>.</p>
778 <h4 id="touchsizebias"><code>touch.size.bias</code></h4>
779 <p><em>Definition:</em> <code>touch.size.bias</code> = <a non-negative floating point number></p>
781 <p>The default value is <code>0.0</code>.</p>
782 <h4 id="touchsizeissummed"><code>touch.size.isSummed</code></h4>
783 <p><em>Definition:</em> <code>touch.size.isSummed</code> = <code>0</code> | <code>1</code></p>
788 <p>If the value is <code>1</code>, the reported size will be divided by the number
792 <p>If the value is <code>0</code>, the reported size will be used as is.</p>
795 <p>The default value is <code>0</code>.</p>
799 <code>1</code> for such devices. If in doubt, set this value to <code>0</code>.</p>
801 <p>The calculation of the <code>TouchMajor</code>, <code>TouchMinor</code>, <code>ToolMajor</code>, <code>ToolMinor</code>
802 and <code>Size</code> fields depends on the specified calibration parameters.</p>
803 <pre><code>If raw.touchMajor and raw.toolMajor are available:
875 </code></pre>
876 <h3 id="pressure-field"><code>Pressure</code> Field</h3>
877 <p>The <code>Pressure</code> field describes the approximate physical pressure applied to the
880 <h4 id="touchpressurecalibration"><code>touch.pressure.calibration</code></h4>
881 <p><em>Definition:</em> <code>touch.pressure.calibration</code> = <code>none</code> | <code>physical</code> | <code>amplitude</code> | <code>default</code></p>
885 <p>If the value is <code>none</code>, the pressure is unknown so it is set to 1.0 when
889 <p>If the value is <code>physical</code>, the pressure axis is assumed to measure the actual
893 <p>If the value is <code>amplitude</code>, the pressure axis is assumed to measure the signal
897 <p>If the value is <code>default</code>, the system uses the <code>physical</code> calibration if the
898 pressure axis available, otherwise uses <code>none</code>.</p>
901 <h4 id="touchpressurescale"><code>touch.pressure.scale</code></h4>
902 <p><em>Definition:</em> <code>touch.pressure.scale</code> = <a non-negative floating point number></p>
904 <p>The default value is <code>1.0 / raw.pressure.max</code>.</p>
906 <p>The calculation of the <code>Pressure</code> field depends on the specified calibration parameters.</p>
907 <pre><code>If touch.pressure.calibration == "physical" or "amplitude":
916 </code></pre>
917 <h3 id="orientation-and-tilt-fields"><code>Orientation</code> and <code>Tilt</code> Fields</h3>
918 <p>The <code>Orientation</code> field describes the orientation of the touch and tool as an
919 angular measurement. An orientation of <code>0</code> indicates that the major axis is
920 oriented vertically, <code>-PI/2</code> indicates that the major axis is oriented to the left,
921 <code>PI/2</code> indicates that the major axis is oriented to the right. When a stylus
923 from <code>-PI</code> or <code>PI</code>.</p>
924 <p>The <code>Tilt</code> field describes the inclination of the tool as an angular measurement.
925 A tilt of <code>0</code> indicates that the tool is perpendicular to the surface.
926 A tilt of <code>PI/2</code> indicates that the tool is flat on the surface.</p>
927 <h4 id="touchorientationcalibration"><code>touch.orientation.calibration</code></h4>
928 <p><em>Definition:</em> <code>touch.orientation.calibration</code> = <code>none</code> | <code>interpolated</code> | <code>vector</code> | <code>default</code></p>
932 <p>If the value is <code>none</code>, the orientation is unknown so it is set to 0.</p>
935 <p>If the value is <code>interpolated</code>, the orientation is linearly interpolated such that a
936 raw value of <code>raw.orientation.min</code> maps to <code>-PI/2</code> and a raw value of
937 <code>raw.orientation.max</code> maps to <code>PI/2</code>. The center value of
938 <code>(raw.orientation.min + raw.orientation.max) / 2</code> maps to <code>0</code>.</p>
941 <p>If the value is <code>vector</code>, the orientation is interpreted as a packed vector consisiting
948 <p>If the value is <code>default</code>, the system uses the <code>interpolated</code> calibration if the
949 orientation axis available, otherwise uses <code>none</code>.</p>
953 <p>The calculation of the <code>Orientation</code> and <code>Tilt</code> fields depends on the specified
955 <pre><code>If touch.tiltX and touch.tiltY are available:
1001 </code></pre>
1002 <h3 id="distance-field"><code>Distance</code> Field</h3>
1003 <p>The <code>Distance</code> field describes the distance between the tool and the touch device
1006 <h4 id="touchdistancecalibration"><code>touch.distance.calibration</code></h4>
1007 <p><em>Definition:</em> <code>touch.distance.calibration</code> = <code>none</code> | <code>scaled</code> | <code>default</code></p>
1011 <p>If the value is <code>none</code>, the distance is unknown so it is set to 0.</p>
1014 <p>If the value is <code>scaled</code>, the reported distance is multiplied by a
1018 <p>If the value is <code>default</code>, the system uses the <code>scaled</code> calibration if the
1019 distance axis available, otherwise uses <code>none</code>.</p>
1022 <h4 id="touchdistancescale"><code>touch.distance.scale</code></h4>
1023 <p><em>Definition:</em> <code>touch.distance.scale</code> = <a non-negative floating point number></p>
1025 <p>The default value is <code>1.0</code>.</p>
1027 <p>The calculation of the <code>Distance</code> field depends on the specified calibration parameters.</p>
1028 <pre><code>If touch.distance.calibration == "scaled":
1033 </code></pre>
1035 <pre><code># Input device configuration file for a touch screen that supports pressure,
1066 </code></pre>
1080 file called <code>virtualkeys.<devicename></code> as a board property. For example,
1082 the virtual key map file must have the path <code>/sys/board_properties/virtualkeys.touchyfeely</code>.</p>
1087 to specify the type of the keyboard device (usually <code>SPECIAL_FUNCTION</code>).</p>
1094 <li><code>0x01</code>: A version code. Must always be <code>0x01</code>.</li>
1095 <li><Linux key code>: The Linux key code of the virtual key.</li>
1103 <pre><code># All on one line
1105 </code></pre>
1107 <pre><code># One key per line
1112 </code></pre>
1116 <p>The first key has a Linux scan code of <code>158</code> (<code>KEY_BACK</code>), centerX of <code>55</code>,
1117 centerY of <code>835</code>, width of <code>90</code> and height of <code>55</code>.</p>
1119 <p>Virtual key map file: <code>/sys/board_properties/virtualkeys.touchyfeely</code>.</p>
1120 <pre><code>0x01:158:55:835:90:55
1124 </code></pre>
1125 <p>Key layout file: <code>/system/usr/keylayout/touchyfeely.kl</code>.</p>
1126 <pre><code>key 158 BACK
1130 </code></pre>
1131 <p>Key character map file: <code>/system/usr/keychars/touchyfeely.kcm</code>.</p>
1132 <pre><code>type SPECIAL_FUNCTION
1133 </code></pre>