[BACK]Return to wsconsio.h CVS log [TXT][DIR] Up to [local] / sys / dev / wscons

Annotation of sys/dev/wscons/wsconsio.h, Revision 1.1

1.1     ! nbrk        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_ */

CVSweb