Announcement

Collapse
No announcement yet.

Ermitteln welche Taste gedrückt wurde?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ermitteln welche Taste gedrückt wurde?

    Hallo,
    weiß jemand, wie ich ermitteln kann welche Taste auf der Tastatur gedrückt wurde?
    mfg
    Axel Steiner

  • #2
    Moin, moin.

    Es ist ganz einfach: Die Variable Key in einer OnKeyPress-Routine enthält immer das Zeichen, der gedrückten Taste. Je nach Anwendungszweck kann es unterschiedlich sinnvoll sein, das Ereignis OnKeyPress von einer Komponenten (z.B. einem Edit) oder von der gesamten Form zu nehmen. Was möchtest du denn bei Tastendruck machen? Vielleicht kann ich dir noch genauer helfen.

    Gruß Tobia

    Comment


    • #3
      Das mit der Variable Key hab ich auch schon rausgefunden, das hilft
      mir bloß leider nicht weiter. Auf die Windows API kann ich auch nicht
      gehen, weil ich das für Kylix, also unter Linux brauche. Es geht
      darum, daß ich mir ein Tool schreiben will, mit dem ich die Tasten auf
      meinem Multimedia Keyboard beliebig programmieren kann. Und die Key
      Variable zeigt mir diese Tastaturcodes von den betroffenen Tasten
      nicht an. Aber irgendein Signal muß doch gesendet werden, jetzt muß
      ich nur noch rausfinden wie ich es abfangen kann.
      Axe

      Comment


      • #4
        Hehe ) Das hab ich auch schon probiert. Meine Tastatur hat auch verschiedene Sondertasten, die ich leider überhaupt nicht abfangen kann. Bei mir ist es so, ich eine Anwendung vom Hersteller im Hintergrund laufen muss, damit die Taste registriert. Daher denke ich, dass es sich dabei gar nicht um einen Tastendruck im Sinne der anderen Taste handelt, sondern die Software direkt die Hardware anfängt ohne dabei Nachrichten zu erhalten oder zu senden. Ich persönlich hab schon aufgegeben, da eine Lösung zu finden ....
        Trotzdem noch viel Glück, Tobia

        Comment


        • #5
          Hallo,
          Mit einer Ereignisbehandlungsroutine für OnKeyDown können beim Drücken einer Taste bestimmte Aktionen durchgeführt werden. In dieser Routine kann auf alle Tasten einschließlich Funktionstasten und Tastenkombinationen mit UMSCHALT-, ALT- und STRG-Taste sowie auf gedrückte Maustasten reagiert werden.

          Der Typ TKeyEvent zeigt auf eine Methode, die Tastaturereignisse behandelt.

          Der Parameter Key gibt die gedrückte Taste an. Bei nicht alphanumerischen Tasten können Sie die gedrückte Taste mit den virtuellen Tastencodes der Windows-API feststellen. Weitere Informationen finden Sie unter Virtuelle Tastencodes.

          Der Parameter Shift gibt an, ob die Taste UMSCHALT, ALT oder STRG zusammen mit der betreffenden Taste gedrückt wurde.

          Mit einer Ereignisbehandlungsroutine für OnKeyPress können bestimmte Aktionen durchgeführt werden, wenn eine einzelne Zeichentaste gedrückt wird.

          Da der Parameter Key den Datentyp Char hat, registriert das Ereignis OnKeyPress das ASCII-Zeichen der gedrückten Taste. Tasten, die keinem ASCII-Char-Wert entsprechen (z.B. UMSCHALT oder F1), generieren kein Ereignis OnKeyPress. Tastenkombinationen (z.B. UMSCHALT+A) führen nur zu einem Ereignis OnKeyPress (in diesem Beispiel ergibt UMSCHALT+A den Key-Wert „A“, wenn die Feststelltaste deaktiviert ist). Soll auf Nicht-ASCII-Tasten oder Tastenkombinationen reagiert werden, verwenden Sie die Ereignisbehandlungsroutine für OnKeyDown oder OnKeyUp.

          Das waren Ausschnitte aus der Hilfe über beide Ereignisse. Jedes wertet etwas anderes aus. -wichtig-

          Wichtig ist auch, dass die Eigenschaft "KeyPreview" der Form auf true steht. Ansonsten schreibe ich in das Ereignis OnKeyPress
          Showmessage(key);
          und in OnKeyDown
          ShowMessage(IntToStr(key));
          Dann siehst du, welche Taste du gedrückt hast. Unbedingt auch mal die Hilfe zu den "Virtuellen Tastencodes" ansehen. Nicht mit ASCII-Code verwechseln.

          mfg Klaus-Pete

          Comment


          • #6
            Vielen dank, das funktioniert schon mal. Bloß bei den zusätzliche multimedia Tasten auf der Tastatur bekomme ich immer die gleiche Zahl beim Parameter Key, nämlich 255. Bedeutet das, daß Delphi automatisch das letzte Zeichen nimmt, wenn es die Taste nicht erkennt?
            Gruß,
            Axe

            Comment


            • #7
              Ich konnte das jetzt nur an den neuen Windows-Tasten nachvollziehen, diese geben einen Wert (91 bzw die Taste für Menüs 93) im Ergeignis KeyDown mit
              <pre>
              showmessage(inttostr(key));
              </pre>
              zurück.

              mfg Klaus-Pete

              Comment


              • #8
                Irgendwas müssen die Tasten doch senden...gibt es eine Möglichkeit noch eine Ebene tiefer zu gehen udn versuchen so ziemlich alles abzufangen was Windows an Botschaften bekommt?
                Gruß, Axel Steine

                Comment


                • #9
                  Ist das ein USB-Keyboard?<br>
                  Wenn ja dann wird es schon unter Windows schwierig, da die Multimedia-Keys im PC-Tastenschema bisher nicht vorgesehen waren.<br>
                  Unter Windows glaube ich das der USB-Treiber diese Tasten auswertet. Geht wahrscheinlich sowieso erst ab WinME.<br>
                  Was X-Window zu neuen Tasten agt weiss ich nicht

                  Comment


                  • #10
                    Ne ist eine ganz normale PS/2 Tastatur..

                    Comment

                    Working...
                    X