{ MaxonPASCAL3-Anpasssung / Test:  falk Zühlsdorff (PackMAN) 1994 }

Program RawKey;
USES INTUITION;
 Var
  Win: ^Window;
  Msg: ^IntuiMessage;
  Key: Byte;

 Procedure Decode(i: integer);
   { Bezeichnung der Taste mit dem Code "i" ausgeben }
   Var Zeile1, Zeile2, Zeile3, Zeile4: String[16];
   Begin
     Zeile1:= '~1234567890ß´\';
     Zeile2:= 'QWERTZUIOPÜ+';
     Zeile3:= 'ASDFGHJKLÖÄ#';
     Zeile4:= '<YXCVBNM,.-';

     If (i >= $50) and (i <= $59) Then
       write('Funktionstaste ', i-$4f)
     Else
      If (i >= $00) and (i <= $0d) Then
        write(Zeile1[i+1])
      Else
      If (i >= $10) and (i <= $1b) Then
        write(Zeile2[i-$0f])
       Else
       If (i >= $20) and (i <= $2b) Then
        write(Zeile3[i-$1f])
       Else
        If (i >= $30) and (i <= $3a) Then
         write(Zeile4[i-$2f])
        Else
         Case i of
          $40: write('Space');
          $41: write('Backspace');
          $42: write('Tab');
          $43: write('Enter');
          $44: write('Return');
          $45: write('Escape');
          $46: write('Delete');
          $4b: write('- im Ziffernblock');
          $4c: write('Cursor Hoch');
          $4d: write('Cursor Runter');
          $4e: write('Cursor Rechts');
          $4f: write('Cursor Links');
          $5e: write('+ im Ziffernblock');
          $5f: write('Help');
          $60: write('Linkes Shift');
          $61: write('Rechtes Shift');
          $62: write('Caps Lock');
          $63: write('Ctrl');
          $64: write('Linkes Alt');
          $65: write('Rechtes Alt');
          $66: write('C=');
          $67: write('Amiga');
         Otherwise
          write('Unbekannte Taste Nr. ',i);
         End;
   End;

 Begin
  Win:=Open_Window(0, 0, 200, 50, 1,IDCMP_RAWKEY,
                   ACTIVATE+WINDOWDEPTH+WINDOWDRAG,
                   'Rawkey-Demo', Nil, 100, 50, 100, 50);
  Repeat
    Msg:=Wait_Port(Win^.UserPort);
    Msg:=Get_Msg(Win^.UserPort);
    Key:=Msg^.Code;
    Decode(Key and $7f);     { Nur Bits 0 bis 6 }
    If (Key and $80)=0 Then  { Bit 7 testen }
      writeln(' gedrückt.')
    Else
      writeln(' losgelassen.')
  Until Key=$c4;    { Code von "Return loslassen" }
  Close_Window(Win)
  CloseLib(Intuitionbase);
 End.
