[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

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