home *** CD-ROM | disk | FTP | other *** search
-
- {
- Here is an (TP 5.5) atom that will help you grab "extended"
- keyboard scancodes. I think the problem you're having has to
- do with the fact that you can't trap hot keys inside ReadLn,
- yes? You need to build a set of routines that support
- a-key-at-a-time input into a string, echoing the keystrokes
- to the screen as you go. This "atom" just handles keystrokes-
- the string handling is probably _WAY_ too long to list here.
- }
-
- Program _;
-
- Uses Crt;
-
- Type KeyType = (Ascii,ExtendedKey,Escape);
-
- Var
- KtGlb : KeyType;
- ChGlb : Char;
-
- Procedure GetExtKey( Var Ch:Char; Var Kt:KeyType; );
- Begin
- Repeat
- Until KeyPressed;
- Kt := Ascii;
- Ch := ReadKey;
- If (Ch=#0) Then
- Begin
- Ch := ReadKey;
- If (Ord(Ch)=27) Then Kt := Escape Else Kt := ExtendedKey;
- End;
- End;
-
- Procedure Main
- Begin
- Write('Press a key.');
- ChGlb := #0;
- KtGlb := Ascii;
- Repeat
- GotoXY(13,1);
- GetExtKey(ChGlb,KtGlb);
- GotoXY(1,2);
- ClrEol;
- GotoXY(1,2);
- Case KtGlb Of
- Ascii : Write('Ascii, ');
- ExtendedKey : Write('Extended, ');
- Escape : Write('Escape, ')
- End;
- Write('Scancode = ',Ord(Ch));
- Until (Kt=Escape);
- WriteLn;
- WriteLn;
- End;
-
- Begin
- ClrScr;
- Main;
- End.
-
- This should help you capture _any_ extended scan code from the keyboard.
- PgUp, PgDn, Ctrl-PgUp, Alt-Shft-F5, etc... Chapter Seventeen of "Turbo
- Pascal 5.5, The Complete Reference" by O'Brien (Borland/Osborne/McGraw-
- Hill ISBN 0-07-881501-0) covers the issue of buffered string input pretty
- well.
-
- And as for your next berrage of questions, "Turbo Pascal Advanced
- Techniques" by Ohlsen & Stoker (Que Corp. ISBN 0-88022-432-0) covers
- DOS windowing very nicely. (Also many other goodies).
-
- Hope it helped a little.
- David Kandrat