|
|
1.1 ! root 1: /* ! 2: * Mach Operating System ! 3: * Copyright (c) 1991,1990 Carnegie Mellon University ! 4: * All Rights Reserved. ! 5: * ! 6: * Permission to use, copy, modify and distribute this software and its ! 7: * documentation is hereby granted, provided that both the copyright ! 8: * notice and this permission notice appear in all copies of the ! 9: * software, derivative works or modified versions, and any portions ! 10: * thereof, and that both notices appear in supporting documentation. ! 11: * ! 12: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ! 13: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ! 14: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ! 15: * ! 16: * Carnegie Mellon requests users of this software to return to ! 17: * ! 18: * Software Distribution Coordinator or [email protected] ! 19: * School of Computer Science ! 20: * Carnegie Mellon University ! 21: * Pittsburgh PA 15213-3890 ! 22: * ! 23: * any improvements or extensions that they make and grant Carnegie Mellon ! 24: * the rights to redistribute these changes. ! 25: */ ! 26: /* ! 27: * File: lk201.h ! 28: * Author: Alessandro Forin, Carnegie Mellon University ! 29: * Date: 9/90 ! 30: * ! 31: * Definitions for the LK201 Keyboard Driver ! 32: */ ! 33: ! 34: /* ! 35: * KeyCodes generated by the LK201 board ! 36: * (labels as in the lk201-AA USA model) ! 37: */ ! 38: ! 39: #define LK_MINCODE 0x56 ! 40: /* Function keys */ ! 41: #define LK_F1 0x56 /* div 10 */ ! 42: #define LK_F2 0x57 ! 43: #define LK_F3 0x58 ! 44: #define LK_F4 0x59 ! 45: #define LK_F5 0x5a ! 46: #define LK_F6 0x64 /* div 11 */ ! 47: #define LK_F7 0x65 ! 48: #define LK_F8 0x66 ! 49: #define LK_F9 0x67 ! 50: #define LK_F10 0x68 ! 51: #define LK_F11 0x71 /* div 12 */ ! 52: #define LK_ESC LK_F11 ! 53: #define LK_F12 0x72 ! 54: #define LK_BS LK_F12 ! 55: #define LK_F13 0x73 ! 56: #define LK_LF LK_F13 ! 57: #define LK_F14 0x74 ! 58: #define LK_HELP 0x7c /* div 13 */ ! 59: #define LK_DO 0x7d ! 60: #define LK_F17 0x80 /* div 14 */ ! 61: #define LK_F18 0x81 ! 62: #define LK_F19 0x82 ! 63: #define LK_F20 0x83 ! 64: /* Editing keys */ ! 65: #define LK_FIND 0x8a /* div 9 */ ! 66: #define LK_INSERT 0x8b ! 67: #define LK_REMOVE 0x8c ! 68: #define LK_SELECT 0x8d ! 69: #define LK_PREV_SCREEN 0x8e ! 70: #define LK_NEXT_SCREEN 0x8f ! 71: /* Numeric keypad */ ! 72: #define LK_KP_0 0x92 /* div 2 */ ! 73: #define LK_KP_DOT 0x94 ! 74: #define LK_KP_ENTER 0x95 ! 75: #define LK_KP_1 0x96 ! 76: #define LK_KP_2 0x97 ! 77: #define LK_KP_3 0x98 ! 78: #define LK_KP_4 0x99 ! 79: #define LK_KP_5 0x9a ! 80: #define LK_KP_6 0x9b ! 81: #define LK_KP_COMMA 0x9c ! 82: #define LK_KP_7 0x9d ! 83: #define LK_KP_8 0x9e ! 84: #define LK_KP_9 0x9f ! 85: #define LK_KP_MINUS 0xa0 ! 86: #define LK_KP_PF1 0xa1 ! 87: #define LK_KP_PF2 0xa2 ! 88: #define LK_KP_PF3 0xa3 ! 89: #define LK_KP_PF4 0xa4 ! 90: /* Cursor keys */ ! 91: #define LK_LEFT 0xa7 /* div 7 */ ! 92: #define LK_RIGHT 0xa8 ! 93: #define LK_DOWN 0xa9 /* div 8 */ ! 94: #define LK_UP 0xaa ! 95: /* Shift & Co. */ ! 96: #define LK_R_SHIFT 0xab /* lk401 */ ! 97: #define LK_L_ALT 0xac /* lk401 */ ! 98: #define LK_R_COMPOSE 0xad /* lk401 */ ! 99: #define LK_SHIFT 0xae /* div 6 */ ! 100: #define LK_CNTRL 0xaf ! 101: #define LK_LOCK 0xb0 /* div 5 */ ! 102: #define LK_ALT 0xb1 ! 103: #define LK_R_ALT 0xb2 /* lk401 */ ! 104: /* Special codes */ ! 105: #define LK_ALLUP 0xb3 ! 106: #define LK_REPEAT 0xb4 ! 107: #define LK_OUTPUT_ERR 0xb5 ! 108: #define LK_INPUT_ERR 0xb6 ! 109: #define LK_KDBLOCK_ACK 0xb7 ! 110: #define LK_TESTMODE_ACK 0xb8 ! 111: #define LK_PFX_KEYDOWN 0xb9 ! 112: #define LK_MODECHG_ACK 0xba ! 113: /* Delete & Co. */ ! 114: #define LK_DEL 0xbc /* div 3 */ ! 115: #define LK_RETURN 0xbd /* div 4 */ ! 116: #define LK_TAB 0xbe ! 117: /* Graphic keys */ ! 118: ! 119: #define LK_TILDE 0xbf /* div 2 */ ! 120: #define LK_1 0xc0 ! 121: #define LK_Q 0xc1 ! 122: #define LK_A 0xc2 ! 123: #define LK_Z 0xc3 ! 124: #define LK_2 0xc5 ! 125: #define LK_W 0xc6 ! 126: #define LK_S 0xc7 ! 127: #define LK_X 0xc8 ! 128: #define LK_LESSGRT 0xc9 ! 129: #define LK_3 0xcb ! 130: #define LK_E 0xcc ! 131: #define LK_D 0xcd ! 132: #define LK_C 0xce ! 133: #define LK_4 0xd0 ! 134: #define LK_R 0xd1 ! 135: #define LK_F 0xd2 ! 136: #define LK_V 0xd3 ! 137: #define LK_SP 0xd4 ! 138: #define LK_5 0xd6 ! 139: #define LK_T 0xd7 ! 140: #define LK_G 0xd8 ! 141: #define LK_B 0xd9 ! 142: #define LK_6 0xdb ! 143: #define LK_Y 0xdc ! 144: #define LK_H 0xdd ! 145: #define LK_N 0xde ! 146: #define LK_7 0xe0 /* div 1 */ ! 147: #define LK_U 0xe1 ! 148: #define LK_J 0xe2 ! 149: #define LK_M 0xe3 ! 150: #define LK_8 0xe5 ! 151: #define LK_I 0xe6 ! 152: #define LK_K 0xe7 ! 153: #define LK_DQUOTE 0xe8 ! 154: #define LK_9 0xea ! 155: #define LK_O 0xeb ! 156: #define LK_L 0xec ! 157: #define LK_DOT 0xed ! 158: #define LK_0 0xef ! 159: #define LK_P 0xf0 ! 160: #define LK_COLON 0xf2 ! 161: #define LK_QMARK 0xf3 ! 162: #define LK_PLUS 0xf5 ! 163: #define LK_RBRACKET 0xf6 ! 164: #define LK_VBAR 0xf7 ! 165: #define LK_MINUS 0xf9 ! 166: #define LK_LBRACKET 0xfa ! 167: #define LK_COMMA 0xfb ! 168: ! 169: ! 170: /* ! 171: * Commands to the keyboard processor ! 172: */ ! 173: ! 174: #define LK_PARAM 0x80 /* start/end parameter list */ ! 175: ! 176: #define LK_CMD_RESUME 0x8b ! 177: #define LK_CMD_INHIBIT 0xb9 ! 178: #define LK_CMD_LEDS_ON 0x13 /* 1 param: led bitmask */ ! 179: #define LK_CMD_LEDS_OFF 0x11 /* 1 param: led bitmask */ ! 180: #define LK_CMD_DIS_KEYCLK 0x99 ! 181: #define LK_CMD_ENB_KEYCLK 0x1b /* 1 param: volume */ ! 182: #define LK_CMD_DIS_CTLCLK 0xb9 ! 183: #define LK_CMD_ENB_CTLCLK 0xbb ! 184: #define LK_CMD_SOUND_CLK 0x9f ! 185: #define LK_CMD_DIS_BELL 0xa1 ! 186: #define LK_CMD_ENB_BELL 0x23 /* 1 param: volume */ ! 187: #define LK_CMD_BELL 0xa7 ! 188: #define LK_CMD_TMP_NORPT 0xc1 ! 189: #define LK_CMD_ENB_RPT 0xe3 ! 190: #define LK_CMD_DIS_RPT 0xe1 ! 191: #define LK_CMD_RPT_TO_DOWN 0xd9 ! 192: #define LK_CMD_REQ_ID 0xab ! 193: #define LK_CMD_POWER_UP 0xfd ! 194: #define LK_CMD_TEST_MODE 0xcb ! 195: #define LK_CMD_SET_DEFAULTS 0xd3 ! 196: ! 197: /* there are 4 leds, represent them in the low 4 bits of a byte */ ! 198: #define LK_PARAM_LED_MASK(ledbmap) (LK_PARAM|(ledbmap)) ! 199: ! 200: /* max volume is 0, lowest is 0x7 */ ! 201: #define LK_PARAM_VOLUME(v) (LK_PARAM|((v)&0x7)) ! 202: ! 203: /* mode set command(s) details */ ! 204: #define LK_MODE_DOWN 0x0 ! 205: #define LK_MODE_RPT_DOWN 0x2 ! 206: #define LK_MODE_DOWN_UP 0x6 ! 207: #define LK_CMD_MODE(m,div) (LK_PARAM|(div<<3)|m) ! 208: ! 209: ! 210: /* ! 211: * Keyboard set_status codes and arguments ! 212: */ ! 213: ! 214: /* Send a command packet to the lk201 */ ! 215: typedef struct { ! 216: unsigned char len; /* how many params */ ! 217: unsigned char command; /* cmd to lk201 */ ! 218: unsigned char params[2]; /* extra params */ ! 219: } lk201_cmd_t; ! 220: #define LK201_SEND_CMD _IOW('q', 5, lk201_cmd_t)/* keybd. per. cmd */ ! 221: ! 222: /* Control rotation of lk201 leds */ ! 223: #define LK201_LED_PATTERN _IOW('q', 119, int) /* cylon, ... */ ! 224: # define LED_COUNT 1 /* led counter */ ! 225: # define LED_ROTATE 2 /* led rotate */ ! 226: # define LED_CYLON 3 /* led cylon mode */ ! 227: ! 228: #define LK201_LED_INTERVAL _IOW('q', 120, int) /* refresh interval */ ! 229: # define LED_OFF 0 /* no led movement */ ! 230: ! 231: /* Map the caps-lock key to act as the control key (skinny-fingers) */ ! 232: #define LK201_mapLOCKtoCNTRL _IOW('q', 121, int) /* 1 or 0 */ ! 233: ! 234: /* Remap a lk201 keycode to a different (ASCII) translation */ ! 235: typedef struct { ! 236: unsigned char in_keyval; ! 237: unsigned char shifted; ! 238: unsigned char out_keyval; ! 239: unsigned char meta; ! 240: } KeyMap; ! 241: #define LK201_REMAP_KEY _IOW('q', 122, KeyMap) /* 1 or 0 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.