1*8a007407Sscottr /* $NetBSD: adbsys.h,v 1.13 2000/02/14 07:01:48 scottr Exp $ */ 24fdae7a0Scgd 3f3c8dbbdSlkestel /*- 4f3c8dbbdSlkestel * Copyright (C) 1993, 1994 Allen K. Briggs, Chris P. Caputo, 5f3c8dbbdSlkestel * Michael L. Finch, Bradley A. Grantham, and 6f3c8dbbdSlkestel * Lawrence A. Kesteloot 7f3c8dbbdSlkestel * All rights reserved. 8f3c8dbbdSlkestel * 9f3c8dbbdSlkestel * Redistribution and use in source and binary forms, with or without 10f3c8dbbdSlkestel * modification, are permitted provided that the following conditions 11f3c8dbbdSlkestel * are met: 12f3c8dbbdSlkestel * 1. Redistributions of source code must retain the above copyright 13f3c8dbbdSlkestel * notice, this list of conditions and the following disclaimer. 14f3c8dbbdSlkestel * 2. Redistributions in binary form must reproduce the above copyright 15f3c8dbbdSlkestel * notice, this list of conditions and the following disclaimer in the 16f3c8dbbdSlkestel * documentation and/or other materials provided with the distribution. 17f3c8dbbdSlkestel * 3. All advertising materials mentioning features or use of this software 18f3c8dbbdSlkestel * must display the following acknowledgement: 19f3c8dbbdSlkestel * This product includes software developed by the Alice Group. 20f3c8dbbdSlkestel * 4. The names of the Alice Group or any of its members may not be used 21f3c8dbbdSlkestel * to endorse or promote products derived from this software without 22f3c8dbbdSlkestel * specific prior written permission. 23f3c8dbbdSlkestel * 24f3c8dbbdSlkestel * THIS SOFTWARE IS PROVIDED BY THE ALICE GROUP ``AS IS'' AND ANY EXPRESS OR 25f3c8dbbdSlkestel * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 26f3c8dbbdSlkestel * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 27f3c8dbbdSlkestel * IN NO EVENT SHALL THE ALICE GROUP BE LIABLE FOR ANY DIRECT, INDIRECT, 28f3c8dbbdSlkestel * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 29f3c8dbbdSlkestel * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30f3c8dbbdSlkestel * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31f3c8dbbdSlkestel * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32f3c8dbbdSlkestel * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33f3c8dbbdSlkestel * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34f3c8dbbdSlkestel */ 35f3c8dbbdSlkestel 3637163421Sbriggs #ifndef _ADBSYS_MACHINE_ 3737163421Sbriggs #define _ADBSYS_MACHINE_ 38f3c8dbbdSlkestel 39f3c8dbbdSlkestel #include <sys/time.h> /* timeval stuff */ 40f3c8dbbdSlkestel #include <sys/ioctl.h> /* ioctls */ 41f3c8dbbdSlkestel 42f3c8dbbdSlkestel 43f3c8dbbdSlkestel /* Handy visual constants */ 44f3c8dbbdSlkestel #define ADB_MAX_HANDLERS 256 45f3c8dbbdSlkestel #define ADB_MAX_DEVS 16 46f3c8dbbdSlkestel 47f3c8dbbdSlkestel 48f3c8dbbdSlkestel /* Different ADB system types */ 49f3c8dbbdSlkestel enum adb_system_e { 50f3c8dbbdSlkestel MacIIADB, 51f3c8dbbdSlkestel MacIIsiADB, 52f3c8dbbdSlkestel MacPBADB}; 53f3c8dbbdSlkestel extern enum adb_system_e adb_system_type; 54f3c8dbbdSlkestel 55f3c8dbbdSlkestel 56f3c8dbbdSlkestel /* an ADB event */ 57f3c8dbbdSlkestel typedef struct adb_event_s { 58f3c8dbbdSlkestel int addr; /* device address */ 59f3c8dbbdSlkestel int hand_id; /* handler id */ 60f3c8dbbdSlkestel int def_addr; /* default address */ 61f3c8dbbdSlkestel int byte_count; /* number of bytes */ 62f3c8dbbdSlkestel unsigned char bytes[8]; /* bytes from register 0 */ 63f3c8dbbdSlkestel struct timeval timestamp; /* time event was acquired */ 64f3c8dbbdSlkestel union { 65f3c8dbbdSlkestel struct adb_keydata_s{ 66f3c8dbbdSlkestel int key; /* ADB key code */ 67f3c8dbbdSlkestel } k; 68f3c8dbbdSlkestel struct adb_mousedata_s{ 69f3c8dbbdSlkestel int dx; /* mouse delta x */ 70f3c8dbbdSlkestel int dy; /* mouse delta y */ 71f3c8dbbdSlkestel int buttons; /* buttons (down << (buttonnum)) */ 72f3c8dbbdSlkestel } m; 73f3c8dbbdSlkestel } u; /* courtesy interpretation */ 74f3c8dbbdSlkestel } adb_event_t; 75f3c8dbbdSlkestel 76f3c8dbbdSlkestel 77f3c8dbbdSlkestel /* a device on the ADB */ 78f3c8dbbdSlkestel typedef struct adb_dev_s{ 791c47e248Sbriggs int addr; /* current address */ 80f3c8dbbdSlkestel int default_addr; /* startup address */ 81f3c8dbbdSlkestel int handler_id; /* handler ID */ 82f3c8dbbdSlkestel } adb_dev_t; 83f3c8dbbdSlkestel 84f3c8dbbdSlkestel 85f3c8dbbdSlkestel /* Interesting default addresses */ 8685f80dd2Sender #define ADBADDR_SECURE 1 /* Security dongles */ 8785f80dd2Sender #define ADBADDR_MAP 2 /* Mapped devices (keyboards/pads) */ 8885f80dd2Sender #define ADBADDR_REL 3 /* Relative positioning devices 8985f80dd2Sender (mice, trackballs/pads) */ 9085f80dd2Sender #define ADBADDR_ABS 4 /* Absolute positioning devices 9185f80dd2Sender (graphics tablets) */ 9285f80dd2Sender #define ADBADDR_DATATX 5 9385f80dd2Sender #define ADBADDR_RSRVD 6 /* Reserved by Apple */ 9485f80dd2Sender #define ADBADDR_MISC 7 /* Miscellaneous appliances */ 9585f80dd2Sender #define ADBADDR_DONGLE ADBADDR_SECURE 96f3c8dbbdSlkestel #define ADBADDR_KBD ADBADDR_MAP 97f3c8dbbdSlkestel #define ADBADDR_MS ADBADDR_REL 98f3c8dbbdSlkestel #define ADBADDR_TABLET ADBADDR_ABS 9985f80dd2Sender #define ADBADDR_MODEM ADBADDR_DATATX 100f3c8dbbdSlkestel 101f3c8dbbdSlkestel 102f8f304c7Sender /* Interesting keyboard handler IDs */ 103f3c8dbbdSlkestel #define ADB_STDKBD 1 104f3c8dbbdSlkestel #define ADB_EXTKBD 2 105e38a3074Sender #define ADB_ISOKBD 4 106f8f304c7Sender #define ADB_EXTISOKBD 5 107f8f304c7Sender #define ADB_KBDII 8 108f8f304c7Sender #define ADB_ISOKBDII 9 10930023f7aSbriggs #define ADB_PBKBD 12 110f8f304c7Sender #define ADB_PBISOKBD 13 111f8f304c7Sender #define ADB_ADJKPD 14 112f8f304c7Sender #define ADB_ADJKBD 16 113f8f304c7Sender #define ADB_ADJISOKBD 17 114f8f304c7Sender #define ADB_ADJJAPKBD 18 11585f80dd2Sender #define ADB_PBEXTISOKBD 20 11685f80dd2Sender #define ADB_PBEXTJAPKBD 21 117*8a007407Sscottr #define ADB_JPKBDII 22 11885f80dd2Sender #define ADB_PBEXTKBD 24 11985f80dd2Sender #define ADB_DESIGNKBD 27 /* XXX Needs to be verified XXX */ 120*8a007407Sscottr #define ADB_PBJPKBD 30 121f8f304c7Sender 122f8f304c7Sender /* Interesting mouse handler IDs */ 123f3c8dbbdSlkestel #define ADBMS_100DPI 1 124f3c8dbbdSlkestel #define ADBMS_200DPI 2 1259dfb9a7fSscottr #define ADBMS_MSA3 3 /* Mouse Systems A3 Mouse */ 12685f80dd2Sender #define ADBMS_EXTENDED 4 /* Extended mouse protocol */ 127b3e5811aSbriggs #define ADBMS_USPEED 0x2f /* MicroSpeed mouse */ 128b3e5811aSbriggs #define ADBMS_UCONTOUR 0x66 /* Contour mouse */ 129f3c8dbbdSlkestel 130407e2e62Sbriggs /* Interesting tablet handler ID */ 131407e2e62Sbriggs #define ADB_ARTPAD 58 /* WACOM ArtPad II tablet */ 132407e2e62Sbriggs 133407e2e62Sbriggs /* Interesting miscellaneous handler ID */ 134407e2e62Sbriggs #define ADB_POWERKEY 34 /* Sophisticated Circuits PowerKey */ 135407e2e62Sbriggs /* (intelligent power tap) */ 136f3c8dbbdSlkestel 137f3c8dbbdSlkestel /* Get device info from ADB system */ 138f3c8dbbdSlkestel typedef struct adb_devinfo_s{ 139f3c8dbbdSlkestel adb_dev_t dev[ADB_MAX_DEVS]; 1401c47e248Sbriggs /* [addr].addr == -1 if none */ 141f3c8dbbdSlkestel } adb_devinfo_t; 1421c47e248Sbriggs #define ADBIOC_DEVSINFO _IOR('A', 128, adb_devinfo_t) 143f3c8dbbdSlkestel 144f3c8dbbdSlkestel 145f3c8dbbdSlkestel /* Event auto-repeat */ 146f3c8dbbdSlkestel typedef struct adb_rptinfo_s{ 147f3c8dbbdSlkestel int delay_ticks; /* ticks before repeat */ 148f3c8dbbdSlkestel int interval_ticks; /* ticks between repeats */ 149f3c8dbbdSlkestel } adb_rptinfo_t; 150f3c8dbbdSlkestel #define ADBIOC_GETREPEAT _IOR('A', 130, adb_rptinfo_t) 151f3c8dbbdSlkestel #define ADBIOC_SETREPEAT _IOW('A', 131, adb_rptinfo_t) 1521c47e248Sbriggs 1531c47e248Sbriggs 1541c47e248Sbriggs /* Reset and reinitialize */ 1551c47e248Sbriggs #define ADBIOC_RESET _IO('A', 132) 1561c47e248Sbriggs 1571c47e248Sbriggs 1581c47e248Sbriggs typedef struct adb_listencmd_s{ 1591c47e248Sbriggs int address; /* device address */ 1601c47e248Sbriggs int reg; /* register to which to send bytes */ 1611c47e248Sbriggs int bytecnt; /* number of bytes */ 1621c47e248Sbriggs u_char bytes[8]; /* bytes */ 1631c47e248Sbriggs } adb_listencmd_t; 1641c47e248Sbriggs #define ADBIOC_LISTENCMD _IOW('A', 133, adb_listencmd_t) 16537163421Sbriggs 16637163421Sbriggs #endif /* _ADBSYS_MACHINE_ */ 167