From: Arkady V.B. <ar...@be...> - 2004-01-15 19:22:26
|
Hi! 15-=F1=CE=D7-2004 15:27 _ai...@wa... (Aitor Santamar=DCa Merino) = wrote to fre...@li...: ASM> override DOS' CON and use BIOS services (int 16h), where you can als= o ASM> find functions for the shift states and that all. If you want consis= tent ASM> data, I guess you should disable interrupts, as you make it in two ASM> different function calls. This not helps, because: - you may disable interrupts before/after calls to INT 16, but you can't prevent them to enable interrupts inside. - BIOS stores scancode into buffer, but not shift states, thus, at time o= f scancode reading, shift states may anyway already be changed. For examp= le, you press Shift-Ins, then release Shift, but if programs slightly delay= s with reading input, it receives Ins without Shift state turned on. ASM> For the cases where letters are swapped (e.g. Z<->Y is somewhat comm= on), ASM> FD-KEYB2.0 allows you to configure if you want the scancode to be al= so ASM> swapped. Don't think that this is useful feature. ASM> implemented). This is so because there's some sofwtare that seems to ASM> look only at the scancode value (and not the character) from the pai= r ASM> (scancode, character) that KEYB returns in the BIOS buffer. If program wants _scancode_, then it wants _scancode_, not letter fr= om current layout (notwithstanding if this is 3rd party program or BIOS mappings). |