|
|
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.