Hi all,
Please excuse me for my lack of experience in NT
system. I have done a DOS TSR to hook keyboard
interrupt 0x09 to manipulate the ASCII codes (not scan
codes) in the 32-byte keyboard buffer located at
0040:001E. I would like to do the same thing for
Windows NT 4.
Recently I came across an example that hooks INT 0x2E
in the “Undocumented Windows NT” book. I changed to
INT 0x09 and wrote a new handler. This new handler
first calls the old handler to leverage all the hard
work of decoding scan and ascii codes of the old
handler. As soon as a new char is deposited to the
keyboard buffer, the new handler checks if it can map
the last two ASCII chars into a new one. For
instance,
[A][^] –> [A][BS][A circumflex]
In this example, if a user types ‘A’, the new handler
does nothing so that ‘A’ will be displayed. If he
types ‘^’, it replaces the ASCII code of ‘^’ with
those of a backspace and the letter A with circumflex
mark.
Thus this new handler must access the keyboard buffer
in order to add extra chars. I used the same address
as in the TSR program. But it did not work. I
searched the Internet for help and fortunately found
this mailing list.
I wonder if my approach is wrong because the address
is no longer valid under NT.
Basically, I don’t want to manipulate the scan codes.
I want to hook the system after the keyboard data is
in the keyboard buffer. Thus for my purposes I can’t
hook to the system keyboard driver because my handler
will be executed before the driver, which means I have
to handle all the dirty keyboard-dependent scan codes.
Is there a better method to do this?
Thank you very much for your help.
Hoc Ngo
xxxxx@yahoo.com
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/
You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com