2009-09-11 5 views
16

Ich möchte ein einfaches C-Programm schreiben, das verschiedene Aktionen auf der Basis von "Key-Down" - und "Key-Up" -Ereignissen ausführt. Dieses Programm wird von innen rxvt ausgeführt.Empfangen von Tasten drücken und loslassen Ereignisse in Linux-Terminal-Anwendungen?

Welche Bibliothek oder welchen Mechanismus soll ich verwenden, um sowohl auf Tastendrücke als auch auf -versionen zuzugreifen? Stimmt es, dass das Lesen von /dev/tty nur Schlüsselversionen bereitstellt? Gilt das auch für Termcap, terminfo, ncurses und Slang? Gibt es einen Weg, dies innerhalb einer Terminalanwendung zu erreichen?

Antwort

3

Ich glaube nicht, dass Ncurses funktionieren wird. Der Link Basilevs lieferte Gespräche über die "Pfeil nach oben" -Taste und die "Pfeil nach unten" -Taste, nicht über eine Taste drücken und loslassen.

4

Dies funktioniert nicht im allgemeinen Fall. ANSI-Terminals (von denen alle Emulatoren abstammen) stellen nur "press" -Ereignisse für Schlüssel dar. Sie zeichnen Ereignisse nicht unabhängig voneinander auf.

Wenn Sie einen Ereigniszugriff auf Low-Level-Tastatur benötigen, ist die richtige Umgebung wirklich ein GUI-Programm. Sogar eine Webanwendung hat einen saubereren Zugriff auf wichtige Ereignisse als ein Terminal.

7

Die folgenden Links können bei der Verwendung des Tastatur-Rohmodus hilfreich sein, der Ihnen Zugriff auf die Tastaturereignisse und nicht nur auf Schlüsselversionen gewährt.

  1. Das Linux Journal article
  2. Diese article auf Source
  3. Und dieses HOWTO für, wenn es schlecht geht

Raw-Modus hat den Nachteil, dass Sie Ihre eigene Umwandlung zu tun aus scannen Codes jedoch zu Zeichen.

+2

+1 Danke für diese Antwort, ich brauchte rohen Tastaturzugriff in einem Terminalprogramm und das war die Lösung! Aber man sollte bedenken, dass sich das Programm mit dem rohen Tastaturzugriff nicht wie ein klassisches Terminalprogramm "benimmt". Wenn Sie es beispielsweise auf einem Remote-Computer ausführen, können Sie die Schlüsselereignisse nicht registrieren. Behalte das im Hinterkopf. – leemes

Verwandte Themen