1 /* $NetBSD: kbdvar.h,v 1.5 2003/02/02 17:56:55 thomas Exp $ */ 2 3 /* 4 * Copyright (c) 1996 Leo Weppelman. 5 * 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 Leo Weppelman. 18 * 4. The name of the author may not be used to endorse or promote products 19 * derived from this software without specific prior written permission 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef _KBDVAR_H 34 #define _KBDVAR_H 35 36 /* 37 * The ringbuffer is the interface between the hard and soft interrupt handler. 38 * The hard interrupt runs straight from the MFP interrupt. 39 */ 40 #define KBD_RING_SIZE 256 /* Sz of input ring buffer, must be power of 2 */ 41 #define KBD_RING_MASK 255 /* Modulo mask for above */ 42 43 struct kbd_softc { 44 int k_event_mode; /* if 1, collect events, */ 45 /* else pass to ite */ 46 struct evvar k_events; /* event queue state */ 47 u_char k_soft_cs; /* control-reg. copy */ 48 u_char k_package[20]; /* XXX package being build */ 49 u_char k_pkg_size; /* Size of the package */ 50 u_char k_pkg_idx; /* Running pkg assembly index */ 51 u_char k_pkg_type; /* Type of package */ 52 u_char *k_sendp; /* Output pointer */ 53 int k_send_cnt; /* Chars left for output */ 54 #if NWSKBD>0 55 struct device *k_wskbddev; /* pointer to wskbd for sending strokes */ 56 int k_pollingmode; /* polling mode on? whatever it isss... */ 57 #endif 58 }; 59 60 /* 61 * Package types 62 */ 63 #define KBD_MEM_PKG 0 /* Memory read package */ 64 #define KBD_AMS_PKG 1 /* Absolute mouse package */ 65 #define KBD_RMS_PKG 2 /* Relative mouse package */ 66 #define KBD_CLK_PKG 3 /* Clock package */ 67 #define KBD_JOY0_PKG 4 /* Joystick-0 package */ 68 #define KBD_JOY1_PKG 5 /* Joystick-1 package */ 69 #define KBD_TIMEO_PKG 6 /* Timeout package */ 70 71 #ifdef _KERNEL 72 extern u_char kbd_modifier; 73 74 void kbd_bell_gparms __P((u_int *, u_int *, u_int *)); 75 void kbd_bell_sparms __P((u_int, u_int, u_int)); 76 void kbd_write __P((u_char *, int)); 77 int kbdgetcn __P((void)); 78 void kbdbell __P((void)); 79 void kbdenable __P((void)); 80 #endif /* _KERNEL */ 81 82 #endif /* _KBDVAR_H */ 83