~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/xen/interface/io/kbdif.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/xen/interface/io/kbdif.h (Version linux-6.11-rc3) and /include/xen/interface/io/kbdif.h (Version linux-3.10.108)


  1 /* SPDX-License-Identifier: MIT */             << 
  2 /*                                                  1 /*
  3  * kbdif.h -- Xen virtual keyboard/mouse            2  * kbdif.h -- Xen virtual keyboard/mouse
  4  *                                                  3  *
                                                   >>   4  * Permission is hereby granted, free of charge, to any person obtaining a copy
                                                   >>   5  * of this software and associated documentation files (the "Software"), to
                                                   >>   6  * deal in the Software without restriction, including without limitation the
                                                   >>   7  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
                                                   >>   8  * sell copies of the Software, and to permit persons to whom the Software is
                                                   >>   9  * furnished to do so, subject to the following conditions:
                                                   >>  10  *
                                                   >>  11  * The above copyright notice and this permission notice shall be included in
                                                   >>  12  * all copies or substantial portions of the Software.
                                                   >>  13  *
                                                   >>  14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                                   >>  15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                                   >>  16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                                   >>  17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                                   >>  18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
                                                   >>  19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
                                                   >>  20  * DEALINGS IN THE SOFTWARE.
                                                   >>  21  *
  5  * Copyright (C) 2005 Anthony Liguori <aliguor     22  * Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com>
  6  * Copyright (C) 2006 Red Hat, Inc., Markus Ar     23  * Copyright (C) 2006 Red Hat, Inc., Markus Armbruster <armbru@redhat.com>
  7  */                                                24  */
  8                                                    25 
  9 #ifndef __XEN_PUBLIC_IO_KBDIF_H__                  26 #ifndef __XEN_PUBLIC_IO_KBDIF_H__
 10 #define __XEN_PUBLIC_IO_KBDIF_H__                  27 #define __XEN_PUBLIC_IO_KBDIF_H__
 11                                                    28 
 12 /*                                             !!  29 /* In events (backend -> frontend) */
 13  ********************************************* << 
 14  *                     Feature and Parameter N << 
 15  ********************************************* << 
 16  *                                             << 
 17  * The two halves of a para-virtual driver uti << 
 18  * XenStore to communicate capabilities and to << 
 19  * This section enumerates these nodes which r << 
 20  * backend portions of XenStore, following Xen << 
 21  *                                             << 
 22  * All data in XenStore is stored as strings.  << 
 23  * values are encoded in decimal. Integer valu << 
 24  * expressed as fixed sized integer types capa << 
 25  * of a properly formated node string, without << 
 26  *                                             << 
 27  ********************************************* << 
 28  *                            Backend XenBus N << 
 29  ********************************************* << 
 30  *                                             << 
 31  *---------------------------- Features suppor << 
 32  *                                             << 
 33  * Capable backend advertises supported featur << 
 34  * corresponding entries in XenStore and puts  << 
 35  * If a feature is not supported then 0 must b << 
 36  *                                             << 
 37  * feature-disable-keyboard                    << 
 38  *      Values:         <uint>                 << 
 39  *                                             << 
 40  *      If there is no need to expose a virtua << 
 41  *      frontend then this must be set to 1.   << 
 42  *                                             << 
 43  * feature-disable-pointer                     << 
 44  *      Values:         <uint>                 << 
 45  *                                             << 
 46  *      If there is no need to expose a virtua << 
 47  *      frontend then this must be set to 1.   << 
 48  *                                             << 
 49  * feature-abs-pointer                         << 
 50  *      Values:         <uint>                 << 
 51  *                                             << 
 52  *      Backends, which support reporting of a << 
 53  *      device should set this to 1.           << 
 54  *                                             << 
 55  * feature-multi-touch                         << 
 56  *      Values:         <uint>                 << 
 57  *                                             << 
 58  *      Backends, which support reporting of m << 
 59  *      should set this to 1.                  << 
 60  *                                             << 
 61  * feature-raw-pointer                         << 
 62  *      Values:        <uint>                  << 
 63  *                                             << 
 64  *      Backends, which support reporting raw  << 
 65  *      for pointer devices should set this to << 
 66  *      a range of [0, 0x7fff].                << 
 67  *                                             << 
 68  *-----------------------  Device Instance Par << 
 69  *                                             << 
 70  * unique-id                                   << 
 71  *      Values:         <string>               << 
 72  *                                             << 
 73  *      After device instance initialization i << 
 74  *      so every instance of the frontend can  << 
 75  *      by this ID. This can be UUID or such.  << 
 76  *                                             << 
 77  *------------------------- Pointer Device Par << 
 78  *                                             << 
 79  * width                                       << 
 80  *      Values:         <uint>                 << 
 81  *                                             << 
 82  *      Maximum X coordinate (width) to be use << 
 83  *      while reporting input events, pixels,  << 
 84  *                                             << 
 85  * height                                      << 
 86  *      Values:         <uint>                 << 
 87  *                                             << 
 88  *      Maximum Y coordinate (height) to be us << 
 89  *      while reporting input events, pixels,  << 
 90  *                                             << 
 91  *----------------------- Multi-touch Device P << 
 92  *                                             << 
 93  * multi-touch-num-contacts                    << 
 94  *      Values:         <uint>                 << 
 95  *                                             << 
 96  *      Number of simultaneous touches reporte << 
 97  *                                             << 
 98  * multi-touch-width                           << 
 99  *      Values:         <uint>                 << 
