Changeset 40236 in vbox for trunk/src/VBox/Devices/PC
- Timestamp:
- Feb 23, 2012 4:08:49 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 76445
- Location:
- trunk/src/VBox/Devices/PC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS-new/keyboard.c
r39946 r40236 346 346 { 347 347 uint8_t scancode, asciicode, shift_flags; 348 uint8_t mf2_flags, mf2_state ;348 uint8_t mf2_flags, mf2_state, flag; 349 349 350 350 // … … 377 377 write_byte(0x0040, 0x18, mf2_flags); 378 378 break; 379 379 380 380 case 0x2a: /* L Shift press */ 381 shift_flags |= 0x02;382 write_byte(0x0040, 0x17, shift_flags);383 break;384 381 case 0xaa: /* L Shift release */ 385 shift_flags &= ~0x02;386 write_byte(0x0040, 0x17, shift_flags);387 break;388 389 382 case 0x36: /* R Shift press */ 390 shift_flags |= 0x01;391 write_byte(0x0040, 0x17, shift_flags);392 break;393 383 case 0xb6: /* R Shift release */ 394 shift_flags &= ~0x01; 395 write_byte(0x0040, 0x17, shift_flags); 396 break; 397 384 /* If this was an extended (i.e. faked) key, leave flags alone. */ 385 if (!(mf2_state & 0x02)) { 386 flag = (scancode & 0x7f) == 0x2a ? 0x02 : 0x01; 387 if (scancode & 0x80) 388 shift_flags &= ~flag; 389 else 390 shift_flags |= flag; 391 write_byte(0x0040, 0x17, shift_flags); 392 } 393 break; 394 398 395 case 0x1d: /* Ctrl press */ 399 396 if ((mf2_state & 0x01) == 0) { … … 551 548 *ascii_code = acode; 552 549 *scan_code = scode; 553 550 BX_DEBUG_INT16("dequeue_key: ascii=%02x scan=%02x \n", acode, scode); 551 554 552 if (incr) { 555 553 buffer_head += 2; -
trunk/src/VBox/Devices/PC/BIOS/rombios.c
r39946 r40236 5235 5235 { 5236 5236 Bit8u scancode, asciicode, shift_flags; 5237 Bit8u mf2_flags, mf2_state ;5237 Bit8u mf2_flags, mf2_state, flag; 5238 5238 5239 5239 // … … 5268 5268 5269 5269 case 0x2a: /* L Shift press */ 5270 shift_flags |= 0x02;5271 write_byte(0x0040, 0x17, shift_flags);5272 break;5273 5270 case 0xaa: /* L Shift release */ 5274 shift_flags &= ~0x02;5275 write_byte(0x0040, 0x17, shift_flags);5276 break;5277 5278 5271 case 0x36: /* R Shift press */ 5279 shift_flags |= 0x01;5280 write_byte(0x0040, 0x17, shift_flags);5281 break;5282 5272 case 0xb6: /* R Shift release */ 5283 shift_flags &= ~0x01; 5284 write_byte(0x0040, 0x17, shift_flags); 5273 /* If this was an extended (i.e. faked) key, leave flags alone. */ 5274 if (!(mf2_state & 0x02)) { 5275 flag = (scancode & 0x7f) == 0x2a ? 0x02 : 0x01; 5276 if (scancode & 0x80) 5277 shift_flags &= ~flag; 5278 else 5279 shift_flags |= flag; 5280 write_byte(0x0040, 0x17, shift_flags); 5281 } 5285 5282 break; 5286 5283
Note:
See TracChangeset
for help on using the changeset viewer.