1 1.20 riastrad /* $NetBSD: wskbdvar.h,v 1.20 2022/09/23 19:04:04 riastradh Exp $ */ 2 1.1 drochner 3 1.1 drochner /* 4 1.1 drochner * Copyright (c) 1996, 1997 Christopher G. Demetriou. All rights reserved. 5 1.1 drochner * 6 1.1 drochner * Redistribution and use in source and binary forms, with or without 7 1.1 drochner * modification, are permitted provided that the following conditions 8 1.1 drochner * are met: 9 1.1 drochner * 1. Redistributions of source code must retain the above copyright 10 1.1 drochner * notice, this list of conditions and the following disclaimer. 11 1.1 drochner * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 drochner * notice, this list of conditions and the following disclaimer in the 13 1.1 drochner * documentation and/or other materials provided with the distribution. 14 1.1 drochner * 3. All advertising materials mentioning features or use of this software 15 1.1 drochner * must display the following acknowledgement: 16 1.1 drochner * This product includes software developed by Christopher G. Demetriou 17 1.1 drochner * for the NetBSD Project. 18 1.1 drochner * 4. The name of the author may not be used to endorse or promote products 19 1.1 drochner * derived from this software without specific prior written permission 20 1.1 drochner * 21 1.1 drochner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 1.1 drochner * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 1.1 drochner * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 1.1 drochner * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 1.1 drochner * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 1.1 drochner * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 1.1 drochner * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 1.1 drochner * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 1.1 drochner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 1.1 drochner * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 1.1 drochner */ 32 1.1 drochner 33 1.20 riastrad #ifndef _DEV_WSCONS_WSKBDVAR_H_ 34 1.20 riastrad #define _DEV_WSCONS_WSKBDVAR_H_ 35 1.20 riastrad 36 1.1 drochner /* 37 1.1 drochner * WSKBD interfaces. 38 1.1 drochner */ 39 1.19 he #include <dev/wscons/wsksymvar.h> 40 1.1 drochner 41 1.1 drochner /* 42 1.6 drochner * Keyboard access functions (must be provided by all keyboards). 43 1.6 drochner * 44 1.6 drochner * There is a "void *" cookie provided by the keyboard driver associated 45 1.6 drochner * with these functions, which is passed to them when they are invoked. 46 1.6 drochner */ 47 1.6 drochner struct wskbd_accessops { 48 1.11 augustss int (*enable)(void *, int); 49 1.11 augustss void (*set_leds)(void *, int); 50 1.14 christos int (*ioctl)(void *, u_long, void *, int, struct lwp *); 51 1.6 drochner }; 52 1.6 drochner 53 1.6 drochner /* 54 1.6 drochner * Keyboard console functions (must be provided by console input keyboards). 55 1.1 drochner * 56 1.1 drochner * There is a "void *" cookie provided by the keyboard driver associated 57 1.1 drochner * with these functions, which is passed to them when they are invoked. 58 1.1 drochner */ 59 1.6 drochner struct wskbd_consops { 60 1.11 augustss void (*getc)(void *, u_int *, int *); 61 1.11 augustss void (*pollc)(void *, int); 62 1.11 augustss void (*bell)(void *, u_int, u_int, u_int); 63 1.6 drochner }; 64 1.6 drochner 65 1.6 drochner /* 66 1.6 drochner * Attachment information provided by wskbddev devices when attaching 67 1.6 drochner * wskbd units. 68 1.6 drochner */ 69 1.1 drochner struct wskbddev_attach_args { 70 1.1 drochner int console; /* is it console? */ 71 1.6 drochner const struct wskbd_mapdata *keymap; 72 1.3 hannken 73 1.6 drochner const struct wskbd_accessops *accessops; /* access ops */ 74 1.1 drochner void *accesscookie; /* access cookie */ 75 1.1 drochner }; 76 1.1 drochner 77 1.5 augustss #include "locators.h" 78 1.5 augustss 79 1.5 augustss #define wskbddevcf_console cf_loc[WSKBDDEVCF_CONSOLE] /* spec'd as console? */ 80 1.5 augustss #define WSKBDDEVCF_CONSOLE_UNK (WSKBDDEVCF_CONSOLE_DEFAULT) 81 1.7 augustss 82 1.7 augustss #define wskbddevcf_mux cf_loc[WSKBDDEVCF_MUX] 83 1.1 drochner 84 1.1 drochner /* 85 1.1 drochner * Autoconfiguration helper functions. 86 1.1 drochner */ 87 1.11 augustss void wskbd_cnattach(const struct wskbd_consops *, void *, 88 1.11 augustss const struct wskbd_mapdata *); 89 1.11 augustss void wskbd_cndetach(void); 90 1.11 augustss int wskbddevprint(void *, const char *); 91 1.1 drochner 92 1.1 drochner /* 93 1.1 drochner * Callbacks from the keyboard driver to the wskbd interface driver. 94 1.1 drochner */ 95 1.15 cube void wskbd_input(device_t, u_int, int); 96 1.4 drochner /* for WSDISPLAY_COMPAT_RAWKBD */ 97 1.15 cube void wskbd_rawinput(device_t, u_char *, int); 98 1.1 drochner 99 1.1 drochner /* 100 1.16 cegger * Callbacks for (ACPI) hotkey drivers which generate 101 1.16 cegger * keycodes. 102 1.16 cegger */ 103 1.16 cegger struct wskbd_softc; 104 1.16 cegger typedef int (wskbd_hotkey_plugin)(struct wskbd_softc *, void *, u_int, int); 105 1.16 cegger 106 1.16 cegger device_t wskbd_hotkey_register(device_t, void *, wskbd_hotkey_plugin *); 107 1.17 jruoho void wskbd_hotkey_deregister(device_t); 108 1.16 cegger 109 1.16 cegger /* 110 1.18 macallan * set a translation table for scancodes in event mode 111 1.18 macallan * parameters are a pointer to the table and its length 112 1.18 macallan * pass length zero to turn translation off 113 1.18 macallan */ 114 1.18 macallan void wskbd_set_evtrans(device_t, keysym_t *, int); 115 1.18 macallan 116 1.18 macallan /* 117 1.1 drochner * Console interface. 118 1.1 drochner */ 119 1.13 peter int wskbd_cngetc(dev_t); 120 1.13 peter void wskbd_cnpollc(dev_t, int); 121 1.11 augustss void wskbd_cnbell(dev_t, u_int, u_int, u_int); 122 1.20 riastrad 123 1.20 riastrad #endif /* _DEV_WSCONS_WSKBDVAR_H_ */ 124