FIXSHIFT.COM Requires /I to Install; Detailed Explanation (77835)
This article was previously published under Q77835
SUMMARY
FIXSHIFT.COM is a terminate-and-stay-resident (TSR) program that
corrects a BIOS problem that may be present in some vendors' hardware,
including Compaq.
FIXSHIFT.COM modifies the scan codes returned for the SHIFT keys to
correctly maintain the shift states.
To install FIXSHIFT.COM, you must use the /I switch. For example:
fixshift /i
This information applies to FIXSHIFT.COM supplied with the following
Microsoft products:
Basic Professional Development System (PDS) versions 7.0 and 7.1
QuickBasic versions 4.0, 4.0b, and 4.5 for MS-DOS
Basic Compiler versions 6.0 and 6.0b for MS-DOS
C versions 5.1, 6.0, and 6.0a for MS-DOS
COBOL 3.0 and 3.0a for MS-DOS
FORTRAN versions 4.1, 5.0, and 5.1 for MS-DOS
QuickC versions 1.01, 2.0, 2.5, and 2.51 for MS-DOS
MORE INFORMATION
FIXSHIFT.COM corrects a problem in Compaq and possibly other hardware
vendors' BIOS that causes the SHIFT states to be maintained
incorrectly when using a 101-key keyboard.
The 101-key keyboard generates "false" key up/down strokes for the
left and right SHIFT keys to simulate the original keyboard that did
not have as many keys. Many BIOSs handle these "false" keystrokes
correctly, but some do not. The problem BIOSs read the "false"
keystrokes as changes to the state of the real SHIFT keys, so it is
impossible for an application program to know when the real shift keys
are down.
To solve this problem, FIXSHIFT.COM maintains two sets of state
information for the SHIFT keys. One state is the real state of the
SHIFT keys, and the other is the combination of the real and the false
SHIFT key transitions (up/down). When a real SHIFT key transition is
detected, both the real and the combined shift states are updated;
when a false transition is detected (false transitions are always
preceded by a special code), only the combined state is updated.
FIXSHIFT.COM hooks the keyboard interrupt to maintain the shift
states. When FIXSHIFT.COM gets a keyboard interrupt, it first sets the
BIOS shift state (a documented memory location) to what the BIOS
expects (the combined real and fake shift states). FIXSHIFT then
passes on the interrupt to the interrupt handler that was servicing
the keyboard interrupt before FIXSHIFT revectored that interrupt. The
BIOS is unaware that FIXSHIFT.COM has done anything, because its shift
states are the same as if this program were not present. When the
BIOSs interrupt handler returns, FIXSHIFT sets the BIOSs shift state
to the real shift states, so when an application looks at this, it
will reflect the true state of the SHIFT keys.
If FIXSHIFT.COM is executed without any command line parameters, it
tests the machine to see if FIXSHIFT is required. First it checks if a
101-key keyboard is attached to the machine; if not, FIXSHIFT is not
required. It then checks if the BIOS bug is present by turning on NUM
LOCK and asking the user to type a down arrow using the dedicated down
arrow key (not the DOWN ARROW on the numeric keypad). If the shift
states say that the left SHIFT key is down, then the BIOS has the bug.
Pressing the down arrow while NUM LOCK is on generates a fake left
shift down that the problem BIOS will record in the shift states.
Regardless of the outcome of this test, FIXSHIFT.COM will not install
unless you invoke it with the /I command line option.
Modification Type: |
Minor |
Last Reviewed: |
1/8/2003 |
Keywords: |
KB77835 |
|