root/dev/wscons/wsconsio.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /* $OpenBSD: wsconsio.h,v 1.45 2007/05/08 20:38:20 robert Exp $ */
    2 /* $NetBSD: wsconsio.h,v 1.74 2005/04/28 07:15:44 martin Exp $ */
    3 
    4 /*
    5  * Copyright (c) 1996, 1997 Christopher G. Demetriou.  All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  * 3. All advertising materials mentioning features or use of this software
   16  *    must display the following acknowledgement:
   17  *      This product includes software developed by Christopher G. Demetriou
   18  *      for the NetBSD Project.
   19  * 4. The name of the author may not be used to endorse or promote products
   20  *    derived from this software without specific prior written permission
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   23  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   24  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   25  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   27  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   31  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   32  */
   33 
   34 #ifndef _DEV_WSCONS_WSCONSIO_H_
   35 #define _DEV_WSCONS_WSCONSIO_H_
   36 
   37 /*
   38  * WSCONS (wsdisplay, wskbd, wsmouse) exported interfaces.
   39  *
   40  * Ioctls are all in group 'W'.  Ioctl number space is partitioned like:
   41  *      0-31    keyboard ioctls (WSKBDIO)
   42  *      32-63   mouse ioctls (WSMOUSEIO)
   43  *      64-95   display ioctls (WSDISPLAYIO)
   44  *      96-127  mux ioctls (WSMUXIO)
   45  *      128-255 reserved for future use
   46  */
   47 
   48 #include <sys/types.h>
   49 #include <sys/ioccom.h>
   50 #include <dev/wscons/wsksymvar.h>
   51 
   52 #include <sys/pciio.h>
   53 
   54 #define WSSCREEN_NAME_SIZE      16
   55 #define WSEMUL_NAME_SIZE        16
   56 #define WSFONT_NAME_SIZE        16
   57 
   58 /*
   59  * Common event structure (used by keyboard and mouse)
   60  */
   61 struct wscons_event {
   62         u_int           type;
   63         int             value;
   64         struct timespec time;
   65 };
   66 
   67 /* Event type definitions.  Comment for each is information in value. */
   68 #define WSCONS_EVENT_KEY_UP             1       /* key code */
   69 #define WSCONS_EVENT_KEY_DOWN           2       /* key code */
   70 #define WSCONS_EVENT_ALL_KEYS_UP        3       /* void */
   71 #define WSCONS_EVENT_MOUSE_UP           4       /* button # (leftmost = 0) */
   72 #define WSCONS_EVENT_MOUSE_DOWN         5       /* button # (leftmost = 0)  */
   73 #define WSCONS_EVENT_MOUSE_DELTA_X      6       /* X delta amount */
   74 #define WSCONS_EVENT_MOUSE_DELTA_Y      7       /* Y delta amount */
   75 #define WSCONS_EVENT_MOUSE_ABSOLUTE_X   8       /* X location */
   76 #define WSCONS_EVENT_MOUSE_ABSOLUTE_Y   9       /* Y location */
   77 #define WSCONS_EVENT_MOUSE_DELTA_Z      10      /* Z delta amount */
   78 #define WSCONS_EVENT_MOUSE_ABSOLUTE_Z   11      /* Z location */
   79                                      /* 12-15, see below */
   80 #define WSCONS_EVENT_MOUSE_DELTA_W      16      /* W delta amount */
   81 #define WSCONS_EVENT_MOUSE_ABSOLUTE_W   17      /* W location */
   82 /* 
   83  * Following events are not real wscons_event but are used as parameters of the
   84  * WSDISPLAYIO_WSMOUSED ioctl 
   85  */
   86 #define WSCONS_EVENT_WSMOUSED_ON        12      /* wsmoused(8) active */
   87 #define WSCONS_EVENT_WSMOUSED_OFF       13      /* wsmoused(8) inactive */
   88 #define WSCONS_EVENT_WSMOUSED_SLEEP     14      /* wsmoused(8) sleeping */
   89 #define WSCONS_EVENT_WSMOUSED_CLOSE     15      /* notify wsmoused(8) to close 
   90                                                    mouse device */
   91 
   92 #define IS_MOTION_EVENT(type) (((type) == WSCONS_EVENT_MOUSE_DELTA_X) || \
   93                                ((type) == WSCONS_EVENT_MOUSE_DELTA_Y) || \
   94                                ((type) == WSCONS_EVENT_MOUSE_DELTA_Z) || \
   95                                ((type) == WSCONS_EVENT_MOUSE_DELTA_W))
   96 #define IS_BUTTON_EVENT(type) (((type) == WSCONS_EVENT_MOUSE_UP) || \
   97                                ((type) == WSCONS_EVENT_MOUSE_DOWN))
   98 #define IS_CTRL_EVENT(type) ((type == WSCONS_EVENT_WSMOUSED_ON) || \
   99                              (type == WSCONS_EVENT_WSMOUSED_OFF)|| \
  100                              (type == WSCONS_EVENT_WSMOUSED_SLEEP))
  101 
  102 /*
  103  * Keyboard ioctls (0 - 31)
  104  */
  105 
  106 /* Get keyboard type. */
  107 #define WSKBDIO_GTYPE           _IOR('W', 0, u_int)
  108 #define         WSKBD_TYPE_LK201        1       /* lk-201 */
  109 #define         WSKBD_TYPE_LK401        2       /* lk-401 */
  110 #define         WSKBD_TYPE_PC_XT        3       /* PC-ish, XT scancode */
  111 #define         WSKBD_TYPE_PC_AT        4       /* PC-ish, AT scancode */
  112 #define         WSKBD_TYPE_USB          5       /* USB, XT scancode */
  113 #define         WSKBD_TYPE_NEXT         6       /* NeXT keyboard */
  114 #define         WSKBD_TYPE_HPC_KBD      7       /* HPC builtin keyboard */
  115 #define         WSKBD_TYPE_HPC_BTN      8       /* HPC/PsPC buttons */
  116 #define         WSKBD_TYPE_ARCHIMEDES   9       /* Archimedes keyboard */
  117 #define         WSKBD_TYPE_ADB          10      /* Apple ADB keyboard */
  118 #define         WSKBD_TYPE_SUN          11      /* Sun Type3/4 */
  119 #define         WSKBD_TYPE_SUN5         12      /* Sun Type5 */
  120 #define         WSKBD_TYPE_HIL          13      /* HP HIL */
  121 #define         WSKBD_TYPE_GSC          14      /* HP PS/2 */
  122 #define         WSKBD_TYPE_LUNA         15      /* OMRON Luna */
  123 #define         WSKBD_TYPE_ZAURUS       16      /* Sharp Zaurus */
  124 #define         WSKBD_TYPE_DOMAIN       17      /* Apollo Domain */
  125 
  126 /* Manipulate the keyboard bell. */
  127 struct wskbd_bell_data {
  128         u_int   which;                          /* values to get/set */
  129         u_int   pitch;                          /* pitch, in Hz */
  130         u_int   period;                         /* period, in milliseconds */
  131         u_int   volume;                         /* percentage of max volume */
  132 };
  133 #define         WSKBD_BELL_DOPITCH      0x1             /* get/set pitch */
  134 #define         WSKBD_BELL_DOPERIOD     0x2             /* get/set period */
  135 #define         WSKBD_BELL_DOVOLUME     0x4             /* get/set volume */
  136 #define         WSKBD_BELL_DOALL        0x7             /* all of the above */
  137 
  138 #define WSKBDIO_BELL            _IO('W', 1)
  139 #define WSKBDIO_COMPLEXBELL     _IOW('W', 2, struct wskbd_bell_data)
  140 #define WSKBDIO_SETBELL         _IOW('W', 3, struct wskbd_bell_data)
  141 #define WSKBDIO_GETBELL         _IOR('W', 4, struct wskbd_bell_data)
  142 #define WSKBDIO_SETDEFAULTBELL  _IOW('W', 5, struct wskbd_bell_data)
  143 #define WSKBDIO_GETDEFAULTBELL  _IOR('W', 6, struct wskbd_bell_data)
  144 
  145 /* Manipulate the emulation key repeat settings. */
  146 struct wskbd_keyrepeat_data {
  147         u_int   which;                          /* values to get/set */
  148         u_int   del1;                           /* delay before first, ms */
  149         u_int   delN;                           /* delay before rest, ms */
  150 };
  151 #define         WSKBD_KEYREPEAT_DODEL1  0x1             /* get/set del1 */
  152 #define         WSKBD_KEYREPEAT_DODELN  0x2             /* get/set delN */
  153 #define         WSKBD_KEYREPEAT_DOALL   0x3             /* all of the above */
  154 
  155 #define WSKBDIO_SETKEYREPEAT    _IOW('W', 7, struct wskbd_keyrepeat_data)
  156 #define WSKBDIO_GETKEYREPEAT    _IOR('W', 8, struct wskbd_keyrepeat_data)
  157 #define WSKBDIO_SETDEFAULTKEYREPEAT \
  158             _IOW('W', 9, struct wskbd_keyrepeat_data)
  159 #define WSKBDIO_GETDEFAULTKEYREPEAT \
  160             _IOR('W', 10, struct wskbd_keyrepeat_data)
  161 
  162 /* Get/set keyboard leds */
  163 #define         WSKBD_LED_CAPS          0x01
  164 #define         WSKBD_LED_NUM           0x02
  165 #define         WSKBD_LED_SCROLL        0x04
  166 #define         WSKBD_LED_COMPOSE       0x08
  167 
  168 #define WSKBDIO_SETLEDS         _IOW('W', 11, int)
  169 #define WSKBDIO_GETLEDS         _IOR('W', 12, int)
  170 
  171 /* Manipulate keysym groups. */
  172 struct wskbd_map_data {
  173         u_int   maplen;                         /* number of entries in map */
  174 #define WSKBDIO_MAXMAPLEN       65536
  175         struct wscons_keymap *map;              /* map to get or set */
  176 };
  177 #define WSKBDIO_GETMAP          _IOWR('W', 13, struct wskbd_map_data)
  178 #define WSKBDIO_SETMAP          _IOW('W', 14, struct wskbd_map_data)
  179 #define WSKBDIO_GETENCODING     _IOR('W', 15, kbd_t)
  180 #define WSKBDIO_SETENCODING     _IOW('W', 16, kbd_t)
  181 
  182 /* internal use only */
  183 #define WSKBDIO_SETMODE         _IOW('W', 19, int)
  184 #define WSKBDIO_GETMODE         _IOR('W', 20, int)
  185 #define         WSKBD_TRANSLATED        0
  186 #define         WSKBD_RAW               1
  187 
  188 /*
  189  * Mouse ioctls (32 - 63)
  190  */
  191 
  192 /* Get mouse type */
  193 #define WSMOUSEIO_GTYPE         _IOR('W', 32, u_int)
  194 #define         WSMOUSE_TYPE_VSXXX      1       /* DEC serial */
  195 #define         WSMOUSE_TYPE_PS2        2       /* PS/2-compatible */
  196 #define         WSMOUSE_TYPE_USB        3       /* USB mouse */
  197 #define         WSMOUSE_TYPE_LMS        4       /* Logitech busmouse */
  198 #define         WSMOUSE_TYPE_MMS        5       /* Microsoft InPort mouse */
  199 #define         WSMOUSE_TYPE_TPANEL     6       /* Generic Touch Panel */
  200 #define         WSMOUSE_TYPE_NEXT       7       /* NeXT mouse */
  201 #define         WSMOUSE_TYPE_ARCHIMEDES 8       /* Archimedes mouse */
  202 #define         WSMOUSE_TYPE_ADB        9       /* ADB */
  203 #define         WSMOUSE_TYPE_HIL        10      /* HP HIL */
  204 #define         WSMOUSE_TYPE_LUNA       11      /* OMRON Luna */
  205 #define         WSMOUSE_TYPE_DOMAIN     12      /* Apollo Domain */
  206 
  207 /* Set resolution.  Not applicable to all mouse types. */
  208 #define WSMOUSEIO_SRES          _IOW('W', 33, u_int)
  209 #define         WSMOUSE_RES_MIN         0
  210 #define         WSMOUSE_RES_DEFAULT     75
  211 #define         WSMOUSE_RES_MAX         100
  212 
  213 /* Set scale factor (num / den).  Not applicable to all mouse types. */
  214 #define WSMOUSEIO_SSCALE        _IOW('W', 34, u_int[2])
  215 
  216 /* Set sample rate.  Not applicable to all mouse types. */
  217 #define WSMOUSEIO_SRATE         _IOW('W', 35, u_int)
  218 #define         WSMOUSE_RATE_MIN        0
  219 #define         WSMOUSE_RATE_DEFAULT    50
  220 #define         WSMOUSE_RATE_MAX        100
  221 
  222 /* Set/get sample coordinates for calibration */
  223 #define WSMOUSE_CALIBCOORDS_MAX         16
  224 #define WSMOUSE_CALIBCOORDS_RESET       -1
  225 struct wsmouse_calibcoords {
  226         int minx, miny;         /* minimum value of X/Y */
  227         int maxx, maxy;         /* maximum value of X/Y */
  228         int swapxy;             /* swap X/Y axis */
  229         int resx, resy;         /* X/Y resolution */
  230         int samplelen;          /* number of samples available or
  231                                    WSMOUSE_CALIBCOORDS_RESET for raw mode */
  232         struct wsmouse_calibcoord {
  233                 int rawx, rawy; /* raw coordinate */
  234                 int x, y;       /* translated coordinate */
  235         } samples[WSMOUSE_CALIBCOORDS_MAX];     /* sample coordinates */
  236 };
  237 #define WSMOUSEIO_SCALIBCOORDS  _IOW('W', 36, struct wsmouse_calibcoords)
  238 #define WSMOUSEIO_GCALIBCOORDS  _IOR('W', 37, struct wsmouse_calibcoords)
  239 
  240 /*
  241  * Display ioctls (64 - 95)
  242  */
  243 
  244 /* Get display type */
  245 #define WSDISPLAYIO_GTYPE       _IOR('W', 64, u_int)
  246 #define         WSDISPLAY_TYPE_UNKNOWN  0       /* unknown */
  247 #define         WSDISPLAY_TYPE_PM_MONO  1       /* DEC [23]100 mono */
  248 #define         WSDISPLAY_TYPE_PM_COLOR 2       /* DEC [23]100 color */
  249 #define         WSDISPLAY_TYPE_CFB      3       /* DEC TC CFB (CX) */
  250 #define         WSDISPLAY_TYPE_XCFB     4       /* DEC `maxine' onboard fb */
  251 #define         WSDISPLAY_TYPE_MFB      5       /* DEC TC MFB (MX) */
  252 #define         WSDISPLAY_TYPE_SFB      6       /* DEC TC SFB (HX) */
  253 #define         WSDISPLAY_TYPE_ISAVGA   7       /* (generic) ISA VGA */
  254 #define         WSDISPLAY_TYPE_PCIVGA   8       /* (generic) PCI VGA */
  255 #define         WSDISPLAY_TYPE_TGA      9       /* DEC PCI TGA */
  256 #define         WSDISPLAY_TYPE_SFBP     10      /* DEC TC SFB+ (HX+) */
  257 #define         WSDISPLAY_TYPE_PCIMISC  11      /* (generic) PCI misc. disp. */
  258 #define         WSDISPLAY_TYPE_NEXTMONO 12      /* NeXT mono display */
  259 #define         WSDISPLAY_TYPE_PX       13      /* DEC TC PX */
  260 #define         WSDISPLAY_TYPE_PXG      14      /* DEC TC PXG */
  261 #define         WSDISPLAY_TYPE_TX       15      /* DEC TC TX */
  262 #define         WSDISPLAY_TYPE_HPCFB    16      /* Handheld/PalmSize PC */
  263 #define         WSDISPLAY_TYPE_VIDC     17      /* Acorn/ARM VIDC */
  264 #define         WSDISPLAY_TYPE_SPX      18      /* DEC SPX (VS3100/VS4000) */
  265 #define         WSDISPLAY_TYPE_GPX      19      /* DEC GPX (uVAX/VS2K/VS3100) */
  266 #define         WSDISPLAY_TYPE_LCG      20      /* DEC LCG (VS4000) */
  267 #define         WSDISPLAY_TYPE_VAX_MONO 21      /* DEC VS2K/VS3100 mono */
  268 #define         WSDISPLAY_TYPE_SB_P9100 22      /* Tadpole SPARCbook P9100 */
  269 #define         WSDISPLAY_TYPE_EGA      23      /* (generic) EGA */
  270 #define         WSDISPLAY_TYPE_DCPVR    24      /* Dreamcast PowerVR */
  271 #define         WSDISPLAY_TYPE_SUN24    25      /* Sun 24 bit framebuffers */
  272 #define         WSDISPLAY_TYPE_SUNBW    26      /* Sun black and white fb */
  273 #define         WSDISPLAY_TYPE_STI      27      /* HP STI framebuffers */
  274 #define         WSDISPLAY_TYPE_SUNCG3   28      /* Sun cgthree */
  275 #define         WSDISPLAY_TYPE_SUNCG6   29      /* Sun cgsix */
  276 #define         WSDISPLAY_TYPE_SUNFFB   30      /* Sun creator FFB */
  277 #define         WSDISPLAY_TYPE_SUNCG14  31      /* Sun cgfourteen */
  278 #define         WSDISPLAY_TYPE_SUNCG2   32      /* Sun cgtwo */
  279 #define         WSDISPLAY_TYPE_SUNCG4   33      /* Sun cgfour */
  280 #define         WSDISPLAY_TYPE_SUNCG8   34      /* Sun cgeight */
  281 #define         WSDISPLAY_TYPE_SUNTCX   35      /* Sun TCX */
  282 #define         WSDISPLAY_TYPE_AGTEN    36      /* AG10E */
  283 #define         WSDISPLAY_TYPE_XVIDEO   37      /* Xvideo */
  284 #define         WSDISPLAY_TYPE_SUNCG12  38      /* Sun cgtwelve */
  285 #define         WSDISPLAY_TYPE_MGX      39      /* SMS MGX */
  286 #define         WSDISPLAY_TYPE_SB_P9000 40      /* Tadpole SPARCbook P9000 */
  287 #define         WSDISPLAY_TYPE_RFLEX    41      /* RasterFlex series */
  288 #define         WSDISPLAY_TYPE_LUNA     42      /* OMRON Luna */
  289 #define         WSDISPLAY_TYPE_DVBOX    43      /* HP DaVinci */
  290 #define         WSDISPLAY_TYPE_GBOX     44      /* HP Gatorbox */
  291 #define         WSDISPLAY_TYPE_RBOX     45      /* HP Renaissance */
  292 #define         WSDISPLAY_TYPE_HYPERION 46      /* HP Hyperion */
  293 #define         WSDISPLAY_TYPE_TOPCAT   47      /* HP Topcat */
  294 #define         WSDISPLAY_TYPE_PXALCD   48      /* PXALCD (Zaurus) */
  295 #define         WSDISPLAY_TYPE_MAC68K   49      /* Generic mac68k framebuffer */
  296 #define         WSDISPLAY_TYPE_SUNLEO   50      /* Sun ZX/Leo */
  297 #define         WSDISPLAY_TYPE_TVRX     51      /* HP TurboVRX */
  298 #define         WSDISPLAY_TYPE_CFXGA    52      /* CF VoyagerVGA */
  299 #define         WSDISPLAY_TYPE_LCSPX    53      /* DEC LCSPX (VS4000) */
  300 
  301 /* Basic display information.  Not applicable to all display types. */
  302 struct wsdisplay_fbinfo {
  303         u_int   height;                         /* height in pixels */
  304         u_int   width;                          /* width in pixels */
  305         u_int   depth;                          /* bits per pixel */
  306         u_int   cmsize;                         /* color map size (entries) */
  307 };
  308 #define WSDISPLAYIO_GINFO       _IOR('W', 65, struct wsdisplay_fbinfo)
  309 
  310 /* Colormap operations.  Not applicable to all display types. */
  311 struct wsdisplay_cmap {
  312         u_int   index;                          /* first element (0 origin) */
  313         u_int   count;                          /* number of elements */
  314         u_char  *red;                           /* red color map elements */
  315         u_char  *green;                         /* green color map elements */
  316         u_char  *blue;                          /* blue color map elements */
  317 };      
  318 #define WSDISPLAYIO_GETCMAP     _IOW('W', 66, struct wsdisplay_cmap)
  319 #define WSDISPLAYIO_PUTCMAP     _IOW('W', 67, struct wsdisplay_cmap)
  320 
  321 /* Video control.  Not applicable to all display types. */
  322 #define WSDISPLAYIO_GVIDEO      _IOR('W', 68, u_int)
  323 #define WSDISPLAYIO_SVIDEO      _IOW('W', 69, u_int)
  324 #define         WSDISPLAYIO_VIDEO_OFF   0       /* video off */
  325 #define         WSDISPLAYIO_VIDEO_ON    1       /* video on */
  326 
  327 /* Cursor control.  Not applicable to all display types. */
  328 struct wsdisplay_curpos {                       /* cursor "position" */
  329         u_int x, y;
  330 };
  331 
  332 struct wsdisplay_cursor {
  333         u_int   which;                          /* values to get/set */
  334         u_int   enable;                         /* enable/disable */
  335         struct wsdisplay_curpos pos;            /* position */
  336         struct wsdisplay_curpos hot;            /* hot spot */
  337         struct wsdisplay_cmap cmap;             /* color map info */
  338         struct wsdisplay_curpos size;           /* bit map size */
  339         u_char *image;                          /* image data */
  340         u_char *mask;                           /* mask data */
  341 };
  342 #define         WSDISPLAY_CURSOR_DOCUR          0x01    /* get/set enable */
  343 #define         WSDISPLAY_CURSOR_DOPOS          0x02    /* get/set pos */
  344 #define         WSDISPLAY_CURSOR_DOHOT          0x04    /* get/set hot spot */
  345 #define         WSDISPLAY_CURSOR_DOCMAP         0x08    /* get/set cmap */
  346 #define         WSDISPLAY_CURSOR_DOSHAPE        0x10    /* get/set img/mask */
  347 #define         WSDISPLAY_CURSOR_DOALL          0x1f    /* all of the above */
  348 
  349 /* Cursor control: get and set position */
  350 #define WSDISPLAYIO_GCURPOS     _IOR('W', 70, struct wsdisplay_curpos)
  351 #define WSDISPLAYIO_SCURPOS     _IOW('W', 71, struct wsdisplay_curpos)
  352 
  353 /* Cursor control: get maximum size */
  354 #define WSDISPLAYIO_GCURMAX     _IOR('W', 72, struct wsdisplay_curpos)
  355 
  356 /* Cursor control: get/set cursor attributes/shape */
  357 #define WSDISPLAYIO_GCURSOR     _IOWR('W', 73, struct wsdisplay_cursor)
  358 #define WSDISPLAYIO_SCURSOR     _IOW('W', 74, struct wsdisplay_cursor)
  359 
  360 /* Display mode: Emulation (text) vs. Mapped (graphics) mode */
  361 #define WSDISPLAYIO_GMODE       _IOR('W', 75, u_int)
  362 #define WSDISPLAYIO_SMODE       _IOW('W', 76, u_int)
  363 #define         WSDISPLAYIO_MODE_EMUL   0       /* emulation (text) mode */
  364 #define         WSDISPLAYIO_MODE_MAPPED 1       /* mapped (graphics) mode */
  365 #define         WSDISPLAYIO_MODE_DUMBFB 2       /* mapped (graphics) fb mode */
  366 
  367 struct wsdisplay_font {
  368         char name[WSFONT_NAME_SIZE];
  369         int index;
  370         int firstchar, numchars;
  371         int encoding;
  372 #define WSDISPLAY_FONTENC_ISO 0
  373 #define WSDISPLAY_FONTENC_IBM 1
  374 #define WSDISPLAY_FONTENC_PCVT 2
  375 #define WSDISPLAY_FONTENC_ISO7 3 /* greek */
  376         u_int fontwidth, fontheight, stride;
  377 #define WSDISPLAY_MAXFONTSZ     (512*1024)
  378         int bitorder, byteorder;
  379 #define WSDISPLAY_FONTORDER_KNOWN       0       /* i.e, no need to convert */
  380 #define WSDISPLAY_FONTORDER_L2R         1
  381 #define WSDISPLAY_FONTORDER_R2L         2
  382         void *cookie;
  383         void *data;
  384 };
  385 #define WSDISPLAYIO_LDFONT      _IOW ('W', 77, struct wsdisplay_font)
  386 #define WSDISPLAYIO_LSFONT      _IOWR('W', 78, struct wsdisplay_font)
  387 #define WSDISPLAYIO_DELFONT     _IOW ('W', 79, struct wsdisplay_font)
  388 #define WSDISPLAYIO_USEFONT     _IOW ('W', 80, struct wsdisplay_font)
  389 
  390 struct wsdisplay_burner {
  391         u_int   off;
  392         u_int   on;
  393         u_int   flags;
  394 #define WSDISPLAY_BURN_VBLANK   0x0001
  395 #define WSDISPLAY_BURN_KBD      0x0002
  396 #define WSDISPLAY_BURN_MOUSE    0x0004
  397 #define WSDISPLAY_BURN_OUTPUT   0x0008
  398 };
  399 #define WSDISPLAYIO_SBURNER     _IOW('W', 81, struct wsdisplay_burner)
  400 #define WSDISPLAYIO_GBURNER     _IOR('W', 82, struct wsdisplay_burner) 
  401 
  402 /*
  403  * XXX WARNING
  404  * XXX The following definitions are very preliminary and are likely
  405  * XXX to be changed without care about backwards compatibility!
  406  */
  407 struct wsdisplay_addscreendata {
  408         int idx; /* screen index */
  409         char screentype[WSSCREEN_NAME_SIZE];
  410         char emul[WSEMUL_NAME_SIZE];
  411 };
  412 #define WSDISPLAYIO_ADDSCREEN   _IOW('W', 83, struct wsdisplay_addscreendata)
  413 
  414 struct wsdisplay_delscreendata {
  415         int idx; /* screen index */
  416         int flags;
  417 #define WSDISPLAY_DELSCR_FORCE  0x01
  418 #define WSDISPLAY_DELSCR_QUIET  0x02
  419 };
  420 #define WSDISPLAYIO_DELSCREEN   _IOW('W', 84, struct wsdisplay_delscreendata)
  421 
  422 #define WSDISPLAYIO_GETSCREEN   _IOWR('W', 85, struct wsdisplay_addscreendata)
  423 #define WSDISPLAYIO_SETSCREEN   _IOW('W', 86, u_int)
  424 
  425 /* Display information: number of bytes per row, may be same as pixels */
  426 #define WSDISPLAYIO_LINEBYTES   _IOR('W', 95, u_int)
  427 
  428 /* Mouse console support */
  429 #define WSDISPLAYIO_WSMOUSED    _IOW('W', 88, struct wscons_event)
  430 
  431 /* Misc control.  Not applicable to all display types. */
  432 struct wsdisplay_param {
  433         int param;
  434 #define WSDISPLAYIO_PARAM_BACKLIGHT     1
  435 #define WSDISPLAYIO_PARAM_BRIGHTNESS    2
  436 #define WSDISPLAYIO_PARAM_CONTRAST      3
  437         int min, max, curval;
  438         int reserved[4];
  439 };
  440 #define WSDISPLAYIO_GETPARAM    _IOWR('W', 89, struct wsdisplay_param)
  441 #define WSDISPLAYIO_SETPARAM    _IOWR('W', 90, struct wsdisplay_param)
  442 
  443 #define WSDISPLAYIO_GPCIID      _IOR('W', 91, struct pcisel)
  444 
  445 /* graphical mode control */
  446 
  447 #define WSDISPLAYIO_DEPTH_1             0x1
  448 #define WSDISPLAYIO_DEPTH_4             0x2
  449 #define WSDISPLAYIO_DEPTH_8             0x4
  450 #define WSDISPLAYIO_DEPTH_15            0x8
  451 #define WSDISPLAYIO_DEPTH_16            0x10
  452 #define WSDISPLAYIO_DEPTH_24_24         0x20
  453 #define WSDISPLAYIO_DEPTH_24_32         0x40
  454 #define WSDISPLAYIO_DEPTH_24 (WSDISPLAYIO_DEPTH_24_24|WSDISPLAYIO_DEPTH_24_32)
  455 
  456 #define WSDISPLAYIO_GETSUPPORTEDDEPTH   _IOR('W', 92, unsigned int)
  457 
  458 struct wsdisplay_gfx_mode {
  459         int width;
  460         int height;
  461         int depth;
  462 };
  463 
  464 #define WSDISPLAYIO_SETGFXMODE  _IOW('W', 92, struct wsdisplay_gfx_mode)
  465 
  466 /* XXX NOT YET DEFINED */
  467 /* Mapping information retrieval. */
  468 
  469 /*
  470  * Mux ioctls (96 - 127)
  471  */
  472 
  473 #define WSMUXIO_INJECTEVENT     _IOW('W', 96, struct wscons_event)
  474 #define WSMUX_INJECTEVENT       WSMUXIO_INJECTEVENT     /* XXX compat */
  475 
  476 struct wsmux_device {
  477         int type;
  478 #define WSMUX_MOUSE     1
  479 #define WSMUX_KBD       2
  480 #define WSMUX_MUX       3
  481         int idx;
  482 };
  483 #define WSMUXIO_ADD_DEVICE      _IOW('W', 97, struct wsmux_device)
  484 #define WSMUX_ADD_DEVICE        WSMUXIO_ADD_DEVICE      /* XXX compat */
  485 #define WSMUXIO_REMOVE_DEVICE   _IOW('W', 98, struct wsmux_device)
  486 #define WSMUX_REMOVE_DEVICE     WSMUXIO_REMOVE_DEVICE   /* XXX compat */
  487 
  488 #define WSMUX_MAXDEV 32
  489 struct wsmux_device_list {
  490         int ndevices;
  491         struct wsmux_device devices[WSMUX_MAXDEV];
  492 };
  493 #define WSMUXIO_LIST_DEVICES    _IOWR('W', 99, struct wsmux_device_list)
  494 #define WSMUX_LIST_DEVICES      WSMUXIO_LIST_DEVICES    /* XXX compat */
  495 
  496 #endif /* _DEV_WSCONS_WSCONSIO_H_ */

/* [<][>][^][v][top][bottom][index][help] */