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

    {
    > How do I stuff a string into the keyboard buffer?

    I've got two things for you:

    1:  Turbo Power's Object Professional's OpCRT unit has the following
    useful routines:
    procedure StuffKey(W : Word);
      {-Stuff one key into the keyboard buffer}

    procedure StuffString(S : string);
      {-Stuff the contents of S into the keyboard buffer}

    {
    2: If you don't have Object Professional (it's $895.00 but worth it)
    Before I noticed that OpCRT would do what I needed, I sat down and
    wrote the following code.  It's rough, but gives a pretty good idea
    of how the keyboard buffer works, and there's a chance that you can
    use it to create your own Stuffer
    }
    program ViewKbdBufr;

    (********************************************************************
    ***
       Written By Kevin R. Pierce - June 25, 1994
    *********************************************************************
    **)

    Uses
      OpString,  {This is where HexB is.  You can write your own easy
    enough}
      CRT;

    var
      Buffer_Head : Byte absolute $0040:$001A;
      Buffer_Tail : Byte absolute $0040:$001C;
      Buffer_Start: Byte absolute $0040:$0080;
      Buffer_End  : Byte absolute $0040:$0082;

      var
        t : byte;

    begin
      clrscr;
      repeat
        gotoxy(1,1);
        writeln('Buffer Head  = ',HexB(Buffer_Head));
        writeln('Buffer Tail  = ',HexB(Buffer_Tail));
        writeln('Buffer Start = ',HexB(Buffer_Start));
        writeln('Buffer End   = ',HexB(Buffer_End));
        writeln;
        if Buffer_Tail >Buffer_Head then {simple list}
          begin
            for t:=Buffer_Head to Buffer_Tail do
              write(Byte(Ptr(Seg0040,t)^):4);
          end
         else  {loop back to START}
          if Buffer_Head<>Buffer_Tail then
            begin
              for t:=Buffer_Head to Buffer_End do
                write(Byte(Ptr(Seg0040,t)^):4);
              for t:=Buffer_Start to Buffer_Tail do
                write(Byte(Ptr(Seg0040,t)^):4);
            end;
        clreol;
        writeln;
        writeln(Byte(Ptr(Seg0040,Buffer_Head)^):3);
        writeln(Byte(Ptr(Seg0040,Buffer_Tail)^):3);
        writeln(Byte(Ptr(Seg0040,Buffer_Start)^):3);
        writeln(Byte(Ptr(Seg0040,Buffer_End)^):3);

        writeln;
        for t:=ofs(Buffer_Head) to ofs(Buffer_Tail) do
          write(Byte(Ptr(seg(Buffer_Head),t)^):3);

      until FALSE;
    {endless Loop - Use Ctrl-Break to stop (you might have to reboot if
    you run BP under Windows.}

    end.

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