Changeset ec5beb7d in mainline for kbd/arch/mips32/src/kbd.c
- Timestamp:
- 2006-06-06T23:55:54Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9e951acb
- Parents:
- bba6b09
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kbd/arch/mips32/src/kbd.c
rbba6b09 rec5beb7d 29 29 #include <arch/kbd.h> 30 30 #include <ipc/ipc.h> 31 32 33 #define KEY_F1 0x504f1bL 34 #define KEY_F2 0x514f1bL 35 #define KEY_F3 0x524f1bL 36 #define KEY_F4 0x534f1bL 37 #define KEY_F5 0x35315b1bL 38 #define KEY_F6 0x37315b1bL 39 #define KEY_F7 0x38315b1bL 40 #define KEY_F8 0x39315b1bL 41 #define KEY_F9 0x30325b1bL 42 #define KEY_F10 0x31325b1bL 43 #define KEY_F11 0x33325b1bL 44 #define KEY_F12 0x34325b1bL 31 #include <sysinfo.h> 32 33 34 #define MSIM_KEY_F1 0x504f1bL 35 #define MSIM_KEY_F2 0x514f1bL 36 #define MSIM_KEY_F3 0x524f1bL 37 #define MSIM_KEY_F4 0x534f1bL 38 #define MSIM_KEY_F5 0x35315b1bL 39 #define MSIM_KEY_F6 0x37315b1bL 40 #define MSIM_KEY_F7 0x38315b1bL 41 #define MSIM_KEY_F8 0x39315b1bL 42 #define MSIM_KEY_F9 0x30325b1bL 43 #define MSIM_KEY_F10 0x31325b1bL 44 #define MSIM_KEY_F11 0x33325b1bL 45 #define MSIM_KEY_F12 0x34325b1bL 46 47 48 #define GXEMUL_KEY_F1 0x504f5b1bL 49 #define GXEMUL_KEY_F2 0x514f5b1bL 50 #define GXEMUL_KEY_F3 0x524f5b1bL 51 #define GXEMUL_KEY_F4 0x534f5b1bL 52 #define GXEMUL_KEY_F5 0x35315b1bL 53 #define GXEMUL_KEY_F6 0x37315b1bL 54 #define GXEMUL_KEY_F7 0x38315b1bL 55 #define GXEMUL_KEY_F8 0x39315b1bL 56 #define GXEMUL_KEY_F9 0x38325b1bL 57 #define GXEMUL_KEY_F10 0x39325b1bL 58 #define GXEMUL_KEY_F11 0x33325b1bL 59 #define GXEMUL_KEY_F12 0x34325b1bL 45 60 46 61 … … 57 72 }; 58 73 74 static int msim,gxemul; 75 59 76 int kbd_arch_init(void) 60 77 { 61 78 ipc_register_irq(2, &msim_kbd); 79 msim=sysinfo_value("machine.msim"); 80 gxemul=sysinfo_value("machine.lgxemul"); 62 81 return 1; 63 82 } 64 83 65 84 66 / *67 *68 * Please preserve this code (it can be used to determine scancodes)69 *85 //* 86 //* 87 //* Please preserve this code (it can be used to determine scancodes) 88 //* 70 89 int to_hex(int v) 71 90 { 72 91 return "0123456789ABCDEF"[v]; 73 92 } 74 */75 76 int kbd_arch_process(keybuffer_t *keybuffer, int scan_code)93 //*/ 94 95 static int kbd_arch_process_msim(keybuffer_t *keybuffer, int scan_code) 77 96 { 78 97 … … 94 113 { 95 114 switch (buf){ 96 case KEY_F5:115 case MSIM_KEY_F5: 97 116 keybuffer_push(keybuffer,FUNCTION_KEYS | 5 ); 98 117 buf=count=0; 99 118 return 1; 100 case KEY_F6:119 case MSIM_KEY_F6: 101 120 keybuffer_push(keybuffer,FUNCTION_KEYS | 6 ); 102 121 buf=count=0; 103 122 return 1; 104 case KEY_F7:123 case MSIM_KEY_F7: 105 124 keybuffer_push(keybuffer,FUNCTION_KEYS | 7 ); 106 125 buf=count=0; 107 126 return 1; 108 case KEY_F8:127 case MSIM_KEY_F8: 109 128 keybuffer_push(keybuffer,FUNCTION_KEYS | 8 ); 110 129 buf=count=0; 111 130 return 1; 112 131 113 case KEY_F9:132 case MSIM_KEY_F9: 114 133 keybuffer_push(keybuffer,FUNCTION_KEYS | 9 ); 115 134 buf=count=0; 116 135 return 1; 117 case KEY_F10:136 case MSIM_KEY_F10: 118 137 keybuffer_push(keybuffer,FUNCTION_KEYS | 10 ); 119 138 buf=count=0; 120 139 return 1; 121 140 122 case KEY_F11:141 case MSIM_KEY_F11: 123 142 keybuffer_push(keybuffer,FUNCTION_KEYS | 11 ); 124 143 buf=count=0; 125 144 return 1; 126 case KEY_F12:145 case MSIM_KEY_F12: 127 146 keybuffer_push(keybuffer,FUNCTION_KEYS | 12 ); 128 147 buf=count=0; … … 143 162 144 163 145 if((buf & 0xff)!= ( KEY_F1 & 0xff)) {164 if((buf & 0xff)!= (MSIM_KEY_F1 & 0xff)) { 146 165 147 166 keybuffer_push(keybuffer,buf ); … … 153 172 return 1; 154 173 155 if( (buf & 0xffff) != ( KEY_F1 & 0xffff)156 && (buf & 0xffff) != ( KEY_F5 & 0xffff) ) {174 if( (buf & 0xffff) != (MSIM_KEY_F1 & 0xffff) 175 && (buf & 0xffff) != (MSIM_KEY_F5 & 0xffff) ) { 157 176 158 177 keybuffer_push(keybuffer, buf & 0xff ); … … 166 185 167 186 switch (buf){ 168 case KEY_F1:187 case MSIM_KEY_F1: 169 188 keybuffer_push(keybuffer,FUNCTION_KEYS | 1 ); 170 189 buf=count=0; 171 190 return 1; 172 case KEY_F2:191 case MSIM_KEY_F2: 173 192 keybuffer_push(keybuffer,FUNCTION_KEYS | 2 ); 174 193 buf=count=0; 175 194 return 1; 176 case KEY_F3:195 case MSIM_KEY_F3: 177 196 keybuffer_push(keybuffer,FUNCTION_KEYS | 3 ); 178 197 buf=count=0; 179 198 return 1; 180 case KEY_F4:199 case MSIM_KEY_F4: 181 200 keybuffer_push(keybuffer,FUNCTION_KEYS | 4 ); 182 201 buf=count=0; … … 185 204 186 205 187 if( (buf & 0xffffff) != ( KEY_F5 & 0xffffff)188 && (buf & 0xffffff) != ( KEY_F9 & 0xffffff) ) {206 if( (buf & 0xffffff) != (MSIM_KEY_F5 & 0xffffff) 207 && (buf & 0xffffff) != (MSIM_KEY_F9 & 0xffffff) ) { 189 208 190 209 keybuffer_push(keybuffer, buf & 0xff ); … … 202 221 203 222 switch (buf){ 204 case KEY_F5:205 case KEY_F6:206 case KEY_F7:207 case KEY_F8:208 case KEY_F9:209 case KEY_F10:210 case KEY_F11:211 case KEY_F12:223 case MSIM_KEY_F5: 224 case MSIM_KEY_F6: 225 case MSIM_KEY_F7: 226 case MSIM_KEY_F8: 227 case MSIM_KEY_F9: 228 case MSIM_KEY_F10: 229 case MSIM_KEY_F11: 230 case MSIM_KEY_F12: 212 231 return 1; 213 232 default: … … 222 241 return 1; 223 242 } 243 244 245 246 static int kbd_arch_process_gxemul(keybuffer_t *keybuffer, int scan_code) 247 { 248 249 static unsigned long buf=0; 250 static int count=0; 251 252 253 //* Please preserve this code (it can be used to determine scancodes) 254 //* 255 //keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf)); 256 //keybuffer_push(keybuffer, to_hex(scan_code&0xf)); 257 //keybuffer_push(keybuffer, ' '); 258 //keybuffer_push(keybuffer, ' '); 259 //*/ 260 //return 1; 261 262 buf|=((unsigned long) scan_code)<<(8*(count++)); 263 264 265 if((buf & 0xff)!= (GXEMUL_KEY_F1 & 0xff)) { 266 267 keybuffer_push(keybuffer,buf ); 268 buf=count=0; 269 return 1; 270 } 271 272 if ( count <= 1 ) 273 return 1; 274 275 if( (buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff) ) { 276 277 keybuffer_push(keybuffer, buf & 0xff ); 278 keybuffer_push(keybuffer, (buf >> 8) &0xff ); 279 buf=count=0; 280 return 1; 281 } 282 283 if ( count <= 2) 284 return 1; 285 286 287 if( (buf & 0xffffff) != (GXEMUL_KEY_F1 & 0xffffff) 288 && (buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff) 289 && (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff) ) { 290 291 keybuffer_push(keybuffer, buf & 0xff ); 292 keybuffer_push(keybuffer, (buf >> 8) &0xff ); 293 keybuffer_push(keybuffer, (buf >> 16) &0xff ); 294 buf=count=0; 295 return 1; 296 } 297 298 if ( count <= 3 ) 299 return 1; 300 301 302 switch (buf){ 303 304 case GXEMUL_KEY_F1: 305 keybuffer_push(keybuffer,FUNCTION_KEYS | 1 ); 306 buf=count=0; 307 return 1; 308 case GXEMUL_KEY_F2: 309 keybuffer_push(keybuffer,FUNCTION_KEYS | 2 ); 310 buf=count=0; 311 return 1; 312 case GXEMUL_KEY_F3: 313 keybuffer_push(keybuffer,FUNCTION_KEYS | 3 ); 314 buf=count=0; 315 return 1; 316 case GXEMUL_KEY_F4: 317 keybuffer_push(keybuffer,FUNCTION_KEYS | 4 ); 318 buf=count=0; 319 return 1; 320 case GXEMUL_KEY_F5: 321 keybuffer_push(keybuffer,FUNCTION_KEYS | 5 ); 322 buf=count=0; 323 return 1; 324 case GXEMUL_KEY_F6: 325 keybuffer_push(keybuffer,FUNCTION_KEYS | 6 ); 326 buf=count=0; 327 return 1; 328 case GXEMUL_KEY_F7: 329 keybuffer_push(keybuffer,FUNCTION_KEYS | 7 ); 330 buf=count=0; 331 return 1; 332 case GXEMUL_KEY_F8: 333 keybuffer_push(keybuffer,FUNCTION_KEYS | 8 ); 334 buf=count=0; 335 return 1; 336 case GXEMUL_KEY_F9: 337 keybuffer_push(keybuffer,FUNCTION_KEYS | 9 ); 338 buf=count=0; 339 return 1; 340 case GXEMUL_KEY_F10: 341 keybuffer_push(keybuffer,FUNCTION_KEYS | 10 ); 342 buf=count=0; 343 return 1; 344 case GXEMUL_KEY_F11: 345 keybuffer_push(keybuffer,FUNCTION_KEYS | 11 ); 346 buf=count=0; 347 return 1; 348 case GXEMUL_KEY_F12: 349 keybuffer_push(keybuffer,FUNCTION_KEYS | 12 ); 350 buf=count=0; 351 return 1; 352 353 default: 354 keybuffer_push(keybuffer, buf & 0xff ); 355 keybuffer_push(keybuffer, (buf >> 8) &0xff ); 356 keybuffer_push(keybuffer, (buf >> 16) &0xff ); 357 keybuffer_push(keybuffer, (buf >> 24) &0xff ); 358 buf=count=0; 359 return 1; 360 361 } 362 return 1; 363 } 364 365 int kbd_arch_process(keybuffer_t *keybuffer, int scan_code) 366 { 367 if(msim) return kbd_arch_process_msim(keybuffer, scan_code); 368 if(gxemul) return kbd_arch_process_gxemul(keybuffer, scan_code); 369 370 return 0; 371 } 372
Note:
See TracChangeset
for help on using the changeset viewer.