100  *                                             << 
101  *      Width of the touch area to be used by  << 
102  *      while reporting input events, pixels,  << 
103  *                                             << 
104  * multi-touch-height                          << 
105  *      Values:         <uint>                 << 
106  *                                             << 
107  *      Height of the touch area to be used by << 
108  *      while reporting input events, pixels,  << 
109  *                                             << 
110  ********************************************* << 
111  *                            Frontend XenBus  << 
112  ********************************************* << 
113  *                                             << 
114  *------------------------------ Feature reque << 
115  *                                             << 
116  * Capable frontend requests features from bac << 
117  * entries to 1 in XenStore. Requests for feat << 
118  * by the backend have no effect.              << 
119  *                                             << 
120  * request-abs-pointer                         << 
121  *      Values:         <uint>                 << 
122  *                                             << 
123  *      Request backend to report absolute poi << 
124  *      (XENKBD_TYPE_POS) instead of relative  << 
125  *                                             << 
126  * request-multi-touch                         << 
127  *      Values:         <uint>                 << 
128  *                                             << 
129  *      Request backend to report multi-touch  << 
130  *                                             << 
131  * request-raw-pointer                         << 
132  *      Values:         <uint>                 << 
133  *                                             << 
134  *      Request backend to report raw unscaled << 
135  *      This option is only valid if request-a << 
136  *      Raw unscaled coordinates have the rang << 
137  *                                             << 
138  *----------------------- Request Transport Pa << 
139  *                                             << 
140  * event-channel                               << 
141  *      Values:         <uint>                 << 
142  *                                             << 
143  *      The identifier of the Xen event channe << 
144  *      in the ring buffer.                    << 
145  *                                             << 
146  * page-gref                                   << 
147  *      Values:         <uint>                 << 
148  *                                             << 
149  *      The Xen grant reference granting permi << 
150  *      a sole page in a single page sized eve << 
151  *                                             << 
152  * page-ref                                    << 
153  *      Values:         <uint>                 << 
154  *                                             << 
155  *      OBSOLETE, not recommended for use.     << 
156  *      PFN of the shared page.                << 
157  */                                            << 
158                                                << 
159 /*                                             << 
160  * EVENT CODES.                                << 
161  */                                            << 
162                                                << 
163 #define XENKBD_TYPE_MOTION              1      << 
164 #define XENKBD_TYPE_RESERVED            2      << 
165 #define XENKBD_TYPE_KEY                 3      << 
166 #define XENKBD_TYPE_POS                 4      << 
167 #define XENKBD_TYPE_MTOUCH              5      << 
168                                                << 
169 /* Multi-touch event sub-codes */              << 
170                                                << 
171 #define XENKBD_MT_EV_DOWN               0      << 
172 #define XENKBD_MT_EV_UP                 1      << 
173 #define XENKBD_MT_EV_MOTION             2      << 
174 #define XENKBD_MT_EV_SYN                3      << 
175 #define XENKBD_MT_EV_SHAPE              4      << 
176 #define XENKBD_MT_EV_ORIENT             5      << 
177                                                    30 
178 /*                                                 31 /*
179  * CONSTANTS, XENSTORE FIELD AND PATH NAME STR !!  32  * Frontends should ignore unknown in events.
180  */                                                33  */
181                                                    34 
182 #define XENKBD_DRIVER_NAME              "vkbd" !!  35 /* Pointer movement event */
183                                                !!  36 #define XENKBD_TYPE_MOTION  1
184 #define XENKBD_FIELD_FEAT_DSBL_KEYBRD   "featu !!  37 /* Event type 2 currently not used */
185 #define XENKBD_FIELD_FEAT_DSBL_POINTER  "featu !!  38 /* Key event (includes pointer buttons) */
186 #define XENKBD_FIELD_FEAT_ABS_POINTER   "featu !!  39 #define XENKBD_TYPE_KEY     3
187 #define XENKBD_FIELD_FEAT_RAW_POINTER   "featu !!  40 /*
188 #define XENKBD_FIELD_FEAT_MTOUCH        "featu !!  41  * Pointer position event
189 #define XENKBD_FIELD_REQ_ABS_POINTER    "reque !!  42  * Capable backend sets feature-abs-pointer in xenstore.
190 #define XENKBD_FIELD_REQ_RAW_POINTER    "reque !!  43  * Frontend requests ot instead of XENKBD_TYPE_MOTION by setting
191 #define XENKBD_FIELD_REQ_MTOUCH         "reque !!  44  * request-abs-update in xenstore.
192 #define XENKBD_FIELD_RING_GREF          "page- << 
193 #define XENKBD_FIELD_EVT_CHANNEL        "event << 
194 #define XENKBD_FIELD_WIDTH              "width << 
195 #define XENKBD_FIELD_HEIGHT             "heigh << 
196 #define XENKBD_FIELD_MT_WIDTH           "multi << 
197 #define XENKBD_FIELD_MT_HEIGHT          "multi << 
198 #define XENKBD_FIELD_MT_NUM_CONTACTS    "multi << 
199 #define XENKBD_FIELD_UNIQUE_ID          "uniqu << 
200                                                << 
201 /* OBSOLETE, not recommended for use */        << 
202 #define XENKBD_FIELD_RING_REF           "page- << 
203                                                << 
204 /*                                             << 
205  ********************************************* << 
206  * Description of the protocol between fronten << 
207  ********************************************* << 
208  *                                             << 
209  * The two halves of a Para-virtual driver com << 
210  * each other using a shared page and an event << 
211  * Shared page contains a ring with event stru << 
212  *                                             << 
213  * All reserved fields in the structures below << 
214  *                                             << 
215  ********************************************* << 
216  *                           Backend to fronte << 
217  ********************************************* << 
218  *                                             << 
219  * Frontends should ignore unknown in events.  << 
220  * All event packets have the same length (40  << 
221  * All event packets have common header:       << 
222  *                                             << 
223  *          0         octet                    << 
224  * +-----------------+                         << 
225  * |       type      |                         << 
226  * +-----------------+                         << 
227  * type - uint8_t, event code, XENKBD_TYPE_??? << 
228  *                                             << 
229  *                                             << 
230  * Pointer relative movement event             << 
231  *         0                1                  << 
232  * +----------------+----------------+-------- << 
233  * |  _TYPE_MOTION  |                     rese << 
234  * +----------------+----------------+-------- << 
235  * |                               rel_x       << 
236  * +----------------+----------------+-------- << 
237  * |                               rel_y       << 
238  * +----------------+----------------+-------- << 
239  * |                               rel_z       << 
240  * +----------------+----------------+-------- << 
241  * |                             reserved      << 
242  * +----------------+----------------+-------- << 
243  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
244  * +----------------+----------------+-------- << 
245  * |                             reserved      << 
246  * +----------------+----------------+-------- << 
247  *                                             << 
248  * rel_x - int32_t, relative X motion          << 
249  * rel_y - int32_t, relative Y motion          << 
250  * rel_z - int32_t, relative Z motion (wheel)  << 
251  */                                                45  */
                                                   >>  46 #define XENKBD_TYPE_POS     4
