1 #ifndef _HIL_H_ 1 #ifndef _HIL_H_ 2 #define _HIL_H_ 2 #define _HIL_H_ 3 3 4 /* 4 /* 5 * Hewlett Packard Human Interface Loop (HP-HI 5 * Hewlett Packard Human Interface Loop (HP-HIL) Protocol -- header. 6 * 6 * 7 * Copyright (c) 2001 Brian S. Julin 7 * Copyright (c) 2001 Brian S. Julin 8 * All rights reserved. 8 * All rights reserved. 9 * 9 * 10 * Redistribution and use in source and binary 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that t 11 * modification, are permitted provided that the following conditions 12 * are met: 12 * are met: 13 * 1. Redistributions of source code must reta 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions, and the 14 * notice, this list of conditions, and the following disclaimer, 15 * without modification. 15 * without modification. 16 * 2. The name of the author may not be used t 16 * 2. The name of the author may not be used to endorse or promote products 17 * derived from this software without speci 17 * derived from this software without specific prior written permission. 18 * 18 * 19 * Alternatively, this software may be distrib 19 * Alternatively, this software may be distributed under the terms of the 20 * GNU General Public License ("GPL"). 20 * GNU General Public License ("GPL"). 21 * 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDIN 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND F 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHO 25 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 26 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PRO 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILI 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * 31 * 32 * References: 32 * References: 33 * HP-HIL Technical Reference Manual. Hewlett 33 * HP-HIL Technical Reference Manual. Hewlett Packard Product No. 45918A 34 * 34 * 35 * A note of thanks to HP for providing and sh 35 * A note of thanks to HP for providing and shipping reference materials 36 * free of charge to help in the development o 36 * free of charge to help in the development of HIL support for Linux. 37 * 37 * 38 */ 38 */ 39 39 40 #include <asm/types.h> 40 #include <asm/types.h> 41 41 42 /* Physical constants relevant to raw loop/dev 42 /* Physical constants relevant to raw loop/device timing. 43 */ 43 */ 44 44 45 #define HIL_CLOCK 8MHZ 45 #define HIL_CLOCK 8MHZ 46 #define HIL_EK1_CLOCK 30HZ 46 #define HIL_EK1_CLOCK 30HZ 47 #define HIL_EK2_CLOCK 60HZ 47 #define HIL_EK2_CLOCK 60HZ 48 48 49 #define HIL_TIMEOUT_DEV 5 /* ms 49 #define HIL_TIMEOUT_DEV 5 /* ms */ 50 #define HIL_TIMEOUT_DEVS 10 /* ms 50 #define HIL_TIMEOUT_DEVS 10 /* ms */ 51 #define HIL_TIMEOUT_NORESP 10 /* ms 51 #define HIL_TIMEOUT_NORESP 10 /* ms */ 52 #define HIL_TIMEOUT_DEVS_DATA 16 /* ms 52 #define HIL_TIMEOUT_DEVS_DATA 16 /* ms */ 53 #define HIL_TIMEOUT_SELFTEST 200 /* ms 53 #define HIL_TIMEOUT_SELFTEST 200 /* ms */ 54 54 55 55 56 /* Actual wire line coding. These will only b 56 /* Actual wire line coding. These will only be useful if someone is 57 * implementing a software MLC to run HIL devi 57 * implementing a software MLC to run HIL devices on a non-parisc machine. 58 */ 58 */ 59 59 60 #define HIL_WIRE_PACKET_LEN 15 60 #define HIL_WIRE_PACKET_LEN 15 61 enum hil_wire_bitpos { 61 enum hil_wire_bitpos { 62 HIL_WIRE_START = 0, 62 HIL_WIRE_START = 0, 63 HIL_WIRE_ADDR2, 63 HIL_WIRE_ADDR2, 64 HIL_WIRE_ADDR1, 64 HIL_WIRE_ADDR1, 65 HIL_WIRE_ADDR0, 65 HIL_WIRE_ADDR0, 66 HIL_WIRE_COMMAND, 66 HIL_WIRE_COMMAND, 67 HIL_WIRE_DATA7, 67 HIL_WIRE_DATA7, 68 HIL_WIRE_DATA6, 68 HIL_WIRE_DATA6, 69 HIL_WIRE_DATA5, 69 HIL_WIRE_DATA5, 70 HIL_WIRE_DATA4, 70 HIL_WIRE_DATA4, 71 HIL_WIRE_DATA3, 71 HIL_WIRE_DATA3, 72 HIL_WIRE_DATA2, 72 HIL_WIRE_DATA2, 73 HIL_WIRE_DATA1, 73 HIL_WIRE_DATA1, 74 HIL_WIRE_DATA0, 74 HIL_WIRE_DATA0, 75 HIL_WIRE_PARITY, 75 HIL_WIRE_PARITY, 76 HIL_WIRE_STOP 76 HIL_WIRE_STOP 77 }; 77 }; 78 78 79 /* HP documentation uses these bit positions t 79 /* HP documentation uses these bit positions to refer to commands; 80 * we will call these "packets". 80 * we will call these "packets". 81 */ 81 */ 82 enum hil_pkt_bitpos { 82 enum hil_pkt_bitpos { 83 HIL_PKT_CMD = 0x00000800, 83 HIL_PKT_CMD = 0x00000800, 84 HIL_PKT_ADDR2 = 0x00000400, 84 HIL_PKT_ADDR2 = 0x00000400, 85 HIL_PKT_ADDR1 = 0x00000200, 85 HIL_PKT_ADDR1 = 0x00000200, 86 HIL_PKT_ADDR0 = 0x00000100, 86 HIL_PKT_ADDR0 = 0x00000100, 87 HIL_PKT_ADDR_MASK = 0x00000700, 87 HIL_PKT_ADDR_MASK = 0x00000700, 88 HIL_PKT_ADDR_SHIFT = 8, 88 HIL_PKT_ADDR_SHIFT = 8, 89 HIL_PKT_DATA7 = 0x00000080, 89 HIL_PKT_DATA7 = 0x00000080, 90 HIL_PKT_DATA6 = 0x00000040, 90 HIL_PKT_DATA6 = 0x00000040, 91 HIL_PKT_DATA5 = 0x00000020, 91 HIL_PKT_DATA5 = 0x00000020, 92 HIL_PKT_DATA4 = 0x00000010, 92 HIL_PKT_DATA4 = 0x00000010, 93 HIL_PKT_DATA3 = 0x00000008, 93 HIL_PKT_DATA3 = 0x00000008, 94 HIL_PKT_DATA2 = 0x00000004, 94 HIL_PKT_DATA2 = 0x00000004, 95 HIL_PKT_DATA1 = 0x00000002, 95 HIL_PKT_DATA1 = 0x00000002, 96 HIL_PKT_DATA0 = 0x00000001, 96 HIL_PKT_DATA0 = 0x00000001, 97 HIL_PKT_DATA_MASK = 0x000000FF, 97 HIL_PKT_DATA_MASK = 0x000000FF, 98 HIL_PKT_DATA_SHIFT = 0 98 HIL_PKT_DATA_SHIFT = 0 99 }; 99 }; 100 100 101 /* The HIL MLC also has several error/status/c 101 /* The HIL MLC also has several error/status/control bits. We extend the 102 * "packet" to include these when direct acces 102 * "packet" to include these when direct access to the MLC is available, 103 * or emulate them in cases where they are not 103 * or emulate them in cases where they are not available. 104 * 104 * 105 * This way the device driver knows that the u 105 * This way the device driver knows that the underlying MLC driver 106 * has had to deal with loop errors. 106 * has had to deal with loop errors. 107 */ 107 */ 108 enum hil_error_bitpos { 108 enum hil_error_bitpos { 109 HIL_ERR_OB = 0x00000800, /* MLC i 109 HIL_ERR_OB = 0x00000800, /* MLC is busy sending an auto-poll, 110 or we 110 or we have filled up the output 111 buffe 111 buffer and must wait. */ 112 HIL_ERR_INT = 0x00010000, /* A nor 112 HIL_ERR_INT = 0x00010000, /* A normal interrupt has occurred. */ 113 HIL_ERR_NMI = 0x00020000, /* An NM 113 HIL_ERR_NMI = 0x00020000, /* An NMI has occurred. */ 114 HIL_ERR_LERR = 0x00040000, /* A pol 114 HIL_ERR_LERR = 0x00040000, /* A poll didn't come back. */ 115 HIL_ERR_PERR = 0x01000000, /* There 115 HIL_ERR_PERR = 0x01000000, /* There was a Parity Error. */ 116 HIL_ERR_FERR = 0x02000000, /* There 116 HIL_ERR_FERR = 0x02000000, /* There was a Framing Error. */ 117 HIL_ERR_FOF = 0x04000000 /* Input 117 HIL_ERR_FOF = 0x04000000 /* Input FIFO Overflowed. */ 118 }; 118 }; 119 119 120 enum hil_control_bitpos { 120 enum hil_control_bitpos { 121 HIL_CTRL_TEST = 0x00010000, 121 HIL_CTRL_TEST = 0x00010000, 122 HIL_CTRL_IPF = 0x00040000, 122 HIL_CTRL_IPF = 0x00040000, 123 HIL_CTRL_APE = 0x02000000 123 HIL_CTRL_APE = 0x02000000 124 }; 124 }; 125 125 126 /* Bits 30,31 are unused, we use them to contr 126 /* Bits 30,31 are unused, we use them to control write behavior. */ 127 #define HIL_DO_ALTER_CTRL 0x40000000 /* Write 127 #define HIL_DO_ALTER_CTRL 0x40000000 /* Write MSW of packet to control 128 befo 128 before writing LSW to loop */ 129 #define HIL_CTRL_ONLY 0xc0000000 /* *Only 129 #define HIL_CTRL_ONLY 0xc0000000 /* *Only* alter the control registers */ 130 130 131 /* This gives us a 32-bit "packet" 131 /* This gives us a 32-bit "packet" 132 */ 132 */ 133 typedef u32 hil_packet; 133 typedef u32 hil_packet; 134 134 135 135 136 /* HIL Loop commands 136 /* HIL Loop commands 137 */ 137 */ 138 enum hil_command { 138 enum hil_command { 139 HIL_CMD_IFC = 0x00, /* Interface C 139 HIL_CMD_IFC = 0x00, /* Interface Clear */ 140 HIL_CMD_EPT = 0x01, /* Enter Pass- 140 HIL_CMD_EPT = 0x01, /* Enter Pass-Thru Mode */ 141 HIL_CMD_ELB = 0x02, /* Enter Loop- 141 HIL_CMD_ELB = 0x02, /* Enter Loop-Back Mode */ 142 HIL_CMD_IDD = 0x03, /* Identify an 142 HIL_CMD_IDD = 0x03, /* Identify and Describe */ 143 HIL_CMD_DSR = 0x04, /* Device Soft 143 HIL_CMD_DSR = 0x04, /* Device Soft Reset */ 144 HIL_CMD_PST = 0x05, /* Perform Sel 144 HIL_CMD_PST = 0x05, /* Perform Self Test */ 145 HIL_CMD_RRG = 0x06, /* Read Regist 145 HIL_CMD_RRG = 0x06, /* Read Register */ 146 HIL_CMD_WRG = 0x07, /* Write Regis 146 HIL_CMD_WRG = 0x07, /* Write Register */ 147 HIL_CMD_ACF = 0x08, /* Auto Config 147 HIL_CMD_ACF = 0x08, /* Auto Configure */ 148 HIL_CMDID_ACF = 0x07, /* Auto Config 148 HIL_CMDID_ACF = 0x07, /* Auto Configure bits with incremented ID */ 149 HIL_CMD_POL = 0x10, /* Poll */ 149 HIL_CMD_POL = 0x10, /* Poll */ 150 HIL_CMDCT_POL = 0x0f, /* Poll comman 150 HIL_CMDCT_POL = 0x0f, /* Poll command bits with item count */ 151 HIL_CMD_RPL = 0x20, /* RePoll */ 151 HIL_CMD_RPL = 0x20, /* RePoll */ 152 HIL_CMDCT_RPL = 0x0f, /* RePoll comm 152 HIL_CMDCT_RPL = 0x0f, /* RePoll command bits with item count */ 153 HIL_CMD_RNM = 0x30, /* Report Name 153 HIL_CMD_RNM = 0x30, /* Report Name */ 154 HIL_CMD_RST = 0x31, /* Report Stat 154 HIL_CMD_RST = 0x31, /* Report Status */ 155 HIL_CMD_EXD = 0x32, /* Extended De 155 HIL_CMD_EXD = 0x32, /* Extended Describe */ 156 HIL_CMD_RSC = 0x33, /* Report Secu 156 HIL_CMD_RSC = 0x33, /* Report Security Code */ 157 157 158 /* 0x34 to 0x3c reserved for future us 158 /* 0x34 to 0x3c reserved for future use */ 159 159 160 HIL_CMD_DKA = 0x3d, /* Disable Key 160 HIL_CMD_DKA = 0x3d, /* Disable Keyswitch Autorepeat */ 161 HIL_CMD_EK1 = 0x3e, /* Enable Keys 161 HIL_CMD_EK1 = 0x3e, /* Enable Keyswitch Autorepeat 1 */ 162 HIL_CMD_EK2 = 0x3f, /* Enable Keys 162 HIL_CMD_EK2 = 0x3f, /* Enable Keyswitch Autorepeat 2 */ 163 HIL_CMD_PR1 = 0x40, /* Prompt1 */ 163 HIL_CMD_PR1 = 0x40, /* Prompt1 */ 164 HIL_CMD_PR2 = 0x41, /* Prompt2 */ 164 HIL_CMD_PR2 = 0x41, /* Prompt2 */ 165 HIL_CMD_PR3 = 0x42, /* Prompt3 */ 165 HIL_CMD_PR3 = 0x42, /* Prompt3 */ 166 HIL_CMD_PR4 = 0x43, /* Prompt4 */ 166 HIL_CMD_PR4 = 0x43, /* Prompt4 */ 167 HIL_CMD_PR5 = 0x44, /* Prompt5 */ 167 HIL_CMD_PR5 = 0x44, /* Prompt5 */ 168 HIL_CMD_PR6 = 0x45, /* Prompt6 */ 168 HIL_CMD_PR6 = 0x45, /* Prompt6 */ 169 HIL_CMD_PR7 = 0x46, /* Prompt7 */ 169 HIL_CMD_PR7 = 0x46, /* Prompt7 */ 170 HIL_CMD_PRM = 0x47, /* Prompt (Gen 170 HIL_CMD_PRM = 0x47, /* Prompt (General Purpose) */ 171 HIL_CMD_AK1 = 0x48, /* Acknowledge 171 HIL_CMD_AK1 = 0x48, /* Acknowledge1 */ 172 HIL_CMD_AK2 = 0x49, /* Acknowledge 172 HIL_CMD_AK2 = 0x49, /* Acknowledge2 */ 173 HIL_CMD_AK3 = 0x4a, /* Acknowledge 173 HIL_CMD_AK3 = 0x4a, /* Acknowledge3 */ 174 HIL_CMD_AK4 = 0x4b, /* Acknowledge 174 HIL_CMD_AK4 = 0x4b, /* Acknowledge4 */ 175 HIL_CMD_AK5 = 0x4c, /* Acknowledge 175 HIL_CMD_AK5 = 0x4c, /* Acknowledge5 */ 176 HIL_CMD_AK6 = 0x4d, /* Acknowledge 176 HIL_CMD_AK6 = 0x4d, /* Acknowledge6 */ 177 HIL_CMD_AK7 = 0x4e, /* Acknowledge 177 HIL_CMD_AK7 = 0x4e, /* Acknowledge7 */ 178 HIL_CMD_ACK = 0x4f, /* Acknowledge 178 HIL_CMD_ACK = 0x4f, /* Acknowledge (General Purpose) */ 179 179 180 /* 0x50 to 0x78 reserved for future us 180 /* 0x50 to 0x78 reserved for future use */ 181 /* 0x80 to 0xEF device-specific comman 181 /* 0x80 to 0xEF device-specific commands */ 182 /* 0xf0 to 0xf9 reserved for future us 182 /* 0xf0 to 0xf9 reserved for future use */ 183 183 184 HIL_CMD_RIO = 0xfa, /* Register I/ 184 HIL_CMD_RIO = 0xfa, /* Register I/O Error */ 185 HIL_CMD_SHR = 0xfb, /* System Hard 185 HIL_CMD_SHR = 0xfb, /* System Hard Reset */ 186 HIL_CMD_TER = 0xfc, /* Transmissio 186 HIL_CMD_TER = 0xfc, /* Transmission Error */ 187 HIL_CMD_CAE = 0xfd, /* Configurati 187 HIL_CMD_CAE = 0xfd, /* Configuration Address Error */ 188 HIL_CMD_DHR = 0xfe, /* Device Hard 188 HIL_CMD_DHR = 0xfe, /* Device Hard Reset */ 189 189 190 /* 0xff is prohibited from use. */ 190 /* 0xff is prohibited from use. */ 191 }; 191 }; 192 192 193 193 194 /* 194 /* 195 * Response "records" to HIL commands 195 * Response "records" to HIL commands 196 */ 196 */ 197 197 198 /* Device ID byte 198 /* Device ID byte 199 */ 199 */ 200 #define HIL_IDD_DID_TYPE_MASK 0xe0 200 #define HIL_IDD_DID_TYPE_MASK 0xe0 /* Primary type bits */ 201 #define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0 201 #define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0 /* Integral keyboard */ 202 #define HIL_IDD_DID_TYPE_KB_ITF 0xc0 202 #define HIL_IDD_DID_TYPE_KB_ITF 0xc0 /* ITD keyboard */ 203 #define HIL_IDD_DID_TYPE_KB_RSVD 0xe0 203 #define HIL_IDD_DID_TYPE_KB_RSVD 0xe0 /* Reserved keyboard type */ 204 #define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f 204 #define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f /* Keyboard locale bits */ 205 #define HIL_IDD_DID_KBLANG_USE_ESD 0x00 205 #define HIL_IDD_DID_KBLANG_USE_ESD 0x00 /* Use ESD Locale instead */ 206 #define HIL_IDD_DID_TYPE_ABS 0x80 206 #define HIL_IDD_DID_TYPE_ABS 0x80 /* Absolute Positioners */ 207 #define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8 207 #define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8 /* Reserved */ 208 #define HIL_IDD_DID_ABS_RSVD1 0x98 208 #define HIL_IDD_DID_ABS_RSVD1 0x98 209 #define HIL_IDD_DID_ABS_TABLET_MASK 0xf8 209 #define HIL_IDD_DID_ABS_TABLET_MASK 0xf8 /* Tablets and digitizers */ 210 #define HIL_IDD_DID_ABS_TABLET 0x90 210 #define HIL_IDD_DID_ABS_TABLET 0x90 211 #define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc 211 #define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc /* Touch screens */ 212 #define HIL_IDD_DID_ABS_TSCREEN 0x8c 212 #define HIL_IDD_DID_ABS_TSCREEN 0x8c 213 #define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc 213 #define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc /* Reserved */ 214 #define HIL_IDD_DID_ABS_RSVD2 0x88 214 #define HIL_IDD_DID_ABS_RSVD2 0x88 215 #define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc 215 #define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc /* Reserved */ 216 #define HIL_IDD_DID_ABS_RSVD3 0x80 216 #define HIL_IDD_DID_ABS_RSVD3 0x80 217 #define HIL_IDD_DID_TYPE_REL 0x60 217 #define HIL_IDD_DID_TYPE_REL 0x60 /* Relative Positioners */ 218 #define HIL_IDD_DID_REL_RSVD1_MASK 0xf0 218 #define HIL_IDD_DID_REL_RSVD1_MASK 0xf0 /* Reserved */ 219 #define HIL_IDD_DID_REL_RSVD1 0x70 219 #define HIL_IDD_DID_REL_RSVD1 0x70 220 #define HIL_IDD_DID_REL_RSVD2_MASK 0xfc 220 #define HIL_IDD_DID_REL_RSVD2_MASK 0xfc /* Reserved */ 221 #define HIL_IDD_DID_REL_RSVD2 0x6c 221 #define HIL_IDD_DID_REL_RSVD2 0x6c 222 #define HIL_IDD_DID_REL_MOUSE_MASK 0xfc 222 #define HIL_IDD_DID_REL_MOUSE_MASK 0xfc /* Mouse */ 223 #define HIL_IDD_DID_REL_MOUSE 0x68 223 #define HIL_IDD_DID_REL_MOUSE 0x68 224 #define HIL_IDD_DID_REL_QUAD_MASK 0xf8 224 #define HIL_IDD_DID_REL_QUAD_MASK 0xf8 /* Other Quadrature Devices */ 225 #define HIL_IDD_DID_REL_QUAD 0x60 225 #define HIL_IDD_DID_REL_QUAD 0x60 226 #define HIL_IDD_DID_TYPE_CHAR 0x40 226 #define HIL_IDD_DID_TYPE_CHAR 0x40 /* Character Entry */ 227 #define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc 227 #define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc /* Barcode Reader */ 228 #define HIL_IDD_DID_CHAR_BARCODE 0x5c 228 #define HIL_IDD_DID_CHAR_BARCODE 0x5c 229 #define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc 229 #define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc /* Reserved */ 230 #define HIL_IDD_DID_CHAR_RSVD1 0x58 230 #define HIL_IDD_DID_CHAR_RSVD1 0x58 231 #define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8 231 #define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8 /* Reserved */ 232 #define HIL_IDD_DID_CHAR_RSVD2 0x50 232 #define HIL_IDD_DID_CHAR_RSVD2 0x50 233 #define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0 233 #define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0 /* Reserved */ 234 #define HIL_IDD_DID_CHAR_RSVD3 0x40 234 #define HIL_IDD_DID_CHAR_RSVD3 0x40 235 #define HIL_IDD_DID_TYPE_OTHER 0x20 235 #define HIL_IDD_DID_TYPE_OTHER 0x20 /* Miscellaneous */ 236 #define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0 236 #define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0 /* Reserved */ 237 #define HIL_IDD_DID_OTHER_RSVD1 0x30 237 #define HIL_IDD_DID_OTHER_RSVD1 0x30 238 #define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc 238 #define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc /* Tone Generator */ 239 #define HIL_IDD_DID_OTHER_BARCODE 0x2c 239 #define HIL_IDD_DID_OTHER_BARCODE 0x2c 240 #define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc 240 #define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc /* Reserved */ 241 #define HIL_IDD_DID_OTHER_RSVD2 0x28 241 #define HIL_IDD_DID_OTHER_RSVD2 0x28 242 #define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8 242 #define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8 /* Reserved */ 243 #define HIL_IDD_DID_OTHER_RSVD3 0x20 243 #define HIL_IDD_DID_OTHER_RSVD3 0x20 244 #define HIL_IDD_DID_TYPE_KEYPAD 0x00 244 #define HIL_IDD_DID_TYPE_KEYPAD 0x00 /* Vectra Keyboard */ 245 245 246 /* IDD record header 246 /* IDD record header 247 */ 247 */ 248 #define HIL_IDD_HEADER_AXSET_MASK 0x03 248 #define HIL_IDD_HEADER_AXSET_MASK 0x03 /* Number of axis in a set */ 249 #define HIL_IDD_HEADER_RSC 0x04 249 #define HIL_IDD_HEADER_RSC 0x04 /* Supports RSC command */ 250 #define HIL_IDD_HEADER_EXD 0x08 250 #define HIL_IDD_HEADER_EXD 0x08 /* Supports EXD command */ 251 #define HIL_IDD_HEADER_IOD 0x10 251 #define HIL_IDD_HEADER_IOD 0x10 /* IOD byte to follow */ 252 #define HIL_IDD_HEADER_16BIT 0x20 252 #define HIL_IDD_HEADER_16BIT 0x20 /* 16 (vs. 8) bit resolution */ 253 #define HIL_IDD_HEADER_ABS 0x40 253 #define HIL_IDD_HEADER_ABS 0x40 /* Reports Absolute Position */ 254 #define HIL_IDD_HEADER_2X_AXIS 0x80 254 #define HIL_IDD_HEADER_2X_AXIS 0x80 /* Two sets of 1-3 axis */ 255 255 256 /* I/O Descriptor 256 /* I/O Descriptor 257 */ 257 */ 258 #define HIL_IDD_IOD_NBUTTON_MASK 0x07 258 #define HIL_IDD_IOD_NBUTTON_MASK 0x07 /* Number of buttons */ 259 #define HIL_IDD_IOD_PROXIMITY 0x08 259 #define HIL_IDD_IOD_PROXIMITY 0x08 /* Proximity in/out events */ 260 #define HIL_IDD_IOD_PROMPT_MASK 0x70 260 #define HIL_IDD_IOD_PROMPT_MASK 0x70 /* Number of prompts/acks */ 261 #define HIL_IDD_IOD_PROMPT_SHIFT 4 261 #define HIL_IDD_IOD_PROMPT_SHIFT 4 262 #define HIL_IDD_IOD_PROMPT 0x80 262 #define HIL_IDD_IOD_PROMPT 0x80 /* Generic prompt/ack */ 263 263 264 #define HIL_IDD_NUM_AXES_PER_SET(header_packet 264 #define HIL_IDD_NUM_AXES_PER_SET(header_packet) \ 265 ((header_packet) & HIL_IDD_HEADER_AXSET_MASK) 265 ((header_packet) & HIL_IDD_HEADER_AXSET_MASK) 266 266 267 #define HIL_IDD_NUM_AXSETS(header_packet) \ 267 #define HIL_IDD_NUM_AXSETS(header_packet) \ 268 (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXI 268 (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS)) 269 269 270 #define HIL_IDD_LEN(header_packet) \ 270 #define HIL_IDD_LEN(header_packet) \ 271 ((4 - !(header_packet & HIL_IDD_HEADER_IOD) - 271 ((4 - !(header_packet & HIL_IDD_HEADER_IOD) - \ 272 2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet 272 2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet))) + \ 273 2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) 273 2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) * \ 274 !!((header_packet) & HIL_IDD_HEADER_ABS)) 274 !!((header_packet) & HIL_IDD_HEADER_ABS)) 275 275 276 /* The following HIL_IDD_* macros assume you h 276 /* The following HIL_IDD_* macros assume you have an array of 277 * packets and/or unpacked 8-bit data in the o 277 * packets and/or unpacked 8-bit data in the order that they 278 * were received. 278 * were received. 279 */ 279 */ 280 280 281 #define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr) 281 #define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr) \ 282 (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 : 282 (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 : \ 283 (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) + 283 (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) + \ 284 ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 284 ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 8) \ 285 * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 10 285 * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 100 : 1))) 286 286 287 #define HIL_IDD_AXIS_MAX(header_ptr, __axnum) 287 #define HIL_IDD_AXIS_MAX(header_ptr, __axnum) \ 288 ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) || 288 ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) || \ 289 (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= 289 (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= __axnum)) ? 0 : \ 290 ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 290 ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 * __axnum)) + \ 291 ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 291 ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 * __axnum)) << 8))) 292 292 293 #define HIL_IDD_IOD(header_ptr) \ 293 #define HIL_IDD_IOD(header_ptr) \ 294 (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1 294 (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1)) 295 295 296 #define HIL_IDD_HAS_GEN_PROMPT(header_ptr) \ 296 #define HIL_IDD_HAS_GEN_PROMPT(header_ptr) \ 297 ((*header_ptr & HIL_IDD_HEADER_IOD) && 297 ((*header_ptr & HIL_IDD_HEADER_IOD) && \ 298 (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT 298 (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT)) 299 299 300 #define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr) 300 #define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr) \ 301 ((*header_ptr & HIL_IDD_HEADER_IOD) && 301 ((*header_ptr & HIL_IDD_HEADER_IOD) && \ 302 (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIM 302 (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY)) 303 303 304 #define HIL_IDD_NUM_BUTTONS(header_ptr) \ 304 #define HIL_IDD_NUM_BUTTONS(header_ptr) \ 305 ((*header_ptr & HIL_IDD_HEADER_IOD) ? 305 ((*header_ptr & HIL_IDD_HEADER_IOD) ? \ 306 (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTO 306 (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0) 307 307 308 #define HIL_IDD_NUM_PROMPTS(header_ptr) \ 308 #define HIL_IDD_NUM_PROMPTS(header_ptr) \ 309 ((*header_ptr & HIL_IDD_HEADER_IOD) ? 309 ((*header_ptr & HIL_IDD_HEADER_IOD) ? \ 310 ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROM 310 ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROMPT_MASK) \ 311 >> HIL_IDD_IOD_PROMPT_SHIFT) : 0) 311 >> HIL_IDD_IOD_PROMPT_SHIFT) : 0) 312 312 313 /* The response to HIL EXD commands -- the "ex 313 /* The response to HIL EXD commands -- the "extended describe record" */ 314 #define HIL_EXD_HEADER_WRG 0x03 314 #define HIL_EXD_HEADER_WRG 0x03 /* Supports type2 WRG */ 315 #define HIL_EXD_HEADER_WRG_TYPE1 0x01 315 #define HIL_EXD_HEADER_WRG_TYPE1 0x01 /* Supports type1 WRG */ 316 #define HIL_EXD_HEADER_WRG_TYPE2 0x02 316 #define HIL_EXD_HEADER_WRG_TYPE2 0x02 /* Supports type2 WRG */ 317 #define HIL_EXD_HEADER_RRG 0x04 317 #define HIL_EXD_HEADER_RRG 0x04 /* Supports RRG command */ 318 #define HIL_EXD_HEADER_RNM 0x10 318 #define HIL_EXD_HEADER_RNM 0x10 /* Supports RNM command */ 319 #define HIL_EXD_HEADER_RST 0x20 319 #define HIL_EXD_HEADER_RST 0x20 /* Supports RST command */ 320 #define HIL_EXD_HEADER_LOCALE 0x40 320 #define HIL_EXD_HEADER_LOCALE 0x40 /* Contains locale code */ 321 321 322 #define HIL_EXD_NUM_RRG(header_ptr) \ 322 #define HIL_EXD_NUM_RRG(header_ptr) \ 323 ((*header_ptr & HIL_EXD_HEADER_RRG) ? \ 323 ((*header_ptr & HIL_EXD_HEADER_RRG) ? \ 324 (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0) 324 (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0) 325 325 326 #define HIL_EXD_NUM_WWG(header_ptr) \ 326 #define HIL_EXD_NUM_WWG(header_ptr) \ 327 ((*header_ptr & HIL_EXD_HEADER_WRG) ? 327 ((*header_ptr & HIL_EXD_HEADER_WRG) ? \ 328 (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_H 328 (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_HEADER_RRG)) & \ 329 HIL_PKT_DATA_MASK) : 0) 329 HIL_PKT_DATA_MASK) : 0) 330 330 331 #define HIL_EXD_LEN(header_ptr) \ 331 #define HIL_EXD_LEN(header_ptr) \ 332 (!!(*header_ptr & HIL_EXD_HEADER_RRG) + 332 (!!(*header_ptr & HIL_EXD_HEADER_RRG) + \ 333 !!(*header_ptr & HIL_EXD_HEADER_WRG) + 333 !!(*header_ptr & HIL_EXD_HEADER_WRG) + \ 334 !!(*header_ptr & HIL_EXD_HEADER_LOCALE) + 334 !!(*header_ptr & HIL_EXD_HEADER_LOCALE) + \ 335 2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2 335 2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) + 1) 336 336 337 #define HIL_EXD_LOCALE(header_ptr) \ 337 #define HIL_EXD_LOCALE(header_ptr) \ 338 (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 : 338 (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 : \ 339 (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) 339 (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) & HIL_PKT_DATA_MASK)) 340 340 341 #define HIL_EXD_WRG_TYPE2_LEN(header_ptr) \ 341 #define HIL_EXD_WRG_TYPE2_LEN(header_ptr) \ 342 (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? - 342 (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -1 : \ 343 (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 - 343 (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 - \ 344 !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & 344 !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) + \ 345 ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 345 ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 - \ 346 !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) 346 !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) << 8)) 347 347 348 /* Device locale codes. */ 348 /* Device locale codes. */ 349 349 350 /* Last defined locale code. Everything above 350 /* Last defined locale code. Everything above this is "Reserved", 351 and note that this same table applies to th 351 and note that this same table applies to the Device ID Byte where 352 keyboards may have a nationality code which 352 keyboards may have a nationality code which is only 5 bits. */ 353 #define HIL_LOCALE_MAX 0x1f 353 #define HIL_LOCALE_MAX 0x1f 354 354 355 /* Map to hopefully useful strings. I was try 355 /* Map to hopefully useful strings. I was trying to make these look 356 like locale.aliases strings do; maybe that 356 like locale.aliases strings do; maybe that isn't the right table to 357 emulate. In either case, I didn't have muc 357 emulate. In either case, I didn't have much to work on. */ 358 #define HIL_LOCALE_MAP \ 358 #define HIL_LOCALE_MAP \ 359 "", /* 0x00 Reserved */ 359 "", /* 0x00 Reserved */ \ 360 "", /* 0x01 Reserved */ 360 "", /* 0x01 Reserved */ \ 361 "", /* 0x02 Reserved */ 361 "", /* 0x02 Reserved */ \ 362 "swiss.french", /* 0x03 Swiss/French * 362 "swiss.french", /* 0x03 Swiss/French */ \ 363 "portuguese", /* 0x04 Portuguese */ 363 "portuguese", /* 0x04 Portuguese */ \ 364 "arabic", /* 0x05 Arabic */ 364 "arabic", /* 0x05 Arabic */ \ 365 "hebrew", /* 0x06 Hebrew */ 365 "hebrew", /* 0x06 Hebrew */ \ 366 "english.canadian", /* 0x07 Canadian Engli 366 "english.canadian", /* 0x07 Canadian English */ \ 367 "turkish", /* 0x08 Turkish */ 367 "turkish", /* 0x08 Turkish */ \ 368 "greek", /* 0x09 Greek */ 368 "greek", /* 0x09 Greek */ \ 369 "thai", /* 0x0a Thai (Thailand 369 "thai", /* 0x0a Thai (Thailand) */ \ 370 "italian", /* 0x0b Italian */ 370 "italian", /* 0x0b Italian */ \ 371 "korean", /* 0x0c Hangul (Korea) 371 "korean", /* 0x0c Hangul (Korea) */ \ 372 "dutch", /* 0x0d Dutch */ 372 "dutch", /* 0x0d Dutch */ \ 373 "swedish", /* 0x0e Swedish */ 373 "swedish", /* 0x0e Swedish */ \ 374 "german", /* 0x0f German */ 374 "german", /* 0x0f German */ \ 375 "chinese", /* 0x10 Chinese-PRC */ 375 "chinese", /* 0x10 Chinese-PRC */ \ 376 "chinese", /* 0x11 Chinese-ROC */ 376 "chinese", /* 0x11 Chinese-ROC */ \ 377 "swiss.french", /* 0x12 Swiss/French I 377 "swiss.french", /* 0x12 Swiss/French II */ \ 378 "spanish", /* 0x13 Spanish */ 378 "spanish", /* 0x13 Spanish */ \ 379 "swiss.german", /* 0x14 Swiss/German I 379 "swiss.german", /* 0x14 Swiss/German II */ \ 380 "flemish", /* 0x15 Belgian (Flemi 380 "flemish", /* 0x15 Belgian (Flemish) */ \ 381 "finnish", /* 0x16 Finnish */ 381 "finnish", /* 0x16 Finnish */ \ 382 "english.uk", /* 0x17 United Kingdom 382 "english.uk", /* 0x17 United Kingdom */ \ 383 "french.canadian", /* 0x18 French/Canadia 383 "french.canadian", /* 0x18 French/Canadian */ \ 384 "swiss.german", /* 0x19 Swiss/German * 384 "swiss.german", /* 0x19 Swiss/German */ \ 385 "norwegian", /* 0x1a Norwegian */ 385 "norwegian", /* 0x1a Norwegian */ \ 386 "french", /* 0x1b French */ 386 "french", /* 0x1b French */ \ 387 "danish", /* 0x1c Danish */ 387 "danish", /* 0x1c Danish */ \ 388 "japanese", /* 0x1d Katakana */ 388 "japanese", /* 0x1d Katakana */ \ 389 "spanish", /* 0x1e Latin American 389 "spanish", /* 0x1e Latin American/Spanish*/\ 390 "english.us" /* 0x1f United States 390 "english.us" /* 0x1f United States */ \ 391 391 392 392 393 /* HIL keycodes */ 393 /* HIL keycodes */ 394 #define HIL_KEYCODES_SET1_TBLSIZE 128 394 #define HIL_KEYCODES_SET1_TBLSIZE 128 395 #define HIL_KEYCODES_SET1 \ 395 #define HIL_KEYCODES_SET1 \ 396 KEY_5, KEY_RESERVED, KEY_RI 396 KEY_5, KEY_RESERVED, KEY_RIGHTALT, KEY_LEFTALT, \ 397 KEY_RIGHTSHIFT, KEY_LEFTSHIFT, KEY_LE 397 KEY_RIGHTSHIFT, KEY_LEFTSHIFT, KEY_LEFTCTRL, KEY_SYSRQ, \ 398 KEY_KP4, KEY_KP8, KEY_KP 398 KEY_KP4, KEY_KP8, KEY_KP5, KEY_KP9, \ 399 KEY_KP6, KEY_KP7, KEY_KP 399 KEY_KP6, KEY_KP7, KEY_KPCOMMA, KEY_KPENTER, \ 400 KEY_KP1, KEY_KPSLASH, KEY_KP 400 KEY_KP1, KEY_KPSLASH, KEY_KP2, KEY_KPPLUS, \ 401 KEY_KP3, KEY_KPASTERISK, KEY_KP 401 KEY_KP3, KEY_KPASTERISK, KEY_KP0, KEY_KPMINUS, \ 402 KEY_B, KEY_V, KEY_C, 402 KEY_B, KEY_V, KEY_C, KEY_X, \ 403 KEY_Z, KEY_RESERVED, KEY_RE 403 KEY_Z, KEY_RESERVED, KEY_RESERVED, KEY_ESC, \ 404 KEY_6, KEY_F10, KEY_3, 404 KEY_6, KEY_F10, KEY_3, KEY_F11, \ 405 KEY_KPDOT, KEY_F9, KEY_TA 405 KEY_KPDOT, KEY_F9, KEY_TAB /*KP*/, KEY_F12, \ 406 KEY_H, KEY_G, KEY_F, 406 KEY_H, KEY_G, KEY_F, KEY_D, \ 407 KEY_S, KEY_A, KEY_RE 407 KEY_S, KEY_A, KEY_RESERVED, KEY_CAPSLOCK, \ 408 KEY_U, KEY_Y, KEY_T, 408 KEY_U, KEY_Y, KEY_T, KEY_R, \ 409 KEY_E, KEY_W, KEY_Q, 409 KEY_E, KEY_W, KEY_Q, KEY_TAB, \ 410 KEY_7, KEY_6, KEY_5, 410 KEY_7, KEY_6, KEY_5, KEY_4, \ 411 KEY_3, KEY_2, KEY_1, 411 KEY_3, KEY_2, KEY_1, KEY_GRAVE, \ 412 KEY_F13, KEY_F14, KEY_F1 412 KEY_F13, KEY_F14, KEY_F15, KEY_F16, \ 413 KEY_F17, KEY_F18, KEY_F1 413 KEY_F17, KEY_F18, KEY_F19, KEY_F20, \ 414 KEY_MENU, KEY_F4, KEY_F3 414 KEY_MENU, KEY_F4, KEY_F3, KEY_F2, \ 415 KEY_F1, KEY_VOLUMEUP, KEY_ST 415 KEY_F1, KEY_VOLUMEUP, KEY_STOP, KEY_SENDFILE, \ 416 KEY_SYSRQ, KEY_F5, KEY_F6 416 KEY_SYSRQ, KEY_F5, KEY_F6, KEY_F7, \ 417 KEY_F8, KEY_VOLUMEDOWN, KEY_DE 417 KEY_F8, KEY_VOLUMEDOWN, KEY_DEL_EOL, KEY_DEL_EOS, \ 418 KEY_8, KEY_9, KEY_0, 418 KEY_8, KEY_9, KEY_0, KEY_MINUS, \ 419 KEY_EQUAL, KEY_BACKSPACE, KEY_IN 419 KEY_EQUAL, KEY_BACKSPACE, KEY_INS_LINE, KEY_DEL_LINE, \ 420 KEY_I, KEY_O, KEY_P, 420 KEY_I, KEY_O, KEY_P, KEY_LEFTBRACE, \ 421 KEY_RIGHTBRACE, KEY_BACKSLASH, KEY_IN 421 KEY_RIGHTBRACE, KEY_BACKSLASH, KEY_INSERT, KEY_DELETE, \ 422 KEY_J, KEY_K, KEY_L, 422 KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, \ 423 KEY_APOSTROPHE, KEY_ENTER, KEY_HO 423 KEY_APOSTROPHE, KEY_ENTER, KEY_HOME, KEY_PAGEUP, \ 424 KEY_M, KEY_COMMA, KEY_DO 424 KEY_M, KEY_COMMA, KEY_DOT, KEY_SLASH, \ 425 KEY_BACKSLASH, KEY_SELECT, KEY_10 425 KEY_BACKSLASH, KEY_SELECT, KEY_102ND, KEY_PAGEDOWN, \ 426 KEY_N, KEY_SPACE, KEY_NE 426 KEY_N, KEY_SPACE, KEY_NEXT, KEY_RESERVED, \ 427 KEY_LEFT, KEY_DOWN, KEY_UP 427 KEY_LEFT, KEY_DOWN, KEY_UP, KEY_RIGHT 428 428 429 429 430 #define HIL_KEYCODES_SET3_TBLSIZE 128 430 #define HIL_KEYCODES_SET3_TBLSIZE 128 431 #define HIL_KEYCODES_SET3 \ 431 #define HIL_KEYCODES_SET3 \ 432 KEY_RESERVED, KEY_ESC, KEY_1, 432 KEY_RESERVED, KEY_ESC, KEY_1, KEY_2, \ 433 KEY_3, KEY_4, KEY_5, 433 KEY_3, KEY_4, KEY_5, KEY_6, \ 434 KEY_7, KEY_8, KEY_9, 434 KEY_7, KEY_8, KEY_9, KEY_0, \ 435 KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, 435 KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, KEY_TAB, \ 436 KEY_Q, KEY_W, KEY_E, 436 KEY_Q, KEY_W, KEY_E, KEY_R, \ 437 KEY_T, KEY_Y, KEY_U, 437 KEY_T, KEY_Y, KEY_U, KEY_I, \ 438 KEY_O, KEY_P, KEY_LEFTBRACE, 438 KEY_O, KEY_P, KEY_LEFTBRACE, KEY_RIGHTBRACE, \ 439 KEY_ENTER, KEY_LEFTCTRL, KEY_A, 439 KEY_ENTER, KEY_LEFTCTRL, KEY_A, KEY_S, \ 440 KEY_D, KEY_F, KEY_G, 440 KEY_D, KEY_F, KEY_G, KEY_H, \ 441 KEY_J, KEY_K, KEY_L, 441 KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, \ 442 KEY_APOSTROPHE,KEY_GRAVE, KEY_LEFTSHIFT, 442 KEY_APOSTROPHE,KEY_GRAVE, KEY_LEFTSHIFT, KEY_BACKSLASH, \ 443 KEY_Z, KEY_X, KEY_C, 443 KEY_Z, KEY_X, KEY_C, KEY_V, \ 444 KEY_B, KEY_N, KEY_M, 444 KEY_B, KEY_N, KEY_M, KEY_COMMA, \ 445 KEY_DOT, KEY_SLASH, KEY_RIGHTSHIFT 445 KEY_DOT, KEY_SLASH, KEY_RIGHTSHIFT, KEY_KPASTERISK, \ 446 KEY_LEFTALT, KEY_SPACE, KEY_CAPSLOCK, 446 KEY_LEFTALT, KEY_SPACE, KEY_CAPSLOCK, KEY_F1, \ 447 KEY_F2, KEY_F3, KEY_F4, 447 KEY_F2, KEY_F3, KEY_F4, KEY_F5, \ 448 KEY_F6, KEY_F7, KEY_F8, 448 KEY_F6, KEY_F7, KEY_F8, KEY_F9, \ 449 KEY_F10, KEY_NUMLOCK, KEY_SCROLLLOCK 449 KEY_F10, KEY_NUMLOCK, KEY_SCROLLLOCK, KEY_KP7, \ 450 KEY_KP8, KEY_KP9, KEY_KPMINUS, 450 KEY_KP8, KEY_KP9, KEY_KPMINUS, KEY_KP4, \ 451 KEY_KP5, KEY_KP6, KEY_KPPLUS, 451 KEY_KP5, KEY_KP6, KEY_KPPLUS, KEY_KP1, \ 452 KEY_KP2, KEY_KP3, KEY_KP0, 452 KEY_KP2, KEY_KP3, KEY_KP0, KEY_KPDOT, \ 453 KEY_SYSRQ, KEY_RESERVED, KEY_RESERVED, 453 KEY_SYSRQ, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ 454 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, 454 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ 455 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, 455 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ 456 KEY_UP, KEY_LEFT, KEY_DOWN, 456 KEY_UP, KEY_LEFT, KEY_DOWN, KEY_RIGHT, \ 457 KEY_HOME, KEY_PAGEUP, KEY_END, 457 KEY_HOME, KEY_PAGEUP, KEY_END, KEY_PAGEDOWN, \ 458 KEY_INSERT, KEY_DELETE, KEY_102ND, 458 KEY_INSERT, KEY_DELETE, KEY_102ND, KEY_RESERVED, \ 459 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, 459 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ 460 KEY_F1, KEY_F2, KEY_F3, 460 KEY_F1, KEY_F2, KEY_F3, KEY_F4, \ 461 KEY_F5, KEY_F6, KEY_F7, 461 KEY_F5, KEY_F6, KEY_F7, KEY_F8, \ 462 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, 462 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ 463 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, 463 KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED 464 464 465 465 466 /* Response to POL command, the "poll record h 466 /* Response to POL command, the "poll record header" */ 467 467 468 #define HIL_POL_NUM_AXES_MASK 0x03 /* Num 468 #define HIL_POL_NUM_AXES_MASK 0x03 /* Number of axis reported */ 469 #define HIL_POL_CTS 0x04 /* Dev 469 #define HIL_POL_CTS 0x04 /* Device ready to receive data */ 470 #define HIL_POL_STATUS_PENDING 0x08 /* Dev 470 #define HIL_POL_STATUS_PENDING 0x08 /* Device has status to report */ 471 #define HIL_POL_CHARTYPE_MASK 0x70 /* Typ 471 #define HIL_POL_CHARTYPE_MASK 0x70 /* Type of character data to follow */ 472 #define HIL_POL_CHARTYPE_NONE 0x00 /* No 472 #define HIL_POL_CHARTYPE_NONE 0x00 /* No character data to follow */ 473 #define HIL_POL_CHARTYPE_RSVD1 0x10 /* Res 473 #define HIL_POL_CHARTYPE_RSVD1 0x10 /* Reserved Set 1 */ 474 #define HIL_POL_CHARTYPE_ASCII 0x20 /* U.S 474 #define HIL_POL_CHARTYPE_ASCII 0x20 /* U.S. ASCII */ 475 #define HIL_POL_CHARTYPE_BINARY 0x30 /* Bin 475 #define HIL_POL_CHARTYPE_BINARY 0x30 /* Binary data */ 476 #define HIL_POL_CHARTYPE_SET1 0x40 /* Key 476 #define HIL_POL_CHARTYPE_SET1 0x40 /* Keycode Set 1 */ 477 #define HIL_POL_CHARTYPE_RSVD2 0x50 /* Res 477 #define HIL_POL_CHARTYPE_RSVD2 0x50 /* Reserved Set 2 */ 478 #define HIL_POL_CHARTYPE_SET2 0x60 /* Key 478 #define HIL_POL_CHARTYPE_SET2 0x60 /* Keycode Set 2 */ 479 #define HIL_POL_CHARTYPE_SET3 0x70 /* Key 479 #define HIL_POL_CHARTYPE_SET3 0x70 /* Keycode Set 3 */ 480 #define HIL_POL_AXIS_ALT 0x80 /* Dat 480 #define HIL_POL_AXIS_ALT 0x80 /* Data is from axis set 2 */ 481 481 482 482 483 #endif /* _HIL_H_ */ 483 #endif /* _HIL_H_ */ 484 484
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.