[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]

    {
    ROB PERELMAN

    > I want to put the character and scan code for ALT-V in the keyboard buffer.
    > In fact I would like to put it in there twice. I need it to be in the
    > buffer so that when my program terminates the parent process will act on
    > that key.

    {
     If this is being used with Turbo Pascal Version 3.0, you MUST set
     the C and U compiler directives to MINUS!
     If this is being used with Turbo Pascal Version 4.0, then set the
     CheckBreak variable  of the CRT unit to FALSE!
    }

    Uses
      Crt;

    Type
      BufType = Array[30..62] of Byte;

    Var
      Head    : Integer Absolute $0000 : $041A;    { Location of head of buffer  }
      Tail    : Integer Absolute $0000 : $041C;    { Location of tail of buffer  }
      KBDBuf  : BufType absolute $0000 : $041E;    { Absolute location of buffer }
      S       : String[80];                        { Input string                }

    Procedure StufftheBuff (Ch : Char; Code : Byte);
    Var
      TempTail : Integer;                          { Temporary holding of Tail  }
    Begin
      TempTail := Tail;                           { Store the Temporary Tail   }
      Tail := Tail + 2;                           { Incriment Tail to next pos }
      If Head = Tail Then                         { Is the buffer full?        }
      Begin
        Tail := TempTail;                        { Reset to previos value     }
        Sound(440);                              { Beep the user              }
        Delay(400);                              { Delay for the beep         }
        NoSound;                                 { Turn off the sound         }
      End
      Else
      Begin
        KBDBuf[TempTail] := Ord(Ch);              { Put the ASCII value in buf }
        KBDBuf[TempTail + 1] := Code;             { Put extended keypress valu }
        If Tail > 60 then                         { Last position. Wrap?       }
          Tail := 30;                             { Wrap to 1st position       }
      End;
    End;

    Begin
      ClrScr;                                     { Clear the Screen           }
      StufftheBuff ( 'D',0 );                     { Start stuffing the buffer  }
      StufftheBuff ( 'I',0 );                     { Another stuff of the Buffer}
      StufftheBuff ( 'R',0 );                     {    "      "    "  "    "   }
      StufftheBuff ( #13,0 ); { CR }              { Stuff a carriage return    }
    End.

[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]