252                                                    47 
253 struct xenkbd_motion {                             48 struct xenkbd_motion {
254         uint8_t type;                          !!  49         uint8_t type;           /* XENKBD_TYPE_MOTION */
255         int32_t rel_x;                         !!  50         int32_t rel_x;          /* relative X motion */
256         int32_t rel_y;                         !!  51         int32_t rel_y;          /* relative Y motion */
257         int32_t rel_z;                         !!  52         int32_t rel_z;          /* relative Z motion (wheel) */
258 };                                                 53 };
259                                                    54 
260 /*                                             << 
261  * Key event (includes pointer buttons)        << 
262  *         0                1                  << 
263  * +----------------+----------------+-------- << 
264  * |  _TYPE_KEY     |     pressed    |         << 
265  * +----------------+----------------+-------- << 
266  * |                              keycode      << 
267  * +----------------+----------------+-------- << 
268  * |                             reserved      << 
269  * +----------------+----------------+-------- << 
270  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
271  * +----------------+----------------+-------- << 
272  * |                             reserved      << 
273  * +----------------+----------------+-------- << 
274  *                                             << 
275  * pressed - uint8_t, 1 if pressed; 0 otherwis << 
276  * keycode - uint32_t, KEY_* from linux/input. << 
277  */                                            << 
278                                                << 
279 struct xenkbd_key {                                55 struct xenkbd_key {
280         uint8_t type;                          !!  56         uint8_t type;           /* XENKBD_TYPE_KEY */
281         uint8_t pressed;                       !!  57         uint8_t pressed;        /* 1 if pressed; 0 otherwise */
282         uint32_t keycode;                      !!  58         uint32_t keycode;       /* KEY_* from linux/input.h */
283 };                                                 59 };
284                                                    60 
285 /*                                             << 
286  * Pointer absolute position event             << 
287  *         0                1                  << 
288  * +----------------+----------------+-------- << 
289  * |  _TYPE_POS     |                     rese << 
290  * +----------------+----------------+-------- << 
291  * |                               abs_x       << 
292  * +----------------+----------------+-------- << 
293  * |                               abs_y       << 
294  * +----------------+----------------+-------- << 
295  * |                               rel_z       << 
296  * +----------------+----------------+-------- << 
297  * |                             reserved      << 
298  * +----------------+----------------+-------- << 
299  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
300  * +----------------+----------------+-------- << 
301  * |                             reserved      << 
302  * +----------------+----------------+-------- << 
303  *                                             << 
304  * abs_x - int32_t, absolute X position (in FB << 
305  * abs_y - int32_t, absolute Y position (in FB << 
306  * rel_z - int32_t, relative Z motion (wheel)  << 
307  */                                            << 
308                                                << 
309 struct xenkbd_position {                           61 struct xenkbd_position {
310         uint8_t type;                          !!  62         uint8_t type;           /* XENKBD_TYPE_POS */
311         int32_t abs_x;                         !!  63         int32_t abs_x;          /* absolute X position (in FB pixels) */
312         int32_t abs_y;                         !!  64         int32_t abs_y;          /* absolute Y position (in FB pixels) */
313         int32_t rel_z;                         !!  65         int32_t rel_z;          /* relative Z motion (wheel) */
314 };                                             << 
315                                                << 
316 /*                                             << 
317  * Multi-touch event and its sub-types         << 
318  *                                             << 
319  * All multi-touch event packets have common h << 
320  *                                             << 
321  *         0                1                  << 
322  * +----------------+----------------+-------- << 
323  * |  _TYPE_MTOUCH  |   event_type   |   conta << 
324  * +----------------+----------------+-------- << 
325  * |                             reserved      << 
326  * +----------------+----------------+-------- << 
327  *                                             << 
328  * event_type - unt8_t, multi-touch event sub- << 
329  * contact_id - unt8_t, ID of the contact      << 
330  *                                             << 
331  * Touch interactions can consist of one or mo << 
332  * For each contact, a series of events is gen << 
333  * with a down event, followed by zero or more << 
334  * and ending with an up event. Events relatin << 
335  * contact point can be identified by the ID o << 
336  * Contact ID may be reused after XENKBD_MT_EV << 
337  * is in the [0; XENKBD_FIELD_NUM_CONTACTS - 1 << 
338  *                                             << 
339  * For further information please refer to doc << 
340  * Linux [2] and Windows [3] multi-touch suppo << 
341  *                                             << 
342  * [1] https://cgit.freedesktop.org/wayland/wa << 
343  * [2] https://www.kernel.org/doc/Documentatio << 
344  * [3] https://msdn.microsoft.com/en-us/librar << 
345  *                                             << 
346  *                                             << 
347  * Multi-touch down event - sent when a new to << 
348  * a unique contact ID, sent with this and con << 
349  * to this touch.                              << 
350  *         0                1                  << 
351  * +----------------+----------------+-------- << 
352  * |  _TYPE_MTOUCH  |   _MT_EV_DOWN  |   conta << 
353  * +----------------+----------------+-------- << 
354  * |                             reserved      << 
355  * +----------------+----------------+-------- << 
356  * |                               abs_x       << 
357  * +----------------+----------------+-------- << 
358  * |                               abs_y       << 
359  * +----------------+----------------+-------- << 
360  * |                             reserved      << 
361  * +----------------+----------------+-------- << 
362  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
363  * +----------------+----------------+-------- << 
364  * |                             reserved      << 
365  * +----------------+----------------+-------- << 
366  *                                             << 
367  * abs_x - int32_t, absolute X position, in pi << 
368  * abs_y - int32_t, absolute Y position, in pi << 
369  *                                             << 
370  * Multi-touch contact release event           << 
371  *         0                1                  << 
372  * +----------------+----------------+-------- << 
373  * |  _TYPE_MTOUCH  |  _MT_EV_UP     |   conta << 
374  * +----------------+----------------+-------- << 
375  * |                             reserved      << 
376  * +----------------+----------------+-------- << 
377  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
378  * +----------------+----------------+-------- << 
379  * |                             reserved      << 
380  * +----------------+----------------+-------- << 
381  *                                             << 
382  * Multi-touch motion event                    << 
383  *         0                1                  << 
384  * +----------------+----------------+-------- << 
385  * |  _TYPE_MTOUCH  |  _MT_EV_MOTION |   conta << 
386  * +----------------+----------------+-------- << 
387  * |                             reserved      << 
388  * +----------------+----------------+-------- << 
389  * |                               abs_x       << 
390  * +----------------+----------------+-------- << 
391  * |                               abs_y       << 
392  * +----------------+----------------+-------- << 
393  * |                             reserved      << 
394  * +----------------+----------------+-------- << 
395  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
396  * +----------------+----------------+-------- << 
397  * |                             reserved      << 
398  * +----------------+----------------+-------- << 
399  *                                             << 
400  * abs_x - int32_t, absolute X position, in pi << 
401  * abs_y - int32_t, absolute Y position, in pi << 
402  *                                             << 
403  * Multi-touch input synchronization event - s << 
404  * which logically belong together.            << 
405  *         0                1                  << 
406  * +----------------+----------------+-------- << 
407  * |  _TYPE_MTOUCH  |  _MT_EV_SYN    |   conta << 
408  * +----------------+----------------+-------- << 
409  * |                             reserved      << 
410  * +----------------+----------------+-------- << 
411  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
412  * +----------------+----------------+-------- << 
413  * |                             reserved      << 
414  * +----------------+----------------+-------- << 
415  *                                             << 
416  * Multi-touch shape event - touch point's sha << 
417  * Shape is approximated by an ellipse through << 
418  * lengths: major is the longer diameter of th << 
419  * shorter one. Center of the ellipse is repor << 
420  * XENKBD_MT_EV_DOWN/XENKBD_MT_EV_MOTION event << 
421  *         0                1                  << 
422  * +----------------+----------------+-------- << 
423  * |  _TYPE_MTOUCH  |  _MT_EV_SHAPE  |   conta << 
424  * +----------------+----------------+-------- << 
425  * |                             reserved      << 
426  * +----------------+----------------+-------- << 
427  * |                               major       << 
428  * +----------------+----------------+-------- << 
429  * |                               minor       << 
430  * +----------------+----------------+-------- << 
431  * |                             reserved      << 
432  * +----------------+----------------+-------- << 
433  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
434  * +----------------+----------------+-------- << 
435  * |                             reserved      << 
436  * +----------------+----------------+-------- << 
437  *                                             << 
438  * major - unt32_t, length of the major axis,  << 
439  * minor - unt32_t, length of the minor axis,  << 
440  *                                             << 
441  * Multi-touch orientation event - touch point << 
442  * its orientation: calculated as a clockwise  << 
443  * of the ellipse and positive Y axis in degre << 
444  *         0                1                  << 
445  * +----------------+----------------+-------- << 
446  * |  _TYPE_MTOUCH  |  _MT_EV_ORIENT |   conta << 
447  * +----------------+----------------+-------- << 
448  * |                             reserved      << 
449  * +----------------+----------------+-------- << 
450  * |           orientation           |         << 
451  * +----------------+----------------+-------- << 
452  * |                             reserved      << 
453  * +----------------+----------------+-------- << 
454  * |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ << 
455  * +----------------+----------------+-------- << 
456  * |                             reserved      << 
457  * +----------------+----------------+-------- << 
458  *                                             << 
459  * orientation - int16_t, clockwise angle of t << 
460  */                                            << 
461                                                << 
462 struct xenkbd_mtouch {                         << 
463         uint8_t type;                   /* XEN << 
464         uint8_t event_type;             /* XEN << 
465         uint8_t contact_id;                    << 
466         uint8_t reserved[5];            /* res << 
467         union {                                << 
468                 struct {                       << 
469                         int32_t abs_x;  /* abs << 
470                         int32_t abs_y;  /* abs << 
471                 } pos;                         << 
472                 struct {                       << 
473                         uint32_t major; /* len << 
474                         uint32_t minor; /* len << 
475                 } shape;                       << 
476                 int16_t orientation;    /* clo << 
477         } u;                                   << 
478 };                                                 66 };
479                                                    67 
480 #define XENKBD_IN_EVENT_SIZE 40                    68 #define XENKBD_IN_EVENT_SIZE 40
481                                                    69 
482 union xenkbd_in_event {                            70 union xenkbd_in_event {
483         uint8_t type;                              71         uint8_t type;
484         struct xenkbd_motion motion;               72         struct xenkbd_motion motion;
485         struct xenkbd_key key;                     73         struct xenkbd_key key;
486         struct xenkbd_position pos;                74         struct xenkbd_position pos;
487         struct xenkbd_mtouch mtouch;           << 
488         char pad[XENKBD_IN_EVENT_SIZE];            75         char pad[XENKBD_IN_EVENT_SIZE];
489 };                                                 76 };
490                                                    77 
                                                   >>  78 /* Out events (frontend -> backend) */
                                                   >>  79 
491 /*                                                 80 /*
492  ********************************************* << 
493  *                            Frontend to back << 
494  ********************************************* << 
495  *                                             << 
496  * Out events may be sent only when requested      81  * Out events may be sent only when requested by backend, and receipt
497  * of an unknown out event is an error.            82  * of an unknown out event is an error.
498  * No out events currently defined.                83  * No out events currently defined.
499                                                << 
500  * All event packets have the same length (40  << 
501  * All event packets have common header:       << 
502  *          0         octet                    << 
503  * +-----------------+                         << 
504  * |       type      |                         << 
505  * +-----------------+                         << 
506  * type - uint8_t, event code                  << 
507  */                                                84  */
508                                                    85 
509 #define XENKBD_OUT_EVENT_SIZE 40                   86 #define XENKBD_OUT_EVENT_SIZE 40
510                                                    87 
511 union xenkbd_out_event {                           88 union xenkbd_out_event {
512         uint8_t type;                              89         uint8_t type;
513         char pad[XENKBD_OUT_EVENT_SIZE];           90         char pad[XENKBD_OUT_EVENT_SIZE];
514 };                                                 91 };
515                                                    92 
516 /*                                             !!  93 /* shared page */
517  ********************************************* << 
518  *                            Shared page      << 
519  ********************************************* << 
520  */                                            << 
521                                                    94 
522 #define XENKBD_IN_RING_SIZE 2048                   95 #define XENKBD_IN_RING_SIZE 2048
523 #define XENKBD_IN_RING_LEN (XENKBD_IN_RING_SIZ     96 #define XENKBD_IN_RING_LEN (XENKBD_IN_RING_SIZE / XENKBD_IN_EVENT_SIZE)
524 #define XENKBD_IN_RING_OFFS 1024                   97 #define XENKBD_IN_RING_OFFS 1024
525 #define XENKBD_IN_RING(page) \                     98 #define XENKBD_IN_RING(page) \
526         ((union xenkbd_in_event *)((char *)(pa     99         ((union xenkbd_in_event *)((char *)(page) + XENKBD_IN_RING_OFFS))
527 #define XENKBD_IN_RING_REF(page, idx) \           100 #define XENKBD_IN_RING_REF(page, idx) \
528         (XENKBD_IN_RING((page))[(idx) % XENKBD    101         (XENKBD_IN_RING((page))[(idx) % XENKBD_IN_RING_LEN])
529                                                   102 
530 #define XENKBD_OUT_RING_SIZE 1024                 103 #define XENKBD_OUT_RING_SIZE 1024
531 #define XENKBD_OUT_RING_LEN (XENKBD_OUT_RING_S    104 #define XENKBD_OUT_RING_LEN (XENKBD_OUT_RING_SIZE / XENKBD_OUT_EVENT_SIZE)
532 #define XENKBD_OUT_RING_OFFS (XENKBD_IN_RING_O    105 #define XENKBD_OUT_RING_OFFS (XENKBD_IN_RING_OFFS + XENKBD_IN_RING_SIZE)
533 #define XENKBD_OUT_RING(page) \                   106 #define XENKBD_OUT_RING(page) \
534         ((union xenkbd_out_event *)((char *)(p    107         ((union xenkbd_out_event *)((char *)(page) + XENKBD_OUT_RING_OFFS))
535 #define XENKBD_OUT_RING_REF(page, idx) \          108 #define XENKBD_OUT_RING_REF(page, idx) \
536         (XENKBD_OUT_RING((page))[(idx) % XENKB    109         (XENKBD_OUT_RING((page))[(idx) % XENKBD_OUT_RING_LEN])
537                                                   110 
538 struct xenkbd_page {                              111 struct xenkbd_page {
539         uint32_t in_cons, in_prod;                112         uint32_t in_cons, in_prod;
540         uint32_t out_cons, out_prod;              113         uint32_t out_cons, out_prod;
541 };                                                114 };
542                                                   115 
543 #endif /* __XEN_PUBLIC_IO_KBDIF_H__ */         !! 116 #endif
544                                                   117 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php